利用霍夫变换和聚类算法进行车道线检测

. 优点:
可以将所有的车道线检测出来。
2. 缺点:
稳定性差,不能适应所有的场景。
对于对比度不明显的车道线,检测效果较差。
霍夫变换检测出的直线较多。
对弯曲的车道线无法检测。
原图:
利用霍夫变换和聚类算法进行车道线检测_第1张图片
这是最终的霍夫变换对车道线的检测效果。
利用霍夫变换和聚类算法进行车道线检测_第2张图片
3. 可以通过聚类算法,对霍夫变换的检测结果进一步优化,便于进行车辆统计和车辆占用应急车道的检测。如图所示,这是经过聚类算法处理之后的结果,从结果来看,将路沿的多条直线已经聚类成一条直线。
利用霍夫变换和聚类算法进行车道线检测_第3张图片
注: 聚类算法结果的输出具有随机性,如何能够通过聚类算法得到自己想要的结果,需要做一些限制。
原因:初始化参数矩阵时,不同的随机数导致不同的结果。
算法步骤:
(1)图像灰度化。
(2)图像去燥
(3)确定图像感兴趣区域
(4)canny算子提取边缘
(5)霍夫变换进行直线检测(核心步骤)
(6)聚类算法优化霍夫变换提取的直线(核心步骤)
(7)输出车道线两点坐标
问题1:道路场景发生变化时,ROI区域会发生变化,ROI区域的变化会导致检测结果出现偏差。
解决办法1:设定多个ROI区域。
风险:路边景物会影响车道线的检测,导致最终的检测结果偏差很大。
解决办法1:设定滑动框,遍历所有的ROI,如果结果合理,则保留结果。否则,则继续遍历滑动框,最终得到正确的检测结果。
风险:可能会导致在某些帧检测时出现延时。
问题2:如何确定检测结果是合理的,如果不合理时,如何想办法解决。
解决办法:可以设定一些固定参数,用这些固定参数衡量进行自适应修改。如果与固定参数相差很远,用固定参数替代检测结果。
问题3:不合理的情况有很多种,如何针对不同的情况进行针对性修改。
问题5:如何让算法自身能够自适应地调节某些参数。
原因:设定固定参数容易使得场景在某些情况无法适应。
问题6:为什么路边景物会检测出那么多直线。
问题7:浮点运算可能导致结果出现偏差。
解决办法:合并斜率接近的线。
现有方案的缺点:(1)检测结果的稳定性差
(2)严重依赖于ROI区域的设定
优化方案1:(1)工程化方法完成车道线聚类,即车道线分类时,人为设定一些参数。
(2)mask方法可以提高算法运行的效率。
流程方案:(1)灰度化。
(2)canny算子检测边缘。
(3)mask确定ROI区域(需要多个mask,工程后期优化)
(4)霍夫变换检测直线。
(5)聚类(如何聚类,道路边界,中间分隔线已经清楚,是否可以就此推断应急车道线,作为一个修正方案)。
存在的问题:(2019.6.21)
mask的调用:不同的路段,mask不同,如何快速地调用mask
图像检测结果准确性的验证:(1)从何时介入验证,效率和稳定性更高
(2) 验证方法
(3)验证结果如何处理
现有方案需要处理的问题:
(1)ROI区域和车道的匹配。
ROI区域和车道的匹配是能否准确检测出车道线的基础。
(2)如何判断ROI区域和道路匹配准确。
1)初始化如何判断。
ROI区域内的直线条数是否为一个范围,存在上限和下限。或者每个ROI相对应的直线条数为一个固定的值,是否有一个统计值。
2)在运行过程中如何判断。
(3)聚类算法导致的车道线拟合偏差过大。
可以用先验车道线信息去替代。
方案参数:
输入参数:最小最大斜率,该斜率值与mask的边界有关。
方案的核心问题:mask与道路的匹配。
mask与道路匹配的标准是什么。
是否可以检测出应急车道线,若能,则认为匹配,不能,则重新匹配。(该标准也可以用于聚类车道线)
方案对拍摄视频的要求:必须将左右车道完整检测出来。
注:聚类算法抗噪声能力较弱,尤其是数据量较少时,无法准确评估聚类中心。
参考链接:
https://blog.csdn.net/u010712012/article/details/88118907
https://blog.csdn.net/abcjennifer/article/details/6674572
https://blog.csdn.net/u010712012/article/details/87952752

你可能感兴趣的:(图像处理)