基于matlab的车型识别课程设计源代码

更新时间:2023-10-27 15:27:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

1、目的与要求……………………………………………………1

2、设计的内容……………………………………………………1

3、设计内容以及原理……………..……………………..………1

4、各个功能的实现程序及结果…………………………………2

6、课程设计总结与心得体会……………………………………8

7、参考文献………………………………………………………9

1.目的与要求 目的:

通过本课程设计使学生了解数字图像的基本概念,掌握数字图像处理的基本内容,如图像点运算、几何变换、增强处理、图像复原、边缘检测以及图像压缩等的基本原理和Matlab实现方法。

通过本次课程设计,让学生掌握如何学习一门语言,如何进行资料查阅搜集,如何自己解决问题等方法,养成良好的学习习惯。扩展理论知识,培养学生的综合设计能力。

要求:

1、要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。尤其是对编程软件的使用有基本的认识。

2、既要虚心接受老师的指导,又要充分发挥主观能动性。结合课题,独立思考,努力钻研,勤于实践,勇于创新。

3、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。

4、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。 2.设计的内容

主要功能: 1)、预处理功能:

(1)直方图的统计及绘制,根据此找到图像的阈值点; (2)可将图像的各种几何矫正变换;

(3)彩色图像的灰度化变换等、一般灰度图像的二值化处理等;

(4)数字图像的增强处理功能:空域中的点运算、直方图的均衡化、各种空间域平滑算法(如局部平滑滤波法、中值滤波等)、锐化算法(如梯度锐化法、高通滤波等);色彩增强:伪彩色增强、真彩色增强等; 2)、处理功能:

车识别:从图像中提取出车辆的轮廓并辨别出车型 3.原理方法:

首先对图像做了压缩和归一化处理,得到统一大小的背景图和前景图。分别对两幅图做灰度变换。再将含有汽车的前景图像和背景图像进行差分运算去除背景干扰,迭代阈值分割的方法提取到目标车辆轮廓。经过小面积区域去除和横纵填充后,得到比较利于分析的汽车外形图。在汽车车型识别中按标准分析了各种不同的车辆形状,抽象出了车辆的一般形状的“工”字形,以车辆顶长作中垂线分下底长的前后比例数、顶长等作为参数,提取出特征

1

参数,用于车型的识别。利用小孔成像的原理,推算出长和车高。

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('原始黑白图像')

2

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青蓝和洋红

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;

3

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); z2=medfilt2(z1,[7,7]);

z3=bwareaopen(z2,300);

subplot(222),imshow(z2);title('小面积区域去除后的图像')

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 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

4

本文来源:https://www.bwwdw.com/article/d5l2.html

Top