如何找到两个二进制图像之间的旋转

时间:2014-06-20 11:07:04

标签: opencv image-processing rotation emgucv

我需要找到两个二进制图像之间的旋转角度。所以我可以通过将图像旋转指定的角度来校正旋转。有人可以帮忙吗? image1

rotated image

我已经尝试过原理轴旋转角度,但它没有给出准确的结果。有人可以建议我一个更好的方法。这个形象就是什么。它不一定是我上传的图像。但所有图像都是二进制的。

2 个答案:

答案 0 :(得分:1)

  • Threshold来源。

  • 应用here所述的细化算法。

  • Find contour and approxPolyDP

  • 现在为每个连续点计算角度。

    double angle = atan2(p1.y - p2.y, p1.x - p2.x)
    
  • 对第二张图像执行相同操作并计算角度差异。

答案 1 :(得分:0)

对于每张图片

  • 对图像进行阈值处理,使对象像素为非零,背景像素为零
  • 找到非零像素的凸包(您可以使用任何方法来减少用于计算凸包的点数,例如首先找到轮廓。主要想法是找到凸包)
  • 使用minAreaRect计算最小面积矩形,它将返回一个RotatedRect对象(在C ++中)。该对象包含旋转角度
  • 取得差异

注意:如果以某种方式生成的min-area-rect返回相同的角度,尽管对象旋转不同,此方法将不起作用。因此,我觉得使用填充凸包的时刻等其他度量来计算轮换效果更好:http://en.wikipedia.org/wiki/Image_moment