人行道检线算法

背景

  • 项目要求,需要检测人行道斑马线,所以寻找相关检线算法,此文记录

方案

方案1: Hough检直线

  • 参考road_lane_line_detection
  • 步骤:
    • 过滤颜色(github教程中图片是车辆道路线,分为黄,白,所以只过滤留下黄白就行);cv.inrange()造掩膜,cv.bitwise_and()去淹膜外背景。
    • 图片灰度化
    • 高斯模糊(平滑):中心点的像素值为周围点像素值的加权平均,权值按照中心点为远点,其他点按照正太曲线上的位置分配权重
    • Canny算子进行边缘提取
      • 高斯滤波图像去噪
      • 计算图像中每个像素的梯度(使用Sobel算子)
      • 非极大值抑制,对每一个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向的点中最大的,是的话就保留。
      • 滞后阈值(双阈值),确定哪些边界是真正的边界。设置一高一低两个阈值,梯度大于高阈值的被认为是真的边界,低于低阈值的则被抛弃,在高阈值和低阈值之间的则看起是否与真的边界相连。
      • 掩膜选取感兴趣的区域
      • 在检测到边缘并掩膜后的图片上Hough检测直线并画线
      • 图片加权(initial_img α + img β + λ, img为加上线后的图片,只有线有颜色,其他全为0,initial_img为原始图片)
> - tips:
    - draw_line中他因为场景需要(高速隔离道,就是一个梯形),把线分成了左右两组;所以想找人行道斑马线的时候,需要把draw_line改一下
    - 而且他的region_of_interest为梯度形状的