Правильное использование 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)));

Ответы на вопрос(1)

Ваш ответ на вопрос