【发布时间】:2013-05-15 23:14:52
【问题描述】:
我编写了一些代码,使用 OpenCV 库来检测画在草地上的白线。我需要有人对我使用的方法发表意见(因为我确信有比我更好的方法)。另外,我得到的结果并不像我预期的那么好,因为图像的细微变化需要调整参数(并且我需要对固定参数进行操作)。
到目前为止我的方法:
- 从网络摄像头抓取图像(并明显变成灰度)
- 通过阈值过滤器运行它(使用 THRESH_TO_ZERO 模式,它会将低于阈值的所有像素归零)。
- 模糊图像
- 通过侵蚀过滤器运行它
- 通过 Canny 边缘检测器运行它
- 最后,获取这个处理后的图像并使用概率霍夫变换 HoughLinesP 找到线条
我应该改变过滤器的顺序吗?
附:我不太关心处理能力;我在 GPU 上运行 HoughLinesP B-)
另外,这是一张示例图片:
我得到的结果: 精明的 没有精明(稍微调整参数)
任何帮助或指导将不胜感激!我只是不知道如何改进它!
更新 根据选择的答案使用非常快速的骨架实现(带有大量模糊)后,我得到了这个:
【问题讨论】:
-
在阈值处理后运行模糊是有原因的?在我看来,颠倒这两个步骤更合乎逻辑
-
你好,快速搜索给了我以下vision.caltech.edu/malaa/publications/aly08realtime.pdf对应的opencv和matlab代码也可以...code.google.com/p/caltech-lane-detection
-
@NicolaPezotti 我不知道我为什么这样做。本来没用blur的,后来加了。我会尝试颠倒顺序并回复您。无论如何,谢谢!
-
@G453 这看起来很有希望!感谢您的链接!我会阅读它,看看我能做什么......
-
@Cashew 通常是在应用阈值之前应用低通滤波器以消除高频噪声的好习惯(在这种情况下,我们可以将草纹理视为噪声)。
标签: opencv image-processing feature-detection edge-detection hough-transform