检测图像中行的一种好方法?

我写了一些使用OpenCV库检测草地上的白线的代码。 我需要某人对我使用的方法的看法(因为我确定有比我更好的方法)。 此外,我得到的结果不如我预期的那样好,因为图像中的细微变化需要调整参数(并且我需要在固定参数上操作)。

我的方法到目前为止:

  • 从网络摄像头抓取图像(并明显变成灰度)
  • 通过阈值过滤器运行(使用THRESH_TO_ZERO模式,其中它将阈值以下的任何像素清零)。
  • 模糊图像
  • 通过腐蚀过滤器运行
  • 通过Canny边缘检测器运行
  • 最后,取得这个处理后的图像,并找到使用概率霍夫变换HoughLinesP的线
  • 我应该改变过滤器的顺序吗?

    PS我并不太在意处理能力, 我正在GPU上运行HoughLinesP B-)

    此外,这里是一个示例图像: 原始图像

    我得到的结果是:canny 与canny 没有canny(稍微调整参数) 这次不行

    任何帮助或指导,将不胜感激! 我只是不知道该怎么做来改善它!

    更新按照选定的答案使用一个非常快速的框架实现(模糊的吨)后,我得到了这个: 有用!


    我会尝试使用图像的骨架表示。 你的canny的问题在于,它基本上由于线的宽度而导致两条线。

    然后我会对它应用霍夫变换。


    一种可能的解决方案是从Canny边缘检测中获取所有边缘点,并在这些点上使用线性最小方差(可能为迭代)拟合一条线。 这样你总是得到一条“最适合”边缘点的线条。 这种方法几乎没有涉及参数化。


    我使用Canny进行室内图像处理,但对于户外,我发现更适合拉普拉斯滤波器和Sobel滤波器,而不是应用概率霍夫线变换(PHT)。

    如果你想加粗你的线条,你应该在拉普拉斯和最后的PHT之后尝试Sobel算子。 如果你的图像太黑,可能会变得更糟。

    链接地址: http://www.djcxy.com/p/79631.html

    上一篇: A good approach for detecting lines in an image?

    下一篇: Calculating distance to plane and square's corners from image