Filtraggio nel Dominio
della Frequenza
Parte 2
Multimedia
Filtro di enfasi ad alta frequenza



Solitamente i filtri passa alto riducono a zero il
termine dc, dunque riducono l’intensità media
nell’immagine filtrata a zero.
Il filtro di enfasi ad alta frequenza non ha di questi
problemi perché viene aggiunto al filtro ad alta
frequenza il valore 1.
La costante, k, controlla la proporzione delle alte
frequenze che influenzano il risultato finale.
Multimedia


Una formula un po’ più generale del filtraggio di
enfasi ad alta frequenza è
dove k1 ≥ 0 specifica la distanza dall’origine e k2 ≥
0 determina il contributo delle alte frequenze.
Multimedia
Multimedia




L’immagine della scansione a raggi X di un torace ha
uno stretto range di livelli di intensità.
La Figura (b) mostra il risultato del filtraggio passa
alto utilizzando un filtro Gaussiano con D0 = 40.
La Figura (c) mostra il vantaggio dell’utilizzo del
filtraggio di enfasi ad alta frequenza, in cui abbiamo
utilizzato con k1 = 0.5 e k2 = 0.75.
La Figura (d) mostra immagine equalizzata. Questa
operazione migliora decisamente la qualità
complessiva.
Multimedia
Filtraggio Omomorfo
Il modello illuminazione-riflettanza f(x,y)=i(x,y)r(x,y) può
essere utilizzato, anche se non direttamente, come base di una
procedura nel dominio della frequenza in grado di effettuare
simultaneamente una compressione della gamma dinamica e un
arricchimento del contrasto
L’uso diretto del modello non è possibile in quanto la trasformata
del prodotto di due funzioni non è separabile, infatti:
J{ f(x,y)}≠ J{i(x,y)} J{r(x,y)}
Passando ai logaritmi si ottiene
z(x,y)= ln f(x,y)= ln i(x,y) + ln r(x,y)
Multimedia
Filtraggio Omomorfo
E’ possibile quindi filtrare la z(x,y), avendo cura di applicare l’inverso del
logaritmo, cioè un operatore esponenziale, subito dopo l’antitrasformata.
Il metodo presentato è basato su un caso speciale di una classe di sistemi, detti
omomorfici.
In particolare, in questo caso la separazione delle componenti di illuminazione e
riflettenza è effettuata utilizzando il logaritmo, in modo che il filtro possa operare
separatamente sulle due componenti: l'illuminazione, generalmente
caratterizzata da lente variazioni spaziali, e la riflettenza, generalmente
caratterizzata da brusche variazioni, come nei contorni degli oggetti.
Multimedia
Filtraggio Omomorfo
Dal punto di vista realizzativo, occorre un filtro H(u,v) in grado di operare in modo
diverso sulle componenti di bassa frequenza e su quelle di alta frequenza della
trasformata di Fourier dell’immagine, del tipo:
Se γL<1 e γH>1, il filtro tende a smorzare il contenuto delle basse frequenze
(illuminazione) e ad amplificare il contenuto delle alte frequenze (riflettenza).
Si ottiene simultaneamente la compressione del range dinamico e di
miglioramento del contrasto.
Esempio:
Multimedia
Per esempio, utilizzando una forma modificata di
filtro Gaussiano passa alto otteniamo la funzione:
[
H (u , v) = (γ H − γ L ) 1 − e
− c[ D 2 ( u ,v ) / D02 ]
]+ γ
L
la costante c controlla la pendenza della funzione
tra γL e γH.
Multimedia
Filtraggio Omomorfo con
γL = 0.25, γH = 2, c = 1, e D0 = 80.
Multimedia
Filtraggio Omomorfo: esempio 2
Multimedia
Pattern Matching nel Dominio di Fourier
E’ possibile utilizzare l’informazione spettrale, anche per
individuare “pattern” specifici.
Multimedia
Pattern Matching nel Dominio di Fourier
Possiamo utilizzare l’informazione contenuta nella maschera,
passando nel dominio di Fourier. Dopo aver scalato i valori nel
range [0, 255] è possibile utilizzare un valore di soglia (per
esempio evidenziando solo le frequenze con almeno il 4% del
valore massimo) per individuare le componenti in frequenza più
importanti.
Multimedia
Pattern Matching nel Dominio di Fourier
La maschera “sogliata” viene quindi utilizzata alla stessa stregua
di un filtro H(u,v), moltiplicandola cioè per la trasformata
dell’immagine di input. Ritornando nel dominio spaziale, con
un’antitrasformata, otteniamo un’immagine che può essere
facilmente elaborata (un nuovo “thresholding”) per individuare la
posizione del “pattern” cercato.
Multimedia
MATLAB: Esempio di DFT 2-D
>>[x,y]= meshgrid( [ -2:0.2:2] ) ;
>>z= exp( -0.5.* (x.^ 2+ y.^ 2) ./ 0.9) ;
>>surf(x,y,z) ;
>>imagesc(z) ;
>>yy=fft2(z);
>>I=(fftshift(abs(yy)));
>>imshow(I)
Multimedia
MATLAB: Esempio di DFT 2-D
>>%Esempio2
>>f=imread('barca.gif');figure; imshow(f);
>>F=fft2(f);
>>Fc=fftshift(F);
>>S=abs(Fc);
>>c=255/ log(max(S(:)));
>>S2=c.* log(1.+ S);
>>figure;
>>%imshow(uint8(S2));
>>imshow(S2, []);
%Trasformazione inversa
>>F1=ifftshift(Fc)
%Inverte lo shift
>>f1=ifft2(F1);
%Inverte la trasformata
>>f1=real(f1);
%Prende la parte reale
>>figure;imshow(f1, []);
>>figure;imshow(uint8(f1));
Multimedia
MATLAB: Esempio di filtraggio LP
>f=imread('fishingboat.bmp'); figure; imshow(f);
>[M,N]=size(f); F=fft2(f);
>u=0:(M-1);
>v=0:(N-1);
>
idx=find(u>M/2);
>
u(idx)=u(idx)-M;
>
idy=find(v>N/2);
>
v(idy)=v(idy)-N;
> [V,U]=meshgrid(v,u);
>D0=10;
%Frequenza di taglio
>D=sqrt(U.^2+V.^2);
>H_LP_Gauss=exp(-(D.^2)./(2*(D0^2)));
>G1=H_LP_Gauss.*F;
>g1=real(ifft2(G1));
>figure; imshow(g1, []);
Multimedia
Padding…

Nel dominio spaziale l’operazione di filtraggio
mediante maschere di convoluzione necessita di
opportuni accorgimenti ai bordi. In generale,
utilizzando
maschere
con
kernel
piccoli,
l’inconveniente viene aggirato facilmente.

Nel dominio frequenziale, utilizzando filtri aventi
dimensione dello stesso ordine di grandezza
dell’immagine di input, il problema può dare origine
ad errori ben più evidenti (wraparound errors).
Multimedia
Padding…

Il problema può essere risolto estendendo le funzioni
in ingresso aggiungendo degli zeri nella seguente
maniera:

Se f(x,y) e h(x,y) hanno dimensione rispettivamente
AxB e CxD basta estendere le 2 funzioni ad una
dimensione PxQ dove P>=A+C-1 e Q>=B+D-1

Se entrambe le funzioni hanno dimensione MxN basta
scegliere P>=2M-1 e Q>=2N-1
Multimedia
Padding: un esempio
a)
b)
c)
L’immagine di input (a), cui viene
applicata un filtro di smoothing
rispettivamente con (c) e senza
padding (b)
Multimedia
MATLAB:Padding

In MATLAB basta passare come ulteriori
argomenti alla funzione fft2 la dimensione che
contempli il padding degli zeri:
F=fft2(f, P, Q)
Multimedia
Esempio di filtraggio con Padding
Multimedia
MATLAB: freqz2
A partire da una maschera di convoluzione spaziale è possibile
ottenere il corrispondente filtro nel dominio di Fourier, attraverso
l’utilizzo della funzione freqz2:
>h=fspecial('sobel')
>h =
8
1
2
1
0
0
0
-1
-2
-1
> freqz2(h,100,100)
Magnitude
6
4
2
0
1
0.5
1
0.5
0
0
-0.5
-0.5
Fy
Multimedia
-1
-1
Fx
Scarica

FS Lez 6 - Filtraggio nel Dominio della Frequenza