我正在使用 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 给出了多条线,而不仅仅是车道。输出看起来类似于这样:
我正在尝试获得这样的东西:
如何过滤杂乱的线条并只绘制车道线?
最佳答案
可能算法的概述:
将线段聚类:例如引用下图,您应该能够用
1
、2
、3< 标记每个线段
或4
。为每个集群找到一条“平均线”。
将线段转换为Hessian 范式
x*cos(beta)+y*sin(beta)-p=0
其中 p
是线段和原点之间的距离,beta
是您在下图中看到的角度:
您可以使用一些适当的机器学习技术对线段进行聚类,例如使用输入特征向量 [p, beta]
,然后您可以找到“平均线”,例如对两个 b
和 测试版
。
假设您有两个段 [p_1, beta_1]
和 [p_2, beta_2]
属于同一个集群,平均段是 [(p_1+p_2)/2, (beta_1+beta_2)/2]
.
关于c++ - 如何为多车道检测过滤霍夫线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49771659/