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

上传人:rrsccc 文档编号:11051904 上传时间:2021-06-22 格式:DOCX 页数:15 大小:436.86KB
返回 下载 相关 举报
基于MATLAB的图片中文字的提取及识别要点.docx_第1页
第1页 / 共15页
基于MATLAB的图片中文字的提取及识别要点.docx_第2页
第2页 / 共15页
基于MATLAB的图片中文字的提取及识别要点.docx_第3页
第3页 / 共15页
基于MATLAB的图片中文字的提取及识别要点.docx_第4页
第4页 / 共15页
基于MATLAB的图片中文字的提取及识别要点.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《基于MATLAB的图片中文字的提取及识别要点.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的图片中文字的提取及识别要点.docx(15页珍藏版)》请在三一文库上搜索。

1、数字图象处理Digital Image Progressing基于 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 UniversityElectronic Engineering College,Xian,710126)AbstractWith the development of society,the form and q

3、uantity 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 fr

4、om image 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 cont

5、ent.Therefore,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: MATLABimag

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

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

8、3)文字大小在一幅图片中固定,并且宽度和高度大体相同,从满足人眼视觉感受的角度来说,图像中文字的尺寸既不会过大也不会过小;(4)文字的分布比较集中;(5)文字的排列一般为水平方向或垂直方向;(6)多行文字之间,以及单行内各个字之间存在不同于文字区域的空隙。在静态图片文字的检测与提取过程中 ,一般情况下都是依据上述特征进行处理的。三文字提取、识别的一般流程2数字图象处理Digital Image Progressing静态图像文字提取一般分为以下步骤:文字区域检测与定位、文字分割与文字提取、文字后处理。其流程如图 1所示。(图 1)四文字提取、识别的详细步骤1.在Matlab 中调用 i1=im

9、read(字符 .jpg),可得到原始图像,如图2所示:(图 2)2. 调用 i2=rgb2gray(i1) ,则得到了灰度图像,如图 3所示:(图 3)调用 a=size(i1);b=size(i2);可得到: a=3,b=2即三维图像变成了二维灰度图像3. 调用 i3=(i2=thresh);0,i 2thresh其中 thresh 为门限,在 i30 , 255 之间1,i 2thresh这里, i2_max=double(max(max(i2); %获取亮度最大值i2_min=double(min(min(i2); %获取亮度最小值thresh=round(i2_max-(i2_max

10、-i2_min)/3);得到二值图像,如图 4所示:3数字图象处理Digital Image Progressing(图 4)4. 把二值图像放大观察,可看到离散的黑点对其采用腐蚀膨胀处理,得到处理后的图像,如图 5所示(图 5)可见,腐蚀膨胀处理后的图像质量有了很大的改观。横向、纵向分别的腐蚀膨胀运算比横向、纵向同时的腐蚀膨胀运算好上很多,图 6可看出差别:(图 6)5. 对腐蚀膨胀后的图像进行 Y方向上的区域选定,限定区域后的图像如图 7所示:扫描方法:中间往两边扫4数字图象处理Digital Image Progressing(图 7)纵向扫描后的图像与原图像的对照,如图8所示:(图 8

11、)6. 对腐蚀膨胀后的图像进行 X方向上的区域选定,限定区域后的图像如图 9所示:扫描方法:两边往中间扫(图 9)纵向扫描后的图像与原图像的对照,如图10所示:(图 10)7. 调用 i8=(iiXY=1) ,使背景为黑色( 0),字符为白色( 1),便于后期处理。背景交换后的图像如图 11所示:5数字图象处理Digital Image Progressing(图 11)8. 调用自定义函数(字符获取函数) i9=getchar(i8) ,得到图像如图 12所示:(图 9)9. 调用自定义的字符获取函数对图像进行字符切割,并把切割的字符装入一维阵列,切割过程如图 12所示:( 图12)10.

12、调用以下代码,可将阵列 word中的字符显示出来,如图 13所示:for j=1:cnum%cnum为统计的字符个数subplot(5,8,j),imshow(wordj),title(int2str(j);%显示字符end6数字图象处理Digital Image Progressing(图 13)可以看到,字符宽度不一致11. 调用以下代码,将字符规格化,便于识别:for j=1:cnumwordj=imresize(wordj,40 40);%字符规格化成 4040的end得到规格化之后的字符如图14所示:(图 14)12. 调用以下代码创建字符集:code=char(由于作者水平有限书中

13、难免存在缺点和疏漏之处恳请读批评指正, 。 );将创建的字符集保存在一个文件夹里面,以供匹配时候调用,如图15所示:7数字图象处理Digital Image Progressing(图 15)13. 字符匹配采用模板匹配算法:将现有字符逐个与模板字符相减,认为相减误差最小的现有字符与该模板字符匹配。100111111001假设 : 字符 A0010,模板字符T11111,模板字符T 20110010000000110100100001001sum(sum(abs( AT1) 8, sum(sum(abs( A T 2 ) 2也就是说,字符 A与模板字符 T 1 更相似,我们可以认为字符集中的字

14、符T 2 就是字符 A。经模板匹配,可得字符信息如下:由于读者书评有限书中难免存在缺点和纰漏之处,恳请读者批评指正。效果如图 16所示:(图 16)14. 调用以下代码,将字符放入newtxt.txt文本:8数字图象处理Digital Image Progressingnew=newtxt,.txt;c=fopen(new,a+);fprintf(c,%sn,Code(1:cnum);fclose(c);newtxt.txt文本内容如图 17所示:(图 17)五反思与体会1. 算法具有局限性。对于左右结构的字符(如:川)容易造成误识别,“川”字将会被识别成三部分。当图片中文字有一定倾斜角度时,

15、这将造成识别困难。2. 模板匹配效率低。对于处理大小为 m m的字符,假设有 n个模板字符,则识别一个字符至少需要 mmn2次运算,由于汉字有近万个,这将使得运算量十分巨大!此次字符识别一共花了 2.838 秒。3. 伸缩范围比较小。对于受污染的图片,转换成二值图像将使字符与污染源混合在一起。对于具体的图片,需反复选择合适的 thresh 进行二值化处理,甚至在处理之前必须进行各种滤波。4. 通过这次数字图象处理的学习和报告的撰写,我们小组发挥了团结友爱的协作精神,大量的资料查阅丰富了我们的视野,同时使我们对这么课更加感兴趣。参考文献1 樊昀, 王润生 . 从图像中提取文字 J . 国防科技大

16、学学报 ,2002,24 (1) :59-62.2王健 , 王晨 . 基于静态图片的文本提取技术的研究J . 延边大学学报( 自然科学版 ) , 2007,33(2) :124-128.3夏莹 , 马少平 , 孙茂松等 . 计算机语言学方法在中文文字识别后处理中的应用J . 中文信息 ,1996,(2) :50-51.4 郑阿奇,曹戈,赵阳 .MATLAB实用教程 M. 北京:电子工业出版社5 程卫国,冯峰,姚东,徐听 .MATLAB5.3 应用指南 M. 北京:人民邮电出版社6陈杨 .MATLAB 6.X 图像编程与图像处理M. 西安:西安电子科技大学出版社9数字图象处理Digital Im

17、age Progressing7 阮秋琦 . 数字图像处理 M. 电子工业出版社, 2001 年 .8 徐建华 . 图像处理与分析 M. 科学出版社, 1999 年 .附录主程序源代码:% 数字图象处理大作业% 图片中文字的提取及识别 %ticI=imread(字符 .jpg);%打开图片%figure(1);imshow(I);title( 原始图像 ,color,b);I=rgb2gray(I);%RGB图片转化成灰度图像%figure(2);imshow(I);title( 灰度图像 ,color,b);i_max=double(max(max(I);%获取亮度最大值i_min=doub

18、le(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);%膨胀图像seX=1 1 1;I=imdilate(I,seX);I=imerode(I,seX);%figure(4);imshow(I);title( 腐蚀膨胀后的图像 ,color,b);ii

19、=double(I);m,n=size(ii);%获取图像大小信息%确定文字区域%纵向扫描countY=zeros(m,1);for i=1:mfor j=1:nif ii(i,j)=010数字图象处理Digital Image ProgressingcountY(i,1)=countY(i,1)+1;endendendmaxY indexY=max(countY);tempY1=indexY;while (countY(tempY1,1)3) & (tempY11)tempY1=tempY1-1;endtempY2=indexY;while (countY(tempY2,1)3) & (te

20、mpY2m)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:nfor i=tempY1:tempY2if ii(i,j)=0countX(1,j)=countX(1,j)+1;endendendtempX1=1;while (countX(1,tempX1)3) & (tempX1n)tempX

21、1=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);imshow(ii);title( 背景和文字交换颜色的图像,color,b);ii=bwareaopen(ii,200);%删除面积小于

22、 200的杂质图像11数字图象处理Digital Image Progressing%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); %建立单元阵列,用于储存字符figure(10)while size(myI,2)10%当my

23、I 的长度小等于 10,可确定没有字符了wordk,myI=getword(myI);%获取字符k=k+1;% %if k=2subplot(5,1,1);imshow(myI);title( 第一次切割后的图像 ,color,b);endif k=3subplot(5,1,2);imshow(myI);title( 第二次切割后的图像 ,color,b);endif k=5subplot(5,1,3);imshow(myI);title( 第四次切割后的图像 ,color,b);endif k=16subplot(5,1,4);imshow(myI);title( 第十五次切割后的图像 ,c

24、olor,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% %12数字图象处理Digital Image Progressingfor j=1:cnumwordj=imresize(wordj,40 40);%字符规格化成 4040的endfigure(12);for j=1:cnumsubplot(5,8,j),

25、imshow(wordj),title(int2str(j); %显示字符 endfor j=1:cnumimwrite(wordj,int2str(j),.jpg);%保存字符enddefx=40;defy=40;code=char(由于作者水平有限书中难免存在缺点和疏漏之处恳请读批评指正,。);%创建字符集codenum=size(code,2); %获取字符集中字符个数for i=1:cnumch=int2str(i);%数字转化为字符tempbw=imread(ch .jpg);%打开预匹配字符for k=1:codenumfname=strcat(数字图像处理大作业 字 符匹 配库,

26、code(k),.jpg); %字符匹配库中的字符sample=imread(fname);subsam=abs(tempbw-sample); %作比较count=sum(sum(subsam); %匹配误差统计err(k)=count;enderro=err(1:codenum);minerror=min(erro);%找出误差最小的模板字符findc=find(erro=minerror);%获取模板字符序号Code(i)=code(findc);%将字符装入 Codeendfigure(13);imshow(ii);tt=title( 文字信息 : , Code(1:cnum),Col

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

28、m-1;endwhile sum(ii(:,left)=0 & left=1right=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=0m,n=size(ii);wide=0;while sum(ii(:,wide+1)=0 & wide=n-2wide=wide+1;endtemp=charslice(imcrop(ii,1 1 wide m);m1,n1=size(temp);if widey2ii(:,1:wide)=0;if sum(sum(ii)=0ii=charslice(ii);% 切割出最小范围else word=;flag=1;endelseword=charslice(imcrop(ii,1 1 wide m);ii(:,1:wide)=0;14数字图象处理Digital Image Progressingif sum(sum(ii)=0;ii=charslice(ii);flag=1;else ii=;endendendresult=ii;15

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1