2016-05-13 8 views
1

Я сделал FFT на сложной функции в DM. И как ни странно, ожидаемые низкие частоты расположены по углам (см. Прикрепленное изображение). это сделало последующую обработку очень неудобной.Есть функция сдвига БПФ в dm-скриптинге

Это напоминает мне аналогичные результаты, когда это будет выполняться в Python с numpy.fft.fft, однако в numpy (python) есть функция fftshift для переключения низкой частоты на центр.

есть ли подобная функция в DM, работающая на таком изображении FFT, чтобы сдвинуть низкие частоты от угла к центру?

FFT of an complex function

+0

ОБПФ на картинке вполне достаточно: c) Связана ли голография? – BmyGuest

+0

БПФ расчетной Френелевской дифракционной волны. Долго боролся со мной ... – w4m

ответ

2

Скрипт вычисленных FFT действительно есть это частоты в центре. (Обратите внимание, что ввод операции должен быть сложным образом.)

image img := GetFrontImage() 
ConvertToComplex(img) 
ComplexImage fImg := FFT(img) 
fImg.ShowImage() 

Однако, если вы видите ваши частоты «сдвинуты», то есть вполне вероятен, является признак ошибки в вашем FFTs (или, эквивалент, смешивание БПФ и iFFT).

Но чтобы ответить на ваш фактический вопрос, да, есть такая команда, и это на самом деле документально:

void ShiftCenter(BasicImage image)

enter image description here enter image description here

+0

Спасибо за ваш намек (из смешанного fft и ifft). Я пытался вычислить дифракцию Френеля с использованием метода БПФ и распространить через объект, затем «фокус» (БПФ), а затем «изображение» (IFFT). – w4m