找到一个图像相对于另一个图像的旋转

时间:2010-12-21 19:39:09

标签: matlab matlab-cvst

我有2张图片。一个是参考图像,另一个是参考图像的旋转版本。我想找到第一张图像旋转的角度是什么。我希望自动执行此操作。

5 个答案:

答案 0 :(得分:4)

蛮力吧!编写一个函数来比较旋转图像的交集(差值的总和或每个点之间的差值的平方和),然后迭代旋转角度以找到与最小差值对应的值。

虽然知道matlab,但可能只是告诉你旋转的函数,但它被称为奇怪的东西。

答案 1 :(得分:4)

执行此操作的一般方法是:

  • 使用SIFT等算法获取兴趣点描述符列表。这些描述符提供兴趣点的比例,方向和几何形状。几何信息是比例和旋转不变的。

  • 使用最近邻居算法通过比较几何图形来匹配每张图片中的兴趣点。

  • 对于每对匹配的兴趣点,比较它们的比例和旋转。

理想情况下,所有匹配的兴趣点将具有相同的相对比例和旋转。但是,拍摄照片的方式和前一阶段的不准确性会产生变化的比例和旋转,因此:

  • 使用RANSAC之类的算法来确定最佳拟合比例和旋转。

QED

答案 2 :(得分:2)

注意:由于问题最初并未要求自动解决方案,因此我发布了此解决方案,该解决方案需要用户选择一组控制点每个图像。虽然问题中的要求已经更新,但我认为这个答案对于想要在MATLAB中进行图像注册的人来说仍然有用,所以我把它留在这里......

非自动化方法:

您所询问的内容称为image registration,您可以选择使用CP2TFORM中的Image Processing Toolbox功能。

事实上,该函数的文档中有一个very nice example,它看起来像是在解决你试图解决的同一个问题。

答案 3 :(得分:0)

这是代码。

http://www.mathworks.com/matlabcentral/fileexchange/1713-three-dimensional-reconstruction-from-planar-slices

该算法使用 apriori 知识这两个对象是圆的。 YMMV

答案 4 :(得分:0)

以下是example如何使用本地功能和计算机视觉系统工具箱中的RANSAC恢复两个图像之间的转换。