【问题标题】:Improving line extraction from Opencv HoughLinesP改进 Opencv HoughLinesP 的线提取
【发布时间】:2015-03-04 15:14:05
【问题描述】:

我正在使用HoughLinesP 从灰度图像中提取线条。

下面是我的伪代码。

threshold(img_tmp,bin_img,30,255,cv::THRESH_BINARY);
Canny(bin_img, canny_img, 50, 255, 3);
vector<Vec4i> tmp_lines;
HoughLinesP(canny_img,tmp_lines, 1, CV_PI/360,10, 10, 1);

从放大后的图像中可以看出,单边(即图像中的单行)返回多行。 16,22 和 0,28 和 10,11 和 23,18,24 行对应单行。

我怎样才能得到单边的单线,有什么建议吗?

输入图片:

提取线

问题

谢谢。

【问题讨论】:

  • 问题是您使用的是精明的边缘检测器,它可以在每条线的两侧找到边缘。它适用于自然图像并找到两个对象/部分之间的边界,但它非常适合您的输入类型。我会尝试对图像进行阈值处理,稍微清理一下(使用形态学),反转(使边界为白色)并将其发送给 Hough
  • 为了清洁,我尝试了膨胀和腐蚀,但结果是一样的。
  • 你跑了吗?主要问题是不要运行任何类型的边缘检测或梯度操作。您可以使用类似 Canny 的非最大值抑制进行清洁(在此之前您必须稍微模糊图像)
  • 我尝试了阈值-->侵蚀-->膨胀-->canny-->霍夫,但结果没有改善。我会在做精明之前尝试模糊。

标签: opencv image-processing grayscale hough-transform


【解决方案1】:

再一次,canny 或任何边缘检测算法都不适合这种输入,因为线条基本上是边缘。尝试在不进行任何边缘检测的情况下对输入应用某种非最大值抑制,然后是霍夫线。

【讨论】:

    猜你喜欢
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 2016-06-07
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多