一种道路斑马线的检测识别方法研究

2015-04-02 20:45孙维广
科技创新与应用 2015年10期

孙维广

摘 要:文章针对导盲系统中的斑马线识别问题进行了研究。首先根据斑马线灰度直方图的特点确定Canny算法的高低阈值,再用Canny算法进行边缘检测,然后采用Hough变换提取直线,最后根据提取的直线信息进行斑马线的识别。实验结果表明对于白天和夜晚受污染的斑马线本方法可行。

关键词:Canny算法;Hough变换;斑马线识别;灰度直方图

1 概述

世界上有众多的视觉障碍人群,导盲设备对于提高其生活质量具有很大的帮助。基于视觉的导盲设备,主要是通过安装在设备上的摄像头来实时采集路况图像,然后对其进行分析,从而做出预警和提示。斑马线是道路中一种重要的标志,文章对其检测和识别方法进行了研究。

2 斑马线边缘提取

2.1 高斯滤波

从摄像头获取的原始图像一般都存在噪声,对于后续的边缘提取会造成影响。因此,需要对其平滑处理。高斯滤波器是一种利用邻域平均的思想对图像进行平滑的方法。它的特点是在对邻域内像素灰度进行平滑时,赋予不同位置像素不同的权值,越是靠近邻域中心位置其权值越高。这样的好处是在滤除噪声的同时又较好的保存了图像的边缘信息。有利于后续的边缘提取。

2.2 Canny边缘检测

Canny边缘检测的基本原理是首先使用高斯滤波器平滑图像,再用一阶偏导的有限差分来计算梯度的幅值和方向,然后对梯度幅值进行非极大值抑制,最后用双阈值法来检测和连接边缘。阈值分为上限阈值和下限阈值,Canny推荐其比例为2:1到3:1之间[1]。

实际中斑马线总是会受到污染,斑马线整体比较暗或内部会有黑斑存在。因此,在阈值选取时,要尽可能提取出斑马线的边缘,还要尽可能降低斑马线内部污斑被提取出的比例。文献[2]应用Canny算法对斑马线检测进行了研究,但没有论述其阈值的选取。文献[3]的自适应阈值选取方法提取出了过多的细节边缘,不适用于斑马线的边缘提取。

文章采用了一种通过计算道路的灰度直方图,根据直方图的特点确定Canny算法双阈值的方法。这里需要注意的是灰度计算像素要选择在斑马线区域内,如图1(a)所示。直方图的横轴表示灰度值,纵轴表示像素数。文章从测试的50张图片中选取了有代表性的列于表1。表1中所用的图片斑马线污染大多都比较严重,即使在白天高峰灰度值也在150以下。表1中图片4的斑马线比较干净,并且是在晚上路灯比较亮时拍摄。经验证高峰灰度值在150以上时对Canny阈值的要求不是很严格,双阈值分别为60、120和80、160时对边缘提取效果差别不大,为尽可能排除干扰可选择后者。对于图1(a)两种阈值的边缘检测效果如图2(a)和图2(b)所示。当环境较亮时,如果高峰阈值超过在100到150之间,Canny算子的阈值可设为60、120。当环境较暗时如果高峰灰度值在100以下,高低峰灰度值差大于25时,阈值可设为30、60,高低峰灰度值差在25以下阈值设为20、40。其中,表1中12号图测试15、35为最佳阈值,为简化起见也可以20、40计算。实验表明直方图的高峰低峰灰度值差越小,即斑马线和道路颜色越接近,对阈值的变化越敏感。光线越好高峰灰度值越高对阈值变化越不敏感。在实验中还存在灰度直方图出现单峰的情况,说明斑马线污染较严重,此时以较低的阈值也可检测出部分直线,但会影响识别的正确率。

(a) 计算区域 (b) 灰度直方图

图1 斑马线的灰度直方图

表1 灰度直方图信息与阈值选取

对于表1中的图片6的原图和Canny边缘检测效果如图3(a)和图3(b)所示。表1中的图片11的原图和边缘检测效果如图4(a)和图4(b)所示。

(a) Canny算子的阈值为60、120 (b)Canny算子的阈值为80、160

图2 对于图1应用两种阈值的边缘检测效果

(a) 原始图 (b)Canny算子的阈值为30、60

图3 高低峰灰度值为50、80的斑马线边缘检测

(a) 原始图 (b)Canny算子的阈值为20、40

图4 高低峰灰度值为22、38的斑马线边缘检测

2.3 Hough直线提取

在边缘检测后,文章采用Hough变换提取直线。Hough变换的原理是利用图像空间与参数空间的对应关系,将图像空间的具有一定关系的像素进行聚类,利用某一解析形式转化到参数空间,通过在参数空间进行简单的累加统计来完成检测任务[1]。在应用Hough变换直线提取时,同一条边缘上会检测到很多直线段。为便于后续处理,要对属于一条边缘的线段进行归并。在极坐标系中每条直线都可由与其垂直的ρ和θ角来唯一确定,如图5所示。因此文章根据直线间ρ和θ的差值小于某阈值的特征将直线归并。图2(b)的直线提取结果如图6所示,每条直线上只有一个起始序号和一个结束序号,表明直线归并成功。图3(b)和图4(b)的直线提取结果如图7和图8所示。

图5 直线的ρ和θ 图6 直线归并效果

图7 图3(b)的直线提取结果 图8 图4(b)的直线提取结果

3 斑马线识别

图6的直线信息如表2所示,斑马线特征比较明显,即为一组平行直线,斑马线宽度、间距递减,且黑白相间,由于人身高确定,斑马线间距也可以基本确定。根据这些信息就可以有效识别出斑马线,并和其它道路标志相区分。如图9列举了一种易形成干扰的道路标志。可以根据其平行直线数量、间距、位置信息进行区分。

图9 干扰道路标志

表2 图6的直线信息

另外,斑马线的长度和宽度边缘不一定都是垂直的。因此只依據斑马线的斜率判断行人是否偏离斑马线并不可靠,还要加入对斑马线的左右边缘的判断,以保证行人行走在斑马线范围内。

4 结束语

文章选取的图片大小为640*480,并利用了OpenCV函数库进行编程实验,结果表明对于受污染的斑马线也有很高的识别率。实际环境中斑马线的情况千差万别,有时获得一个最佳的Canny算法双阈值及获得比较好的直线提取效果比较困难。但只要斑马线比较完整,基本会获得一组直线边缘,即使有少量误提直线也可以正确识别斑马线。但如果斑马线污染严重、缺失较多或有强光照射时会出现直线丢失或误提直线过多的情况,可能会导致识别失败。

参考文献

[1]Gary Bradski, Adrian Kaehler.学习OpenCV(中文版) [M].于仕琪,刘瑞祯,译.北京:清华大学出版社,2009.

[2]陆丰麒,陈健,郭语,等. 一种应用于导盲机器人的斑马线识别方法[J].数字技术与应用,2014(4):124-125.

[3]拓小明,李云红,刘旭,等. 基于Canny算子与阈值分割的边缘检测算法[J].西安工程大学学报,2014,28(6):745-747.