Codice sorgente per disturbs.ligthness

import cv2
import numpy as np

"""
Modulo per applicare la correzione del contrasto ad un'immagine codificata in RGB o scala di grigi sfruttando openCV2.
"""


[documenti] def contrast_correction(img: cv2.typing.MatLike, out_min: int = 100, out_max: int = 150) -> cv2.typing.MatLike: """ Questo metodo permette di comprimere i valori dell'immagine in un intervallo definito applicando la correzione del contrasto. Args: img: l'immagine a cui viene applicata la correzione del contrasto. out_min: intensità minima presente nell'immagine di output. out_max: intensità massima presente nell'immagine di output. Raises: ValueError: se image non ha shape bidimensionale o tridimensionale. Returns: una matrice numpy che rappresenta l'immagine a cui è stato aggiunta la correzione del contrasto. """ if len(img.shape) == 2: img = img.astype(np.float32) img_norm = (img - np.min(img)) / (np.max(img) - np.min(img)) # normalize to 0–1 low_contrast = img_norm * (out_max - out_min) + out_min return np.clip(low_contrast, 0, 255).astype(np.uint8) elif len(img.shape) == 3: result = np.zeros_like(img, dtype=np.uint8) for i in range(3): ch = img[:, :, i].astype(np.float32) ch_norm = (ch - np.min(ch)) / (np.max(ch) - np.min(ch)) low_contrast = ch_norm * (out_max - out_min) + out_min result[:, :, i] = np.clip(low_contrast, 0, 255).astype(np.uint8) return result else: raise ValueError("Formato immagine non supportato.")