数字图像处理课程设计报告车牌分割及识别.docx
- 文档编号:4152941
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:43
- 大小:2.20MB
数字图像处理课程设计报告车牌分割及识别.docx
《数字图像处理课程设计报告车牌分割及识别.docx》由会员分享,可在线阅读,更多相关《数字图像处理课程设计报告车牌分割及识别.docx(43页珍藏版)》请在冰点文库上搜索。
数字图像处理课程设计报告车牌分割及识别
车牌定位与分割研究
PS:
可以直接使用
摘要车牌识别技术是计算机视频图像识别技术在车辆牌照识别中的一种应用。
车牌识别技术要求能够将运动中的汽车牌照从复杂背景中提取并识别出来,通过车牌提取、图像预处理、特征提取、车牌字符识别等技术,识别车辆牌号。
本次课程设计容是车牌定位与分割,主要实现了对车牌的位置的提取以及车牌符号的分割。
关键词:
车牌,识别,分割
Licenseplatelocationandsegmentation
AbstractLicenseplaterecognitiontechnologyisakindofapplicationofimagerecognitiontechnologyofputervideoinvehiclelicenserecognition.Licenseplaterecognitiontechnologycanrequestthevehiclenumberplatefromtheplexbackgroundextractionandidentified,thelicenseplateextraction,imagepre-processing,featureextraction,characterrecognitionoflicenseplaterecognitiontechnology,vehiclenumber.Thedesigncontentofthiscourseisthelicenseplatelocationandsegmentation,themainachievementofthelicenseplatelocationandsegmentationoflicenseplateextractionofsymbol.
Keyword:
licenceplate,distinguish,division
1绪论
随着世界经济的快速发展,以及汽车制造技术的提高,汽车迅速成为人们日常生活中的一个必需品。
这造成全球的汽车数量猛增,而随之也导致城市的交通压力越来越大,城市的交通状况也因此得到了更多的关注。
如何有效地对交通进行管理,也成为各国政府和相关部门所关注的焦点和热点。
针对这些问题,人们开始将计算机技术、通信技术、计算机网络技术和自动化信息处理等很多新的科学技术用于交通道路的监视和管理系统,以此提高车辆管理和运输的效率。
它主要是通过对过往车辆实施检测,提取有关的交通数据来达到对交通的监控、管理和指挥。
车牌自动识别技术是指能够检测到受监控路面的车辆并自动提取车辆车牌信息(含汉字字符、英文字母、阿拉伯数字)进行处理与识别的技术。
它以计算机技术、图像处理技术、模糊识别技术为基础,识别车辆特征。
本次设计是在以往的车牌定位与分割算法的基础上介绍了车牌识别技术中的一种定位与字符分割算法。
1.1车牌识别技术的应用背景及前景
随着21世纪经济全球化和信息时代的到来,迅猛发展的计算机技术、通信技术和计算机网络技术,水平不断提高的自动化信息处理技术在人们社会活动和生活的各个领域得到广泛应用。
同时,高速度、高效率的生活节奏,使汽车普及成为必然趋势。
伴随着世界各国汽车数量的增加,城市的交通状况越来越受到人们的重视。
如何有效地进行交通管理日益成为各国政府相关部门所关注的焦点。
针对这一问题,人们相继研发了各种道路交通监管系统、车辆控制系统及公共交通管理系统。
这些系统将车辆和道路综合起来进行考虑,运行先进的技术解决道路交通的问题,统称为智能交通系统(IntelligentTransportationSystem,简称ITS)。
车牌识别(LicensePlateRecognition,LPR)技术作为智能交通系统(ITS)的重要组成部分,在交通管理和控制中占有着很重要的地位,可以应用到以下一些领域:
(1)封闭式居民小区物业管理以及重要部门的安保管理。
车牌识别技术的推广普及,必将对加强城市道路管理,减少交通事故、车辆失窃案件的发生,以及保障社会稳定等方面产生重大而深远的影响。
(2)城市交通路口的“电子警察”。
(3)公路布控管理系统。
该系统采用车牌识别技术可实现对重点车辆的自动识别、快速报警处理,不仅可以有效防止机动车辆被盗,而且为公安、监察机关对犯罪嫌疑人所驾驶的车辆进行自动监控、跟踪提供了有效手段。
(4)高速公路超速监管系统。
该系统以车牌识别技术为核心技术,辅助其他高科技手段,建立高速公路无人值守的自动监测和自动布控系统,可以有效地获取超速车辆的图像,并得到该车的牌照,便于对违规车辆进行处罚。
从而降低因超速引起的交通事故的发生率。
(5)路桥、隧道等卡口的自动收费系统。
(6)高速公路收费管理系统。
在高速公路收费入、出口分别完成车牌识别和车牌匹配工作,实现不停车收费;还可以根据识别出的车牌从数据库中调出该车档案,可发现没有及时交纳养路费的车辆。
随着车牌识别技术的不断成熟,高效、识别率高的车牌识别技术还将应用于一些对性能要求比较高的单片机上。
还提供一个可以对车辆信息实时采集的公共平台,使各管理部门间能够协调统一的对车辆及道路情况进行监控管理,从根木上解决了目前全国交通及公安系统信息采集的多渠道、事件信息收集的单一性以及互不沟通、互不兼容的信息管理方式,车牌识别技术具有广泛的应用前景。
1.2车牌识别系统的工作原理及组成
车牌识别(LPR)系统是智能交通系统(ITS)的一个重要组成部分,该系统能从一幅车辆图像中自动提取车牌图像,自动分割字符,进而对字符进行识别,得到车牌的。
基于PC的车牌识别系统是利用PC机及摄像机等电子设备采集某一路段的汽车图像,对图像进行处理,获取车牌的位置及字符信息,完成车牌目标的自动定位与识别。
图1为车牌识别系统流程:
图1车牌识别系统流程
其工作流程是:
当系统发现有车辆通过时,触发图像采集部分工作,通过对车辆进行抓拍,获取车辆的前视或后视图。
然后将所采集的车辆数字图像送入计算机系统,通过车牌定位、字符分割三个环节的处理,最终得到车牌。
其中的计算机处理系统主要涉及了两个关键技术:
车牌区域定位技术、车牌字符分割技术。
2设计容
2.1宝马汽车“鲁A88888”车牌定位与分割
2.1.1读入汽车图像并直方图均衡化
直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度围的均匀分布。
直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度围的像素数量大致相同。
直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。
读入需要处理的汽车图像并直方图均衡化:
clear;clc;closeall
I=imread('E:
\数字图像处理课程设计\car1.jpg');
figure
(1),imshow(I);title('汽车原图');
I=rgb2gray(I);
imwrite(I,'汽车灰度图.jpg');
figure
(2),imshow(I);title('汽车灰度图');
figure(3),subplot(2,1,1),imhist(I);title('汽车灰度图直方图');
[J,T]=histeq(I,256);%有256个灰度级
subplot(2,1,2),imhist(J);%均衡化后的直方图
title('直方图均衡化');
读入的图像为:
将它转换为灰度图:
汽车图像直方图均衡化前后的直方图:
2.1.2边缘提取
边缘是图像中亮度突然变化的区域,是图像灰度构成的曲面上的陡峭区域,是像素灰度存在阶跃变化或屋脊状变化的像素的集合。
灰度图像边缘提取,主要的思想是:
抑制噪声(低通滤波、平滑、去噪、模糊),边缘特征增强(高通滤波、锐化),边缘定位。
常用的算子如Prewitt算子:
Sobel算子(四邻域的权重更大):
tic%计时开始
[height,width]=size(J);%灰度图长宽
%求梯度
I_edge=zeros(height,width);%创建height*width的矩阵
fori=2:
width-1%对每一列开始遍历
I_edge(:
i)=abs(J(:
i+1)-J(:
i-1));%每列的值赋为原图像中左右两列相减的绝对值第十章图像分割P456Prewitt算子
end
I_edge=(255/(max(max(I_edge))-min(min(I_edge))))*(I_edge-min(min(I_edge)));%归一化处理(0~255)
figure(4),imshow(I_edge);title('梯度算子检测边缘');
2.1.3选取最佳阈值二值化图像
取得最佳阈值,将图像二值化。
二值图像是指整幅图像画面仅黑、白二值的图像。
在实际的车牌处理系统中,进行图像二值变换的关键是要确定合适的阀值,使得字符与背景能够分割开来,二值变换的结果图像必须要具备良好的保形性,不丢掉有用的形状信息,不会产生额外的空缺等等。
车牌识别系统要求处理的速度高、成本低、信息量大,采用二值图像进行处理,能大提高处理效率。
阈值处理的操作过程是先由用户指定或通过算法生成一个阈值,如果图像中某中像素的灰度值小于该阈值,则将该像素的灰度值设置为0或255,否则灰度值设置为255或0。
function[y,y1]=select(ImageData,h,w)
thr=0.5;delta=0.05;
y=(ImageData>=thr*mean(max(ImageData)));
%max(a)找出矩阵a每一列的最大值
BW2=bwareaopen(y,10);%删除面积小于10的对象
SE=strel('square',15);%创建一个15*15正方形结构元素
IM2=imdilate(BW2,SE);%腐蚀
IM3=imerode(IM2,SE);%膨胀
%等效于开运算,消除小物体,在纤细点处分离物体,平滑较大物体边界,但同时并不明显改变原来物体的面积
average=sum(sum(IM3))/(h*w);
%sum(a),对a矩阵每一列求和
while(average<0.03||average>0.08)
if(average<0.03)
thr=thr-delta;
else
thr=thr+delta;
end
y=(ImageData>=thr*mean(max(ImageData)));%求向量元素平均值
BW2=bwareaopen(y,10);%删除面积小于10的对象
IM2=imdilate(BW2,SE);%腐蚀
IM3=imerode(IM2,SE);%膨胀
%等效于开运算
average=sum(sum(IM3))/(h*w);%求灰度平均值
end
y1=y;
y=IM3;
2.1.4形态学操作
数学形态学(MathematicalMorphology)诞生于1964年,是由法国巴黎矿业学院博士生赛拉(J.Serra)和导师马瑟荣,在从事铁矿核的定量岩石学分析及预测其开采价值的研究中提出“击中/击不中变换”,并在理论层面上第一次引入了形态学的表达式,建立了颗粒分析方法。
他们的工作奠定了这门学科的理论基础,如击中/击不中变换、开闭运算、布尔模型及纹理分析器的原型等。
数学形态学的基本思想是用具有一定形态的结构元素去量度和提取图像中的对应形状以达到对图像分析和识别的目的。
数学形态学是由一组形态学的代数运算子组成的,它的基本运算有4个:
膨胀、腐蚀、开启和闭合,它们在二值图像和灰度图像中各有特点。
基于这些基本运算还可推导和组合成各种数学形态学实用算法,用它们可以进行图像形状和结构的分析及处理,包括图像分割、特征抽取、边界检测、图像滤波、图像增强和恢复等。
数学形态学方法利用一个称作结构元素的“探针”收集图像的信息,当探针在图像中不断移动时,便可考察图像各个部分之间的相互关系,从而了解图像的结构特征。
数学形态学基于探测的思想,与人的FOA(FocusOfAttention)的视觉特点有类似之处。
作为探针的结构元素,可直接携带知识(形态、大小、甚至加入灰度和色度信息)来探测、研究图像的结构特点。
[I_edge,y1]=select(I_edge,height,width);%调用select函数减小车牌围
BW2=I_edge;
figure(5),subplot(2,2,1),imshow(BW2);title('二值化图像');
%开操作(腐蚀+膨胀)消除小物体
SE=strel('rectangle',[10,10]);%创建10*10的矩形结构元素
%SE=strel(shape,parameters),根据shape指定的类型创建一个结构元素SE。
IM2=imerode(BW2,SE);%腐蚀
subplot(2,2,2),imshow(IM2);title('汽车腐蚀后图像');
IM2=bwareaopen(IM2,50);%BW2=bwareaopen(BW,P)删除二值图像BW中面积小于P的对象,默认情况下conn使用8邻域
%川APK110将P改为100以上效果较好
subplot(2,2,3),imshow(IM2);title('删除小面积图像');
IM3=imdilate(IM2,SE);%膨胀
subplot(2,2,4),imshow(IM3);title('汽车膨胀后图像');
2.1.5确定车牌位置并保存车牌图像
为了确定车牌的位置,首先通过水平方向以及垂直方向的扫描粗略地估测车牌的位置,然后根据长宽比例确定车牌位置。
投影子函数:
functiony=projection(I,s)
if(s=='h')%水平投影
y=sum(I');%I',I转置
end
if(s=='v')%垂直投影
y=sum(I);
end
%投影以粗略估计车牌位置
p_h=projection(double(IM3),'h');%调用projection函数,水平方向,输出IM3的转置
if(p_h
(1)>0)
p_h=[0,p_h];
end
p_v=projection(double(IM3),'v');%调用projection函数,垂直方向
if(p_v
(1)>0)
p_v=[0,p_v];
end
p_h=double((p_h>5));%水平方向
p_h=find(((p_h(1:
end-1)-p_h(2:
end))~=0));%a(i)~=0,逻辑判断,a(i)不为0则为真
(1),find返回不为0的位置
len_h=length(p_h)/2;
p_v=double((p_v>5));%垂直方向
p_v=find(((p_v(1:
end-1)-p_v(2:
end))~=0));
len_v=length(p_v)/2;
%粗略计算车牌候选区
k=1;
fori=1:
len_h
forj=1:
len_v
s=IM3(p_h(2*i-1):
p_h(2*i),p_v(2*j-1):
p_v(2*j));
if(mean(mean(s))>0.1)%求每一列的均值
p{k}=[p_h(2*i-1),p_h(2*i)+1,p_v(2*j-1),p_v(2*j)+1];
k=k+1;
end
end
end
k=k-1;
%进一步缩小车牌候选区
fori=1:
k
edge_IM3=double(edge(double(IM3(p{i}
(1):
p{i}
(2),p{i}(3):
p{i}(4))),'canny'));
[x,y]=find(edge_IM3==1);
p{i}=[p{i}
(1)+min(x),p{i}
(2)-(p{i}
(2)-p{i}
(1)+1-max(x)),...
p{i}(3)+min(y),p{i}(4)-(p{i}(4)-p{i}(3)+1-max(y))];
p_center{i}=[fix((p{i}
(1)+p{i}
(2))/2),fix((p{i}(3)+p{i}(4))/2)];
p_ratio(i)=(p{i}(4)-p{i}(3))/(p{i}
(2)-p{i}
(1));
end
%对上面参数和变量的说明:
p为一胞元,用于存放每个图像块的左上和右下两个点的坐标;
%存放格式为:
p{k}=[x1,x2,y1,y2];x1,x2分别为行坐标,y1,y2为列坐标
%p_center为一胞元,用于存放每个图像块的中心坐标,p_center{k}=[x,y];x,y分别为行,列坐标
%p_ratio为一矩阵,用来存放图像块的长宽比例
%合并临近区域
%如果有多个区域则执行合并
ifk>1
n=0;
ncount=zeros(1,k);
fori=1:
k-1
if(abs(p{i}
(1)+p{i}
(2)-p{i+1}
(1)-p{i+1}
(2))<=height/30&&abs(p{i+1}(3)-p{i}(4))<=width/15)
p{i+1}
(1)=min(p{i}
(1),p{i+1}
(1));
p{i+1}
(2)=max(p{i}
(2),p{i+1}
(2));
p{i+1}(3)=min(p{i}(3),p{i+1}(3));
p{i+1}(4)=max(p{i}(4),p{i+1}(4));%向后合并
n=n+1;
ncount(n)=i+1;
end
end
%如果有合并,求出合并后最终区域
if(n>0)
d_ncount=ncount(2:
n+1)-ncount(1:
n);%避免重复记录临近的多个区域。
index=find(d_ncount~=1);
m=length(index);
fori=1:
m
pp{i}=p{ncount(index(i))};
%重新记录合并区域的比例
pp_ratio(i)=(pp{i}(4)-pp{i}(3))/(pp{i}
(2)-pp{i}
(1));
end
p=pp;%更新区域记录
p_ratio=pp_ratio;%更新区域比例记录
clearpp;clearpp_ratio;%清除部分变量
end
end
k=length(p);%更新区域个数
%根据区域比例判断是否为车牌区域
m=1;T=0.6*max(p_ratio);
fori=1:
k
if(p_ratio(i)>=T&p_ratio(i)<20)
p1{m}=p{i};
m=m+1;
end
end
p=p1;clearp1;
k=m-1;%更新区域数
toc%计时结束
clearedge_IM3;clearx;cleary;%清空部分变量
figure(6);
fori=1:
k
subplot(1,k,i);
index=p{i};
imshow(I(index
(1)-2:
index
(2),index(3):
index(4)));
end
if(k==1)
imwrite(I(index
(1)-2:
index
(2),index(3):
index(4)),'11.jpg');
end%存储车牌图像
2.1.6读入车牌图像并二值化车牌
由于前面已经定位到车牌的位置,下一步要做的是将存储的车牌照片的七个符号分割,首先读入车牌的灰度图。
J=imread('E:
\数字图像处理课程设计cardetec\11.jpg');
figure(7);subplot(2,1,1),imshow(J),title('车牌灰度图像')
g_max=double(max(max(J)));
g_min=double(min(min(J)));
T=round(g_max-(g_max-g_min)/3);%T为二值化的阈值,round四舍五入
[m,n]=size(J);
d=(double(J)>=T);%二值化
imwrite(d,'车牌二值化图像.jpg');
figure(7);subplot(2,1,2),imshow(d),title('车牌二值化图像')
2.1.7对车牌字符进行分割
图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。
它是由图像处理到图像分析的关键步骤。
现有的图像分割方法主要分以下几类:
基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。
阈值分割
灰度阈值分割法是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。
阈值分割方法实际上是输入图像f到输出图像g的如下变换:
其中,T为阈值,对于物体的图像元素g(i,j)=1,对于背景的图像元素g(i,j)=0。
由此可见,阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。
阈值确定后,将阈值与像素点的灰度值逐个进行比较,而且像素分割可对各像素并行地进行,分割的结果直接给出图像区域。
阈值分割的优点是计算简单、运算效率较高、速度快。
在重视运算效率的应用场合(如用于硬件实现),它得到了广泛应用。
人们发展了各种各样的阈值处理技术,包括全局阈值、自适应阈值、最佳阈值等等。
全局阈值是指整幅图像使用同一个阈值做分割处理,适用于背景和前景有明显对比的图像。
它是根据整幅图像确定的:
T=T(f)。
但是这种方法只考虑像素本身的灰度值,一般不考虑空间特征,因而对噪声很敏感。
常用的全局阈值选取方法有利用图像灰度直方图的峰谷法、最小误差法、最大类间方差法、最大熵自动阈值法以及其它一些方法。
在许多情况下,物体和背景的对比度在图像中的各处不是一样的,这时很难用一个统一的阈值将物体与背景分开。
这时可以根据图像的局部特征分别采用不同的阈值进行分割。
实际处理时,需要按照具体问题将图像分成若干子区域分别选择阈值,或者动态地根据一定的邻域围选择每点处的阈值,进行图像分割。
这时的阈值为自适应阈值。
在本次课程设计中,分割的主要思想是若某处两个部分之间的长度大于阈值,则认为该块有两个字符组成,需要分割;反之,如果两个部分之间的长度小于阈值,则认为这两个部分是属于同一字符的,不应该分割。
分割子函数:
functione=fenge(d)
[m,n]=size(d);
top=1;bottom=m;left=1;right=n;%init
whilesum(d(top,:
))==0&&top<=m%切割出白色区域(横切)
top=top+1;
end
whilesum(d(bottom,:
))==0&&bottom>1%同上
bottom=bottom-1;
end
whilesum(d(:
left))==0&&left left=left+1; end whilesum(d(: right))==0&&right>=1 right=right-1; end dd=right-left; hh=bottom-top; e=imcrop(d,[lefttopddhh]);%在一个数字窗口显示图像d 调用fenge函数: %
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 课程设计 报告 车牌 分割 识别