1

我正在使用 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

canny边缘检测后的输出为:

在此处输入图像描述

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

在此处输入图像描述

我试图获得这样的东西:

在此处输入图像描述

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

4

1 回答 1

1

可能算法的概述:

  1. 对线段进行聚类:例如参考下图,您应该能够用、1或标记每个线段。234

  2. 为每个集群找到一条“平均线”。

在此处输入图像描述

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

在此处输入图像描述

您可以使用一些适当的机器学习技术对线段进行聚类,例如使用输入特征向量[p, beta],然后您可以找到“平均线”,例如对b和进行平均beta。假设你有两个段[p_1, beta_1]并且[p_2, beta_2]属于同一个集群,平均段是[(p_1+p_2)/2, (beta_1+beta_2)/2].

于 2018-04-12T07:09:24.780 回答