《基于MATLAB图像处理的汽车车型识别论文.doc》由会员分享,可在线阅读,更多相关《基于MATLAB图像处理的汽车车型识别论文.doc(15页珍藏版)》请在三一办公上搜索。
1、基于MATLAB图像处理的汽车车型识别1.摘要随着汽车工业的发展,经济的发展,越来越多的人拥有了汽车,在人们享受汽车带来便利的同时也给公共交通带来了巨大的压力。智能交通系统的出现,很好的缓解了这一压力。车型检测是智能交通系统中关键的一个部分。本文研究的问题是基于车辆侧身图像的特征研究,实现车辆类型的判别。首先是基于车身侧面图像的车长测量,通过自适应背景更新的方法生成动态背景,利用背景差分检测出运动区域,再对图像依次进行中值滤波去噪声,Ostu阈值分割,投影变换,根据投影的结果,计算出车辆的像素长度,再根据标定的结果,得出汽车的实际长度,可以通过这个长度将车辆的类型划分成大型车,中型车,小型车。
2、其次是基于车身侧面图像的轮距测量,用Prewitt算子对图像进行边缘检测,再使用沈俊算子对原图进行边缘检测,将两种算子检测后的图像进行与操作,得到一个比较清晰的边缘图像,为了尽量减少无关边缘对Hough圆检测的干扰,把边缘图像的水平线去除,最后检测圆,获得两个车轮的位置,计算出车轮的像素距离,根据标定的结果,得出实际的车轮距离,通过此距离同样可以判断出大型车,中型车,小型车,相比较前一种方法的识别率更高。最后是在前两章研究的基础上,通过链码跟踪,在二值图像中获得汽车的轮廓图像,通过链码计算出汽车的顶部和车长的比,车高与车长的比和汽车的相对矩,再结合汽车的轮距特征,可以判别出货车,轿车关键词:背
3、景更新 ,图像分割 ,边缘检测,二值化,车型识别2设计的内容主要功能:1.预处理功能:(1)直方图的统计及绘制,根据此找到图像的阈值点;(2)可将图像的各种几何矫正变换;(3)彩色图像的灰度化变换等、一般灰度图像的二值化处理等;(4)数字图像的增强处理功能:空域中的点运算、直方图的均衡化、各种空间域平滑算法(如局部平滑滤波法、中值滤波等)、锐化算法(如梯度锐化法、高通滤波等);色彩增强:伪彩色增强、真彩色增强等;2.处理功能: 车识别:从图像中提取出车辆的轮廓并辨别出车型3.原理方法: 首先对图像做了压缩和归一化处理,得到统一大小的背景图和前景图。分别对两幅图做灰度变换。再将含有汽车的前景图像
4、和背景图像进行差分运算去除背景干扰,迭代阈值分割的方法提取到目标车辆轮廓。经过小面积区域去除和横纵填充后,得到比较利于分析的汽车外形图。在汽车车型识别中按标准分析了各种不同的车辆形状,抽象出了车辆的一般形状的“工”字形,以车辆顶长作中垂线分下底长的前后比例数、顶长等作为参数,提取出特征参数,用于车型的识别。利用小孔成像的原理,推算出长和车高。3各个功能的实现程序及结果1)能对图像文件(bmp、jpg、tiff、gif等)进行打开、保存、另存、打印、退出等功能操作;2)图像预处理功能:(1)直方图的统计及绘制,根据此找到图像的阈值点;(2)可将图像的各种几何矫正变换;(3)彩色图像的灰度化变换等
5、、一般灰度图像的二值化处理等; (4)数字图像的增强处理功能:空域中的点运算、直方图的均衡化、各种空间域平滑算法(如局部平滑滤波法、中值滤波等)、锐化算法(如梯度锐化法、高通滤波等);色彩增强:伪彩色增强、真彩色增强等;1图像预处理及定位(1)预处理实现方案为了图像处理方便,应对汽车侧面进行图像帧的摄取,可以容忍由于拍摄时轻微倾斜而引起的图像偏差;摄取的图像含有一定的噪声,先对车辆图像进行预处理,以消除大部分的噪声干扰,然后对图像再进行边缘检测以提取车辆轮廓为模式识别做准备11灰度图像在光线较弱的情况下,灰度图像相对于彩色图像清晰度较高,因此为了适应不同的光线条件有必要把彩色图像转换为灰度图像
6、,这样既满足了处理需要,又减少了信息运算量。对一幅含噪声的彩色图像(如图2)进行预处理,经灰度线性变换可得到灰度图像(如图3)。12图像平滑去噪对于车型识别来说,最重要的是保持车辆轮廓的清晰,同时应该能够清除高频噪声。中值滤波恰好符合这一条件。中值滤波的基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值。中值滤波器是一种非线性平滑滤波器,它能够很好地抑制脉冲干扰,使得图像的边缘不变模糊。该方法在去除脉冲噪声、椒盐噪声的同时又能保留图像边缘细节。这是因为它不依赖于邻域内那些与典型值差别很大的值。经中值滤波处理后的图像如图4所示。通过图像锐化,可让一些关键部分更显突出。拉普拉斯锐化效果如图5
7、所示。在汽车车型自动识别系统中,从CCD摄像头获取的图像中除了汽车之外还有许多其他的物体和背景,为了进一步提取汽车特征,辨识车型,图像分割是必需的。其实,图像分割就是把数字图像划分成互不相交或不重叠区域的过程。图像分割的基本思路是从简到难,逐级分割;控制背景环境,降低分割难度;一般是把焦点放在增强感兴趣对象,缩小不相干图像成分的干扰上。图像分割的方法比较多,例如:阈值分割、边缘增强、区域增长、二值图像分割等。带有车辆的图像一旦可以分割,就可以作进一步的识别处理。13二值化处理域值分割技术是经典的、流行的图像分割方法之一,这种方法的关键在于寻找适当的灰度域值。因此,在汽车车型灰度图像进行图像分割
8、时,首先要找到车辆和背景的灰度阈值0。方法是统计车辆图像中各个灰度级中像素的个数,然后做出其灰度直方图(如图313),根据图像阈值选取技术获取车辆灰度值的上界(Tmin)和下界(Tmax),使车型图像二值化,即使车型为白色(灰度值最大),背景为黑色(灰度值最小)。二值化车型图像如图6所示。设图像中像素值的灰度大小为T,则有: 14 Sobel边缘检测在这里,最为感兴趣的是车辆的轮廓,故使用基于图像边缘提取的图像分割技术。目前,边缘检测方法有很多,例如:梯度算子、Sobel算子、拉普拉斯算子、Prewitt算子等。利用Sobel算子可检测得到一幅车辆边缘图像(如图7)。很明显,经过边缘化后,在汽
9、车图像轮廓周围产生了许多噪声。当然,出现噪声是不可避免的,可采用翻转法尽可能地对噪声进行剔除。15图像横向填充与纵向填充经过处理后的车辆轮廓图像存在离散的点和线。为了便于提取车辆的信息特征,对车辆边缘化图像需做进一步的处理,可采用图像横向填充、纵向填充和修正等技术。图像经过横向填充和纵向填充后的效果图如图10。图像横向填充:对每一行进行扫描,如果在某行从左向右遇到一个亮点,记下其坐标;然后在同一行从右向左寻找第一个亮点记下其坐标;最后,在同一行把两个亮点之间的所有像素点改为亮点。图像纵向填充:方法与图像横向填充类似。对每一列进行扫描,如果在某列自上而下遇到一个亮点,记下其坐标;然后在同一列自上
10、而下寻找第一个亮点,记下其坐标;最后,在同一列把i双-t-亮点之间的所有像素点改为亮点。16图像修正经过两次填充,图像周围出现一些小的毛刺,需要进行取舍修正。采用的方法是:分别逐行或逐列计算亮点的个数,根据经验设定一个阈值,如果亮点个数低于这个阈值,把亮点改为暗点,否则不变。如公式(2),其中N为逐行或逐列亮点的个数,0为阈值,T为原图像素值,T为处理后的像素值。经过修正后的效果图如图313。17轮廓提取提取车形的边缘轮廓,如图12。18反色处理为了方便车型特征提取,需对车型轮廓图像格式化处理,即进行反色处理。图像中像素值若为0,则替换为255;若为255,则替换为0。如公式(3),其中T为原
11、像素值,Tf为处理后的像素值。反色处理后的车型图像如图13。经过最后处理的二值化图像轮廓虽然与真实的车辆轮廓有点失真变形,但是在一定的精度前提下是可以容忍的。这样就可以根据图像的信息进行车辆信息的提取了。2实验结果程序代码:name,path=uigetfile(*.jpg;*.bmp;*.tif;*.gif;*.*,);file=path,name;im=imread(file); subplot(221);x=rgb2gray(im);imshow(x):title(灰度化图像);subplot(222);imhist(x);title(图像直方图);subplot(223);c=hist
12、eq(x);imshow(c);title(均衡化图像);subplot(224);imhist(c);title(均衡化后的直方图); fmax=double(max(max(x);%egray的最大值并输出双精度型fmin=double(min(min(x);%egray的最小值并输出双精度型level=(fmax-(fmax-fmin)/2)/255;%获得最佳阈值levelg=im2bw(x,level);figureimshow(g);title(二值化);%转换为二值图像RGB=imread(D:/zll.jpg);x=rgb2gray(RGB);J=imnoise(x,salt&
13、pepper,0.02);%加入椒盐燥声subplot(131),imshow(J);title(原始黑白图像) K=medfilt2(J);%中值滤波函数subplot(132);imshow(K);title(中值滤波);H=fspecial(unsharp);BW=imfilter(K,H,replicate);subplot(133);imshow(BW);title(图像锐化);B=grayslice(x,7);%从灰度创索figure,imshow(B,cool(7);title(伪彩色增强);%cool青蓝和洋红车识别程序代码:i=imread(D:/e1.jpg);j=imre
14、ad(D:/e2.jpg);i1=rgb2gray(i);j1=rgb2gray(j);i2=medfilt2(i1,2,2);j2=medfilt2(j1,2,2);z=double(imsubtract(i2,j2);subplot(221),imshow(z);title(图象与背景图象相减);zmax=max(max(z);zmin=min(min(z);tk=(zmax+zmin)/2;bcal=1;zsize=size(z);while(bcal)ifore=0;iback=0;isum=0; backsum=0; fori=1:zsize(1)forj=1:zsize(2)tmp
15、=z(i,j);if(tmp=tk)ifore=ifore+1;isum=isum+double(tmp);elseiback=iback+1;backsum=backsum+double(tmp);endendendzo=isum/ifore;zb=backsum/iback;tktmp=uint8(zo+zb)/2);if(tktmp=tk)bcal=0; elsetk=tktmp;endendz1=im2bw(z,double(tk)/255);z2=medfilt2(z1,7,7);z3=bwareaopen(z2,300);subplot(222),imshow(z2);title(
16、小面积区域去除后的图像)%zsize=size(z3);%横向填充fori=1:zsize(1)n=0;x=zeros(1,400);y=1;forj=1:zsize(2)if(z3(i,j)=1)x(1,y)=j;y=y+1;n=n+1; liebiao=j;endendif(n=100)&(liebiao-x(1,1)150)form=x(1,1):liebiaoz3(i,m)=1;endendend%subplot(223),imshow(z3);title(横向填的图像);z4=medfilt2(z3,5,5);zsize=size(z4);%纵向填充forj=1:zsize(2)n=
17、0;x=zeros(600,1);y=1;fori=1:zsize(1)if(z4(i,j)=1)x(y,1)=i;y=y+1;n=n+1;hangbiao=i;endendif(n=10)&(hangbiao-x(1,1)50)form=x(1,1):hangbiaoz4(m,j)=1; endendend%subplot(224),imshow(z4);title(横纵向填充后的图像);zsize=size(z4);%扫描汽车顶部fori=1:zsize(1)n=0;y=1;x=zeros(1,500);forj=1:zsize(2)if(z4(i,j)=1)x(1,y)=j;y=y+1;
18、n=n+1;liebiao=j;endendif(liebiao-x(1,1)=(n-1)&(n60)a1=i;b1=x(1,1);b2=liebiao;break;endendfork=1:(a1-1)forj=1:zsize(2)z4(k,j)=0;endend%zsize=size(z4);%扫描汽车底部fori=zsize(1):-1:1n=0;y=1;x=zeros(1,500);forj=1:zsize(2)if(z4(i,j)=1)x(1,y)=j;y=y+1;n=n+1; liebiao=j;endendif(liebiao-x(1,1)=(n-1)&(n80)a2=i;bre
19、ak;endendfork=zsize(1):-1:(a2+1)forj=1:zsize(2)z4(k,j)=0;endend%zsize=size(z4);%扫描汽车最左边forj=1:zsize(2)n=0;y=1; x=zeros(500,1);fori=1:zsize(1)if(z4(i,j)=1)x(y,1)=i;y=y+1; n=n+1;hangbiao=i;endendif(hangbiao-x(1,1)=(n-1)&(n40)a3=x(1,1);b3=j;break;endendfork=1:(b3-1)fori=1:zsize(1)z4(i,k)=0;endend%zsize
20、=size(z4);%扫描汽车最右边forj=zsize(2):-1:1n=0; y=1;x=zeros(500,1);fori=1:zsize(1)if(z4(i,j)=1)x(y,1)=i;y=y+1;n=n+1;hangbiao=i;endendif(hangbiao-x(1,1)=(n-1)&(n40)b4=j;a4=x(1,1);break;endendfork=zsize(2):-1:(b4+1)fori=1:zsize(1)z4(i,k)=0;endend%8d=b2-b1;%识别判断车型f=b4-b3;t=b1+d/2;t1=t-b3;t2=b4-t;c1=min(t1,t2)
21、;c2=max(t1,t2);if(c1/c2)0.55)disp(char(6),货车)elseif(0.85(d/f)1.15)disp(char(6),客车)elsedisp(char(6),小轿车)endend3结束语本文研究的问题本文研究的问题主要是车辆类型的检测,通过研究车辆的特征,实现车辆类型的识别,车辆的特征主要有车辆的长度,车辆顶部长度与长度之比,车辆的高度与车辆长度之比,轮廓图像的相对矩,图像的多种特征相结合,使得车辆类型的识别取得比较好的效果,再以后的工作中仍然有许多问题需要深入研究。比如车辆的分割问题,再现实中,道路的情况十分复杂,有很多实际拍摄的图像中会有很多的车辆粘
22、连,重合,目标的分割十分的重要。车辆的特征需要从多角度考虑,从而选取更有效的特征来实现对车型的识别。本文开展的工作本文的研究主要是基于车辆特征的车型识别,首先对图像进行分割,在分割出车辆的图像上,通过标定的结果,对车子的实际长度,实际轮距,以及汽车图像的相对矩,车辆的高度与长度比,车辆的顶部长度,与车辆的长度比,对车辆进行车型的识别。在前面的两种判断方法,车辆长度的测量,对车辆侧身轮距的测量,粗略的对车辆的种类进行了划分,分为大型车,小型车,通过实验获得的实际车长度,实际轮距进行划分车辆种类。,将相对矩特征,与车辆的长高比,车辆顶部与车长比相结合,在根据所获得的轮距对面包车与客车进行更细的划分
23、,在车型的最终判断上,获得了比较好的效果,实现了对车型的具体识别,较好的分类出越野车,小轿车,客车,面包车,载货卡车,牵引车。后续的研究工作在实验中仍然有很多问题需要解决,本实验的汽车图像的分割质量直接影响到后续工作的进行,图像的差分会受到很多因素的影响,因此在以后的工作中,还是要把分割当成一个很重要的问题来研究。本实验的图像采集自视频截图,主要是针对的单车道汽车图像的研究,在实际情况中,道路宽,车辆多路面交通情况复杂,路面车辆会有较多的遮挡,针对这个问题,如果能够结合多目标分割技术,对图像进行有效的分割,配合文中提出的方法,将可以实现多个车道,多种车型的识别。另外需要提出的是文中的标定方法比
24、较简易,最后计算出来的车长,轮距误差比较大,虽然对本文中判断大,中,小三种类型的车,不会造成太大影响,但是如果标定的结果十分精确的话,应该也是一个准确判断大部分车型的方法,因为基本上每种类型的车辆的车长,轮距参数都是不同的,如果可以精确测量,也是一个便捷的方法,在以后的工作中需要在标定这个问题上要做深入的研究。研究心得本文用MATLAB 7. 0软件完整地进行了汽车车型识别的实验,车型识别有很多力一法,各种力一法所表示的优劣有所不同。根据本实验可以得出MATLAB在车型识别过程中有以下优缺点:优点:1) MATLAB函数库丰富;2)程序简洁易行;对车牌的定位非常有效,正确率较高;3)与C +语
25、言程序相比大大降低了工作量。缺点:1)程序有一定的局限性,对于车型图像内元素较复杂的照片识别的效果不理想;2)有时还要根据摄像机位置的实际情况对部分闽值进行调整。参考文献:【1】贾云得机器视觉【M】科学出版社,2000【2】付忠良图像阈值选取方法的构造【J】中国图象图形学报,20005(6):466-469【3】王坤明自动选取阈值方法比接研究【J】抚顺石油学院学报,20026(22):一般的商业地图无法完全办到的。该技术具有较高的使用价值,适合于电力输电、长途通信、煤气天然气和石油等的输送线路的巡检和其他与野外操作密切相关的定点或巡查工作。【4】陈建春Visual C+开发GIS系统开发实例剖析MI电子工业出版社,2000【5】李现勇Visual C+串口通信技术与工程实践【M1人民邮电出版社2003【6】邬伦,刘瑜,张晶等地理信息系统原理、方法和应用【M】科学出版社【7】冈萨雷斯.数字图像处理(MATLAB版)M.北京:电子工业出版社,2007.【8】崔屹.图像处理与分析数学形态学方法及应用M.北京:科学出版社,2000:1-50.