我在不同光线条件下拍摄了两张相同道路的照片,如下图所示
第一张照片是在晚上拍摄的,第二张照片是在白天拍摄的。我必须写一个通用代码来确定两个轻微场景的道路的白色车道标记。我已经尝试过类似索贝尔边缘检测,连接组件的方法,并且还试图通过在白色像素值上应用条件来找到白色通道标记。但是对第一个图片起作用的算法在第二个图片上不起作用。请指导我
答案 0 :(得分:3)
这肯定会失败,因为有很多不同的条件可以从中获取这些图片,但这里有一些适用于这些图片的步骤。它们可能与其他技术一起使用更加有用,这些技术完全取决于您正在执行的任务。
使用max(R, G, B)
开始使用比平时更粗的形态渐变(例如,使用5x5平面结构元素)(这相当于将输入转换为HSB颜色空间并在那里选择通道B
)。这假设标记是白色的,就像问题标题所暗示的那样,这一步骤可能会突出显示。
将当前图像二值化为低阈值,因为输入中的标记不是那么重要,接着是形态关闭和细化。在这里,这种关闭操作起到了廉价部件关闭的作用以及每个部件的孔填充。细化将有助于区分您可能追求的线条与您当然不存在的线条。
现在,您可以测量组件以尝试选择您所追求的组件。像素计数和涉及凸壳的测量是有趣的。从后面你可以提取平均卡尺直径,对于线段,它将给出一个更接近像素数的值。
以下是个别结果,以及最终结果:
错误的线段可以通过考虑它是如何“非白”来消除,也可以使用更多特定问题的信息,例如这些段的预期角度。
答案 1 :(得分:0)
泳道检测是一个经过深入研究的主题。我会先给你一些论文的名字,但这绝不是一份全面的清单。你应该做更多的文献调查。如果您正在为课程项目执行此操作,那么只需了解核心思想并尝试实现,否则,您将必须完全理解这些文章。
3代码也可用,但除非你理解没有实际文件的代码。