我发现2张相似(但不完全相同)的照片之间的角度 ?
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
答案 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)