6

嗨,我有一个多边形问题。我不知道要找什么,所以我决定在这里问。下图显示了一个简单的形状。使用 OpenCV 的findContours()检测轮廓,并通过CV_CHAIN_APPROX_TC89_KCOS(对于那些想知道这是如何完成的人)算法进行近似,以便将一条线上的所有点汇总为一条线。所以无论如何,一些轮廓在形状中包含某种,我称之为噪声。下图显示了噪声的含义。红线是轮廓。(对不起没有ms的绘画技巧)

在此处输入图像描述

我的目标是重新定义形状以近似形状,但忽略这种“噪音”。所以轮廓应该是这样的。蓝线显示校正后的轮廓。

在此处输入图像描述

4

2 回答 2

5
  1. 尝试使用...检测角点。cvGoodFeatuersToTrack()但是有一个标准,角点应该分开很远的距离...如果角点形成一个簇,则丢弃它们。
  2. 从轮廓中的点列表中...选择具有(最高 x,最高 y)、(最高 x,最低 y)、(最低 x,最高 y)和(最低 x,最低 y)的点。 ..现在加入这四点...
  3. 如果角落本身有“噪音”,请尝试使用霍夫变换检测图像中的直线......
于 2013-01-17T13:47:10.030 回答
1

我可以提出另一种方法:

1)您可以使用霍夫线变换来检测图像上的线条(在使用 Canny 检测轮廓之前)。您不能通过在 HoughLinesP 方法中使用相当大的阈值(“检测”一条线的最小交叉点数)来考虑小线。

2) 找到所有线后,您可以找到它们的交点,如@DanielHsH所述。因此,您将能够找到所有角落。

于 2013-01-17T14:24:06.010 回答