zoukankan      html  css  js  c++  java
  • 红灯检测宇视科技专利分析与总结1

    宇视科技发布了新专利 

    一种信号灯图像处理方法及其装置 

    公开(公告)号 103679733A 

     

    1.宇视使用的是边缘检测+分割来识别红灯:

    S1 、检测摄像机采集的一帧图像中的信号灯的边缘信息 ; S2 、 根据所述信号灯的边缘信息, 从所述图像中分割出信号灯区域 

     

    接下来是红灯描红也就是文档中所说颜色强化模块: 

    S3颜色强化模块, 用于对所述图像中的信号灯区域进行颜色强化

     

    2. 细节补充方法:

    从宇视的专利里还有些细节上的描述

      1.颜色强化后的信号灯区域进行边缘模糊处理,这一步应该是处理红灯光晕用的

      2.判断所述颜色强化后的信号灯区域的像素亮度分布情况是否符合预设的像素亮度分布要求 。如果不符合预设的像素亮度分布要求, 则根据信号灯模板对所述颜色强化后的信号灯区域进行校正。 这一步应该是红灯中心过曝而引起的偏白的校正。

      3.所述信号灯模板是根据背景差分法获得,且其像素亮度分布情况符合预设的像素亮度分布要求的图像。 背景差分是指首先构建一个背景图像,然后利用当前帧图像与背景图像相减,得到差分图像,通过阈值分割来提取目标。

      4.根据信号灯的位置信息将所述图像中的信号灯所在位置区域分割出来;S12、利用Canny边缘检测算子计算所述信号灯所在位置区域中存在的边缘,获得所述图像中的信号灯的边缘信息。

      5.如所述信号灯呈横向排列,所述步骤S2包括:S21、对所述信号灯所在位置区域进行列扫描,判断所扫描的列是否存在信号灯的边界像素;S22、如存在信号灯的边界像素的列的前一列并不存在信号灯的边界像素,则将存在信号灯的边界像素的列设定为起始列;S23、如存在信号灯的边界像素的列的后一列并不存在信号灯的边界像素,则将存在信号灯的边界像素的列设定为结束列;S24、从起始列到结束列进行一个信号灯的图像分割,返回步骤S21完成全部信号灯的图像分割。这里怎么判断扫描的列是否在信号灯的边界像素想不到,可以多想想。整体还是说了分割时候的边界问题。后面说的是竖向排列一样的内容。

      6。S31、将标准色板卡中的信号灯颜色的RGB值转化为YUV的值,作为信号灯的期望颜色。S32 、将所述图像中的信号灯区域的信号灯颜色强化成信号灯的期望颜色。 这里就是颜色描红的问题,这样是不是过于绝对,没有考虑到场景。

     

    模块分类:

    边缘检测模块, 用于检测摄像机采集的一帧图像中的信号灯的边缘信息 ;

    区域分割模块, 用于根据所述信号灯的边缘信息, 从所述图像中分割出信号灯区域 ;

    颜色强化模块, 用于对所述图像中的信号灯区域进行颜色强化。 

    边缘处理模块, 用于对所述颜色强化后的信号灯区域进行边缘模糊处理。 统计检测模块,用于检测所述颜色强化后的信号灯区域的像素亮度分布情况是否符合预设的像素亮度分布要求;

    区域矫正模块,用于当不符合预设的像素亮度分布要求时,则根据信号灯模板对所述颜色强化后的信号灯区域进行校正。所述信号灯模板是根据背景差分法获得,且其像素亮度分布情况符合预设的像素亮度分布要求的图像。

    位置分割单元,用于根据信号灯的位置信息将所述图像中的信号灯所在位置区域分割出来;

    边缘获取单元,用于利用Canny边缘检测算子计算所述信号灯所在位置区域中存在的边缘,获得所述图像中的信号灯的边缘信息。

    如所述信号灯呈横向排列,所述区域分割模块包括:
    第一像素扫描单元,用于对所述信号灯所在位置区域进行列扫描,判断所扫描的列是否存在信号灯的边界像素;
    第一起始确定单元,用于当存在信号灯的边界像素的列的前一列并不存在信号灯的边界像素,则将存在信号灯的边界像素的列设定为起始列;
    第一结束确定单元,用于当存在信号灯的边界像素的列的后一列并不存在信号灯的边界像素,则将存在信号灯的边界像素的列设定为结束列;
    第一分割执行单元,用于从起始列到结束列进行一个信号灯的图像分割,完成全部信号灯的图像分割;

    或者如所述信号灯呈纵向排列,所述区域分割模块包括:
    第二像素扫描单元,用于对所述信号灯所在位置区域进行行扫描,判断所扫描的行是否存在信号灯的边界像素;
    第二像素扫描单元,用于如存在信号灯的边界像素的行的前一行并不存在信号灯的边界像素,则将存在信号灯的边界像素的行设定为起始行;
    第二像素扫描单元,用于如存在信号灯的边界像素的行的后一行并不存在信号灯的边界像素,则将存在信号灯的边界像素的行设定为结束行;
    第二像素扫描单元,用于从起始行到结束行进行一个信号灯的图像分割,完成全部信号灯的图像分割。

    这里还是很好奇这个边界是怎么判定的 拿canny仿真的效果看下。

    颜色强化模块包括:
    颜色获得单元,用于将标准色板卡中的信号灯颜色的RGB值转化为YUV的值,作为信号灯的期望颜色;
    强化执行单元,用于将所述图像中的信号灯区域的信号灯颜色强化成信号灯的期望颜色。

     

    3.技术深入描述 

    由于摄像机的安装高度、位置、方向、角度均为固定的, 因此, 摄像机采集的图像中的场景也是确定的。 并且信号灯安装的位置也是固定的, 所以可以根据信号灯的位置信息得到信号灯在摄像机采集的图像中的位置。 由于所述图像中除了信号灯外, 还包括车辆、路灯等其它物体, 因此将所述图像中的信号灯所在位置区域, 即信号灯所在图像中的大概区域分割出来。 分割出来的信号灯所在位置区域的大小可以由本领域技术人员根据系统的需要进行设定。 本发明仅针对分割出来的信号灯所在位置区域进行后继运算可以减少运算量, 并避免了图像中的其它物体带来的干扰。 具体地, 所述信号灯所在位置区域的分割可以由用户手动进行或者采用软件程序来完成先划分大概区域然后在区域中进行红灯的检测

     

    利用Canny边缘检测算子计算所述信号灯所在位置区域中存在的边缘,获得所述图像中的信号灯的边缘信息。

    Canny边缘检测算子对图像进行高斯平滑处理,对平滑处理后的图像利用一阶偏导的有限差分来计算梯度的幅值和方向,对梯度幅值进行非极大值抑制,最后用双阈值算法检测和连接边缘。

    利用Canny边缘检测算子在所述信号灯所在位置区域中进行边缘检测,从而获得所述图像中的信号灯的边缘信息,其计算量小,计算简单,且计算的准确度高。
    另外,本发明所述步骤S1还可以采用下述方式实现,所述步骤S1包括:
    S11、根据信号灯的位置信息确定信号灯在所述图像中所在的位置。
    S12、利用Canny边缘检测算子计算所述图像中存在的边缘。
    S13、结合信号灯在所述图像中所在的位置和所述图像中存在的边缘获得所述图像中的信号灯的边缘信息。

    由于利用Canny边缘检测算子对所采集的整帧图像进行计算,可以得到所述采集的图像中存在的所有边缘,除了信号灯边缘信息外,还包括车辆、行人等其他物体的边缘信息。而本发明仅需要信号灯的边缘信息,所以结合步骤S11中的信号灯的位置即可获得信号灯的边缘信息。根据所述信号灯的边缘信息,从所述图像中分割出信号灯区域。

    红晕,箭头灯,残灯这些非联通的识别效果有待测试

     

     

  • 相关阅读:
    递归算法——求取斐波那契数列(2)
    递归算法——求取斐波那契数列(1)
    《鸟哥的Linux私房菜》学习笔记(1)——文件与目录
    C# FINEUI 多页签(tab)中的笔记
    echarts 在.net 中和数据库交互
    FineUiMVC的tab控件加载URL(内部的_外部的)
    随想
    工作记录
    sql生成唯一标识
    ubuntu 中安装oracle 步骤
  • 原文地址:https://www.cnblogs.com/snowxshy/p/3796011.html
Copyright © 2011-2022 走看看