您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 图形图像 > 基于matlab的车型识别课程设计源代码
目录1、目的与要求……………………………………………………12、设计的内容……………………………………………………13、设计内容以及原理……………..……………………..………14、各个功能的实现程序及结果…………………………………26、课程设计总结与心得体会……………………………………87、参考文献………………………………………………………911.目的与要求目的:通过本课程设计使学生了解数字图像的基本概念,掌握数字图像处理的基本内容,如图像点运算、几何变换、增强处理、图像复原、边缘检测以及图像压缩等的基本原理和Matlab实现方法。通过本次课程设计,让学生掌握如何学习一门语言,如何进行资料查阅搜集,如何自己解决问题等方法,养成良好的学习习惯。扩展理论知识,培养学生的综合设计能力。要求:1、要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。尤其是对编程软件的使用有基本的认识。2、既要虚心接受老师的指导,又要充分发挥主观能动性。结合课题,独立思考,努力钻研,勤于实践,勇于创新。3、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。4、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。2.设计的内容主要功能:1)、预处理功能:(1)直方图的统计及绘制,根据此找到图像的阈值点;(2)可将图像的各种几何矫正变换;(3)彩色图像的灰度化变换等、一般灰度图像的二值化处理等;(4)数字图像的增强处理功能:空域中的点运算、直方图的均衡化、各种空间域平滑算法(如局部平滑滤波法、中值滤波等)、锐化算法(如梯度锐化法、高通滤波等);色彩增强:伪彩色增强、真彩色增强等;2)、处理功能:车识别:从图像中提取出车辆的轮廓并辨别出车型3.原理方法:首先对图像做了压缩和归一化处理,得到统一大小的背景图和前景图。分别对两幅图做灰度变换。再将含有汽车的前景图像和背景图像进行差分运算去除背景干扰,迭代阈值分割的方法提取到目标车辆轮廓。经过小面积区域去除和横纵填充后,得到比较利于分析的汽车外形图。在汽车车型识别中按标准分析了各种不同的车辆形状,抽象出了车辆的一般形状的“工”字形,以车辆顶长作中垂线分下底长的前后比例数、顶长等作为参数,提取出特征2参数,用于车型的识别。利用小孔成像的原理,推算出长和车高。3.各个功能的实现程序及结果1)能对图像文件(bmp、jpg、tiff、gif等)进行打开、保存、另存、打印、退出等功能操作;2)图像预处理功能:(1)直方图的统计及绘制,根据此找到图像的阈值点;(2)可将图像的各种几何矫正变换;(3)彩色图像的灰度化变换等、一般灰度图像的二值化处理等;(4)数字图像的增强处理功能:空域中的点运算、直方图的均衡化、各种空间域平滑算法(如局部平滑滤波法、中值滤波等)、锐化算法(如梯度锐化法、高通滤波等);色彩增强:伪彩色增强、真彩色增强等;程序代码:[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=histeq(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;%获得最佳阈值'level'g=im2bw(x,level);figure;imshow(g);title('二值化');%转换为二值图像运算结果:RGB=imread('D:/zll.jpg');x=rgb2gray(RGB);J=imnoise(x,'salt&pepper',0.02);%加入椒盐燥声subplot(131),imshow(J);title('原始黑白图像')3K=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青蓝和洋红3)车识别;程序代码:i=imread('D:/e1.jpg');j=imread('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;4fori=1:zsize(1)forj=1:zsize(2)tmp=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('小面积区域去除后的图像')%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%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;end5endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%subplot(223),imshow(z3);title('横向填充后的图像');z4=medfilt2(z3,[5,5]);zsize=size(z4);%纵向填充forj=1:zsize(2)n=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;n=n+1;liebiao=j;endendif((liebiao-x(1,1)==(n-1))&&(n60))a1=i;b1=x(1,1);6b2=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;break;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;7n=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=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);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),'小轿车'])endend运行结果:(1)、客车4.课程设计总结与体会通过此次的matlab课程设计,我又对matlab软件有了更深层次的了解,熟悉的matlab的操作以及用matlab语言编程。还有基于matlab的数字图像处理的9应用。通过实践,我更加意识到课堂学的知识的重要性,以及实践的必不可少,只有课堂的知识与实践相结合,才能更好更快的做好任务。在调试程序是最麻烦的步骤,往往提示的地方不是程序出错的地方,只有从全程序慢慢的从头开始查,这样既能熟悉matlab语言,又能锻炼大家的耐心。这两周的课程设计虽然结束了,但是我们以后还是要多多做这样的设计,锻炼大家的实践能力。6.参考文献1、《图像工程》上册章毓晋清华大学出版社2、《MATLABR2008数字图像处理与分析实例教程》赵书兰化学工业出版社3、《数字图像处理与分析(第二版)》杨帆北京航空航天大学出版社
本文标题:基于matlab的车型识别课程设计源代码
链接地址:https://www.777doc.com/doc-4679096 .html