Gaussian Blur
La sfocatura gaussiana è un filtro di smoothing delle immagini che riduce il rumore e i dettagli fini tramite medie ponderate dei pixel, per la visione artificiale e il pre-processing.
La sfocatura gaussiana è una tecnica di smoothing delle immagini che sostituisce ogni pixel con una media ponderata dei pixel vicini, attribuendo maggiore influenza a quelli più prossimi. I pesi seguono una distribuzione gaussiana a campana, producendo una sfocatura morbida che riduce il rumore e i dettagli fini. Chiamata anche smoothing gaussiano, è ampiamente utilizzata nella visione artificiale e nel pre-processing dei dati per preparare le immagini all'analisi.
Come funziona la sfocatura gaussiana#
Il filtro sposta una piccola griglia di pesi, chiamata kernel, sull'immagine. In ogni posizione moltiplica i valori dei pixel vicini per i rispettivi pesi e somma i risultati. Questa operazione è la convoluzione. La somma dei pesi è uno, quindi un pixel rimane invariato se tutti i valori campionati dal kernel hanno la stessa luminosità. La sfocatura gaussiana agisce come un filtro passa-basso: sopprime le variazioni rapide da un pixel all'altro, compresi rumore, texture e contorni netti.
Il risultato dipende da due impostazioni. Sigma, la deviazione standard della distribuzione gaussiana, controlla quanto si distribuiscono i pesi; aumentando sigma si ottiene uno smoothing più intenso. Dimensione del kernel determina quanta parte dell'immagine circostante viene inclusa. Un kernel più grande può contenere una gaussiana più ampia, mentre un kernel troppo piccolo ne tronca le code. Il raggio del kernel descrive la distanza dal centro al bordo del kernel: un raggio di tre pixel corrisponde a un kernel largo sette pixel.
Ai bordi dell'immagine, una parte del kernel cade al di fuori dei pixel disponibili. Riflettere l'immagine estende il contenuto circostante; riempire l'area mancante con zeri introduce valori scuri che possono scurire il bordo. La gestione dei bordi modifica quindi il risultato filtrato in prossimità dei margini dell'immagine.
Applicazioni nella visione artificiale e nel machine learning#
Lo smoothing gaussiano supporta l'estrazione delle caratteristiche controllando la scala spaziale a cui viene analizzata la struttura dell'immagine. Il suo uso multiscala affonda le radici nel lavoro di Taizo Iijima sullo scale-space gaussiano del 1959–1962, che ha posto le basi per rappresentare le immagini a diversi livelli di sfocatura.
Nell'implementazione di scikit-image del rilevamento dei bordi di Canny, lo smoothing gaussiano riduce il rumore prima della stima del gradiente con l'operatore Sobel. Senza smoothing, il rumore produce variazioni di intensità aggiuntive che interferiscono con i contorni degli oggetti. Aumentare la scala di smoothing elimina anche i bordi più fini, modificando i contorni che restano dopo il rilevamento.
Per la segmentazione delle immagini nei documenti, le medie locali ponderate con una gaussiana supportano la sogliatura adattiva. A ogni pixel viene assegnata una soglia calcolata sottraendo un offset dalla media ponderata del vicinato. In questo modo si separa il testo dagli sfondi con illuminazione non uniforme, come nella sogliatura locale di una pagina acquisita con lo scanner.
Come data augmentation, la sfocatura gaussiana crea versioni attenuate delle immagini di training, preservando le coordinate di bounding box e keypoint. Ultralytics YOLO supporta A.GaussianBlur tramite le sue trasformazioni personalizzate di Albumentations, consentendo di includere variazioni controllate della sfocatura nel training di YOLO26.
Confronto tra la sfocatura gaussiana e altri filtri#
La scelta del metodo di smoothing determina quali informazioni dell'immagine vengono preservate:
- La sfocatura media, chiamata anche sfocatura a riquadro, assegna lo stesso peso a ogni pixel della finestra. La sfocatura gaussiana dà maggiore importanza ai pixel vicini, creando una media con pesi che variano più gradualmente.
- La sfocatura mediana sostituisce un pixel con il valore mediano del vicinato. È particolarmente efficace contro il rumore sale e pepe: pixel isolati chiari e scuri.
- Il filtro bilaterale usa sia la distanza spaziale sia la somiglianza di intensità per ridurre il rumore preservando i contorni netti. La sfocatura gaussiana assegna i pesi ai pixel basandosi solo sulla posizione, quindi attenua anche i bordi.
Applicare la sfocatura gaussiana in Python#
OpenCV fornisce cv2.GaussianBlur per lo smoothing gaussiano. Installa il relativo pacchetto Python con pip install opencv-python, quindi salva un confronto affiancato:
from urllib.request import urlopen
import cv2
import numpy as np
with urlopen("https://ultralytics.com/images/bus.jpg") as response:
image_bytes = np.frombuffer(response.read(), dtype=np.uint8)
image = cv2.imdecode(image_bytes, cv2.IMREAD_COLOR)
blurred = cv2.GaussianBlur(image, (15, 15), sigmaX=3)
comparison = cv2.hconcat([image, blurred])
cv2.imwrite("gaussian_blur_comparison.jpg", comparison)L'immagine salvata mostra l'originale a sinistra e il risultato con smoothing a destra. Il kernel 15 x 15 usa sigma pari a tre pixel in entrambe le direzioni, perché sigmaY omesso assume il valore di sigmaX.
I kernel gaussiani sono separabili: filtri monodimensionali orizzontali e verticali producono la corrispondente sfocatura bidimensionale. Per un kernel 7 x 7, questo riduce da 49 a 14 i contributi dei pesi del kernel per pixel.










