基于matlab的车型识别课程设计源代码Word文档格式.docx
- 文档编号:18645102
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:12
- 大小:94.11KB
基于matlab的车型识别课程设计源代码Word文档格式.docx
《基于matlab的车型识别课程设计源代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于matlab的车型识别课程设计源代码Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
(3)彩色图像的灰度化变换等、一般灰度图像的二值化处理等;
(4)数字图像的增强处理功能:
空域中的点运算、直方图的均衡化、各种空间域平滑算法(如局部平滑滤波法、中值滤波等)、锐化算法(如梯度锐化法、高通滤波等);
色彩增强:
伪彩色增强、真彩色增强等;
2)、处理功能:
车识别:
从图像中提取出车辆的轮廓并辨别出车型
3.原理方法:
首先对图像做了压缩和归一化处理,得到统一大小的背景图和前景图。
分别对两幅图做灰度变换。
再将含有汽车的前景图像和背景图像进行差分运算去除背景干扰,迭代阈值分割的方法提取到目标车辆轮廓。
经过小面积区域去除和横纵填充后,得到比较利于分析的汽车外形图。
在汽车车型识别中按标准分析了各种不同的车辆形状,抽象出了车辆的一般形状的“工”字形,以车辆顶长作中垂线分下底长的前后比例数、顶长等作为参数,提取出特征参数,用于车型的识别。
利用小孔成像的原理,推算出长和车高。
3.各个功能的实现程序及结果
1)能对图像文件(bmp、jpg、tiff、gif等)进行打开、保存、另存、打印、退出等功能操作;
2)图像预处理功能:
(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);
图像直方图'
subplot(223);
c=histeq(x);
imshow(c);
均衡化图像'
subplot(224);
imhist(c);
均衡化后的直方图'
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);
二值化'
%转换为二值图像
运算结果:
RGB=imread('
D:
/zll.jpg'
x=rgb2gray(RGB);
J=imnoise(x,'
salt&
pepper'
0.02);
%加入椒盐燥声
subplot(131),imshow(J);
原始黑白图像'
)
K=medfilt2(J);
%中值滤波函数
subplot(132);
imshow(K);
中值滤波'
H=fspecial('
unsharp'
BW=imfilter(K,H,'
replicate'
subplot(133);
imshow(BW);
图像锐化'
B=grayslice(x,7);
%从灰度创索
figure,imshow(B,cool(7));
伪彩色增强'
%cool青蓝和洋红
3)车识别;
i=imread('
/e1.jpg'
j=imread('
/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);
原图象与背景图象相减'
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=z(i,j);
if(tmp>
=tk)
ifore=ifore+1;
isum=isum+double(tmp);
else
iback=iback+1;
backsum=backsum+double(tmp);
end
zo=isum/ifore;
zb=backsum/iback;
tktmp=uint8((zo+zb)/2);
if(tktmp==tk)
bcal=0;
tk=tktmp;
end
z1=im2bw(z,double(tk)/255);
z2=medfilt2(z1,[7,7]);
z3=bwareaopen(z2,300);
subplot(222),imshow(z2);
小面积区域去除后的图像'
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
zsize=size(z3);
%横向填充
fori=1:
n=0;
x=zeros(1,400);
y=1;
if(z3(i,j)==1)
x(1,y)=j;
y=y+1;
n=n+1;
liebiao=j;
if((n>
=100)&
&
(liebiao-x(1,1)>
150))
form=x(1,1):
liebiao
z3(i,m)=1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
subplot(223),imshow(z3);
横向填充后的图像'
z4=medfilt2(z3,[5,5]);
zsize=size(z4);
%纵向填充
forj=1:
x=zeros(600,1);
if(z4(i,j)==1)
x(y,1)=i;
hangbiao=i;
=10)&
(hangbiao-x(1,1)>
50))
hangbiao
z4(m,j)=1;
subplot(224),imshow(z4);
横纵向填充后的图像'
%扫描汽车顶部
x=zeros(1,500);
if((liebiao-x(1,1)==(n-1))&
(n>
60))
a1=i;
b1=x(1,1);
b2=liebiao;
break;
fork=1:
(a1-1)
z4(k,j)=0;
%扫描汽车底部
fori=zsize
(1):
-1:
1
80))
a2=i;
fork=zsize
(1):
(a2+1)
%扫描汽车最左边
x=zeros(500,1);
if((hangbiao-x(1,1)==(n-1))&
40))
a3=x(1,1);
b3=j;
(b3-1)
z4(i,k)=0;
%扫描汽车最右边
forj=zsize
(2):
b4=j;
a4=x(1,1);
fork=zsize
(2):
(b4+1)
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)
客车'
else
小轿车'
运行结果:
(1)、客车
>
4.课程设计总结与体会
通过此次的matlab课程设计,我又对matlab软件有了更深层次的了解,熟悉的matlab的操作以及用matlab语言编程。
还有基于matlab的数字图像处理的应用。
通过实践,我更加意识到课堂学的知识的重要性,以及实践的必不可少,只有课堂的知识与实践相结合,才能更好更快的做好任务。
在调试程序是最麻烦的步骤,往往提示的地方不是程序出错的地方,只有从全程序慢慢的从头开始查,这样既能熟悉matlab语言,又能锻炼大家的耐心。
这两周的课程设计虽然结束了,但是我们以后还是要多多做这样的设计,锻炼大家的实践能力。
6.参考文献
1、《图像工程》上册章毓晋清华大学出版社
2、《MATLABR2008数字图像处理与分析实例教程》赵书兰化学工业出版社
3、《数字图像处理与分析(第二版)》杨帆北京航空航天大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 matlab 车型 识别 课程设计 源代码
![提示](https://static.bdocx.com/images/bang_tan.gif)