李艳玮, 郑伟勇, 李 可
(河南工程学院 计算机学院,河南 郑州 451191)
链码跟踪直线提取算法在道路标志判断中的应用
李艳玮, 郑伟勇, 李 可
(河南工程学院 计算机学院,河南 郑州 451191)
为了准确快速提取和识别道路中的标志线,提出了一种基于链码的道路标志线提取与识别算法.道路中的标志线在图像处理中可以作为直线处理,整个提取算法分为3个步骤:首先,通过对道路图像的预处理去除噪声,利用Canny算子提取边缘;然后,对边缘图像进行链码编码并进行直线判断;最后,对属于同一条直线的直线段进行线段连接,过滤短的非道路标志线.实验表明,该算法可以准确快速地识别城市道路中的标志线和道路边缘,达到了实时准确的要求.
道路标志;链码跟踪;直线提取;线段连接;识别
在智能交通领域,对道路边界和标志线的识别是一个重要的研究课题.道路中的标志线主要针对城市道路,有分道线、斑马线和停车线等,正确识别这些车道标志线可以为智能车辆的行驶提供重要信息.在提取道路标志线的研究中,通常把车道标志线看作直线或分区域作为直线处理,文献[1]中用B-Snake算法把道路分成横向区域,每一个区域中的道路标志线作为直线段,再把直线段连起来趋近Snake模型.在直线提取中,常用的算法有Hough变换和Freeman链码提取[2-3].Hough 变换是一种全局性的直线提取算法,具有很好的容错性和鲁棒性,时间复杂度和空间复杂度都很高.但是在道路标志线的提取中,道路图像中标志线并不是全局的直线,尤其是斑马线和停车线等,而且Hough变换不能提供直线的长度和方向等信息,不适用于提取短直线.另一种受到人们重视的直线段检测方法是基于Freeman提出的链码直线提取[4],其基本思想是先对目标边界进行链码跟踪,然后在得到的链码串集合中进行直线判定[5].该方法的最大优点是运算量小并且能同时得到直线段的位置、长度和方向等信息,缺点是算法性能受目标边界跟踪算法的制约.本研究在基于链码跟踪的原理上,对链码跟踪、直线判定和直线段连接提出了改进算法.在链码跟踪时,根据前面的方向码确定后面的方向码,并初步判定直线并截断;在直线判定时,采用简单的公式判定;在线段连接时,摒弃以前复杂的算法,采用平面线段共线的特性进行线段连接,最后应用于道路图像,实现道路标志线的识别提取.
1.1道路图像的预处理
为了减少各种水渍、阴影和行人等非道路元素对道路标志线提取的干扰,先对图像进行预处理,道路的原始图像如图1所示.
图1 道路的原始图像Fig.1 Original image of road
由原始图像可知,由于道路表面不均匀,直接提取边缘会产生很多干扰,所以要对图像进行滤波和二值化.中值滤波可以在保护边缘信息的同时尽可能地平滑噪声,二值化可以突出检测目标,忽略掉无用的信息,本研究利用Ostu自适应算法对图像进行二值化.
边缘提取的精度直接影响链码提取的精度,本研究采用Canny 算子对道路图像进行边缘检测.Canny算法首先应用高斯平滑处理,然后在x和y方向应用Sobel算子,再应用非极大值抑制求得边缘点,最后利用连接边缘点的滞后阈值处理剔除不需要的边缘点.Canny算法的两个阈值选择可以控制保留边缘的多少,为了尽可能地保留边缘信息,高低阈值分别选择0.7和0.4.预处理后提取的边缘图像如图2所示,未经过预处理直接提取的边缘图像如图3所示.
图2 预处理后提取边缘Fig.2 Edge extraction after pretreatment
图3 未经过预处理直接提取边缘的图像Fig.3 Edge extraction image without pretreatment
对比图2和图3可以看出,预处理后的边缘图像噪声点更少,周围建筑物的信息被大幅度地忽略掉,突出了中间道路标志线的信息,为以后的链码跟踪创造了前提.
图4 八邻域示意图Fig.4 Eight neighborhood schematic
1.2链码跟踪
相较于霍夫直线检测的不确定性,链码编码是对图像边缘直接编码,能提供更多关于直线的信息.链码跟踪的目的是对边缘图像进行编码,存进数据链表,以便进行下一步的线段提取.对于Canny算子进行的边缘检测的结果,首先要对边缘进行细化处理,然后检测像素八邻域进行链码编码,如图4所示.观察边缘图像中的直线,有两种情况,第一是重复一个方向码,第二是两个方向码交替出现.因此,可以在链码跟踪时初步判断出属于一条直线的链码.
算法具体流程如下:①取图像中的一个未访问边缘点,对于二值化边缘图像取图像中的白色边缘点;②标记为已访问,存储其方向码,如果此边缘点为该条链码的第一个点,则搜索其优先级高的邻域,否则搜索其与前一个方向码相同的边缘点,若未访问,标记为已访问,进入第③步,若没有边缘点,则搜索其前不相同的方向码的边缘点,若有并未访问,标记为已访问,进入第③步,若没有则链码结束;③重复第②步,直到没有白色未访问点,则一条链码结束;④重复第①步,直到搜索完整个图像.算法具体流程如图4所示.
算法中,为了更精确地跟踪边缘,八个邻域区分优先级,依次为0,2,4,6,1,3,5,7.
2.1线段判定
基于直线提取准则的判定,国内外学者提出了许多改进算法,文献[6]与文献[7]提出了基于Freeman直线判别准则的BL算法,但是算法为了提高精度而引入了复杂的判据,并且其直线连接算法的判据也不严密,其缺点在文献[8]中有所分析.文献[9]对链码的跟踪方法进行了改进,但未对Freeman编码本身进行改进,其直线检测和直线连接沿用已有的方法,未提出自己的新方法.
本研究用以下形式表示目标边界的链码串:X,Y,d,X,Y,d,….采用链表实现,每一个节点包括3个元素,X和Y为当前链码串起始点的图像坐标;d为当前像素点对于上一像素点的方向码.因为链码跟踪时,已经初步把可能为一条直线的边缘点作为一条链码,所以首先对链码的长度作一个约束,只对满足长度阈值的链码进行直线判定.长度阈值可以根据要判断的图片进行选择,本研究中选40(像素).判定准则采用直线段相似度检验,对于长度过长的链码采用分段检验,设定分段阈值LSec,小于LSec的链码直接进行相似度检验,大于LSec的链码从起点开始依次选择长度为LSec约束的子链码串.计算链码串的实际长度Len(p1,p2)和两个端点p1和p2之间的理想直线距离‖p1-p2‖,该链码串的直线近似度可以表示为式(1)[10]:
S=‖p1-p2‖/Len(p1,p2).
(1)
图5 提取的直线Fig.5 Extracted straight
2.2线段连接
噪声干扰及图像模糊经常使标志线边缘线出现断裂,提取直线后还需对提取的直线进行分类,对属于同一条直线的线段进行线段连接.本算法摒弃了以前的复杂算法,提出了一种简单、准确、高效的新算法.若两条线段共线,则连接两条线段的第3条线段也必与这两条线段共线.设第1条直线的两个端点为(p1,p2)和(p3,p4),第2条直线的端点为(q1,q2)和(q3,q4),则线段(p3,p4)与(q1,q2)连接成的线段一定与前两条直线斜率两两相等.经过线段连接的直线在边缘图像中如图5所示.
图5中白色的为提取的直线,浅灰色的为提取的边缘图像,观察可知本算法提取出了道路中间的白色分道线、道路边缘等有效直线.当设备参数为双核CPU、内存2 G、主频3.0 G时,整个过程用时200 ms.随着配置的提高,用时会更少,可以用于实时提取.
应用本算法对道路中人行道线进行提取,人行道线原始图像如图6所示.
采用识别道路标志线的具体算法如下:
(1)对图像进行二值化和滤波处理,使用Canny 算子对道路图像进行边缘检测,并进行单边化处理;
(2)从图像顶部开始逐点向右、逐行向下扫描进行编码;
(3)提取长度为Len的链码进行直线判断,存储直线的有效信息;
(4)对属于同一条直线的线段进行连接;
(5)对最终提取的直线长度进行限定,剔除不是道路标志线的直线,提取的直线如图7所示.
图6 人行道线原始图像Fig.6 Original image of sidewalks line
图7 提取的直线Fig.7 Extracted straight
从图7可以看出,采用本算法能够在复杂的道路环境中准确检测出道路中的人行道线.
分析道路标志线的直线特征,通过链码跟踪的方法来提取道路中的标志线,算法简单、精确度较高,可以满足实际应用中的实时性.通过对图像的预处理,可以使本算法有较好的抗阴影能力,并能在复杂的道路环境中准确地检测出车道标志线和道路边缘,为后续的道路分析和车辆行驶提供有效信息.
[1] Wang Y,Shen D G,Teoh E K.Lane detection and tracking using B-Snake[J].Image Vision Computing,2004,22(4):269-280.
[2] Wang Y,Shen D,Teoh E K.Lane detection using spline model[J].Pattern Recognition Letters,2000,21(8) :677-689.
[3] Bandera A,Urdiales C,Arrebola F,et al.2D object recognition based on curvature functions obtained from local histograms of the contour chain code[J].Pattern Recognition Letters,1999,32(20):49-55.
[4] Jianxing Y,Ching Y.Suen identifying line segments from a sequence of chain codes[J].Pattern Recognition,1995,28(5):635-646.
[5] Li D W.On the chain code of a line[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1982,4(3):347-353.
[6] 鲁光泉,许洪国,李一兵.基于链码检测的直线段检测方法[J].计算机工程,2006,32(14):57-61.
[7] 史册,徐胜荣,荆仁杰,等.实时图像处理中一种快速的直线检测算法[J].浙江大学学报:工学版,1999,33(5):99-102.
[8] 孙涵,任明武,杨静宇.一种快速实用的直线检测算法[J].计算机应用研究,2006,23(2):256- 260.
[9] 裘镇宇,危辉.基于Freeman链码的边缘跟踪算法及直线段检测[J].微型电脑应用,2008,24(1):88-90.
[10]马兆敏,齐保谦,廖凤依,等.基于神经网络的车道偏移自动检测的研究[J].科学技术与工程,2012,12(30):8097-8099.
[11]闫旭琴,吴晓兵,车晓波,等.基于边缘分布函数的车道标志线识别方法[J].计算机应用,2010,30(4):974-976.
Chaincodetrackingstraightlineextractionalgorithmappliedinroadsignsjudgment
LI Yan-wei, ZHENG Wei-yong, LI Ke
(CollegeofComputer,HenanInstituteofEngineering,Zhengzhou451191,China)
To extract and recognize the marked lines of road quickly and accurately, an extraction and recognition algorithm of road sign line based on chain code is proposed, the road sign line in the image processing is treated as straight line. Three steps in the whole extraction algorithm, firstly the noise is removed through the preprocessing for road image and the edge is extracted using canny operator. Then the edge image is encoded to chains which needed to be judge whether it is a straight. Finally the straight segments belong to the same straight line are connected and the short lines which is not road line are filtered.Experiments show that this algorithm can quickly and accurately recognize the sign line and edge of road to meet the accurate and real-time requirements.
road signs; chain code tracking; line extraction; line segment connection; recognition
2014-04-14
李艳玮(1980-),女,河南郑州人,讲师,主要研究方向为人工智能与计算机应用.
TP391.41
A
1674-330X(2014)03-0069-04