在matlab中找到两个非常相似的图片之间的角度

时间:2014-04-06 12:42:37

标签: image matlab image-processing video-processing matlab-cvst

我发现2张相似(但不完全相同)的照片之间的角度 ?

the first picture

the second

hVideoSrc = vision.VideoFileReader(filename, 'ImageColorSpace', 'Intensity');

imgA = step(hVideoSrc); % Read first frame into imgA
imgB = step(hVideoSrc); % Read second frame into imgB

    figure; imshowpair(imgA, imgB, 'montage');
    title(['Frame A', repmat(' ',[1 70]), 'Frame B']);
figure; imshowpair(imgA,imgB,'ColorChannels','red-cyan');
title('Color composite (frame A = red, frame B = cyan)');
来自http://www.mathworks.com/help/vision/examples/video-stabilization-using-point-feature-matching.html

但它没有帮助 任何人都有一个idia

4 个答案:

答案 0 :(得分:3)

我建议进行某种特征检测,然后使用它来查找单应矩阵。它可能有点矫枉过正,但至少你不仅可以从一个图像中找到相对于另一个图像的旋转,还可以找到任何剪切或平移。

检查属于Computer Vision工具箱的功能检测模块,以帮助您检测关键点:http://www.mathworks.com/help/vision/feature-detection-extraction-and-matching.html

找到对应点对后,请查看重建将一个图像变换为另一个图像所需的单应矩阵。这些幻灯片非常棒:http://www.comp.nus.edu.sg/~cs4243/lecture/camera.pdf。请看幻灯片29 - 35。

一旦找到单应矩阵,就可以通过检查系数和应用反三角运算来非常容易地确定旋转角度。

编辑(2014年4月7日):我找不到实际的MATLAB示例,但是Dima的链接(谢谢!)向您展示了通过MathWorks编写的MATLAB示例( http://www.mathworks.com/help/vision/examples/find-image-rotation-and-scale-using-automated-feature-matching.html)。

答案 1 :(得分:3)

只是想标记一个与Patrick的建议非常相似的算法存在于R2014a的图像处理工具箱中。它被命名为imregcorr并在对数极坐标域中使用相位相关。对于这个问题,这也可能非常有效,我还没有尝试过。

http://www.mathworks.com/help/images/ref/imregcorr.html

http://adessowiki.fee.unicamp.br/media/Attachments/courseIA369O1S2011/Ex13/phasecorrelation5.pdf

答案 2 :(得分:2)

如果你想找到两幅图像之间的平面内旋转,这里只有example

答案 3 :(得分:1)

在对数极坐标中进行相关。这为您提供了刻度和旋转测量(极轴为您提供了旋转分量)。

Here是一个参考。 This one描述了光学领域中的相同方法,但它对于可视化和理解该方法仍然非常有用。