Circular Cross Correlation 2D Using FFT

20 views (last 30 days)
Ziv Blum
Ziv Blum on 18 Apr 2022
Answered: David Goodmanson on 18 Apr 2022
Hello,
How to do Circular Cross Correlation In 2D Using fft ?
I checked this code for vectors and it seems that it works.
Z=ifft2(fft2(X1).*conj(fft2(X2)));
Is this code works also for matrix ?
Dims:
X1 : [m,n]
X2: [m,n]
Z: [m,n]
Thank You.

Answers (1)

David Goodmanson
David Goodmanson on 18 Apr 2022
Hi Ziv,
yes, it works similarly.
m = 5;
n = 6;
q = 4;
A = randi(m,n,q);
B = randi(m,n,q);
C = zeros(size(A));
for j = 1:n
for k = 1:q
C(j,k) = sum(circshift(A,[1,1]).*circshift(B,[j,k]),'all'); % [1 1] adjusts the indexing
end
end
C
ifft2(fft2(A).*conj(fft2(B))) % agrees with C

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!