Необходимо построить нелинейную корреляцию между двумя изображениями. На выходе получается резкий пик, когда изображения одинаковы. Если изображения отличаются, мы получаем рассеянный график на поверхности.
Формула для этого соотношения:
abs ( IFT( {FT(img1) FT(img2)} x {FT(img1) FT(img2)} / abs(FT(img1) FT(img2)) ) ).^2
Требуемый вывод показан на рисунках PIC 1 аналогично и отличается
Графики, описанные Морисом, могут быть построены с использованием xcorr2 () из Matlab. Я строю график для похожего и отличающегося изображения, как показано: PIC 2 xcorr2 plots
Однако я хочу кривую с резкими пиками, как показано на PIC 1
Вот код, который я написал:
a=imread('pepper.tiff')
b=imread('cameraman.tiff')
Fa=fftshift(fft2(a))
Fb=fftshift(fft2(b))
z= abs (ifft2( (Fa.*Fb) .* (Fa.*Fb) ./ abs(Fa.*Fb) ) );
surf(abs(z))
Но я получаю сумасшедшую кривую, а не ту, что на оригинальной картинке. Кто-нибудь знаком с нелинейными корреляционными графиками?
Спасибо