フィルターのクリア

imregcorr() misaligns images badly

66 ビュー (過去 30 日間)
Nathan Nguyen
Nathan Nguyen 2024 年 7 月 3 日 20:28
編集済み: Matt J 2024 年 7 月 9 日 23:35
[tform, peakregcorr] = imregcorr(SourceImageAdj,SourceRef, ...
TargetImageAdj,TargetRef, ...
'transformType', 'similarity', ...
'Window', true);
RegisteredImage = imwarp(SourceImageAdj,SourceRef, tform, 'linear', ...
'OutputView', TargetRef);
disp(peakregcorr)
figure, imshowpair(TargetImageAdj,TargetRef,RegisteredImage, TargetRef)
above is my code to correlate 2 images of different sizes. the goal is to find the correlation between the images to determine what pixel location a point of interest might lie in both images. However, imregcorr consistently misses the mark badly.
Whereas the code above might output a tform object - Dimensionality: 2, Scale: 0.4254, RotationAngle: 2.4851, Translation: [-0.3269 -0.0904]
A more correct tform object (based upon the output image would look like - Dimensionality: 2, Scale: 1, RotationAngle: -1, Translation: [0.0640 0]
The SourceRef and TargetRef seem correct, so Im not sure what is causing the issue
  2 件のコメント
Garmit Pant
Garmit Pant 2024 年 7 月 4 日 5:24
Hello
Can you please provide the input images that you are using?
Regards
Nathan Nguyen
Nathan Nguyen 2024 年 7 月 8 日 20:51
編集済み: Nathan Nguyen 2024 年 7 月 8 日 20:55
these are the input images that I am using
srcimg - source image
srcref - source reference imref2d
targetim - target image
tgtref - target reference imref2d
tform - transformation object that is formed from the images
The problem is that my original source image is 512x512 whereas the target image is 2048x2044

サインインしてコメントする。

採用された回答

Matt J
Matt J 2024 年 7 月 8 日 23:18
編集済み: Matt J 2024 年 7 月 8 日 23:19
Phase correlation isn't going to be a good algorithm for images of a starry field. I think your best bet is to do landmark extraction -- either manually with cpselect or automatically if you have some way to do that -- and then use fitgeotform2d.
[sp,tp] = cpselect(SourceImageAdj, TargetImageAdj ,'Wait',true);
[sp(:,1), sp(:,2)]=intrinsicToWorld(SourceRef, sp(:,1), sp(:,2))
[tp(:,1), tp(:,2)]=intrinsicToWorld(TargetRef, tp(:,1), tp(:,2))
tform = fitgeotform2d(sp,tp,'similarity')
RegisteredImage = imwarp(SourceImageAdj,SourceRef, tform, 'linear', ...
'OutputView', TargetRef);
figure, imshowpair(TargetImageAdj,TargetRef,RegisteredImage, TargetRef)
  1 件のコメント
Nathan Nguyen
Nathan Nguyen 2024 年 7 月 9 日 20:01
編集済み: Matt J 2024 年 7 月 9 日 23:35
Thanks yeah manual selection seems to work well!
This isn't relevant to the question specifically but if I found all of the feature detection algorithms from matlab on this webpage. These seems to be pretty useful https://www.mathworks.com/help/images/techniques-supported-by-registration-estimator-app.html

サインインしてコメントする。

その他の回答 (0 件)

製品


リリース

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by