Sto lavorando a un'applicazione di elaborazione delle immagini che utilizza una trasformata discreta di Fourier per implementare la sfocatura / nitidezza. L'applicazione funziona più o meno, ma qualcosa sulla meccanica mi confonde ancora.
In particolare, è così che viene fatto il processo di centratura delle frequenze zero.
L'esempio che ho visto preelabora l'immagine di input (di intensità in scala di grigi) moltiplicandola con una matrice di dimensioni pari all'immagine di input, i cui valori sono , dove x è la riga, y è la colonna, quindi uno schema alternando 1 e - 1
Secondo le note, questo è equivalente di scambiare i quadranti della matrice lanciando tutti i ed y asse.
Capisco perché questo è fatto, e vorrei sottolineare che capisco che il mio codice / roba di Fourier funziona, semplicemente non capisco perché moltiplicare la matrice di input per 1 / -1 finisce per centrare la componente di frequenza zero attorno a 0.
Grazie
. La sua trasformata di Fourier assomiglia a:
), si traduce in un unico punto proprio al centro della trasformata di Fourier:
. (Ricordiamo che non abbiamo ancora fatto la nostra rotazione, quindi il centro della trasformata di Fourier è le alte frequenze e le basse frequenze sono ancora agli angoli.) Ma questo è il "kernel di rotazione!" Convolgere con questo kernel di rotazione sposta tutto verso il basso e verso destra (ma le cose che cadono in basso a destra ruotano in alto a sinistra).
, mentre convolvendo la trasformata di Fourier dell'immagine con il kernel di rotazione (nel dominio della frequenza) si dà:
.
, che ha una trasformata di Fourier di: