基于MATLAB的文字识别系统
一、课题介绍
本设计主要运用MATLAB的仿真平台设计进行文字识别算法的设计与仿真。也就是用于实现文字识别算法的过程。从图像中提取文字属于信息智能化处理的前沿课题,是当前人工智能与模式识别领域中的研究热点。由于文字具有高级语义特征,对图片内容的理解、索引、检索具有重要作用,因此,研究图片文字提取具有重要的实际意义。又由于静态图像文字提取是动态图像文字提取的基础,故着重介绍了静态图像文字提取技术。随着计算机科学的飞速发展,以图像为主的多媒体信息迅速成为重要的信息传递媒介,在图像中,文字信息(如新闻标题等字幕)包含了丰富的高层语义信息,提取出这些文字,对于图像高层语义的理解、索引和检索非常有帮助。
二、课题实现功能
图像文字提取又分为动态图像文字提取和静态图像文字提取两种,其中,静态图像文字提取是动态图像文字提取的基础,其应用范围更为广泛,对它的研究具有基础性,所以本文主要讨论静态图像的文字提取技术。静态图像中的文字可分成两大类:一种是图像中场景本身包含的文字, 称为场景文字; 另一种是图像后期制作中加入的文字,称为人工文字,如右图所示。场景文字由于其出现的位置、小、颜色和形态的随机性,一般难于检测和提取;而人工文字则字体较规范、大小有一定的限度且易辨认,颜色为单色,相对与前者更易被检测和提取,又因其对图像内容起到说明总结的作用,故适合用来做图像的索引和检索关键字。对图像中场景文字的研究难度大,目前这方面的研究成果与文献也不是很丰富,本文主要讨论图像中人工文字提取技术。
其流程如图所示。

图1 静态文字处理流程图
四、源码
文字识别算法仿真代码如下:
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; % 字符的宽度或者高度
for j=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';
else if ((SV>=2*(SL+SR))&&((max(SL,SR)<3)||(min(SL,SR)<2)))
Str='V';
else if ((SL>SR)&&((SL>=0.5*SV)&&((SR<=1)||(SL>(SR+SV)))))