Недавно я изучаю DM_Script для обработки изображений TEM. Мне понадобился процесс размытия по Гауссу, и я нашел тот, который называется «Размытие по Гауссу» в http://www.dmscripting.com/recent_updates.html
Этот код реализует алгоритм размытия по Гауссу, умножая быстрое преобразование Фурье (БПФ) исходного изображения на БПФ изображения с гауссовым ядром и, наконец, выполняя его обратное преобразование Фурье.
Вот часть кода,
// Carry out the convolution in Fourier space
compleximage fftkernelimg:=realFFT(kernelimg) (-> FFT of Gaussian-kernel image)
compleximage FFTSource:=realfft(warpimg) (-> FFT of source image)
compleximage FFTProduct:=FFTSource*fftkernelimg.modulus().sqrt()
realimage invFFT:=realIFFT(FFTProduct)
Я хочу спросить это сложное изображение FFTProduct: = FFTSource * fftkernelimg.modulus (). Sqrt ()
Почему для БПФ гауссовского ядра требуется '.modulus (). Sqrt ()' для свертки?
Это связано с тем, что преобразование Фурье гауссовой функции становится другой гауссовой функцией? Или это связано с неким ограничением дискретного преобразования Фурье?
Пожалуйста ответь мне спасибо