您好,欢迎访问三七文档
当前位置:首页 > 幼儿/小学教育 > 小学教育 > 基于MATLAB的图片中文字的提取及识别要点
数字图象处理DigitalImageProgressing1基于MATLAB的图片中文字的提取及识别邹浩,余龙,邹勇博,刘宇童,和振乔,李少梅(西安电子科技大学电子工程学院,西安,710126)摘要随着现代社会的发展,信息的形式和数量正在迅猛增长。其中很大一部分是图像,图像可以把事物生动地呈现在我们面前,让我们更直观地接受信息。同时,计算机已经作为一种人们普遍使用的工具为人们的生产生活服务。从图像中提取文字属于信息智能化处理的前沿课题,是当前人工智能与模式识别领域中的研究热点。由于文字具有高级语义特征,对图片内容的理解、索引、检索具有重要作用,因此,研究图片文字提取具有重要的实际意义。又由于静态图像文字提取是动态图像文字提取的基础,故着重介绍了静态图像文字提取技术。关键词:MATLAB图像处理文字提取文字识别TextExtractionandRecognitioninImagesBasedonMATLABZOUHao,YUlong,ZOUYongbo,LIUYutong,HEZhenqiao,LIShaomei(XidianUniversityElectronicEngineeringCollege,Xi'an,710126)AbstractWiththedevelopmentofsociety,theformandquantityofimformationareincreasingquickly.Alargepartofthemareimages,whichcanmakethingsvividlypresentedinfrontofus,letusmoreintuitivetoacceptinformation.Atthesametime,thecomputerhasbeenasawidelyusedtoolforpeople'sproductionandlivingservices.Extractingtextfromimagebelongstothefrontierofintelligentinformationprocessing,anditisthecurrenthotresearchtopicinthefieldofartificialintelligenceandpatternrecognition.Asthetextwithhigh-levelsemanticfeatureandplaysanimportantroleonunderstanding,indexingandretrievalimagecontent.Therefore,thestudyonextractingtextsfromimageshaveimportantactualmeanings.Andbecauseextractingtextsfromstillimagesisthebasisforextractingtextsfromdynamicimages,thearticleemphaticallyintroducesthetechnologyofextractingtextsfromstillimages.KeyWords:MATLABimageprocessingwordextractionwordrecognition数字图象处理DigitalImageProgressing2一.引言随着计算机科学的飞速发展,以图像为主的多媒体信息迅速成为重要的信息传递媒介,在图像中,文字信息(如新闻标题等字幕)包含了丰富的高层语义信息,提取出这些文字,对于图像高层语义的理解、索引和检索非常有帮助。图像文字提取又分为动态图像文字提取和静态图像文字提取两种,其中,静态图像文字提取是动态图像文字提取的基础,其应用范围更为广泛,对它的研究具有基础性,所以本文主要讨论静态图像的文字提取技术。静态图像中的文字可分成两大类:一种是图像中场景本身包含的文字,称为场景文字;另一种是图像后期制作中加入的文字,称为人工文字,如右图所示。场景文字由于其出现的位置、小、颜色和形态的随机性,一般难于检测和提取;而人工文字则字体较规范、大小有一定的限度且易辨认,颜色为单色,相对与前者更易被检测和提取,又因其对图像内容起到说明总结的作用,故适合用来做图像的索引和检索关键字。对图像中场景文字的研究难度大,目前这方面的研究成果与文献也不是很丰富,本文主要讨论图像中人工文字提取技术。二.静态图像中文字的特点静态图像中文字(本文特指人工文字,下同)具有以下主要特征:(1)文字位于前端,且不会被遮挡;(2)文字一般是单色的;(3)文字大小在一幅图片中固定,并且宽度和高度大体相同,从满足人眼视觉感受的角度来说,图像中文字的尺寸既不会过大也不会过小;(4)文字的分布比较集中;(5)文字的排列一般为水平方向或垂直方向;(6)多行文字之间,以及单行内各个字之间存在不同于文字区域的空隙。在静态图片文字的检测与提取过程中,一般情况下都是依据上述特征进行处理的。三.文字提取、识别的一般流程数字图象处理DigitalImageProgressing3threshithreshii2,12,03静态图像文字提取一般分为以下步骤:文字区域检测与定位、文字分割与文字提取、文字后处理。其流程如图1所示。(图1)四.文字提取、识别的详细步骤1.在Matlab中调用i1=imread('字符.jpg'),可得到原始图像,如图2所示:(图2)2.调用i2=rgb2gray(i1),则得到了灰度图像,如图3所示:(图3)调用a=size(i1);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所示:数字图象处理DigitalImageProgressing4(图4)4.把二值图像放大观察,可看到离散的黑点对其采用腐蚀膨胀处理,得到处理后的图像,如图5所示(图5)可见,腐蚀膨胀处理后的图像质量有了很大的改观。横向、纵向分别的腐蚀膨胀运算比横向、纵向同时的腐蚀膨胀运算好上很多,图6可看出差别:(图6)5.对腐蚀膨胀后的图像进行Y方向上的区域选定,限定区域后的图像如图7所示:扫描方法:中间往两边扫数字图象处理DigitalImageProgressing5(图7)纵向扫描后的图像与原图像的对照,如图8所示:(图8)6.对腐蚀膨胀后的图像进行X方向上的区域选定,限定区域后的图像如图9所示:扫描方法:两边往中间扫(图9)纵向扫描后的图像与原图像的对照,如图10所示:(图10)7.调用i8=(iiXY~=1),使背景为黑色(0),字符为白色(1),便于后期处理。背景交换后的图像如图11所示:数字图象处理DigitalImageProgressing6(图11)8.调用自定义函数(字符获取函数)i9=getchar(i8),得到图像如图12所示:(图9)9.调用自定义的字符获取函数对图像进行字符切割,并把切割的字符装入一维阵列,切割过程如图12所示:(图12)10.调用以下代码,可将阵列word中的字符显示出来,如图13所示:forj=1:cnum%cnum为统计的字符个数subplot(5,8,j),imshow(word{j}),title(int2str(j));%显示字符end数字图象处理DigitalImageProgressing7(图13)可以看到,字符宽度不一致11.调用以下代码,将字符规格化,便于识别:forj=1:cnumword{j}=imresize(word{j},[4040]);%字符规格化成40×40的end得到规格化之后的字符如图14所示:(图14)12.调用以下代码创建字符集:code=char('由于作者水平有限书中难免存在缺点和疏漏之处恳请读批评指正,。');将创建的字符集保存在一个文件夹里面,以供匹配时候调用,如图15所示:数字图象处理DigitalImageProgressing8(图15)13.字符匹配采用模板匹配算法:将现有字符逐个与模板字符相减,认为相减误差最小的现有字符与该模板字符匹配。假设:字符1001001001001001A,模板字符00000000111111111T,模板字符10010110011010012T也就是说,字符A与模板字符T1更相似,我们可以认为字符集中的字符T2就是字符A。经模板匹配,可得字符信息如下:由于读者书评有限书中难免存在缺点和纰漏之处,恳请读者批评指正。效果如图16所示:(图16)14.调用以下代码,将字符放入newtxt.txt文本:2)))(((,8)))(((21TTAabssumsumAabssumsum数字图象处理DigitalImageProgressing9new=['newtxt','.txt'];c=fopen(new,'a+');fprintf(c,'%s\n',Code(1:cnum));fclose(c);newtxt.txt文本内容如图17所示:(图17)五.反思与体会1.算法具有局限性。对于左右结构的字符(如:川)容易造成误识别,“川”字将会被识别成三部分。当图片中文字有一定倾斜角度时,这将造成识别困难。2.模板匹配效率低。对于处理大小为m×m的字符,假设有n个模板字符,则识别一个字符至少需要m×m×n×2次运算,由于汉字有近万个,这将使得运算量十分巨大!此次字符识别一共花了2.838秒。3.伸缩范围比较小。对于受污染的图片,转换成二值图像将使字符与污染源混合在一起。对于具体的图片,需反复选择合适的thresh进行二值化处理,甚至在处理之前必须进行各种滤波。4.通过这次数字图象处理的学习和报告的撰写,我们小组发挥了团结友爱的协作精神,大量的资料查阅丰富了我们的视野,同时使我们对这么课更加感兴趣。参考文献[1]樊昀,王润生.从图像中提取文字[J].国防科技大学学报,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]陈杨.MATLAB6.X图像编程与图像处理[M].西安:西安电子科技大学出版社数字图象处理DigitalImageProgressing10[7]阮秋琦.数字图像处理[M].电子工业出版社,2001年.[8]徐建华.图像处理与分析[M].科学出版社,1999年.附录主程序源代码:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%数字图象处理大作业%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%————————图片中文字的提取及识别————————%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ticI=imread('字符.jpg');%打开图片%figure(1);imshow(I);title('原始图像','color','b');I=rgb2gray(I);%RGB图片转化成灰度图像%figure(2);imshow(I);
本文标题:基于MATLAB的图片中文字的提取及识别要点
链接地址:https://www.777doc.com/doc-1997184 .html