Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Sommario
Ripasso sullanalisi di Fourier e il trattamento numerico dei segnali !! Elaborazione delle immagini nel dominio della frequenza
!!
!!
Ogni segnale pu essere descritto dalla somma di sinusoidi con differenti ampiezze e frequenze. I comandi MatLab per calcolare la trasformata di Fourier e la sua inversa sono rispettivamente fft e ifft. Esercizio1
!! Supponiamo
(rand) !! Calcolare la FFT del segnale !! Calcolare la IFFT del segnale !! Estrarre al parte reale della IFFT !! Confrontare il risultato della IFFT con il segnale di partenza
Esercizio 2
!! Supponiamo
di campionare un segnale ogni 0.01 secondi per la durata di 4 secondi !! Il segnale dato dalla somma di due sinusoidi di ampiezza A 3 e 5 e frequenza f 4 e 2 (=2!f) rispettivamente !! Generare il grafico tempo ampiezza (usare il comando axis per aggiustare la scalatura degli assi)
la fft del segnale !! Calcolare il suo valore assoluto e normalizzarlo !! Plottare lo spettro di ampiezza
Vediamo come usare la fft e la ifft per filtrare il rumore dai segnali. Esercizio 3
!! Aggiungere
al segnale dell esercizio precedente del rumore casuale !! Calcolare la trasformata del segnale rumoroso !! Calcolare lo spettro di ampiezza !! Plottare la forma donda e lo spettro di ampiezza
Attraverso la ifft filtriamo il rumore. Il comando fix arrotonda gli elementi del suo argomento all intero pi vicino.
!! Settare
i numeri <100 a zero !! ifft dei dati trasformati ed estrarre la parte reale !! Plottare l andamento dei campioni corretti
Esercizio 4
!! Creare
un immagine 30x30 con un rettangolo bianco su sfondo nero !! Calcolare la DFT e visualizzare lo spettro di ampiezza (fft2) !! Aggiungere dello zero padding per migliorare il calcolo della DFT !! Shiftare la componente zero al centro dello spettro !! Per migliorare la visualizzazione usare la funzione log
!!
The following convolution theorem shows an interesting relationship between the spatial domain and frequency domain: and, conversely, the symbol "*" indicates convolution of the two functions. The important thing to extract out of this is that the multiplication of two Fourier transforms corresponds to the convolution of the associated functions in the spatial domain.
!!
!!
The following summarize the basic steps in DFT Filtering (taken directly from page 121 of Digital Image Processing Using MATLAB):
!!
Obtain the padding parameters using function paddedsize: PQ=paddedsize(size(f)); Obtain the Fourier transform with padding: F=fft2(f, PQ(1), PQ(2)); Generate a filter function, H, of size PQ(1) x PQ(2).... Multiply the transform by the filter: G=H.*F; Obtain the real part of the inverse FFT of G: g=real(ifft2(G)); Crop the top, left rectangle to the original size: g=g(1:size(f, 1), 1:size(f, 2));
!!
!! !!
!!
!!
Correlazione
!!
!!
MATLAB uses one of two methods, correlation or convolution, to filter various images. The two operations are identical except correlation rotates the filter matrix 180o before filtering, while convolution keeps it the same. The Fourier transform can also be used to perform correlation. Correlation can be used to locate features within an image; in this context correlation is often called template matching.
Correlazione
!!
Esercizio 5
!!
Caricare l immagine text.png !! Estrarre la lettera a dall immagine e creare un template !! Calcolare la correlazione C = ifft2(fft2(A).*fft2(rot90(B,2),256,256); !! Visualizzare la localizzazione nell immagine della lettera a