ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:2.18MB ,
资源ID:11032690      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11032690.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于MATLAB的图片中文字的提取及识别.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于MATLAB的图片中文字的提取及识别.docx

1、基于MATLAB的图片中文字的提取及识别基于MATLAB的图片中文字的提取及识别邹浩,余龙,邹勇博,刘宇童,与振乔,李少梅(西安电子科技大学 电子工程学院,西安,710126)摘要 随着现代社会的发展,信息的形式与数量正在迅猛增长。其中很大一部分是图像,图像可以把事物生动地呈现在我们面前,让我们更直观地接受信息。同时,计算机已经作为一种人们普遍使用的工具为人们的生产生活服务。从图像中提取文字属于信息智能化处理的前沿课题,是当前人工智能与模式识别领域中的研究热点。由于文字具有高级语义特征,对图片内容的理解、索引、检索具有重要作用,因此,研究图片文字提取具有重要的实际意义。又由于静态图像文字提取是

2、动态图像文字提取的基础,故着重介绍了静态图像文字提取技术。关键词:MATLAB 图像处理 文字提取 文字识别Text Extraction and Recognition in Images Based on MATLABZOU Hao, YU long, ZOU Yongbo, LIU Yutong, HE Zhenqiao, LI Shaomei(Xidian University Electronic Engineering College,Xian,710126)Abstract With the development of society,the form and quantity

3、 of imformation are increasing quickly.A large part of them are images,which can make things vividly presented in front of us,let us more intuitive to accept information.At the same time, the computer has been as a widely used tool for peoples production and living services.Extracting text from imag

4、e belongs to the frontier of intelligent information processing, and it is the current hot research topic in the field of artificial intelligence and pattern recognition.As the text with high-level semantic feature and plays an important role on understanding,indexing and retrieval image content.The

5、refore,the study on extracting texts from images have important actual meanings. And because extracting texts from still images is the basis for extracting texts from dynamic images, the article emphatically introduces the technology of extracting texts from still images.Key Words: MATLAB image proc

6、essing word extraction word recognition一引言随着计算机科学的飞速发展,以图像为主的多媒体信息迅速成为重要的信息传递媒介,在图像中,文字信息(如新闻标题等字幕) 包含了丰富的高层语义信息,提取出这些文字,对于图像高层语义的理解、索引与检索非常有帮助。图像文字提取又分为动态图像文字提取与静态图像文字提取两种,其中,静态图像文字提取是动态图像文字提取的基础,其应用范围更为广泛,对它的研究具有基础性,所以本文主要讨论静态图像的文字提取技术。静态图像中的文字可分成两大类: 一种是图像中场景本身包含的文字, 称为场景文字; 另一种是图像后期制作中加入的文字, 称为人

7、工文字,如右图所示。场景文字由于其出现的位置、小、颜色与形态的随机性, 一般难于检测与提取;而人工文字则字体较规范、大小有一定的限度且易辨认,颜色为单色, 相对与前者更易被检测与提取,又因其对图像内容起到说明总结的作用,故适合用来做图像的索引与检索关键字。对图像中场景文字的研究难度大,目前这方面的研究成果与文献也不是很丰富,本文主要讨论图像中人工文字提取技术。二静态图像中文字的特点静态图像中文字(本文特指人工文字,下同)具有以下主要特征:(1)文字位于前端,且不会被遮挡;(2)文字一般是单色的;(3)文字大小在一幅图片中固定,并且宽度与高度大体相同,从满足人眼视觉感受的角度来说,图像中文字的尺

8、寸既不会过大也不会过小;(4)文字的分布比较集中;(5)文字的排列一般为水平方向或垂直方向;(6)多行文字之间,以及单行内各个字之间存在不同于文字区域的空隙。在静态图片文字的检测与提取过程中, 一般情况下都是依据上述特征进行处理的。三文字提取、识别的一般流程 静态图像文字提取一般分为以下步骤:文字区域检测与定位、文字分割与文字提取、文字后处理。其流程如图1所示。(图1)四文字提取、识别的详细步骤1. 在Matlab中调用i1=imread(字符.jpg),可得到原始图像,如图2所示:(图2)2. 调用i2=rgb2gray(i1),则得到了灰度图像,如图3所示:(图3) 调用a=size(i1

9、);b=size(i2);可得到:a=3,b=2 即三维图像变成了二维灰度图像3. 调用i3=(i2=thresh);其中thresh为门限,在0,255之间 这里,i2_max=double(max(max(i2); %获取亮度最大值 i2_min=double(min(min(i2); %获取亮度最小值 thresh=round(i2_max-(i2_max-i2_min)/3); 得到二值图像,如图4所示:(图4)4. 把二值图像放大观察,可看到离散的黑点 对其采用腐蚀膨胀处理,得到处理后的图像,如图5所示(图5) 可见,腐蚀膨胀处理后的图像质量有了很大的改观。 横向、纵向分别的腐蚀膨胀

10、运算比横向、纵向同时的腐蚀膨胀运算好上很多,图6可看出差别:(图6)5. 对腐蚀膨胀后的图像进行Y方向上的区域选定,限定区域后的图像如图7所示: 扫描方法:中间往两边扫(图7) 纵向扫描后的图像与原图像的对照,如图8所示:(图8)6.对腐蚀膨胀后的图像进行X方向上的区域选定,限定区域后的图像如图9所示: 扫描方法:两边往中间扫(图9) 纵向扫描后的图像与原图像的对照,如图10所示:(图10)7. 调用i8=(iiXY=1),使背景为黑色(0),字符为白色(1),便于后期处理。 背景交换后的图像如图11所示:(图11)8. 调用自定义函数(字符获取函数)i9=getchar(i8),得到图像如图

11、12所示:(图9)9.调用自定义的字符获取函数对图像进行字符切割,并把切割的字符装入一维阵列,切割 过程如图12所示:(图12)10.调用以下代码,可将阵列word中的字符显示出来,如图13所示: for j=1:cnum %cnum为统计的字符个数 subplot(5,8,j),imshow(wordj),title(int2str(j); %显示字符 end(图13) 可以看到,字符宽度不一致11.调用以下代码,将字符规格化,便于识别: for j=1:cnum wordj=imresize(wordj,40 40); %字符规格化成4040的 end 得到规格化之后的字符如图14所示:(

12、图14)12.调用以下代码创建字符集: code=char(由于作者水平有限书中难免存在缺点与疏漏之处恳请读批评指正,。); 将创建的字符集保存在一个文件夹里面,以供匹配时候调用,如图15所示:(图15)13.字符匹配采用模板匹配算法:将现有字符逐个与模板字符相减,认为相减误差最小的现 有字符与该模板字符匹配。 假设:字符,模板字符,模板字符 也就是说,字符A与模板字符更相似,我们可以认为字符集中的字符就是字符A。 经模板匹配,可得字符信息如下: 由于读者书评有限书中难免存在缺点与纰漏之处,恳请读者批评指正。 效果如图16所示:(图16)14.调用以下代码,将字符放入newtxt.txt文本:

13、 new=newtxt,.txt; c=fopen(new,a+); fprintf(c,%sn,Code(1:cnum); fclose(c); newtxt.txt文本内容如图17所示:(图17)五反思与体会1.算法具有局限性。对于左右结构的字符(如:川)容易造成误识别,“川”字将会被识别 成三部分。当图片中文字有一定倾斜角度时,这将造成识别困难。2.模板匹配效率低。对于处理大小为mm的字符,假设有n个模板字符,则识别一个字符至 少需要mmn2次运算,由于汉字有近万个,这将使得运算量十分巨大!此次字符识 别一共花了2.838秒。3.伸缩范围比较小。对于受污染的图片,转换成二值图像将使字符与

14、污染源混合在一起。 对于具体的图片,需反复选择合适的thresh进行二值化处理,甚至在处理之前必须进行 各种滤波。4.通过这次数字图象处理的学习与报告的撰写,我们小组发挥了团结友爱的协作精神,大 量的资料查阅丰富了我们的视野,同时使我们对这么课更加感兴趣。参考文献1 樊昀, 王润生.从图像中提取文字J .国防科技大学学报,2002,24 (1) :59-62.2 王健,王晨.基于静态图片的文本提取技术的研究J .延边大学学报(自然科学版) , 2007,33 (2) :124-128.3 夏莹,马少平,孙茂松等.计算机语言学方法在中文文字识别后处理中的应用J .中文信息,1996, (2) :

15、50-51.4 郑阿奇,曹戈,赵阳.MATLAB实用教程M.北京:电子工业出版社5 程卫国,冯峰,姚东,徐听.MATLAB5.3应用指南M.北京:人民邮电出版社6 陈杨.MATLAB 6.X图像编程与图像处理M.西安:西安电子科技大学出版社7 阮秋琦.数字图像处理M.电子工业出版社,2001年.8 徐建华.图像处理与分析M.科学出版社,1999年.附录主程序源代码:% 数字图象处理大作业 %图片中文字的提取及识别%ticI=imread(字符.jpg); %打开图片%figure(1);imshow(I);title(原始图像,color,b); I=rgb2gray(I); %RGB图片转化

16、成灰度图像%figure(2);imshow(I);title(灰度图像,color,b); i_max=double(max(max(I); %获取亮度最大值i_min=double(min(min(I); %获取亮度最小值thresh=round(i_max-(i_max-i_min)/3); %计算灰度图像转化成二值图像的门限threshI=(I=thresh); %I为二值图像%figure(3);imshow(I);title(二值图像,color,b); seY=1;1;1; %构造结构元素I=imdilate(I,seY); %腐蚀图像I=imerode(I,seY); %膨胀图

17、像seX=1 1 1;I=imdilate(I,seX);I=imerode(I,seX);%figure(4);imshow(I);title(腐蚀膨胀后的图像,color,b); ii=double(I);m,n=size(ii); %获取图像大小信息%确定文字区域%纵向扫描countY=zeros(m,1);for i=1:m for j=1:n if ii(i,j)=0 countY(i,1)=countY(i,1)+1; end endendmaxY indexY=max(countY);tempY1=indexY;while (countY(tempY1,1)3) & (tempY

18、11) tempY1=tempY1-1;endtempY2=indexY;while (countY(tempY2,1)3) & (tempY2m) tempY2=tempY2+1;endtempY1=tempY1-1;tempY2=tempY2+1;iiY=I(tempY1:tempY2,:); %确定了Y方向上的文字区域%figure(5);imshow(iiY);title(Y方向区域大致确定后的图像,color,b); %横向扫描countX=zeros(1,n);for j=1:n for i=tempY1:tempY2 if ii(i,j)=0 countX(1,j)=countX

19、(1,j)+1; end endendtempX1=1;while (countX(1,tempX1)3) & (tempX1n) tempX1=tempX1+1;endtempX2=n;while (countX(1,tempX2)1) tempX2=tempX2-1;endtempX1=tempX1-1;tempX2=tempX2+1;iiXY=iiY(:,tempX1:tempX2); %确定了整体的文字区域%figure(6);imshow(iiXY);title(X、Y方向区域都大致确定后的图像,color,b); ii=(iiXY=1);%黑色背景,白色字体%figure(7);i

20、mshow(ii);title(背景与文字交换颜色的图像,color,b); ii=bwareaopen(ii,200); %删除面积小于200的杂质图像%figure(8);imshow(ii);title(删除杂质干扰的图像,color,b); myI=charslice(ii); %限定文字区域%figure(9);imshow(ii);title(限定文字区域的图像,color,b); y1=10;y2=0.25;flag=0;maxnum=40;k=1; %maxnum为字符个数限定值,k用于统计实际字符个数word=cell(1,maxnum); %建立单元阵列,用于储存字符 fi

21、gure(10)while size(myI,2)10 %当myI的长度小等于10,可确定没有字符了 wordk,myI=getword(myI); %获取字符 k=k+1; % if k=2 subplot(5,1,1);imshow(myI);title(第一次切割后的图像,color,b); end if k=3 subplot(5,1,2);imshow(myI);title(第二次切割后的图像,color,b); end if k=5 subplot(5,1,3);imshow(myI);title(第四次切割后的图像,color,b); end if k=16 subplot(5,

22、1,4);imshow(myI);title(第十五次切割后的图像,color,b); endendsubplot(5,1,5);imshow(myI);title(最后一次切割后的图像,color,b);% cnum=k-1; %实际字符总个数 %figure(11);for j=1:cnumsubplot(5,8,j),imshow(wordj),title(int2str(j); %显示字符end% for j=1:cnum wordj=imresize(wordj,40 40); %字符规格化成4040的endfigure(12);for j=1:cnumsubplot(5,8,j),

23、imshow(wordj),title(int2str(j); %显示字符end for j=1:cnumimwrite(wordj,int2str(j),.jpg); %保存字符end defx=40;defy=40;code=char(由于作者水平有限书中难免存在缺点与疏漏之处恳请读批评指正,。);%创建字符集codenum=size(code,2); %获取字符集中字符个数for i=1:cnum ch=int2str(i); %数字转化为字符 tempbw=imread(ch .jpg); %打开预匹配字符 for k=1:codenum fname=strcat(C:UsersAdm

24、inistratorDesktop数字图像处理大作业字符匹配库,code(k),.jpg); %字符匹配库中的字符 sample=imread(fname); subsam=abs(tempbw-sample); %作比较 count=sum(sum(subsam); %匹配误差统计 err(k)=count; end erro=err(1:codenum); minerror=min(erro); %找出误差最小的模板字符 findc=find(erro=minerror); %获取模板字符序号 Code(i)=code(findc); %将字符装入Codeend figure(13);im

25、show(ii);tt=title(文字信息: , Code(1:cnum),Color,b); %显示字符信息set(tt,fontsize,24); %设置字体%将图片文字写入newtxt文本new=newtxt,.txt;c=fopen(new,a+); fprintf(c,%sn,Code(1:cnum);fclose(c);t=toccharslice(字符分割)函数源代码:%字符分割function y=charslice(ii)m,n=size(ii);top=1;bottom=m;left=1;right=n;while sum(ii(top,:)=0 & top=1 bott

26、om=bottom-1;endwhile sum(ii(:,left)=0 & left=1 right=right-1;endydiff=bottom-top;xdiff=right-left;y=imcrop(ii,left top xdiff ydiff);getword(字符获取)函数源代码:%字符获取function word,result=getword(ii)word=;flag=0;y1=8;y2=0.5;while flag=0 m,n=size(ii); wide=0; while sum(ii(:,wide+1)=0 & wide=n-2 wide=wide+1; end temp=charslice(imcrop(ii,1 1 wide m); m1,n1=size(temp); if widey2 ii(:,1:wide)=0; if sum(sum(ii)=0 ii=charslice(ii); % 切割出最小范围 else word=;flag=1; end else word=charslice(imcrop(ii,1 1 wide m); ii(:,1:wide)=0; if sum(sum(ii)=0; ii=charslice(ii); flag=1; else ii=; end endendresult=ii;

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

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