MATLAB Answers


tracking correlation coefficient (linear and non-linear) between two images

Asked by Alex
on 25 Apr 2013

When I apply corr2 to two similar images (delay between two consecutive images of 1s) it gives correlation coef. close to 0.99 but when I use corr2 for two similar flat field normalized images (delay around 1s between the images) correlation coef. is close to 0. Why is that? Do I have any options other than the built-in corr2 to determine the degree of correlation between two images? I would like to try several approaches to track the correlation between two images (linear and non-linear correlation).


1 Answer

Answer by Anand
on 25 Apr 2013

You're probably making a mistake with the normalization.

Here's an example that doesn't change the correlation coefficient:

im1 = imread('cameraman.tif');
im2 = imnoise(im1,'gaussian');
corr2(im1,im2) %0.9286
im1n = double(im1)./sum(sum(double(im1)));
im2n = double(im2)./sum(sum(double(im2)));
corr2(im1n,im2n) %0.9286

  1 Comment

thank you for the answer, by the normalization I mean division of one image (data) by another image (reference) to reduce effect of different pixel sensitivity in CCD camera. corr2 always gives a value close to 0 even though the images after the normalization are identical. Maybe, linear correlation is not the best way to compare normalized images?

Join the 15-year community celebration.

Play games and win prizes!

Learn more
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!