how to calculate image pixels shift

hello,
i have two similar images, but one has a pixels shift compare to the other. how can i calculate the the offset (amount of pixels) for axis x and y?

Réponses (1)

Manish
Manish le 25 Oct 2024
Modifié(e) : Manish le 25 Oct 2024
Hi,
I see that you want to calculate pixel offset between two similar images.
You can achieve this by following the below steps:
  • Process the Images: Start by reading your images that you want to process.
  • Align Usingnormxcorr2: Use thenormxcorr2function to perform normalized cross-correlation on the images.
  • Locate the peak value and calculate the offset based on the position of the peak.
Here is the sample code of above steps:
image1 = imread('img1.png');
image2 = imread('img2.png');
crossCorrMatrix = normxcorr2(image2, image1);
[maxCorr, maxIndex] = max(abs(crossCorrMatrix(:)));
[yPeak, xPeak] = ind2sub(size(crossCorrMatrix), maxIndex);
yOffset = yPeak - size(image2, 1);
xOffset = xPeak - size(image2, 2);
fprintf('Offset in X: %d pixels\n', xOffset);
fprintf('Offset in Y: %d pixels\n', yOffset);
Refer to the documentation link below for more information on thenormxcorr2function:
Hope it helps!

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Modifié(e) :

le 25 Oct 2024

Community Treasure Hunt

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

Start Hunting!

Translated by