如何过滤Hough线进行多通道检测?

时间:2018-04-11 09:40:09

标签: c++ opencv computer-vision hough-transform houghlinesp

我正在使用HoughTransformP在OpenCV C ++中进行通道检测。

我的线路检测步骤是基本的,如下所示:

1. Bird Eye View of image
2. Grayscale image
3. Guassian Blur image
4. Canny Edge detection
5. HoughTransformP canny image
6. Filter out horizontal lines based on the slope

精确边缘检测后的输出为:

enter image description here

这里的问题是HougLinesP给出了多行,而不仅仅是通道。输出看起来与此类似:

enter image description here

我想获得这样的东西:

enter image description here

如何过滤杂乱的线条并仅绘制泳道线?

1 个答案:

答案 0 :(得分:1)

可能的算法概要:

  1. 对线段进行聚类:例如,在下图中,您应该能够使用1234标记每个细分

  2. 对于每个群集,找到“平均线”。

  3. enter image description here

    Hessian普通形式投射线段 x*cos(beta)+y*sin(beta)-p=0其中p是细分与原点之间的距离,beta是您在下图中看到的角度:

    enter image description here

    您可以使用适当的机器学习技术对线段进行聚类,例如使用输入要素向量[p, beta],然后您可以找到“平均线”,例如平均b和{{1 }}。 假设您有两个属于同一群集的beta[p_1, beta_1]细分,平均细分为[p_2, beta_2]