汽车车型识别,还包括很多处理图像的程序代码
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
目: 汽车车型识别
2011 年 12月 09日
1、目的与
要求
对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗
……………………………………………………2
2、内容以及原理…………………………………………………3
3、车识别程序的
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图…………..……………………..………4
4、各个功能模块的主要实现程序以及代码以及程序运行结果以
及图像处理结果……...………….………...………….…………5
5、课程设计总结与心得体会……………………………………11
6、参考文献………………………………………………………12
1、课程设计目的、任务与要求
目的:
通过本课程设计使学生了解数字图像的基本概念,掌握数字图像处理的基本内容,如图像点运算、几何变换、增强处理、图像复原、边缘检测以及图像压缩等的基本原理和Matlab实现方法。
通过本次课程设计,让学生掌握如何学习一门语言,如何进行资料查阅搜集,如何自己解决问题等方法,养成良好的学习习惯。扩展理论知识,培养学生的综合设计能力。
任务:
1) 能对图像文件(bmp、 jpg、 tiff、 gif等)进行打开、保存、另存、打印、退出等功能操作;
2) 图像预处理功能:
(1)直方图的统计及绘制,根据此找到图像的阈值点;
(2)可将图像的各种几何矫正变换;
(3)彩色图像的灰度化变换等、一般灰度图像的二值化处理等; (4)数字图像的增强处理功能:空域中的点运算、直方图的均衡化、各种空间域平滑算法(如局部平滑滤波法、中值滤波等)、锐化算法(如梯度锐化法、高通滤波等);色彩增强:伪彩色增强、真彩色增强等;
3) 车识别。
要求:
1、要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。尤其是对编程软件的使用有基本的认识。
2、既要虚心接受老师的指导,又要充分发挥主观能动性。结合课题,独立思考,努力钻研,勤于实践,勇于创新。
3、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。
4、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。
2、设计的内容
1) 能对图像文件(bmp、 jpg、 tiff、 gif等)进行打开、保存、另存、打印、退出等功能操作;
2) 图像预处理功能:
(1)直方图的统计及绘制,根据此找到图像的阈值点;
2)可将图像的各种几何矫正变换; (
(3)彩色图像的灰度化变换等、一般灰度图像的二值化处理等; (4)数字图像的增强处理功能:空域中的点运算、直方图的均衡化、各种空间域平滑算法(如局部平滑滤波法、中值滤波等)、锐化算法(如梯度锐化法、高通滤波等);色彩增强:伪彩色增强、真彩色增强等;
3) 车识别。
原理方法:
首先对图像做了压缩和归一化处理,得到统一大小的背景图和前景图。分别对两幅图做灰度变换。再将含有汽车的前景图像和背景图像进行差分运算去除背景干扰,迭代阈值分割的方法提取到目标车辆轮廓。经过小面积区域去除和横纵填充后,得到比较利于分析的汽车外形图。在汽车车型识别中按标准分析了各种不同的车辆形状,抽象出了车辆的一般形状
的“工”字形,以车辆顶长作中垂线分下底长的前后比例数、顶长等作为参数,提取出特征参数,用于车型的识别。利用小孔成像的原理,推算出长和车高。
3、程序的流程图
4、程序代码:
[name,path]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.gif';'*.*'},'');
file=[path,name]; im= imread(file); imshow(im);
figure;
subplot(2,2,1);x=rgb2gray(im);imhist(x) graythresh(im)%阈值
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
ans =
0.4353
f=rgb2gray(im);
subplot(2,2,2);imshow(f);
f=rgb2gray(im);
subplot(2,2,2);imshow(f);
title('灰度处理');
level=graythresh(im);%阈值函数
g=im2bw(f,level); %转换图像为二进制图像h=double(g);
subplot(2,2,3);
imshow(g);
title('二值化处理');
y=histeq(x);
subplot(2,2,4);
imshow(y);
title('直方图均衡化');
运行后的结果:
J = imnoise(x,'salt & pepper', 0.02);%加入椒盐燥声 K = medfilt2(J);%中值滤波函数
figure;
subplot(2,2,1);
imshow(K);
title('中值滤波');
H = fspecial('unsharp'); BW = imfilter(im,H,'replicate');
subplot(2,2,2);
imshow(BW);
title('图像锐化');
B=grayslice(x,7); %从灰度创索
imshow(B,cool(7));%cool青蓝和洋红
title('伪彩色增强');
车型识别:
clc;
i=imread('chexing1.bmp'); %读入图象 j=imread('dajiebeijing.bmp');
figure;imshow(i);title('车原图象');
figure;imshow(j);title('大街背景');
i1=rgb2gray(i); %把彩色图转换成灰度图 j1=rgb2gray(j);
i2=medfilt2(i1,[2,2]); j2=medfilt2(j1,[2,2]);
z=imsubtract(j2,i2); z=double(z);
figure,imshow(z);
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;
for i=1:zsize(1)
for j=1:zsize(2)
tmp=z(i,j);
if (tmp>=tk)
ifore=ifore+1;
isum=isum+double(tmp);
else
iback=iback+1;
backsum=backsum+double(tmp);
end
end
end
zo=isum/ifore;
zb=backsum/iback;
tktmp=uint8((zo+zb)/2);
if(tktmp==tk)
bcal=0;
else
tk=tktmp;
end
end
z1=im2bw(z,double(tk)/255); figure,imshow(z1);
z2=medfilt2(z1,[7,7]); z3=bwareaopen(z2,200); figure,imshow(z3);
zsize=size(z3); %横向填充
for i=1:zsize(1)
n=0;
x=zeros(1,400);
y=1;
for j=1:zsize(2)
if(z3(i,j)==1)
x(1,y)=j;
y=y+1;
n=n+1;
liebiao=j;
end
end
if((n>=100)&&(liebiao-x(1,1)>150))
for m=x(1,1):liebiao
z3(i,m)=1;
end
end
end
z8=bwareaopen(z3,1000);%删除二值图像中小面积的部分 figure;imshow(z8);
z4=medfilt2(z8,[5,5]); zsize=size(z4); %纵向填充
for j=1:zsize(2)
n=0;
x=zeros(600,1);
y=1;
for i=1:zsize(1)
if(z4(i,j)==1)
x(y,1)=i;
y=y+1;
n=n+1;
hangbiao=i;
end
end
if((n>=10)&&(hangbiao-x(1,1)>50))
for m=x(1,1):hangbiao
z4(m,j)=1;
end
end
end
figure,imshow(z4);
zsize=size(z4); %扫描汽车顶部
for i=1:zsize(1)
n=0;
y=1;
x=zeros(1,500)
for j=1:zsize(2)
if(z4(i,j)==1)
x(1,y)=j;
y=y+1;
n=n+1;
liebiao=j;
end
end
if((liebiao-x(1,1)==(n-1))&&(n>60))
a1=i;
b1=x(1,1);
b2=liebiao;
break;
end
end
for k=1:(a1-1)
for j=1:zsize(2)
z4(k,j)=0;
end
end
zsize=size(z4); %扫描汽车底部 for i=zsize(1):-1:1
n=0;
y=1;
x=zeros(1,500);
for j=1:zsize(2)
if(z4(i,j)==1)
x(1,y)=j;
y=y+1;
n=n+1;
liebiao=j;
end
end
if((liebiao-x(1,1)==(n-1))&&(n>80))
a2=i;
break;
end
end
for k=zsize(1):-1:(a2+1)
for j=1:zsize(2)
z4(k,j)=0;
end
end
zsize=size(z4); %扫描汽车最左边
for j=1:zsize(2)
n=0;
y=1;
x=zeros(500,1);
for i=1:zsize(1)
if(z4(i,j)==1)
x(y,1)=i;
y=y+1;
n=n+1;
hangbiao=i;
end
end
if ((hangbiao-x(1,1)==(n-1))&&(n>40))
a3=x(1,1);
b3=j;
break;
end
end
for k=1:(b3-1)
for i=1:zsize(1)
z4(i,k)=0;
end
end
zsize=size(z4); %扫描汽车最右边 for j=zsize(2):-1:1
n=0;
y=1;
x=zeros(500,1);
for i=1:zsize(1)
if(z4(i,j)==1)
x(y,1)=i;
y=y+1;
n=n+1;
hangbiao=i;
end
end
if ((hangbiao-x(1,1)==(n-1))&&(n>40))
b4=j;
a4=x(1,1);
break;
end
end
for k=zsize(2):-1:(b4+1)
for i=1:zsize(1)
z4(i,k)=0;
end
end
d=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),'客车'])
else
if(0.85<(d/f)<1.15)
disp([char(6),'小轿车'])
else
disp([char(6),'货车'])
end
end
jiaoju=0.266; %计算汽车实际长和高 wuju=7;
L1=(0.2709/768)*(b4-b3)
H1=(0.2032/576)*(a2-a1)
L=L1*wuju/jiaoju H=H1*wuju/jiaoju+0.25 车型识别的最终结果:
灰度处理后并相减后的图像
二值化后的图像
横向填充后的图像
滤除小面积部分后的图像
纵向填充后的图像
经过计算判断车的类型并计算出车的长、宽、高
小轿车
L1 =
0.0938
H1 =
0.0303
L =
2.4691
H =
1.0484
5、心得体会
程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。这个课程设计让我学到了很多东西,在这整个过程中我们查阅了大量的资料。在这期间遇到了很多困难,我知道做什么都不容易,刚开始拿到题目时,我大致地看过一遍,觉得还好,看过去时自己的思路还是比较清晰地,怎样去处理,有个大致的方向。而且,处于对自己的不甘心学习了图像处理,学习了matlab,终究要会用到实际生活中吧,因此选了第三个课题汽车车牌中的数字识别。但是,真正的做起来就觉得实在是不会做,就算有个大致怎么处理的思路,但真的用程序编写的话还是有很大的困难,就算是一些系统自备的功能函数,自己也不能一下子就知道是哪一个,但是在老师的帮助下这些问题都得到了解决。通过此次课程设计我懂得了图像处理能解决的问题之多,也明白了理论和实际分区别。也使我明白了自己原来知识还很欠缺,在以后的学习中还要更加努力。
6、参考文献
《数字图像处理》、《工程图像》