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