检测图像中矩形的最简单*正确*方法是什么?

时间:2011-12-14 21:36:48

标签: c++ opencv computer-vision

我正在考虑检测图像中矩形的最佳方法。

我最初的想法是使用Hough transform作为行,并选择行的组合,其中两条线在下部和上部由相同的两条线相交,但这还不够。

使用corner detector和Hough变换一起工作吗?

3 个答案:

答案 0 :(得分:5)

在OpenCV发行版中查看/samples/c/squares.c。这个例子提供了一个方形探测器,它应该是一个非常好的开始。

我的回答here也适用。

答案 1 :(得分:3)

我不认为目前存在一种简单而强大的方法来检测图像中的矩形。您必须处理许多问题,例如矩形不是完全矩形但只有近似,部分遮挡,光照变化等。

一个可能的方向是对图像进行分割,然后检查每个分段与矩形的接近程度。由于您无法信任您的分割算法,因此您可以使用不同的参数多次运行它。

另一个方向是尝试将矩形参数化地拟合到图像,以使沿着轮廓的图像梯度大小最大化。

如果您选择使用参数化方法,请注意,虽然参数化矩形的简单方法是通过它的四个角的位置(即8个参数),但还有一些其他表示需要较少的参数。

答案 2 :(得分:1)