MATLAB大作业培训课件.docx

上传人:b****6 文档编号:3393973 上传时间:2022-11-22 格式:DOCX 页数:14 大小:246.06KB
下载 相关 举报
MATLAB大作业培训课件.docx_第1页
第1页 / 共14页
MATLAB大作业培训课件.docx_第2页
第2页 / 共14页
MATLAB大作业培训课件.docx_第3页
第3页 / 共14页
MATLAB大作业培训课件.docx_第4页
第4页 / 共14页
MATLAB大作业培训课件.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

MATLAB大作业培训课件.docx

《MATLAB大作业培训课件.docx》由会员分享,可在线阅读,更多相关《MATLAB大作业培训课件.docx(14页珍藏版)》请在冰豆网上搜索。

MATLAB大作业培训课件.docx

MATLAB大作业培训课件

基于MATLAB识别图片中的文字

知识点:

图像识别图像处理计算机视觉

实验目的:

以MATLAB为工具,识别图片中的文字。

问题描述:

交通是一个十分重要的问题,红绿灯上的摄像头可以辨别车主的身份。

现在,我们是否能够用matlab设计一个图像识别的系统,通过车牌号的来识别相应的数字。

问题分析及模型建立:

第一步:

确定车牌号的区域

对于一张图像

在matlab中,在处理图像元素时用(x,y,z)三坐标的形式表达的灰度集时,其中,x和y是空间坐标,z是f在坐标(x,y)处的值,就可以表达图像在该坐标轴上的点。

再将,将f(x,y)的数值简单地显示为一个矩阵,就可以定量地表达了一幅数值图像。

矩阵中的每个元素称为像素。

所以,如果我们想要截取一段车牌号的图像,我们就可以扫描图像每一个点的像素。

然后我们进行恢复处理,算子边缘检测,腐蚀,闭操作,删除小对象得到

我们就可以利用RGB的值找到白色区域的边界,然后我们利用边界,截取我们的原图像就可以得到我们所需要的车牌号的区域了。

第二步:

进行文字的分割

在进行分割之前,就需要将我们所获得的车牌号的区域的图像进行进一步的处理,突出我们需要的文字部分。

灰度处理

彩色的图片占用的空间比较大,处理会花费很长的时间,先将图片进行灰度处理

二值化

再将图片二值化,将图片的256个灰度级强制减少到只有{0,255}2个灰度级,更加方便了后续的文字识别识别。

均值滤波

均值滤波是对是对图像进行局部平均,以平均值来代表该像素点的灰度值。

矩形滤波器对这个二维矢量的每一个分量进行独立的平滑处理。

获得一张比较干净清晰的图像。

腐蚀和膨胀

腐蚀可以分割独立的图像元素,膨胀用于连接相邻的元素,更加利于图像的分割

进行完图像的预处理,就可以开始图像的切割了

首先进行边缘的切割,处理完后的图像为黑底白字。

其中黑色为0,白色1为。

这样我们就可以从四个边缘进行扫描,若行或者列像素之和0的话,就为背景,这样就可以继续向内推移,直到和不为0的位置为止。

这样就进行了边缘的切割。

接下来,先进行文字的切割,文字和字母、数字在长度和宽度上有较大的差别,所以需要单独的拿出来。

因为号码是平铺过来的,所以我们进行列的扫描。

先从最左边进行扫描,若列像素之和不为0的话,则说明有文字,直到和为0的时候停止。

但是如果扫描出来的宽度太小的话就说明背景可能有白色区域干扰。

这时,应该将刚刚扫描出来的区域置黑,再次进行扫描,截取图像。

同理,数字和字母可同样按着上面的方式扫描,截取。

截取后的图像

模板的配对

所有的文字数字和字母都截取下来后,我们需要将所得的图片统一的量化为同样大小的图像方便比对。

统一量化后的图像

完成了这部的操作之后,就需要建立一个小型的模板库。

将车牌号常见的文字、十个数字和26个英文字母存储为上面同样大小的二值化图片,并且以对应字符的名称命名。

将所有的模板放在一起,按照一定的顺序排列。

然后,我们就可以调用我们已经切割好的图片和模板内部的图片进行相减,寻找差别最小的图片进行匹配,这样就可以识别出车牌号上的字符了。

问题求解:

matlab代码:

主函数

function[d]=main(jpg)

closeall

clc

I=imread('Car.jpg');%读入车牌图像Car.jpg

I1=rgb2gray(I);

I2=edge(I1,'roberts',0.15,'both');

se=[1;1;1];

I3=imerode(I2,se);

se=strel('rectangle',[25,25]);

I4=imclose(I3,se);

I5=bwareaopen(I4,2000);

figure

(1),imshow(I5);title('从对象中移除小对象');

[y,x,z]=size(I5);%图像以(y,x,z)表达灰度集,x,y为坐标,z为对应位置的值

myI=double(I5);%转化为双精度,便于确定范围

tic%测定算法执行的时间,开始计时

Blue_y=zeros(y,1);

fori=1:

y

forj=1:

x

if(myI(i,j,1)==1)

%寻找y轴方向的白色区域

Blue_y(i,1)=Blue_y(i,1)+1;%是蓝色区域的则进行计数

end

end

end

[tempMaxY]=max(Blue_y);%Y方向车牌区域确定temp(最多点数):

所有行中,最多的累积

PY1=MaxY;

while((Blue_y(PY1,1)>=5)&&(PY1>1))

PY1=PY1-1;

end%Y轴方向的上限

PY2=MaxY;

while((Blue_y(PY2,1)>=5)&&(PY2

PY2=PY2+1;

end%Y轴方向的的下限

IY=I(PY1:

PY2,:

:

);

%%%%%%X方向%%%%%%%%%

Blue_x=zeros(1,x);%进一步确定x方向的车牌区域

forj=1:

x

fori=PY1:

PY2%只需要扫描PY1:

PY2的部分,简化程序

if(myI(i,j,1)==1)

Blue_x(1,j)=Blue_x(1,j)+1;

end

end

end

PX1=1;

while((Blue_x(1,PX1)<3)&&(PX1

PX1=PX1+1;

end%确定x轴的右边界

PX2=x;

while((Blue_x(1,PX2)<3)&&(PX2>PX1))

PX2=PX2-1;

end%确定x轴的左边界

PX1=PX1-1;%对车牌区域的校正

PX2=PX2+1;

dw=I(PY1:

PY2-8,PX1:

PX2,:

);%确定图片的截取区域

t=toc;%读取程序的运行时间

a=imread('dw.jpg');%读入已经截取好的图像

A=size(a);

iflength(A)==3

b=rgb2gray(a);

else

b=a;

end

figure(8);subplot(3,2,1),imshow(b),title('1.车牌灰度图像')

g_max=double(max(max(b)));

g_min=double(min(min(b)));

T=round(g_max-(g_max-g_min)/3);%T为二值化的阈值

[m,n]=size(b);

d=(double(b)>=T);%d:

二值图像

imwrite(d,'2.车牌二值图像.jpg');

figure(8);subplot(3,2,2),imshow(d),title('2.车牌二值图像')

figure(8),subplot(3,2,3),imshow(d),title('3.均值滤波前')

%滤波

h=fspecial('average',3);%进行均值滤波

imwrite(d,'4.均值滤波后.jpg');

figure(8),subplot(3,2,4),imshow(d),title('4.均值滤波后')

%某些图像进行操作

%膨胀或腐蚀

se=eye

(2);%eye(n)可返回一个2*2单位矩阵

[m,n]=size(d);%图像为二值图像,x,y为坐标

ifbwarea(d)/m/n>=0.365%计算二值图像中对象的总面积

d=imerode(d,se);%实现图形的腐蚀

elseifbwarea(d)/m/n<=0.235

d=imdilate(d,se);%实现图像的膨胀

end

imwrite(d,'5.膨胀或腐蚀处理后.jpg');

figure(8),subplot(3,2,5),imshow(d),title('5.膨胀或腐蚀处理后')

%寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割

d=qiege(d);%截掉边界黑色的部分

[m,n]=size(d);%图像已经切割的图像的坐标

figure,subplot(2,1,1),imshow(d),title(n)

k1=1;

k2=1;

s=sum(d);

j=1;

whilej~=n

whiles(j)==0

j=j+1;

end%扫过的地方全为黑色,则向右移动,直到不是停止

k1=j;%确定截图的左边界

whiles(j)~=0&&j<=n-1

j=j+1;

end%继续扫描,扫过的地方不全为黑色,向右移动,直到不是停止

k2=j-1;%确定截图的右边界

ifk2-k1>=round(n/6.5)

[val,num]=min(sum(d(:

[k1+5:

k2-5])));

d(:

k1+num+5)=0;%k1+num+5列的位置赋值为黑色,分割

end

end

%再切割

d=qiege(d);

%切割出7个字符

y1=10;y2=0.25;flag=0;word1=[];

whileflag==0

[m,n]=size(d);

left=1;wide=0;

whilesum(d(:

wide+1))~=0

wide=wide+1;

end%扫过的地方不全为黑色,向右移动,直到不是停止

ifwide

d(:

[1:

wide])=0;%将此片区域全部转化为黑色,继续进行切割

d=qiege(d);

else

temp=qiege(imcrop(d,[11widem]));%返回已经切割好的区域

[m,n]=size(temp);

all=sum(sum(temp));

two_thirds=sum(sum(temp([round(m/3):

2*round(m/3)],:

)));

iftwo_thirds/all>y2

flag=1;word1=temp;%WORD1

end

d(:

[1:

wide])=0;d=qiege(d);

end

end

%分割出第二个字符

[word2,d]=getword(d);%getword的函数与上面类似,字母、数字和文字在一些细节上需要去区分

%分割出第三个字符

[word3,d]=getword(d);

%分割出第四个字符

[word4,d]=getword(d);

%分割出第五个字符

[word5,d]=getword(d);

%分割出第六个字符

[word6,d]=getword(d);

%分割出第七个字符

[word7,d]=getword(d);

subplot(5,7,1),imshow(word1),title('1');

subplot(5,7,2),imshow(word2),title('2');

subplot(5,7,3),imshow(word3),title('3');

subplot(5,7,4),imshow(word4),title('4');

subplot(5,7,5),imshow(word5),title('5');

subplot(5,7,6),imshow(word6),title('6');

subplot(5,7,7),imshow(word7),title('7');

[m,n]=size(word1);

%将生成的图片归一化大小为40*20

word1=imresize(word1,[4020]);

word2=imresize(word2,[4020]);

word3=imresize(word3,[4020]);

word4=imresize(word4,[4020]);

word5=imresize(word5,[4020]);

word6=imresize(word6,[4020]);

word7=imresize(word7,[4020]);

subplot(5,7,15),imshow(word1),title('1');

subplot(5,7,16),imshow(word2),title('2');

subplot(5,7,17),imshow(word3),title('3');

subplot(5,7,18),imshow(word4),title('4');

subplot(5,7,19),imshow(word5),title('5');

subplot(5,7,20),imshow(word6),title('6');

subplot(5,7,21),imshow(word7),title('7');

imwrite(word1,'1.jpg');

imwrite(word2,'2.jpg');

imwrite(word3,'3.jpg');

imwrite(word4,'4.jpg');

imwrite(word5,'5.jpg');

imwrite(word6,'6.jpg');

imwrite(word7,'7.jpg');

liccode=char(['0':

'9''A':

'Z''苏豫陕鲁晋']);%建立自动识别字符代码表

SubBw2=zeros(40,20);%40*20的零矩阵

l=1;

forI=1:

7

ii=int2str(I);%int2str整型转换字符串

t=imread([ii,'.jpg']);

SegBw2=imresize(t,[4020],'nearest');%改变图片的大小

ifl==1%第一位汉字识别

kmin=37;

kmax=41;%模板中汉字所在的位置

elseifl==2%第二位A~Z字母识别

kmin=11;

kmax=36;%模板中数字所在的位置

elsel>=3%第三位以后是字母或数字识别

kmin=1;

kmax=36;%模板中字母所在的位置

end

fork2=kmin:

kmax

fname=strcat('字符模板\',liccode(k2),'.jpg');

SamBw2=imread(fname);

Error(k2)=sum(sum(abs(SegBw2-SamBw2)));

%将现有字符逐个与模板字符相减,认为相减误差最小的现有字符与该模板字符匹配

end

Error1=Error(kmin:

kmax);

MinError=min(Error1);

findc=find(Error1==MinError);%寻找最匹配的字符

Code(l*2-1)=liccode(findc

(1)+kmin-1);%将上述找到的字符位置与liccode中的字符链接上

Code(l*2)='';%在字符之间加空格

l=l+1;

end

figure(10),imshow(a),title(['车牌号码:

',Code],'Color','b');

函数getword

function[word,result]=getword(d)

word=[];flag=0;y1=8;y2=0.5;

whileflag==0

[m,n]=size(d);

wide=0;

whilesum(d(:

wide+1))~=0&&wide<=n-2

wide=wide+1;

end

temp=qiege(imcrop(d,[11widem]));

[m1,n1]=size(temp);

ifwidey2

d(:

[1:

wide])=0;

ifsum(sum(d))~=0

d=qiege(d);%切割出最小范围

elseword=[];flag=1;

end

else

word=qiege(imcrop(d,[11widem]));

d(:

[1:

wide])=0;

ifsum(sum(d))~=0;

d=qiege(d);flag=1;

elsed=[];

end

end

end

%end

result=d;

qiege函数

functione=qiege(d)

[m,n]=size(d);

top=1;%下端

bottom=m;%下端

left=1;%左端

right=n;%右端

whilesum(d(top,:

))==0&&top<=m%如果矩阵d的第top行的和为0的话

top=top+1;

end

whilesum(d(bottom,:

))==0&&bottom>=1%如果矩阵d的第bottom行的和为0的话

bottom=bottom-1;

end

whilesum(d(:

left))==0&&left<=n%如果矩阵d的第left列的和为0的话

left=left+1;

end

whilesum(d(:

right))==0&&right>=1%如果矩阵d的第right列的和为0的话

right=right-1;

(2)物品的独一无二end

附件

(二):

调查问卷设计dd=right-left;%切割的宽度

培养动手能力□学一门手艺□打发时间□兴趣爱好□hh=bottom-top;%切割的高度

标题:

手工制作坊2004年3月18日e=imcrop(d,[lefttopddhh]);%返回该截取的区域

附件

(二):

结果分析:

1,这种垂直扫描的方式,图像的中车的牌照需要接近水平,如果倾斜的比较厉害,很难只截取车牌号的区域。

2,扫描字符的时候,如果扫描左右结构的字符时,比如“沪”,则会截出‘氵’和‘户’两个部分,就无法匹配字符。

3,

4,与此同时,上海市工商行政管理局也对大学生创业采取了政策倾斜:

凡高校毕业生从事个体经营的,自批准经营日起,1年内免交登记注册费、个体户管理费、集贸市场管理费、经济合同鉴证费、经济合同示范文本工本费等,但此项优惠不适用于建筑、娱乐和广告等行业。

如果遇到受污染很严重的图片,就难切割图片的和模板中的图片匹配。

据上述部分的分析可见,我校学生就达4000多人。

附近还有两所学校,和一些居民楼。

随着生活水平的逐渐提高,家长给孩子的零用钱也越来越多,人们对美的要求也越来越高,特别是大学生。

他们总希望自己的无论是衣服还是首饰都希望与众不同,能穿出自己的个性。

但在我们美丽的校园里缺少自己的个性和琳琅满目的饰品,所以我们的小饰品店存在的竞争力主要是南桥或是市区的。

这给我们小组的创业项目提供了一个很好的市场机会。

参考文献

创业首先要有“风险意识”,要能承受住风险和失败。

还要有责任感,要对公司、员工、投资者负责。

务实精神也必不可少,必须踏实做事;[1]艾冬梅,李艳晴,张丽静,刘琳MATLAB与数学实验[M]机械工业出版社

[2]RafaelC.GonzalezRichardE.Woods数字图像处理[M]电子工业出版社

五、创业机会和对策分析[3]樊昀,王润生.从图像中提取文字[J].国防科技大学学报,2002,24

(1):

59-62.

随着社会经济、文化的飞跃发展,人们正从温饱型步入小康型,崇尚人性和时尚,不断塑造个性和魅力的现代文化价值观念,已成为人们的追求目标。

因此,顺应时代的饰品文化显示出强大的发展势头和越来越广的市场,从事饰品销售是有着广阔的市场空间。

[4]邹浩,余龙,邹勇博,刘宇童,和振乔,李少梅.基于MATLAB的图片中文字的提取及识别[J].西安电子科技大学电子工程学院,西安,710126

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1