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

on 25 Apr 2013

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?

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!