1 简介 本文涉及图像识别处理领域,特别涉及基于模板匹配的OCR识别方法;将待识别图像文字切分成仅包含单个字符的子图片;将其中的数字,字母和标点符号,文字子图分别标记出来;根据待
1 简介
本文涉及图像识别处理领域,特别涉及基于模板匹配的OCR识别方法;将待识别图像文字切分成仅包含单个字符的子图片;将其中的数字,字母和标点符号,文字子图分别标记出来;根据待识别图像文字选择对应的字体制作特征图片;并对待识别子图片和对应类型的特征图片进行归一化处理.在此基础上,进行特征比对,将待识别的数字,字母和标点符号子图片以及文字字符子图片分别于对应类型的特征模板进行对比计算,在进对比计算时,采用相同像素位置的异或算法,统计误差频次;将误差频次最小的特征图片对应的标注作为识别结果进行输出.本发明方法实现的图像识别,计算过程简单,节省人力和物力,识别效率较高.
2 部分代码
function letter=read_letter(imagn,num_letras)% Computes the correlation between template and input image
% and its output is a string containing the letter.
% Size of 'imagn' must be 42 x 24 pixels
% Example:
% imagn=imread('D.bmp');
% letter=read_letter(imagn)
global templates
comp=[ ];
for n=1:num_letras
sem=corr2(templates{1,n},imagn);
comp=[comp sem];
end
vd=find(comp==max(comp));
%*-*-*-*-*-*-*-*-*-*-*-*-*-
if vd==1
letter='A';
elseif vd==2
letter='B';
elseif vd==3
letter='C';
elseif vd==4
letter='D';
elseif vd==5
letter='E';
elseif vd==6
letter='F';
elseif vd==7
letter='G';
elseif vd==8
letter='H';
elseif vd==9
letter='I';
elseif vd==10
letter='J';
elseif vd==11
letter='K';
elseif vd==12
letter='L';
elseif vd==13
letter='M';
elseif vd==14
letter='N';
elseif vd==15
letter='O';
elseif vd==16
letter='P';
elseif vd==17
letter='Q';
elseif vd==18
letter='R';
elseif vd==19
letter='S';
elseif vd==20
letter='T';
elseif vd==21
letter='U';
elseif vd==22
letter='V';
elseif vd==23
letter='W';
elseif vd==24
letter='X';
elseif vd==25
letter='Y';
elseif vd==26
letter='Z';
%*-*-*-*-*
elseif vd==27
letter='1';
elseif vd==28
letter='2';
elseif vd==29
letter='3';
elseif vd==30
letter='4';
elseif vd==31
letter='5';
elseif vd==32
letter='6';
elseif vd==33
letter='7';
elseif vd==34
letter='8';
elseif vd==35
letter='9';
else
letter='0';
end
3 仿真结果
4 参考文献
[1]毛群, & 王少飞. (2010). 基于matlab的神经网络数字识别系统实现. 中国西部科技, 9(19), 3.