how to calculate image pixels shift

15 visualizaciones (últimos 30 días)
Nir Shwartz
Nir Shwartz el 1 de Dic. de 2021
Editada: Manish el 25 de Oct. de 2024
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?

Respuestas (1)

Manish
Manish el 25 de Oct. de 2024
Editada: Manish el 25 de Oct. de 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!

Categorías

Más información sobre MATLAB en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by