Xcorr2 function

18 views (last 30 days)
Padma
Padma on 11 Sep 2011
Commented: RITIKA MALIK on 30 Jun 2022
hello,can anybody help me how to go about using the xcorr2 function to find the cross correlation between 2 images? i need a single value of correlation between a query image and an image in the database. i have used the followin: crosscorr1=max(abs(xcorr2(double(x(:,:,1)),double(y(:,:,1))))); where x and y are d 2 images. i get a single row matrix as the output.

Accepted Answer

Wayne King
Wayne King on 11 Sep 2011
Hi, That's because you are using max() on a matrix, which returns by default the maximum values for each column. One thing you can do is to call max() on the initial max() output.
x = randn(10,10);
y = randn(10,10);
max(max(abs(xcorr2(x,y))))
Note however that xcorr2 is not a normalized cross correlation.
Wayne
  2 Comments
Padma
Padma on 11 Sep 2011
thanks!!!
but how is it different from normxcorr2??? will make a difference if i use just xcorr2?
RITIKA MALIK
RITIKA MALIK on 30 Jun 2022
https://in.mathworks.com/matlabcentral/answers/95436-why-are-my-results-different-in-xcorr2-and-normxcorr2-in-matlab-7-7-r2008b#answer_104789

Sign in to comment.

More Answers (1)

Wayne King
Wayne King on 11 Sep 2011
The difference is that xcorr2 depends on the scale of the values in the input matrices, while normxcorr2 normalizes the cross correlation values to lie in the interval [-1,1]. Consequently, you can interpret the output of normxcorr2 more easily. If I tell the maximum value of the cross correlation between two matrices using xcorr2 is 200, you have no way of saying whether that indicates a strong linear association or not. All you know is that the correlation is in a certain direction. On the other hand if I tell you the maximum normalized cross correlation is 0.9. That gives you information about the strength of the cross correlation.

Community Treasure Hunt

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

Start Hunting!