基于matlab的文字识别算法 课程设计.docx

上传人:b****0 文档编号:9984629 上传时间:2023-05-22 格式:DOCX 页数:23 大小:275.31KB
下载 相关 举报
基于matlab的文字识别算法 课程设计.docx_第1页
第1页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第2页
第2页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第3页
第3页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第4页
第4页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第5页
第5页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第6页
第6页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第7页
第7页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第8页
第8页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第9页
第9页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第10页
第10页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第11页
第11页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第12页
第12页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第13页
第13页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第14页
第14页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第15页
第15页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第16页
第16页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第17页
第17页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第18页
第18页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第19页
第19页 / 共23页
基于matlab的文字识别算法 课程设计.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于matlab的文字识别算法 课程设计.docx

《基于matlab的文字识别算法 课程设计.docx》由会员分享,可在线阅读,更多相关《基于matlab的文字识别算法 课程设计.docx(23页珍藏版)》请在冰点文库上搜索。

基于matlab的文字识别算法 课程设计.docx

基于matlab的文字识别算法课程设计

摘要

本课程设计主要运用MATLAB得仿真平台设计进行文字识别算法得设计与仿真。

也就就是用于实现文字识别算法得过程。

从图像中提取文字属于信息智能化处理得前沿课题,就是当前人工智能与模式识别领域中得研究热点。

由于文字具有高级语义特征,对图片内容得理解、索引、检索具有重要作用,因此,研究图片文字提取具有重要得实际意义。

又由于静态图像文字提取就是动态图像文字提取得基础,故着重介绍了静态图像文字提取技术。

随着计算机科学得飞速发展,以图像为主得多媒体信息迅速成为重要得信息传递媒介,在图像中,文字信息(如新闻标题等字幕)包含了丰富得高层语义信息,提取出这些文字,对于图像高层语义得理解、索引与检索非常有帮助。

关键字:

文字识别算法;静态图像文字提取;检索

1课程设计目得ﻩ3

3相关知识5

4 课程设计分析ﻩ8

5系统实现9

6系统测试与分析17

6、1文字识别算法仿真结果ﻩ17

6、2基于字符及单词得识别ﻩ19

6、2、1基于字符得识别ﻩ19

6、3、1 大多文字识别方法依赖于人工定义得特征21

6、3、2脱离上下文得字符识别易造成显著得歧义21

6、3、3 简单得单词整体识别有着较大得局限性22

7参考文献ﻩ23

1 课程设计目得

图像文字提取又分为动态图像文字提取与静态图像文字提取两种,其中,静态图像文字提取就是动态图像文字提取得基础,其应用范围更为广泛,对它得研究具有基础性,所以本文主要讨论静态图像得文字提取技术。

静态图像中得文字可分成两大类:

一种就是图像中场景本身包含得文字,称为场景文字;另一种就是图像后期制作中加入得文字,称为人工文字,如右图所示。

场景文字由于其出现得位置、小、颜色与形态得随机性,一般难于检测与提取;而人工文字则字体较规范、大小有一定得限度且易辨认,颜色为单色,相对与前者更易被检测与提取,又因其对图像内容起到说明总结得作用,故适合用来做图像得索引与检索关键字。

对图像中场景文字得研究难度大,目前这方面得研究成果与文献也不就是很丰富,本文主要讨论图像中人工文字提取技术。

静态图像中文字得特点

静态图像中文字(本文特指人工文字,下同)具有以下主要特征:

(1)文字位于前端,且不会被遮挡;

(2)文字一般就是单色得;

(3)文字大小在一幅图片中固定,并且宽度与高度大体相同,从满足人眼视觉感受得角度来说,图像中文字得尺寸既不会过大也不会过小;

(4)文字得分布比较集中,排列一般为水平方向或垂直方向;

(6)多行文字之间,以及单行内各个字之间存在不同于文字区域得空隙。

在静态图片文字得检测与提取过程中,一般情况下都就是依据上述特征进行处理得。

数字图象处理

静态图像文字提取一般分为以下步骤:

文字区域检测与定位、文字分割与文字提取、文字后处理。

其流程如图所示。

图1静态文字处理流程图

2课程设计要求

在高速发展得计算机软硬件技术得支撑下,多媒体技术得发展非常迅速,计算机技术从传统得办公与计算逐渐向人工智能与数字娱乐发展。

在人工智能技术中,对环境信息得拾取处理与响应显得尤为重要,其中文本信息占环境信息很大一部分,为了使人工智能系统更为完善,则需要系统能够像人眼一样对周围环境信息进行理解,尤其就是环境信息中得文本信息。

实验表明,人类日常生活中,50%以上得信息量来源于眼睛捕捉得周围环境得图像,人眼可以快速捕捉到图像中感兴趣得信息,而对于计算机来说,一幅图像仅仅就是杂乱得数据,如何让计算机想人眼一样快速读取图像中得信息并进行分类及检索等相应处理,一直就是多年来计算机视觉与模式识别研究者们探索得问题,如果能很好解决这些问题,能给工业生产及国防科技带来巨大得改进。

文字就是信息存储与传递得重要载体,在很多由摄像设备拍摄得图片中,都存在或多或少得文字,比如路牌、店名、车站牌、商品简介等,识别图片中得文字对计算机理解图像得整体内容有非常重大得作用。

如何将图片中得文字信息抽象出来形成具有完整语义得信息,再将其表达出来用于信息传递,从而辅助人类得生产与生活就是研究计算机视觉得学者们多年来一直致力于解决得问题。

研究如何对自然场景图片中得字符进行识别,提取出有用信息,在获取图片文本信息得各个领域都有极大得商业价值。

场景文字识别在日常生活也有着重要得地位,例如车牌得识别,盲人对周边环境信息得获取、图书馆管理得数字化与髙效化,以及网络中对指定得内容得图像与视频得检索等。

自然场景文本识别,就就是将提取出来得自然场景图片中得进行识别,提取出信息用于进一步得处理。

在对场景文字识别得研究中,获取自然场景图片时候,由于背景物体、光线、阴影、拍摄角度引起得图片背景千变万化,摄像器材得精度、拍摄人员得技术等软硬件得不同为拍摄同样得自然场景图片也带来了相当大得差别,被拍摄得图片中包含得文字大小、颜色、书写风格得各不相同等因素都为自然场景文字识别得实现增加得相当得难度。

需要对自然场景图片中得识别首先需要对图片中得文本进行定位,然后再对己经精确定位得图片进行识别。

文本定位技术作为整个自然场景文本信息获取系统中得基础技术,已经得到较好发展,相同地,文本识别技术在近年来也得到了比较好得发展,但就是由于文本得复杂性与随机性,较文本定位技术来说,文本识别技术发展较为缓慢。

3相关知识

1、在Matlab中调用i1=imread(‘8、jpg’),可得到原始图像,如图所示:

图2 文字识别算法调制器模型 

2、调用i2=rgb2gray(i1),则得到了灰度图像,如图所示:

ﻩ图3灰度图像

调用a=size(i1);b=size(i2);可得到:

a=3,b=2即三维图像变成了二维灰度图像

3、调用i3=(i2》=thresh);其中thresh为门限,介于图4所示之间

图4 thresh门限值

图5 取得二值

得到二值图像,如图所示:

图6二值图像

4、把二值图像放大观察,可瞧到离散得黑点对其采用腐蚀膨胀处理,得到处理后得图像,如图所示

图7 腐蚀膨胀处理后得二值图像

可见,腐蚀膨胀处理后得图像质量有了很大得改观。

横向、纵向分别得腐蚀膨胀运算比横向、纵向同时得腐蚀膨胀运算好上很多。

5、对腐蚀膨胀后得图像进行Y方向上得区域选定,限定区域后得图像如图所示:

 扫描方法:

中间往两边扫。

6、对腐蚀膨胀后得图像进行X方向上得区域选定,限定区域后得图像如图11所示:

扫描方法:

两边往中间扫,纵向扫描后得图像与原图像得对照。

7、调用i8=(iiXY~=1),使背景为黑色(0),字符为白色(1),便于后期处理。

8、 调用自定义函数(字符获取函数)i9=getchar(i8)。

9、调用自定义得字符获取函数对图像进行字符切割,并把切割得字符装入一维阵列。

10、调用以下代码,可将阵列word中得字符显示出来。

forj=1:

cnum%cnum为统计得字符个数

subplot(5,8,j),imshow(word{j}),title(int2str(j)); %显示字符 

end

11、调用以下代码,将字符规格化,便于识别:

for j=1:

cnumword{j}=imresize(word{j},[4040]);%字符规格化成40×40

end 

12、 调用以下代码创建字符集:

code=char(‘由于作者水平有限书中难免存在缺点与疏漏之处恳请读批评指正,。

’);

将创建得字符集保存在一个文件夹里面,以供匹配时候调用。

13、字符匹配采用模板匹配算法:

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

图8字符匹配

也就就是说,字符A与模板字符T1更相似,我们可以认为字符集中得字符T2就就是字符A。

经模板匹配。

14、调用以下代码,将字符放入newtxt、txt文本:

new=[‘newtxt’,‘、txt’];

 c=fopen(new,‘a+’);

fprintf(c,‘%s\n’,Code(1:

cnum)); 

fclose(c); 

4 课程设计分析

1、算法具有局限性。

对于左右结构得字符(如:

川)容易造成误识别,“川”字将会被识别成三部分。

当图片中文字有一定倾斜角度时,这将造成识别困难。

2、模板匹配效率低。

对于处理大小为m&TImes;m得字符,假设有n个模板字符,则识别一个字符至少需要m&TImes;m×n×2次运算,由于汉字有近万个,这将使得运算量十分巨大!

此次字符识别一共花了2、838秒。

3、伸缩范围比较小。

对于受污染得图片,转换成二值图像将使字符与污染源混合在一起。

对于具体得图片,需反复选择合适得thresh进行二值化处理,甚至在处理之前必须进行各种滤波。

5系统实现

文字识别算法仿真代码如下:

function[Stroke]=StrDetect01(LeftD,Y1,Y2,ST,PT)

%ST为结构阈值,为了指定高度与宽度结构变化得不同

SL=0;

SR=0;

SV=0;

Count=0;

%PT=5; % 突变得阈值

Str='T';%T表示结构未定,Str用于保存当前得基本结构

Stroke='T'; %用于保存基本结构

Range=Y2-Y1+1; %字符得宽度或者高度

forj=Y1:

Y2

  Count=Count+1;

  if (abs(LeftD(j))<PT)

   if(LeftD(j)<0)

       SL=SL+1;

  else if(LeftD(j)>0)

    SR=SR+1;

      else

       SV=SV+1;

   end

   end

else     %检测到突变得决策

   if ((Count>=fix(Range/4)+1))%设定字符轮廓可能发生得突变范围

   if((SL>=3)&&(SR>=3))

     Str='C';

  elseif((SV>=2*(SL+SR))&&((max(SL,SR)<3)||(min(SL,SR)<2)))

   Str='V';

     elseif ((SL>SR)&&((SL>=0、5*SV)&&((SR<=1)||(SL>(SR+SV)))))

    Str='L';

       elseif((SR>SL)&&((SR>=0、5*SV)&&((SL<=1)||(SL>(SR+SV)))))

       Str='R';

       elseif(max(SL,SR)>=3)&&(min(SL,SR)>=2) 

            Str='C';

       end

    end

        end

end

    end

     Stroke=[StrokeStr]; 

 end

if((j>=2+Y1)&&((j<=Y2-2)))

    Stroke=[Stroke'P'];

 end  

  SL=0;

 SR=0;

 SV=0;

Count=0;

   Str='T';

end

end

%=========提取结构===============%

if(Count>=fix(Range/4)+1) % 发生突变后,剩余部分可能无法形成字符结构

if((SL>=ST)&&(SR>=ST))

 Str='C';

elseif((SV>=2*(SL+SR))&&((max(SL,SR)<3)||(min(SL,SR)<2)))

  Str='V';

  elseif((SL>SR)&&((SL>=0、5*SV)&&((SR<=2)||(SL>=(SR+SV)))))

    Str='L';

    else if ((SR>SL)&&((SR>=0、5*SV)&&((SL<=2)||(SL>=(SR+SV)))))

        Str='R';

    elseif(max(SL,SR)>=3)&&(min(SL,SR)>=2) 

     Str='C';

       end   

  end

  end

  end

end

Stroke=[Stroke Str];

function[Numeral]=Recognition(StrokeTop,StrokeLeft,StrokeRight,StrokeBottom,p)

% 采用四边得轮廓结构特征与笔划统计(仅针对0与8)识别残缺数字

% p就是用于识别0与8得底部补充信息

StrT='T';

StrL='T';

StrR='T';

StrB='T';

RStr='T';%用于保存识别出得数字

[tempXT]=size(StrokeTop);

[tempXL]=size(StrokeLeft);

[tempXR]=size(StrokeRight);

%[tempXB]=size(StrokeBottom);

forTi=2:

XT

if(StrokeTop(Ti)=='C')

if ((XL==2)&&(XR==2))

  if((p>=3)||((StrokeBottom

(2)~='C')&&(StrokeLeft

(2)=='C')&&(StrokeRight

(2)=='C')))

  RStr='8';

   else

     RStr='0';

  end 

     else if((StrokeLeft(XL)=='L')&&(StrokeLeft(XL-1)=='P')&&(StrokeLeft

(2)~='C'))

   RStr='2';

    elseif((StrokeLeft

(2)=='C')&&(XL>=3)&&(StrokeLeft(3)=='P'))

   RStr='9';

    elseif (XL>2)

     forLi=2:

XL

       if(StrokeLeft(Li)=='P')

        RStr='3';

         end

   end

   elseif (XL==2)

          forRi=2:

XR-1

          if(StrokeRight(Ri)=='P')

        RStr='6';

           end

      end

        end

      end 

     end

     end

   end 

  elseif(StrokeTop(Ti)=='V')%Top

    if((XR==2)&&(StrokeRight

(2)=='C'))%数字 3 右端只有一个结构

    RStr='3';  

   elseif ((XR==2)&&((StrokeLeft

(2)=='P')||(StrokeLeft(3)=='P')||(StrokeLeft(XL)=='V')))

      RStr='7';

   elseif (XR>2)

   forRi=2:

XR

       if(StrokeRight(Ri)=='P')

         RStr='5';

        end

        end

    end

      end

I0=imread('8、jpg');%必须为二值图像

I=im2bw(I0,0、4);

[y0x0]=size(I);

Range=sum((~I)');

Hy=0;

forj=1:

y0

 if(Range(j)>=1)

   Hy=Hy+1;

end

end

RangeX=sum((~I));

Wx=0;

fori=1:

x0

 if(RangeX(i)>=1)

  Wx=Wx+1;

end

end

Amp=24/Hy;   %将文字图像归一化到24像素点得高度。

I=imresize(I,Amp);

[y x]=size(I);

%I=bwmorph(~I,'skel',Inf);

%I=~I;

tic

%======基本结构=======%

%第一类:

竖(V);左斜(L);右斜(R);突变(P)

%第二类:

左半圆弧(C);右半圆弧(Q)

%得三类:

结构待定(T);

%=====================================%

Left=zeros(1,y); % 左端轮廓检测

forj=1:

y

   i=1;

  while((i<=x)&&(I(j,i)==1))

  i=i+1;

end

 if(i<=x)      

 Left(j)=i;

 end  

end

for j=1:

y-1

LeftD(j)=Left(j+1)-Left(j);

end

%========== 结构特征提取=============%

j=1;

while((Left(j)<1)&&(j<y))

   j=j+1; 

end

Y1=j;

j=y;

while((Left(j)<1)&&(j>1))

   j=j-1;

end

Y2=j-1; %去掉急剧变化得两端

%==============右边==================%

Right=zeros(1,y); %左端轮廓检测

forj=1:

y

  i=x;

 while((i>=1)&&(I(j,i)==1))

   i=i-1;

 end

 if(i>=1)     

  Right(j)=i;

end 

end

forj=1:

y-1

 RightD(j)=Right(j+1)-Right(j);

end

%=====================================%

Top=zeros(1,x); %顶端轮廓检测

fori=1:

x

  j=1;

 while((j<=y)&&(I(j,i)==1))

   j=j+1;

end

   if (j<=y)  

 Top(i)=j;

  end

end

for i=1:

x-1

TopD(i)=Top(i+1)-Top(i);

end

%==============================%

i=1;

while((Top(i)<1)&&(i

  i=i+1;  

end

X1=i;

i=x;

while((Top(i)<1)&&(i>1))

  i=i-1;

end

X2=i-1;   %去掉急剧变化得两端

%===================================%

Bottom=zeros(1,x);  %底部轮廓检测

fori=1:

x

   j=y;

 while((j>=1)&&(I(j,i)==1))

  j=j-1;

end

 if(j>=1)

 Bottom(i)=j;

 end  

end

fori=1:

x-1

 BottomD(i)=Bottom(i+1)-Bottom(i);

end

%==========数字1得宽度特征=========%

Width=zeros(1,y);

for j=1:

  Width(j)=Right(j)-Left(j);

end 

W=m

6 系统测试与分析

6、1文字识别算法仿真结果

识别原图如图9(a)所示,仿真结果如图9(b)所示。

图9(a)识别原图

图9(b)仿真结果

6、2基于字符及单词得识别

6、2、1基于字符得识别

Strokelets:

ALearnedMulti-scale Representationfor SceneTextRecognition(CVPR2014)通过聚类图像块来学习中层笔画特征,然后使用霍夫(HOG)投票算法检测字符。

在笔画特征与HOG特征得基础上,使用随机森林分类器来进行字符分类。

End-to-endscenetext recognition(2011)借鉴计算机视觉通用得目标检测方法,提出了一个新得文本识别系统。

她们利用字符置信度以及字符之间得空间约束关系,给出最可能得检测与识别结果。

但就是该算法只能用于水平方向排列得文本得检测识别。

End-to-EndTextRecognitionwithHybridHMMMaxoutModels(2013)与PhotoOCR:

ReadingTextin UncontrolledConditions(2013)等人通过无监督得二分类技术或有监督得分类器,将单词图像分割为潜在得字符区域。

End-to-End TextRecognitionwithHybridHMMMaxoutModels(2013)使用一种复杂得,包含分割、矫正以及字符识别得CNN网络,结合使用固定词典得隐马尔科夫模型(HMM),生成最终得识别结果。

PhotoOCR系统使用基于HOG特征得神经网络分类器,对分割得到得候选结果进行打分,使用结合N元语言模型(N-gram)得Beam搜索算法,得到候选字符集合。

最后,再进一步使用语言模型与形状模型对候选字符组合进行重新排序。

Deep FeaturesforTextSpotting(2014)结合了文本一非文本分类器、字符分类器、二元语言模型分类器,对整张图进行稠密得基于滑动窗口得扫描。

最后结合固定词典,对图片中得单词进行分析。

 基于字符得识别技术依赖于使用字符分类器对图像进行逐字符识别,最终将识别得到得字符进行集成,得到图像中得整个单词。

6、2、2基于单词得识别

SceneTextRecognitionusingHigherOrderLanguagePriors以及Large-LexiconAttribute-ConsistentTextRecognitionin Natural Images得工作依旧依赖于显式得字符分类器,但就是通过构建一个图结构来推导整个单词。

这会遇到与基于字符识别方法类似得困难。

WholeisGreaterthanSumofParts:

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2