c++ - 如何为多车道检测过滤霍夫线?

标签 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

Canny边缘检测后的输出为:

enter image description here

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

enter image description here

我正在尝试获得这样的东西:

enter image description here

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

最佳答案

可能算法的概述:

  1. 将线段聚类:例如引用下图,您应该能够用 123< 标记每个线段4

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

enter image description here

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

enter image description here

您可以使用一些适当的机器学习技术对线段进行聚类,例如使用输入特征向量 [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/

相关文章:

python-3.x - 将大型数据集加载/feed_dicting 到 Tensorflow session 中

c++ - 将文件中的值赋值给 unsigned char 变量的奇怪行为

c++ - 如何在 lldb 上设置 std::string 类型?

python - OpenCV断言失败,并带有负值

java - OpenCV Java 凸性缺陷(计算机视觉)

python - 对服装照片进行分类有哪些好的特征?

c++ - 在循环中声明变量是否有效?

c++ - 我们应该在 C++ 类中指定 "private"标签吗?这有什么区别吗?

java - 如何使用android opencv访问CV_HAAR_SCALE_IMAGE

python-3.x - 从单个图像生成图像数据集