【问题标题】:What is the simplest *correct* method to detect rectangles in an image?检测图像中矩形的最简单*正确*方法是什么?
【发布时间】:2011-12-14 21:36:47
【问题描述】:

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

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

corner detector 与霍夫变换一起使用吗?

【问题讨论】:

  • 不够,你的意思是没有效率,对吧?这实际上取决于您的应用程序 - 除非您实时为高清视频执行此操作,否则 Hough 变换可能就足够了。

标签: c++ opencv computer-vision


【解决方案1】:

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

我的回答 here 也适用。

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 对于一个简单的几何形状,霍夫变换回答了这些问题 - 对于更复杂的东西,比如一张脸,你是完全正确的。
    • 其实我在检测矩形方面做了一些工作,我也遇到过这些问题。显然,如果您使用合成图像,那么 Hough 方法将非常有效,但如果您想“在野外”找到矩形,那就完全不同了。
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 2014-01-04
      • 2020-02-20
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      相关资源
      最近更新 更多