How to do correlation between two tiff image files?
Show older comments
Find the pixel-wise correlation between two tiff images and store it in a matrix?
Answers (2)
KALYAN ACHARJYA
on 7 Mar 2019
Edited: madhan ravi
on 7 Mar 2019
im1=imread('image1.tif');
im2=imread('image2.tif');
result=corr2(im1,im2);
Note: If the input images are RGB, convert both images in gray and apply corr2.
Please ensure that both images having same size.
3 Comments
Thara C.S
on 8 Mar 2019
KALYAN ACHARJYA
on 8 Mar 2019
Direct corelation gives a number, if you are looking for matrics, please look on Correlation coefficients
im1=double(rgb2gray(imread('21_training.tif')));
im2=double(rgb2gray(imread('25_training.tif')));
R=corrcoef(im1,im2)
R =
1.0000 0.9419
0.9419 1.0000
But I dont know wheather it serves the main objective of your problem or not?
You can find the corrcoef of single matrix, which returns a matrix of coefficients.
im1=double(gray_image);
R=corrcoef(im1)
Thara C.S
on 11 Mar 2019
Image Analyst
on 11 Mar 2019
Try xcorr2():
correlationImage = xcorr2(image1, image2);
imshow(correlationImage, []);
It will give an image of the spatial correlation of image1 with image2. From that you can get profiles if you want.
4 Comments
Yunus Emre SARI
on 11 Mar 2020
the process is taking too long, what do you think is the reason
Image Analyst
on 11 Mar 2020
Your images are probably too big. You might want to do it in the Fourier domain by multiplying their FT then inverse FT.
Yunus Emre SARI
on 16 Mar 2020
How to print the resulting tif file into a folder
Image Analyst
on 16 Mar 2020
You can use imwrite(). If correlationImage is double, then convert to uint8 and then call imwrite():
uint8Image = uint8(mat2gray(correlationImage));
imwrite(uint8Image, fileName);
Categories
Find more on Correlation and Convolution in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!