Analisi di Immagini e Dati Biologici Filtri L4-1 35
Filtri Trasformazione di un immagine che non si limita alla trasformazione di intensità di un pixel Il singolo pixel è ricalcolato in funzione del suo valore e del valore dei pixel circostanti La funzione che “modella” la trasformazione è detta kernel
Filtri
Smoothing Filter Un pixel della nuova immagine è ricalcolato come media dei pixel circostanti
Smoothing Filter La stessa espressione resa per un pixel generico avente coordinate (u,v)
Smoothing Filter Caratteristiche generali Dimensione (size): numero di punti lungo righe&colonne coinvolti nel filtro Forma: Il filtro di media è rettangolare. per filtri di dimensione maggiore si può cercare di approssimare la forma di un disco Kernel: funzione che determina i valori dei coefficienti del filtro
Filtri Lineari Il filtro di media è un esempio di filtro lineare E' semplice rappresentare l'azione di un filtro lineare attraverso una matrice La matrice di un filtro di media:
Matrice di un filtro Quasi sempre le matrici hanno ordine dispari in modo che sia univoco il loro centro Il centro di una matrice di un filtro, anche se non necessariamente, è il suo “hot spot”
Filtri lineari Modello correlativo del calcolo di un filtro lineare
Filtri lineari Rappresentazione matematica
Filtri Lineari Box filter: è il filtro di media. Gaussian filter: i coefficienti di un filtro gaussiano non sono costanti ma calcolati dalla funzione di Gauss in 2-D
Filtri lineari octave:1> fspecial("average",3) ans = 0.11111 0.11111 0.11111 octave:2> fspecial("gaussian",3) 0.011344 0.083820 0.011344 0.083820 0.619347 0.083820
Effetto di smoothing
Filtri lineari Filtro di differenza: modelli di filtri la cui risposta tende ad esaltare i bordi (salti di intensità) I filtri per differenza hanno alcuni dei coefficiente della matrice negativi
Esempi di filtri lineari
Filtri lineari Modello convolutivo La funzione di correlazione con cui si rappresenta l'azione di un filtro viene più convenientemente espressa come convoluzione
Filtri lineari Convoluzione
Filtri lineari Dimostrazione del passaggio da convoluzione a correlazione
Filtri Lineari e System identification Impulse Response: filtro che lascia l'input intatto E' rappresentato dalla funzione δ
Determinazione dell PSF La funzione δ preserva una immagine, costituisce cioè l'identità del prodotto di convoluzione
Point Spread Function Se una legge di trasformazione può essere rappresentata con un modello lineare allora può essere scritta come convoluzione La PSF rappresenta il modello lineare di tutte le alterazioni che avvengono nella formazione dell'immagine rispetto al modello teorico Distorsioni Aberrazioni Diffusioni Se la PSF segue una legge lineare è possibile in linea di principio correggere i suoi effetti
Determinazione della PSF Per correggere il comportamento di un sistema ottico si usano sorgenti puntiformi Si va ad osservare l'immagine che si forma che è una rappresentazione della PSF
Filtri non lineari I filtri lineari Pixel di un immagine risultante funzione di NxM pixel Problema del 'blurring' (offuscamento)
Filtri non lineari: max e min
Filtro max e min
Filtro di mediana Il median filter seleziona per ogni pixel dell'immagine di output il valore della mediana dei valori di un intorno
Filtro di Mediana
Filtro di Mediana
Filtro di Mediana
Filtro di Mediana
Octave's filtering related functions Funzioni di Octave che generano filtri J = imfilter(I, f) 'I' immagine da filtrare 'f' matrice del filtro 'J' matrice dell'immagine di output Preserva la classe dell'immagine di input Se l'immagine è RGB agisce separatamente su ogni piano di colore
Octave: fspecial -> fspecial(type,arg1,arg2) Funzione per generazione della matrice di diversi filtri controllata da 1,2 o 3 argomenti Tipo di filtro da generare Parametro di controllo 1 Parametro di controllo 2
Octave: fspecial → type = “average” Filtro di media rettangolare. In assenza di altri argomenti genera un filtro 3x3 Se il secondo argomento è un intero = N ritorna il filtro di media rettangolare NxN Se è un vettore di 2 elementi allora vengono interpretati per creare una matrice NxM octave:1> fspecial("average",5) ans = 0.040000 0.040000 0.040000 0.040000 0.040000 octave:2> 0.04*25 ans = 1
Octave: fspecial → type = “gaussian” Il secondo argomento è interpretato come per il filtro di media “average” Il terzo argomento è la dispersione σ (“spread”) della funzione octave:3> fspecial("gaussian",5) ans = 6.9625e-08 2.8089e-05 2.0755e-04 2.8089e-05 6.9625e-08 2.8089e-05 1.1332e-02 8.3731e-02 1.1332e-02 2.8089e-05 2.0755e-04 8.3731e-02 6.1869e-01 8.3731e-02 2.0755e-04 octave:4> sum(sum(fspecial("gaussian",5))) ans = 1
Filtro gaussiano Originale 3x3, σ=1 5x5,σ=2