Ho letto un sacco di domande su SO riguardo la sfocatura gaussiana e la FFT, ma non ci sono risposte su come implementarle (ma ci sono commenti come "sono i tuoi compiti"). Voglio sapere come riempire correttamente il kernel e usare FFT e IFFT su kernel e immagine. Potete fornire qualche pseudocodice o implementazione in qualsiasi lingua come Java, Python, ecc come fare questo, o almeno qualche buon tutorial su come capirlo:Corretta implementazione della sfocatura gaussiana tramite FFT
1. FFT the image
2. FFT the kernel, padded to the size of the image
3. multiply the two in the frequency domain (equivalent to convolution in the spatial domain)
4. IFFT (inverse FFT) the result
passaggi copiati da Gaussian blur and FFT
Grande codice di esempio. Ho alcuni suggerimenti per renderlo ancora migliore. (1) Mostra un risultato di esempio usando un'immagine reale con cui possiamo testare. Stai usando 'imread' con un'immagine locale a cui non abbiamo accesso. (2) Non utilizzare semplicemente il canale rosso per convertire in scala di grigi. Usa 'rgb2gray' per farlo per te. (3) Se si ha tempo, estendere alle immagini a colori dove si eseguirà il filtro separatamente per canale. (4) Impostare tutti i valori zero su un valore minimo con 'find' è un po 'inefficiente. Usa invece l'indicizzazione logica: 'fftkernel (fftkernel == 0) = 1e-6;' Non hai bisogno di 'find' qui. – rayryeng