how to calculate image pixels shift

조회 수: 6 (최근 30일)
Nir Shwartz
Nir Shwartz 2021년 12월 1일
편집: Manish 2024년 10월 25일
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?

답변 (1개)

Manish
Manish 2024년 10월 25일
편집: Manish 2024년 10월 25일
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!

카테고리

Help CenterFile Exchange에서 Images에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by