Cross-correlation(xcorr2) on image matrix
17 views (last 30 days)
Show older comments
Hi,hope someone can help me.
I've a problem with xcorr2 function.I've to correlate two matrix (a 32*32 pixel of an image for a piv method) in order to find a correlation peak.
I obtain different result if I execute xcorr2(ima,imb) and xcorr2(imb,ima).
How is it possible? The procudere should not be commutative?
Thanks in advance.
0 Comments
Answers (1)
Pratyush Roy
on 10 Jan 2022
Hi Pierluigi,
2D cross-correlation is not a commutative operation unlike 2D convolution which is a commutative operation.
The example below illustrates how the 2D cross correlation between M1 and M2 is different from that between M2 and M1:
M1 = [17 24 1 8 15;
23 5 7 14 16;
4 6 13 20 22;
10 12 19 21 3;
11 18 25 2 9];
M2 = [8 1 6;
3 5 7;
4 9 2];
corrmat_1 = xcorr2(M1,M2)
corrmat_2 = xcorr2(M2,M1)
if we run this command, correlation matrix corrmat_1 is computed by keeping M1 fixed while moving M2 from left to right in a row then striding down and again repeating the process. Hence the first element of the matrix turns out to be 17(M1(1,1)) multiplied by 2(M2(3,3)) which is 34.
On the other hand, correlation matrix corrmat_2 is computed by keeping M2 fixed while moving M1.Hence the first element of the matrix turns out to be 8(M2(1,1)) multiplied by 9(M1(5,5)) which is 72.
Hope this helps!
0 Comments
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!