Правильное использование fft2 и fftshift для формы от затенения
Я пытаюсь воссоздать классическую форму по алгоритму затенения, который можно увидеть в тексте Trucco / Verri "Вводные методики для 3d Computer Vision », но мне трудно понять функцию FFT в Matlab. По сути, мне нужно использовать ограничение интегрируемости, чтобы получить глубину (Z) изображения. Я не уверен, когда использовать fftshift или нет в этом сценарии. Вот код, который у меня есть. На основеhttp://www.mathworks.com/matlabcentral/newsreader/view_thread/285244 Я в основном завернул все свои fft2 в fftshifts, но я неЯ думаю, что это правильное использование. Может кто-нибудь объяснить, пожалуйста, использование и что я делаю не так? Спасибо. В основном яя пытаюсь взять мои p и q (значения, которые являются обновлениями, основанными на интенсивности пикселей), преобразовать их в область Фурье, чтобы использовать их в уравнении C. Затем я хочу преобразовать уравнение C обратно во временную область, потому что это даст мне Z глубину. Я также хочу обновить P и Q на основе C в домене Фурье.
wx = (2.* pi .* x) ./ m;
wy = (2.* pi .* y) ./ n;
wx = ifftshift(wx); wy=ifftshift(wy);
Cp = fftshift(fft2(fftshift(p)));
Cq = fftshift(fft2(fftshift(q)));
C = -1i.*(wx .* Cp + wy .* Cq)./(wx.^2 + wy.^2);
Z = abs((ifft2(ifftshift(C))));
p = ifftshift(ifft2(ifftshift(1i * wx .* C)));
q = ifftshift(ifft2(ifftshift(1i * wy .* C)));