数字图像处理车牌识别课程设计matlab实现附源代码.docx
《数字图像处理车牌识别课程设计matlab实现附源代码.docx》由会员分享,可在线阅读,更多相关《数字图像处理车牌识别课程设计matlab实现附源代码.docx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于 matlab 的车牌识别系统一、 目的与要求目的:利用 matlab 实现车牌识别系统,生疏 matlab 应用软件的根底学问,了解了根本程序设计方法,利用其解决数字信号处理的实际应用问题,从而加深对理论学问的把握,并把所 学的学问系统、高效的贯穿到实践中来,避开理论与实践的脱离,稳固理论课上学问的同时, 加强实践力量的提高,理论联系实践,提高自身的动手力量。同时不断的调试程序也提高了 自己独立编程水平,并在实践中不断完善理论根底,有助于自身综合力量的提高。要求:1. 理解各种图像处理方法精准意义。2. 独立进展方案的制定,系统构造设计要合理。3. 在程序开发时,则必需清楚主要实现函数的
2、目的和作用,需要在程序书写时说明做适当的注释。假设使用matlab 来进展开发,要理解每个函数的具体意义和适用范围,在写课设报告时,必需要将主要函数的功能和参数做具体的说明。4、通过多幅不同形式的图像来检测该系统的稳定性和正确性。二、设计的内容学习MATLAB程序设计,利用MATLAB函数功能,设计和实现通过设计一个车牌识别系统。车牌识别系统的根本工作原理为:将手机拍摄到的包含车辆牌照的图像输入到计算机 中进展预处理,再对牌照进展搜寻、检测、定位,并分割出包含牌照字符的矩形区域,然后对牌照字符进展二值化并将其分割为单个字符,然后将其逐个与创立的字符模板中的字符进 行匹配,匹配成功则输出,最终匹
3、配完毕则输出则为车牌号码的数字。车牌识别系统的根本 工作原理图如图1所下所示:车辆字符分割图像采集字符识别图像预处理1输出车牌号码车牌的定位三、总体方案设计车辆牌照识别整个系统主要是由车牌定位和字符分割识别两局部组成,其中车牌定位又可以分为图像预处理及边缘提取模块和牌照的定位及分割模块;字符识别可以分为字符分割和单个字符识别两个模块。为了用于牌照的分割和牌照字符的识别,原始图象应具有适当的亮度,较大的比照度和清楚可辩的牌照图象。但由于是承受智能手机在开放的户外环境拍照,加之车辆牌照的干净度、自然光照条件、拍摄时摄像机与牌照的矩离等因素的影响,牌照图象可能消灭模糊、歪斜和缺损等严峻缺陷,因此需要
4、对原始图象进展识别前的预处理。牌照的定位和分割是牌照识别系统的关键技术之一,其主要目的是在经图象预处理后的原始灰度图象中确定牌照的具体位置,并将包含牌照字符的一块子图象从整个图象中分割出来,供字符识别子系统识别之用,分割的准确与否直接关系到整个牌照字符识别系统的识别率。由于拍摄时的光照条件、牌照的干净程度的影响,和摄像机的焦距调整、镜头的 光学畸变所产生的噪声都会不同程度地造成牌照字符的边界模糊、细节不清、笔划断 开或粗细不均,加上牌照上的污斑等缺陷,致使字符提取困难,进而影响字符识别的准确性。因此,需要将拍出的车牌进展处理,在这个过程中,我承受画图工具,将汽车图像的车牌局部进展裁剪,并将车牌
5、的蓝色局部过亮的地方颜色加深,还将车牌中 的一个白色的原点抹去,另外还将车牌上的铆钉使用车牌的蓝色背景掩盖,这样分割 出的字符更加准确。车牌识别的最终目的就是对车牌上的文字进展识别。主要应用的为模板匹配方法。由于系统运行的过程中,主要进展的都是图像处理,在这个过程中要进展大量的数据处理,所以处理器和内存要求比较高,CPU要求主频在600HZ及以上,内存在128MB 及以上。系统可以运行于Windows7、Windows2023或者Windows XP操作系统下,程序调试时使用matlabR2023a。四、各个功能模块的主要实现程序一首先介绍代码中主要的函数功能及用法:21.Imerode功能:
6、对图像实现腐蚀操作,即膨胀操作的反操作。用法:IM2 = imerode(IM,SE)IM2IM2=imerode(IM,NHOOD)imerode(IM,SE,PACKOPT,M)IM2=imerode(.,PADOPT)IM2=imerode(IM,SE) 腐蚀灰度,二值,压缩二值图像IM,返回IM2。参数SE 为由strel函数返回的构造元素或者构造元素对象组。IM2 = imerode(IM,NHOOD)腐蚀图像 IM,这里NHOOD 是定义构造元素邻域 0 和 1 的矩阵。IM2 = imerode(.,PADOPT)指出输出图像的大小是否与输入图像大小全都。2.imdilate功能
7、:对图像实现膨胀操作。用法:IM2 = imdilate(IM,SE) IM2 = imdilate(IM,NHOOD)IM2 = imdilate(IM,SE,PACKOPT)IM2 = imdilate(.,PADOPT)IM2 = imdilate(IM,SE) 膨胀灰度,二值,压缩二值图像IM,返回IM2。参数SE 为由strel 函数返回的构造元素或者构造元素对象组。IM2 = imdilate(IM,NHOOD)膨胀图像 IM,这里NHOOD 是定义构造元素邻域 0 和 1 的矩阵。IM2 = imdilate(IM,SE,PACKOPT)定义 IM 是否是一个压缩的二值图像。IM
8、2 = imdilate(.,PADOPT)指出输出图像的大小。3.strel功能:用于膨胀腐蚀及开闭运算等操作的构造元素对象(本论坛随即对膨胀腐蚀等操作进展讲解)。用法:SE = strel(shape,parameters)创立由指定外形shape 对应的构造元素。其中shape 的种类有arbitrary”,”pair”,”diamond”,”periodicline”,”disk”,”rectangle” ”line”,”square”,”octagon3参数 parameters 一般掌握SE 的大小。4.edgeBW = edge(I)承受灰度或一个二值化图像 I 作为它的输入,并
9、返回一个与I 一样大小的二值化图像 BW, 在函数检测到边缘的地方为 1,其他地方为 0。BW = edge(I,”sobel”) 自动选择阈值用Sobel 算子进展边缘检测。BW = edge(I,”sobel”,thresh) 依据所指定的敏感度阈值thresh,用 Sobel 算子进展边缘检测,它无视了全部小于阈值的边缘。当thresh 为空时,自动选择阈值。BW = edge(I,”sobel”,thresh,direction) 依据所指定的敏感度阈值thresh,在所指定的方向 direction 上, 用 Sobel 算子进展边缘检测。Direction 可取的字符串值为hori
10、zontal(水平方向)、vertical(垂直方向)或 both(两个方向)。BW,thresh = edge(I,”sobel”,.) 返回阈值BW = edge(I,”prewitt”) 自动选择阈值用prewitt 算子进展边缘检测。BW = edge(I,”prewitt”,thresh) 依据所指定的敏感度阈值thresh,用prewitt 算子进展边缘检测,它无视了全部小于阈值的边缘。当thresh 为空时,自动选择阈值。BW = edge(I,”prewitt”,thresh,direction) 依据所指定的敏感度阈值thresh,在所指定的方向 direction 上,用
11、prewitt 算子进展边缘检测。 Direction 可取的字符串值为horizontal(水平方向)、vertical(垂直方向)或 both(两个方向)默认方向为both。BW = edge(I,”roberts”) 自动选择阈值用roberts 算子进展边缘检测。BW = edge(I,”roberts”,thresh) 依据所指定的敏感度阈值 thresh,用 Roberts 算子进展边缘检测,它无视了全部小于阈值的边缘。当thresh 为空时,自动选择阈值。5.Imclose功能:对图像实现闭运算,闭运算也能平滑图像的轮廓,但与开运算相反,它一般融合窄的缺口和瘦长的弯口,去掉小洞,
12、填补轮廓上的缝隙。用法:IM2 = imclose(IM,SE) IM2 = imclose(IM,NHOOD) 用法和imopen 一样。6.imopen4功能:对图像实现开运算,开运算一般能平滑图像的轮廓,消弱狭窄的局部,去掉细的突出。用法:IM2 = imopen(IM,SE)IM2 = imopen(IM,NHOOD)IM2 = imopen(IM,SE)用 构造元素SE 实现灰度图像或二值图像的IM 的形态开运算。SE 可以是单个构造元素对象或者构造元素对象数组。IM2 = imopen(IM,NHOOD)用构造元素strelNHOOD执行开运算。7.bwareaopen功能:删除小
13、面积对象格式:BW2 = bwareaopen(BW,P,conn) 作用:删除二值图像BW 中面积小于P 的对象,默认状况下conn 使用 8 邻域。8.tic 和 toc 函数这两个函数一般协作使用,tic 表示计时的开头,toc 表示计时的完毕。格式如:tic任意表达式toct=toc 9.fspecial功能:用于建立预定义的滤波算子,其语法格式为: h = fspecial(type)h = fspecial(type,para)其中 type 指定算子的类型,para 指定相应的参数; type 的类型有:1、”average”5averaging filter为均值滤波,参数为h
14、size 代表模板尺寸,默认值为【3,3】。”disk”circular averaging filter为圆形区域均值滤波,参数为radius 代表区域半径,默认值为 5. ”gaussian”Gaussian lowpass filter为高斯低通滤波,有两个参数,hsize 表示模板尺寸,默认值为【3 3】,sigma 为滤波器的标准值,单位为像素,默认值为 0.5.”prewitt”Prewitt horizontal edge-emphasizing filter 用于边缘增加,大小为【3 3】,无参数”sobel”Sobel horizontal edge-emphasizing
15、filter 用于边缘提取,无参数9. filter2J = filter2(h,I);使用指定的滤波器h 对 I 进展滤波,结果保存在J 中10.bwarea函数功能:计算二值图像中对象的总面积。调用格式:total = bwarea(BW)估算二值图像BW 中对象的总面积。 返回的total 是一个标量, 它的值大致地反映了和图像中 on 像素的个数。由于对于不同像素类型, 度量标准不同, 因此结果可能并不格外准确。BW 可以是数值类型整型、浮点型或者规律类型。对于数值类型, 像素值不为 0 被视为 on。返回值total 是double 类型的。11.sum功能:函数求和sum(x,2)
16、表示矩阵x 的横向相加,求每行的和,结果是列向量。而缺省的sum(x)就是竖向相加,求每列的和,结果是行向量。6A0 的结果是得到一个规律矩阵,大小跟原来的A 全都,A 中大于零的元素的位置置为 1,小于等于零的位置置为 0。所以横向求和以后,就是求A 中每行大于零的元素个数。12. round功能:四舍五入调用格式:Y = round(X)在 matlab 中 round 也是一个四舍五入函数。(二)对汽车图像进展图像转换、图像增加和边缘检测等。1. 载入车牌图像:I=imread(”car1.jpg”);figure(1),imshow(I);title(”original image”)
17、;%将车牌的原图显示出来,结果如下:2. 将彩图转换为灰度图并绘制直方图: I1=rgb2gray(I);%将彩图转换为灰度图figure(2),subplot(1,2,1),imshow(I1);title(”gray image”); figure(2),subplot(1,2,2),imhist(I1);title(”灰度图直方图”);%绘制灰度图的直方图结果如下所示:73. 用 roberts 算子进展边缘检测:I2=edge(I1,”roberts”,0.18,”both”);%选择阈值 0.18,用 roberts 算子进展边缘检测figure(3),imshow(I2);titl
18、e(”roberts operator edge detection image”);结果如下:4. 图像实施腐蚀操作: se=1;1;1;8I3=imerode(I2,se);%对图像实施腐蚀操作,即膨胀的反操作figure(4),imshow(I3);title(”corrosion image”);5. 平滑图像se=strel(”rectangle”,25,25);%构造构造元素以正方形构造一个se I4=imclose(I3,se);% 图像聚类、填充图像figure(5),imshow(I4);title(”smothing image”);结果如下所示:6. 删除二值图像的小对象
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 车牌 识别 课程设计 matlab 实现 源代码
限制150内