Правильное использование fft2 и fftshift для формы от затенения

Я пытаюсь воссоздать классическую форму из алгоритма затенения, который можно увидеть в тексте Trucco / Verri «Вводные методы для 3D-компьютерного зрения», но мне трудно понять функцию 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)

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