Funzioni > Elaborazione immagini > Dominio della trasformata > Esempio: applicazione di un filtro nel dominio della trasformata di Fourier
  
Esempio: applicazione di un filtro nel dominio della trasformata di Fourier
Utilizzare le funzioni funconv, matconv, funcdeconv e matdeconv per eseguire la convoluzione o la deconvoluzione di un'immagine con una funzione, f, o una maschera, E, moltiplicandole tra di loro nella frequenza spaziale (dominio della trasformata di Fourier). L'applicazione di un filtro nel dominio delle frequenze può determinare l'esecuzione di varie operazioni di smoothing, rilevamento dei bordi e riduzione periodica del rumore, a seconda della funzione o della maschera utilizzata. Da un punto di vista matematico, l'applicazione di un filtro nel dominio della trasformata è spesso più efficiente dell'utilizzo della convoluzione nel dominio dell'immagine e anche la definizione dei filtri risulta più semplice.
Per informazioni sull'utilizzo di questo esempio, fare riferimento a Esempi di elaborazione delle immagini.
funconv
Utilizzare questa funzione per filtrare un'immagine M con una funzione nella frequenza spaziale. La funzione con valore reale f viene utilizzata per costruire una maschera N con le stesse dimensioni di M. M viene sottoposta alla trasformata di Fourier e quindi moltiplicata termine per termine per la maschera.
Per costruire la maschera, è necessario passare gli argomenti, corrispondenti alla distanza normalizzata dall'angolo superiore sinistro di M, a f. Questo processo continua fino al centro della maschera, quindi quest'ultima viene duplicata simmetricamente in quattro parti. Viene utilizzato questo processo perché l'angolo superiore sinistro è DC (frequenza zero).
1. Iniziare a costruire una maschera definendo la matrice immagine M.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
2. Individuare il pixel che rappresenta il centro della matrice immagine.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
3. Creare nuove variabili con intervallo che rappresentano i valori dall'angolo superiore sinistro al centro dell'immagine.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
4. Utilizzare le variabili con intervallo definite e una funzione di masking per creare il quadrante superiore sinistro della maschera.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
La voce (0, 0) è f(0), mentre la voce (r, c) è f(1).
Per costruire la maschera, è necessario passare gli argomenti, corrispondenti alla distanza normalizzata dall'angolo superiore sinistro di M, a f. Questo processo continua fino al centro della maschera, quindi quest'ultima viene duplicata simmetricamente in quattro parti. Viene utilizzato questo processo perché l'angolo superiore sinistro è DC (frequenza zero).
5. Costruire il resto della matrice maschera utilizzando funconv.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Se la convoluzione espande la scala dell'immagine, è possibile scalare la matrice di output fino all'intervallo [0, 255].
funcdeconv
Questa funzione di deconvoluzione utilizza un'immagine del dominio delle frequenze e una funzione dominio delle frequenze e ne esegue la deconvoluzione.
L'ultimo argomento e di funcdeconv è un piccolo termine aggiunto ai denominatori di tutte le espressioni durante la routine. Come punto iniziale, digitare un valore 0 per e. Se viene visualizzato un messaggio di errore relativo alla divisione per zero, digitare un valore basso per e.
1. Chiamare la funzione funcdeconv.
Fare clic per copiare questa espressione
2. Valutare DE per visualizzare il risultato di funcdeconv e confrontarlo con la matrice originale.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
matconv
La funzione matconv esegue la stessa moltiplicazione del dominio delle frequenze e viene trasformata in funconv, ma accetta una maschera come input anziché una funzione. La maschera deve avere le stesse dimensioni dell'immagine originale. È necessario fornire solo il quadrante superiore sinistro della maschera.
1. Leggere un'immagine campione.
Fare clic per copiare questa espressione
2. Calcolare il numero di righe e di colonne nella matrice immagine.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
3. Definire le dimensioni di una maschera.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
4. Definire la maschera C.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
* 
Per C è possibile provare i filtri passa alto indicati di seguito.
Fare clic per copiare questa espressione
5. Applicare matconv a R e C.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
R
C
W
(times.bmp)
(matrix_ii_jj.bmp)
(times_mat.bmp)
matdeconv
Utilizzare matdeconv per recuperare l'immagine originale. Poiché la deconvoluzione interessa virtualmente la divisione per elementi con intensità zero, e viene aggiunto al denominatore di ogni divisione per eliminare questo problema.
Fare clic per copiare questa espressione
Fare clic per copiare questa espressione
(matdeconv.bmp)
È possibile provare altre funzioni filtro, tenendo presente che l'angolo superiore sinistro della maschera corrisponde alle basse frequenze, mentre l'angolo inferiore destro corrisponde alle alte frequenze. Provare immagini diverse.