基于MATLAB的道路交通标志识别
2016-03-30孙巍孙国荣张瑞龙
孙巍 孙国荣 张瑞龙
摘要:本文介绍用MATLAB强大的计算功能和各种功能齐全的函数,图像工具箱来进行道路交通标志的识别。介绍基于LAB颜色模型的颜色特征提取和基于radon变换的形状特征的提取,并根据上述两个特征进行交通标志识别的MATLAB的程序设计进行介绍。
关键词:MATLAB;lab;radon;特征融合;道路交通标志
中图分类号:U491.5+2 文献标志码:A 文章编号:1674-9324(2016)12-0055-03
一、引言
当今社会交通已经非常发达,而道路交通仍占主导地位。MATLAB利用图像处理工具箱,并结合其强大的数据处理能力,我们可不必关心图像文件的格式、读写、显示等细节,而把精力集中在算法研究上,大大提高了工作效率。而且,在测试这些算法时既可方便地得到统计数据,又可得到直观图示。
二、交通标志识别关键技术研究
1.交通标志的类型。目前,不同国家执行的交通标志标准不尽相同,考虑到研究的适用性,对本文而言基于目前国内现行的交通标志国家标准——《道路交通标志和标线GB5768-1999》。由该标准可知:交通标志一般安置在固定位置的固定高度之处,它们的形状、彩色、图样都是依照国家标准而设计。另外,从交通标志的国家标准以及实际交通标准识别实验中,还可以获得以下的先验知识。考虑到标准中的指路标志包含较多汉字,标志库数量较大,本文禁令交通标志作为研究的重点。
2.识别框架。由模式识别的一般理论可知,典型的模式识别系统原理,如图1所示。数据采集和预处理的目的是为了得到比较满意的图像,要解决交通标志图像的实时采集和图像的复原问题;特征提取和选择要解决待识别对象的固有的、本质的及重要的特征的量测以及尽量减少特征矢量的维数等问题。分类识别要根据对象的知识以及分类识别的理论和方法,将待识对象进行分类和理解,在交通标志识别中,要解决交通标志的分类和理解问题。
3.预处理技术。交通标志图像的预处理主要涉及两个方面:一是对交通标志特征颜色的分割;二是对交通标志图像质量的提高。这两方面对于交通标志的正确识别具有非常最重要的意义。下面对目前交通标志识别系统所涉及的彩色图像分割技术和图像复原技术加以分析。
4.特征提取与选择技术。特征提取是模式识别领域的一个比较关键的问题,因为后面的分类器是直接用所选取的特征进行分类的。特征选取的好坏对于一个模式识别系统的识别效果有重要的影响。
三、基于颜色和形状特征的交通标志识别
1.色度直方图。①L*a*b*彩色空间与图像的颜色不变量。为了获取一个独立于观察点的量化的图像颜色描述符,需要一种颜色特征,在事先考虑到阴影、遮蔽以及高亮度等因素的影响下,它仍能独立于对象表面的形状和观察的角度。人们已经发现,对于Phong和Torrance Sparrow的反射模型,颜色的色度(hue)是一个独立于观察点的颜色特征。由于彩色空间L*a*b*具有感知上的均匀性,它与人们对彩色的视觉感知非常接近,并且具有欧氏距离度量(Euclidean metric)。因此,用L*a*b*彩色模型来计算色度。②色度直方图。给定一幅图像f,图像大小为m*n。设f中坐标(I,j)处像素的颜色为c,即c=f(i,j),C为颜色集,则图像的颜色直方图定义为:
由于当象素颜色的饱和度很小时,其色度将变得不稳定,因此在采用色度直方图方法时,图像中那些饱和度小于给定阀值t(如t=15)的象素将被剔除掉,这些象素不参与直方图的计算。
2.Radon变换。Hough变换广泛应用于模式分析与识别以及自动直线检测领域,而Radon变换与Hough变换密切相关,因此可以使用Radon变换来实现一定形式的Hough变换。Radon变换计算图像在指定方向上的投影。二维函数f(x,y)的投影是某一方向上的线积分。如f(x,y)在垂直方向上的线积分就是它在x轴上的投影对于一幅图像,通过在若干个方向上计算其投影就可以得到一个二维数组(该数组通常以图像形式显示)。
设f(x,y)为一图像,则radon变换定义为:
四、基于颜色和形状特征的MATLAB程序的界面(如图2)
算法如下:
[filename,pathname]=uigetfile('*.jpg;*.png;*.bmp','打开图像文件');
pp=[pathname,filename];
pic=imread(pp);%pic是图片矩阵
sizetmp=size(pic);
cform=makecform('srgb2lab');
lab_pic=applycform(pic,cform);%红色提取
bw1=im2bw(lab_pic(:,:,2),150/255)-im2bw(lab_pic(:,:,2),200/255);%黄色提取
bw2=im2bw(lab_pic(:,:,3),200/255)-im2bw(lab_pic(:,:,3),220/255);%蓝色提取
bw3=im2bw(lab_pic(:,:,3),67/255)-im2bw(lab_pic(:,:,3),89/255);bw=bw1+bw2+bw3;
bw01=imfill(bw);
S=double(uint16(sizetmp(1)*sizetmp(2)*0.006));
bw00=bwareaopen(bw01,S,4);
bw00=uint8(bw00.*1);
首先将pic由rgb颜色空间转变为lab颜色空间lab_pic,然后根据红、黄、蓝对应的a、b值的范围提取感兴趣的区域,然后用imfill函数填充区域。用bwareaopen函数去掉面积太小的区域,即少于图像像素的0.006倍的区域。
[B,L]=bwboundaries(bw00,'noholes');STATS=regionprops(L,'all');
fori=1:length(STATS)w(i)=uint8(abs(STATS(i).BoundingBox(3)-STATS(i).BoundingBox(4))<……
((STATS(i).BoundingBox(3)*STATS(i).BoundingBox(4))^0.5)*0.2);
w(i)=w(i)+2*uint8((1-STATS(i).Extent)<0.1);switch w(i) case 1 %圆形
B1=imcrop(pic_bw,[STATS(i).BoundingBox(1),STATS(i).BoundingBox(2),STATS(i).BoundingBox(3),STATS(i).BoundingBox(4)]);
lab_B1=imcrop(lab_pic_bw,[STATS(i).BoundingBox(1),STATS(i).BoundingBox(2),STATS(i).BoundingBox(3),STATS(i).BoundingBox(4)]);case 2%长方形
B2=imcrop(pic_bw,[STATS(i).BoundingBox(1),STATS(i).BoundingBox(2),STATS(i).BoundingBox(3),STATS(i).BoundingBox(4)]);case 3%正方形
B3=imcrop(pic_bw,[STATS(i).BoundingBox(1),STATS(i).BoundingBox(2),STATS(i).BoundingBox(3),STATS(i).BoundingBox(4)]);end end
然后用regionprops函数对提取的二值图像进行分析。
STATS.BoundingBox(3),STATS.BoundingBox(4)分别为包围该形状的最小矩形的长、宽。
STATS.Extent是同时在区域和其最小边界矩形中的像素比例,因此圆形就是STATS.BoundingBox(3)=STATS.BoundingBox(4)且0.6 然后用imcrop函数对满足条件的区域进行分割。 对分割后的图像进行分析,得到它的颜色直方图Ht和形状直方图R2。 五、结论 交通标志的识别研究是一个极具潜力的研究领域,作为智能交通系统研究中的一个子系统,它的研究能促进整个智能交通系统的水平,为其他子系统提供更多和更准确的有关交通的信息。特别是随着城市化的进展以及汽车的普及,机动车数量、出行人数的大量增加,交通管理日益重要,交通标志的识别能为交通管理提供更为有效的技术手段,从而提高交通管理水平,而且它的研究对推动军用和民用无人驾驶车的研究具有重要的作用,对提高汽车的智能化水平以及促进我国汽车工业的信息化改造有巨大的作用。 参考文献: [1]吴振远.科学计算实验指导书——基于MATLAB数值分析[M].武汉:中国地质大学出版社,2010. [2]史峰,王辉,胡斐,郁磊.MATLAB智能算法30个案例分析[M].北京航空航天大学出版社,2011. [3]杨淑莹,张桦.群体智能与仿生计算:Matlab技术实现[M].北京:电子工业出版社,2012. [4]邓书斌.ENVI遥感图像处理方法[M].北京:科学出版社,2010. [5]赵小川.MATLAB图像处理:能力提高与应用案例[M].北京航空航天大学出版社,2014.