Houghlines2与像素化线

时间:2012-03-09 12:14:25

标签: opencv line detection hough-transform

我试图用houghlines2检测一条线,但是我的线是像素化的,因此houghlines2无法将其识别为一条线。发生的事情是我检测到部分线条,但不是整条线条 - 如红线所示,线条越来越多

enter image description here

我试图模糊一点线,但到目前为止没有运气。

代码:http://pastebin.com/zmsCFucM

有没有人知道如何解决这个问题?我和canny一起工作也没有运气。

修改

当我测量绘画中的线条时,让我们说它是30(我用sqrt(lengthx ^ 2 + lengthy ^ 2))。然后,houghlines2 probalistic中的minLength必须更短。我认为这是我的问题,我不知道为什么它必须缩短。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你可以尝试缩小你的图像...多亏了这一点,你的线将是一个像素宽度! 从理论上讲,我们可以找到一组Hough变换参数来检测你的线条。

您可以尝试在代码中用CV_HOUGH_MULTI_SCALE替换CV_HOUGH_PROBABILISTIC,这将尝试查找不同比例的行。

答案 1 :(得分:0)

以下答案基于我从您的问题中收集的内容。

所以它检测到两条线而不是一条线,对吗?   在检测到的两个中(使用概率标志),比较四组线端点(每条线将有两个)。两个点之间的距离最小。合并这两个得到三分。现在的方法是考虑其他两点并绘制一条线。

或者在从Hough Line检测得到的四个端点上使用线拟合功能(OpenCV有一个)。 cvFitLine()返回行的向量表示 - 没有端点。因此,在相距最远的霍夫线的终点的坐标处修剪拟合线。