用透视投影进行矩形识别的Hough变换与Contour检测

Tae*_*hin 18 opencv image-processing

我使用轮廓检测​​进行矩形检测,并在调整透视投影之前使用OpenCv应用多边形以获取矩形的位置.它工作得很好.但是我小组中的一些人建议转换Hough.我想知道使用Hough变换进行矩形检测是否有任何优势.

更新:我尝试了两种方法.在我的例子中,两种方法在Canny边缘检测后都能正常工作.但是由于霍夫变换产生线,我们必须假设几行,例如线的长度和线的可连接性,并且应该进行额外的计算,例如搜索连接的线并从连接的线找到角点.就个人而言,我更喜欢轮廓法,因为它的概念更简单.使用该方法,您只需搜索可以使用具有4个角的闭合和凸多边形近似的轮廓,并调整多边形的透视投影.就是这样.

Hug*_*une 16

到目前为止,您使用轮廓检测​​得到了什么样的结果?有什么例子吗?

Hough变换应该适用于矩形检测IFF,您可以假设矩形的边是图像中最突出的线.然后你可以简单地检测霍夫空间中的4个最大峰值,然后你得到了你的矩形.

例如,这可以用在黑暗背景前的白纸照片.

理想情况下,您可以使用模糊,阈值,形态运算符对图像进行预处理,以便在霍夫变换之前删除任何小规模结构.

如果图像中有多个较小的矩形或其他类型的突出线,则轮廓检测可能是更好的选择.

霍夫的一些一般优势从头顶转变:

  • 如果矩形的一部分被遮挡或超出框架,则霍夫变换仍然可以工作.
  • 我想,霍夫变换应该比轮廓检测更快?
  • 霍夫变换将忽略任何不是直线的变形,因此您可能会在杂乱的图像上取得更大的成功.(如果矩形边是最突出的线)

最后,它可能取决于输入数据.有什么例子吗?

也许合并的方法最好?参见 组合Hough变换和轮廓算法检测车辆牌照

我做了一些使用霍夫变换检测矩形的实验,你可以在这里看到一些初步结果:http://www.imagemagick.org/discourse-server/viewtopic.php? f = 1&t = 14491&start = 9

不幸的是,目前存在的一切,该项目目前处于中断状态,最终我希望在我不太忙的时候恢复它.

我对你的结果非常感兴趣.

(如果您正在进行透视校正,还要检查透视变形矩形的比例)


小智 5

用霍夫变换搜索轮廓检测让我想到了这个问题.

为了帮助未来的搜索者,这篇博文有一个很好的演练,用opencv做到这一点:http:
//opencv-code.com/tutorials/automatic-perspective-correction-for-quadrilateral-objects/

概念:
1.获取边缘图 - canny,sobel
2.使用Hough变换检测线条
3.通过查找线条之间的交叉点来获取角点.
4.检查近似多边形曲线是否有4个顶点,其中包含大约
5 个顶点.确定左上角,左下角,右上角和右下角.
6.使用getPerspectiveTransform应用透视变换以获取变换矩阵,并使用warpPerspective应用变换.

  • 该链接现在通向垃圾网站,请尝试https://github.com/bsdnoobz/opencv-code/blob/master/quad-segmentation.cpp (3认同)