【问题标题】:how can I make a rectangle on a cluster of tiny edges after opencv's canny detection?在opencv的精明检测之后,如何在一组微小的边缘上制作一个矩形?
【发布时间】:2009-12-07 18:39:40
【问题描述】:

我是OpenCV 和 DIP 的新手,目前我需要从仅在背景之外的矩形区域的低质量图片中找到一个矩形区域。

我使用 canny 检测器检测出许多微小的边缘,这些边缘由几个矩形区域和其他一些单独的类似噪声的边缘组成。

那么,专家们,我该如何处理这个中间输出的图像来定位那些有意义的矩形区域的位置呢?

非常感谢!

【问题讨论】:

标签: image-processing


【解决方案1】:

首先要做的显而易见的事情是丢弃任何不属于矩形的边缘。最好的情况是,如果您的矩形都与相机的方向相同。在这种情况下,丢弃任何不是南北或东西的边缘。如果矩形都具有相同的方向,但相机没有,则找到主方向模块 90 度,并丢弃任何异常边缘。最坏的情况是矩形都具有不同的方向。在这种情况下,您仍然希望边缘方向能够聚集:对于每条边缘,至少应该有一个平行边缘和两个正交边缘。丢弃任何不匹配的边缘。 (这假设您发现的边缘长度超过几个像素;很难确定较短边缘的角度。

按方向消除虚假边缘后,下一步是查看是否可以将它们连接起来。您仍然应该将它们按上一步的角度分组。现在,假设对齐的边属于同一个矩形,并用一条较长的边替换它们。这可能会导致对齐的矩形之间出现虚假边缘。这可能不是主要问题,但如果是,请在最后通过验证步骤修复它。

您的寻边器很可能在角落附近无法正常工作,因为真正的边缘会在那里突然改变方向。因此,您应该将找到的边缘扩展几个像素。

扩展的边缘现在会产生一大堆交叉点。再次,利用您按方向订购边缘的事实。只需检查几乎正交边缘的交叉点。如果找到它们,请创建一个“交叉”对象并将其与两条边相关联。它们是试探性的角落。

完成此操作后,查找至少有 2 个交叉点的边,看看是否可以匹配它们。根据数据的质量,当您有 3 个或 4 个角时,您可能希望确定您找到了一个矩形。如果在一条边上发现太多交叉点,则可能是连接了两个对齐矩形的边。如果您有两边对齐的矩形,这可能会特别困难:

 _ _
|_|_|

【讨论】:

猜你喜欢
  • 2012-10-11
  • 2017-08-17
  • 2019-01-22
  • 2018-12-06
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多