图片识别数字算法

2016-07-25 热点事件 阅读:

图片识别数字算法(一)
基于数字图像识别的算法设计

基于数字图像识别的算法设计

作者:吴元林 金秀章

来源:《电子世界》2013年第17期

【摘要】本文以数字识别系统的基本流程为主线,从数据的提取与预处理、特征的提取与选择,到分类器的设计等部分都进行了较为详尽的分析与研究。着重研究了几个主要的用于分类的算法如最小距离法、近邻法、K-近邻法和BP神经网络,并通过MATLAB仿真实验分析了不同算法的识别率。为工程应用提供了可靠的理论依据和实际的使用经验。

【关键词】最小距离法;近邻法;K-近邻法;BP神经网络

1.引言

模式识别是人类的一项基本智能,人们每时每刻都在进行着“模式识别”。随着计算机技术的普及和发展,让计算机拥有识别能力收到越来越多的研究学者的重视,也是人工智能和机器人技术发展的前提。

模式识别是指对表征事物或现象的各种形式的(数值的、文字的和逻辑关系的)信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程,是信息科学和人工智能的重要组成部分[1]。生活中最简单的事物无过于简单的数字0-9,同时,数字在各个方向领域应用广泛,如:车牌识别,邮政编码识别等。因此,数字字符识别是一项有实际应用的课题。

2.数字识别基本步骤

数字识别是通过读取所需识别的数字图片的特征值输入到某个已经定义好的识别算法中进行识别,并输出识别结果,其基本步骤如图2-1所示。

如图2-1所示,数字识别步骤主要有:数据提取、数据预处理、特征值提取和选择以及分类器和分类决策。下面分别对这几个步骤进行分析。

2.1 数据提取

本文所处理的为0-9的灰度图片,总共有400组图片,分为0-9的数字十组,每组40个,分为30个训练样本和10个测试样本。本文借助matlab软件自带的imread函数和dir函数对“数字”文件夹下的所有图片进行读取,获得一个包含图片数据的36*20*40*10的四维数组。每幅图片的数据为36*20的数据矩阵。

2.2 预处理

图像预处理要根据实际图像进行相应操作,以便使处理时间和正确率两者结合起来。一般而言,预处理的目的是为了去除图像中所包含的干扰噪声,增强有用信息,对退化的信息进行复原。图像预处理包含以下一系列操作:图像去噪处理、图像二值化处理、分割处理和归一化处理等。具体步骤如图2-2所示。

2.2.1 二值化

一般设备读取得到的数字图像均为灰度图像,需对其进行二值化处理,使之变为仅含黑

(1)、白(0)两种颜色的二值图像,这对于加强图像对比具有很好的效果。二值化后的图像其字符与背景对比更为强烈,更加突显字符的结构特征。对灰度图像二值化能减小数据存储的容量,降低处理的复杂性。对数字字符图像二值化,要求二值化后的图像能真实地再现原本数字,要求笔画中不出现空白点,并且二值化的笔画基本保持原来文字的结构特征。本文采用matlab自带的二值化处理函数:im2bw,阙值选择0.5。

2.2.2 去噪处理

噪声的存在恶化了图像质量,使图像模糊,更严重的甚至是图像的特征完全被淹没,以致于给图像识别和分析带来了困难。因此,对图像进行去噪处理是为了去除图像中包含的干扰噪声,加强图像有用信息的对比,为获取更好的特征值打下良好的基础。

2.2.3 分割和归一化

为了得到每个图像的特征,需要对二值矩阵进行分割和归一化。图像分割算法一般是基于亮度值的两个基本特性之一:不连续性和相似性。第一类性质的应用途径是基于亮度的不连续变化分割图像,比如图像的边缘。第二类性质的主要应用途径是依据事先制定的准则将图像分割为相似的区域。图像分割是大多数识别步骤中的一个基本的预备性步骤。选择一种分割技术而不选择另一种主要是由所面对问题的特点决定的[2]。本文针对数字图像的特性:阿拉伯数字不存在左右型和上下型结构,每个数字都是独立的个体,所以在分割时可先进行行切分,再进行列切分。初次切分是把矩阵按行分成两部分,列分成两部分。针对错误率后期再进行优化。

2.3 特征值提取与选择

特征值的提取与选择主要是针对已经分割好的矩阵块进行特征值的统计,其主要目的是从分析数字的拓扑结构入手,把它的某些结构特征提取出来,使数字的位移、大小变化、字形畸变等干扰相对减小,而把那些反映数字特征的关键信息提供给分类器。特征的选择一般有以下原则:首先是充分性原则,即所抽取的特征要能充分保持原模式的信息量;其次在满足充分性的基础上,尽量减小特征维数;此外,抽取特征时所花费的计算量不能太大,否则将影响识别速度。本文就实际情况,统计分割后的每个矩阵块中的黑像素的数量作为该矩阵块的特征值,并以此作为表征该图像的特征值。

图片识别数字算法(二)
数字识别的主要算法

BP神经网络识别手写数字

1.图像的预处理

对手写数字图像样本灰度化处理,二值化处理,归一化调整等预处理。其中二值化处理利用greythresh函数得到图像的全局阈值,然后使用im2bw将灰度图像转换为二值图像。

Ibw = im2bw(I1,greythresh(I1));

--Ibw为二值化图像的存储矩阵。

bw2 = edu_imgcrop(Ibw);

%找到图像边界

[y2temp x2temp] = size(bw);

x1=1;

y1=1;

x2=x2temp;

y2=y2temp;

% 找左边空白

cntB=1;

while (sum(bw(:,cntB))==y2temp)

x1=x1+1;

cntB=cntB+1;

end

% 左边

cntB=1;

while (sum(bw(cntB,:))==x2temp)

y1=y1+1;

cntB=cntB+1;

end

% 上边

cntB=x2temp;

while (sum(bw(:,cntB))==y2temp)

x2=x2-1;

cntB=cntB-1;

end

% 下边

cntB=y2temp;

while (sum(bw(cntB,:))==x2temp)

y2=y2-1;

cntB=cntB-1;

end

bw2=imcrop(bw,[x1,y1,(x2-x1),(y2-y1)]);

--对图像进行裁剪,使边框完全贴近字符。

归一化处理将图片归一化为28×28像素点阵图。

2.特征提取

将经过预处理的后的数字图像中提取最能体现这个字符特点的特征向量,然后提取出训练样本中的特征向量带入BP网络中就可以对网络进行训练。可以采用逐像素特征提取方法提取数字样本的特征向量。归一化后的图像形成一个2828的布尔矩阵,依次取每列的元素转化为784×1的列矩阵,及数字字符的特征向量。还可以对每幅单个手写体图像进行边缘裁剪后,将裁减后的二值图像

转换成5*7即35维的特征向量,转换过程如下:

bw_7050=imresize(bw2,[70,50]);

for cnt=1:7

for cnt2=1:5

Atemp=sum(bw_7050(((cnt*10-9):(cnt*10)),((cnt2*10-9):(cnt2*10))));%10*10box

lett((cnt-1)*5+cnt2)=sum(Atemp);

end

end

lett=((100-lett)/100);

lett=lett';

3.BP神经网络

BP神经网络是一个典型的多层神经网络,它包含了输入层,隐藏层和输出层,隐层可以有一层或多层,每层上的神经元称为节点或单元,它们由可修定的权值(w)互连,除了连接输入单元,每个单元还连接一个偏置(b)。

3.1 输入层神经元个数的确定

将数字图像的特征向量作为神经网络的输入,所以神经网络的输入层神经元个数等于特征向量的维数,即28×28=784个输入神经元。要识别10个数字,所以输出选择为10×1的矩阵,即输出节点数为10,输入为0时,第一个神经元为1,其他为0,;输入数字为1时,第二个神经元为1,其他为0;以此类推。

3.2 隐含层数和神经元个数的确定

隐含层数越多,神经网络的学习速度越慢,所以选3层神经网络。隐含层神经元的个数是根据网络收敛性能的好坏来确定的,在总结大量网络结构的基础上,得到经验公式:s=20.43nm0.12m2.54n0.77m0.350.51,其中,n为输入层神经元个数,m为输出层神经元个数,可得隐含层神经元个数为15。

3.3 BP神经网络构造

BP算法由两部分组成:信息的正向传递与误差的反向传播。在正向传递中,

输入信息从输入层经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态。如果在输出层没有得到期望的输出则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通路反向修改各层神经元的权值直到达到期望目标。

BP算法属于有监督的学习算法:根据训练样本和期望输出设置合适的权值,不断调整网络连接的权值,使误差达到实际的要求。

网络结构初始化:(784,15,10),innum=784,midnum=15,outnum=10; 权值初始化:

w1=rands(midnum,innum);····· 输入层到隐含层

b1=rands(midnum,1);

W2=rands(midnum,outnum);·······隐含层到输出层

b2=rands(outnum,1);

输出函数:yyx

网络预测输出:y(x)=input_train(:,i)

隐含层输出:y’=1

1jwjxjb

输出层的输出:hw,bxw2y`b2

梯度下降算法

反向传播学习规则是基于梯度下降算法的,梯度下降算法是利用梯度下降的方向迭代寻找目标函数的参数的最优值,就是向着减少误差的方向调整。学习效率为。

损失函数:Cw,b1||yxhw,bx||2 2x

【图片识别数字算法】

求偏导:cccv1v2 v1v2

Tcc,,vc梯度向量:c vvc vv21

所以,wkwk,c wk

c bl blbl,

主要的matlab代码:

Innum=785;

Midnum=15;

Outnum=10;

w1=rands(midnum,innum); b1=rands(midnum,1);

W2=rands(midnum,outnum); b2=rands(outnum,1);

图片识别数字算法(三)
数字图像处理算法整理

数字图像算法整理

1. 图像锐化

2. H=imread('C:\Users\home\Pictures\zhengqiji.jpg'); 3. H=rgb2gray(H); 4. [M,N]=size(H);

5. G2=H;B2=H;g=0;K=A;gmax=0;

6. --------------------用索贝尔算子对图像锐化------------------------- 7. for i=2:M-1

8. for j=2:N-1

9. GX2=(H(i+1,j-1)+2*H(i+1,j)+H(i+1,j+1))-(H(i-1,j-1)+2*H(i-1,j)+H(i-1,j+1)); 10. GY2=(H(i-1,j+1)+2*H(i,j+1)+H(i+1,j+1))-(H(i-1,j-1)+2*H(i,j-1)+H(i+1,j-1)); 11. 12. 13. 14. 15.

【图片识别数字算法】

G2(i,j)=abs(GX2)+abs(GY2); if G2(i,j)>0 B2(i,j)=1; else B2(i,j)=0;

end

16. end 17. End

18. --------------------------------------------------------------- 19. 20. 21. 22. 23.

---------------给图像填充颜色--------------------------------- for r=1:M for t=1:N if B2(r,t)==1 E(r,t)=255;

24. else E(r,t)=0;%给图像填充颜色% 25. end

26. end 27. End

28. ------------------------------------------------------------- 29. imshow(E);title('显示图像');

2.图像腐蚀算法

H=imread('C:\Users\Administrator\Desktop\zhengqiji.jpg'); H=rgb2gray(H); [M,N]=size(H); G2=H;B2=H; Express=H; bottle=zeros(M,N);

-----------------------图像锐化--------------------------------- for i=2:M-1 for j=2:N-1

GX2=(H(i+1,j-1)+2*H(i+1,j)+H(i+1,j+1))-(H(i-1,j-1)+2*H(i-1,j)+H(i-1,j+1));

GY2=(H(i-1,j+1)+2*H(i,j+1)+H(i+1,j+1))-(H(i-1,j-1)+2*H(i,j-1)+H(i+1,j-1));

G2(i,j)=abs(GX2)+abs(GY2); if G2(i,j)>0 B2(i,j)=1;

else B2(i,j)=0; end end end

--------------------------------------------------------------------- 图像腐蚀---------------------------------

for i=2:M-1 for j=2:N-1

if&& B2(i,j+1)==1

【图片识别数字算法】

bottle(i,j)=B2(i,j); end end end

---------------------填充黑白颜色-------------------------【图片识别数字算法】【图片识别数字算法】

for r=1:M for t=1:N【图片识别数字算法】

if bottle(r,t)==1 Express(r,t)=255;

else Express(r,t)=0; end end end

--------------------------------------------------------------------- subplot(1,2,2);

imshow(Express);title('显示图像');

3.图像膨胀

H=imread('C:\Users\home\Pictures\zhengqiji.jpg'); H=rgb2gray(H); [M,N]=size(H); G2=H;B2=H; Express=H; bottle=zeros(M,N);

------------------------图像锐化-------------------------- for i=2:M-1 for j=2:N-1

1,j)+H(i-1,j+1));

1)+H(i+1,j-1));

G2(i,j)=abs(GX2)+abs(GY2); if G2(i,j)>0 B2(i,j)=1; else B2(i,j)=0;

end end end

------------------------------图像膨胀------------------------- for i=2:M-1 for j=2:N-1 if B2(i,j)==1 bottle(i,j-1)=1;

bottle(i-1,j)=1; bottle(i+1,j)=1; bottle(i,j+1)=1; end end end for r=1:M for t=1:N

if bottle(r,t)==1 Express(r,t)=255;

else Express(r,t)=0;%填充颜色 % end end end

------------------------------------------------------------- subplot(1,2,2);

imshow(Express);title('显示图像');

--------------------------填充颜色----------------------------

图片识别数字算法(四)
基于数字图像识别的算法设计

  【摘要】本文以数字识别系统的基本流程为主线,从数据的提取与预处理、特征的提取与选择,到分类器的设计等部分都进行了较为详尽的分析与研究。着重研究了几个主要的用于分类的算法如最小距离法、近邻法、K-近邻法和BP神经网络,并通过MATLAB仿真实验分析了不同算法的识别率。为工程应用提供了可靠的理论依据和实际的使用经验。

  【关键词】最小距离法;近邻法;K-近邻法;BP神经网络
  1.引言
  模式识别是人类的一项基本智能,人们每时每刻都在进行着“模式识别”。随着计算机技术的普及和发展,让计算机拥有识别能力收到越来越多的研究学者的重视,也是人工智能和机器人技术发展的前提。
  模式识别是指对表征事物或现象的各种形式的(数值的、文字的和逻辑关系的)信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程,是信息科学和人工智能的重要组成部分[1]。生活中最简单的事物无过于简单的数字0-9,同时,数字在各个方向领域应用广泛,如:车牌识别,邮政编码识别等。因此,数字字符识别是一项有实际应用的课题。
  2.数字识别基本步骤
  数字识别是通过读取所需识别的数字图片的特征值输入到某个已经定义好的识别算法中进行识别,并输出识别结果,其基本步骤如图2-1所示。
  如图2-1所示,数字识别步骤主要有:数据提取、数据预处理、特征值提取和选择以及分类器和分类决策。下面分别对这几个步骤进行分析。
  2.1 数据提取
  本文所处理的为0-9的灰度图片,总共有400组图片,分为0-9的数字十组,每组40个,分为30个训练样本和10个测试样本。本文借助matlab软件自带的imread函数和dir函数对“数字”文件夹下的所有图片进行读取,获得一个包含图片数据的36*20*40*10的四维数组。每幅图片的数据为36*20的数据矩阵。
  2.2 预处理
  图像预处理要根据实际图像进行相应操作,以便使处理时间和正确率两者结合起来。一般而言,预处理的目的是为了去除图像中所包含的干扰噪声,增强有用信息,对退化的信息进行复原。图像预处理包含以下一系列操作:图像去噪处理、图像二值化处理、分割处理和归一化处理等。具体步骤如图2-2所示。
  2.2.1 二值化
  一般设备读取得到的数字图像均为灰度图像,需对其进行二值化处理,使之变为仅含黑(1)、白(0)两种颜色的二值图像,这对于加强图像对比具有很好的效果。二值化后的图像其字符与背景对比更为强烈,更加突显字符的结构特征。对灰度图像二值化能减小数据存储的容量,降低处理的复杂性。对数字字符图像二值化,要求二值化后的图像能真实地再现原本数字,要求笔画中不出现空白点,并且二值化的笔画基本保持原来文字的结构特征。本文采用matlab自带的二值化处理函数:im2bw,阙值选择0.5。
  2.2.2 去噪处理
  噪声的存在恶化了图像质量,使图像模糊,更严重的甚至是图像的特征完全被淹没,以致于给图像识别和分析带来了困难。因此,对图像进行去噪处理是为了去除图像中包含的干扰噪声,加强图像有用信息的对比,为获取更好的特征值打下良好的基础。
  2.2.3 分割和归一化
  为了得到每个图像的特征,需要对二值矩阵进行分割和归一化。图像分割算法一般是基于亮度值的两个基本特性之一:不连续性和相似性。第一类性质的应用途径是基于亮度的不连续变化分割图像,比如图像的边缘。第二类性质的主要应用途径是依据事先制定的准则将图像分割为相似的区域。图像分割是大多数识别步骤中的一个基本的预备性步骤。选择一种分割技术而不选择另一种主要是由所面对问题的特点决定的[2]。本文针对数字图像的特性:阿拉伯数字不存在左右型和上下型结构,每个数字都是独立的个体,所以在分割时可先进行行切分,再进行列切分。初次切分是把矩阵按行分成两部分,列分成两部分。针对错误率后期再进行优化。
  2.3 特征值提取与选择
  特征值的提取与选择主要是针对已经分割好的矩阵块进行特征值的统计,其主要目的是从分析数字的拓扑结构入手,把它的某些结构特征提取出来,使数字的位移、大小变化、字形畸变等干扰相对减小,而把那些反映数字特征的关键信息提供给分类器。特征的选择一般有以下原则:首先是充分性原则,即所抽取的特征要能充分保持原模式的信息量;其次在满足充分性的基础上,尽量减小特征维数;此外,抽取特征时所花费的计算量不能太大,否则将影响识别速度。本文就实际情况,统计分割后的每个矩阵块中的黑像素的数量作为该矩阵块的特征值,并以此作为表征该图像的特征值。
  3.数字识别方法
  从模式识别作为一项学科开始至今,研究学者们提出了各种各样的识别方法。本文主要针对最小距离法、近邻法、K-近邻法和BP神经网络进行了理论研究,并通过matlab进行实验分析。
  3.1 最小距离法
  最小距离法是一种简单的模式识别方法,它基于对模式的采样来估计各类模式的统计参数并完全由各类的均值和方差确定。当两类均值间的距离比类中对应均值的分布要大时,最小距离分类器能很好地工作。
  最小距离法在程序实现中可以直接求取待测试样本与各模式样本均值之间的距离,并将待测样本归为距离最小的一类模式中。
  3.2 近邻法
  3.3 K-近邻法
  3.4 BP神经网络
  由BP(Back Propagation)神经网络的英文名称可以看出BP神经网络的主要思想:输入学习样本,使用反向传播算法对网络的权值和偏差进行反复的调整训练,使输出的向量与期望向量尽可能的接近,当网络输出层的误差平方和小于指定的误差时训练完成,保存网络的权值和偏差。并运用保存的权值和偏差对待测样本进行测试。
  神经网络网络的输入、输出应根据应用的具体要求来设定。输入层节点数目取决于数据的维数,采用的输入数据为已经提取的特征数据,输入训练样本的特征数据为9*4*30*10的矩阵,转换成36*1*300的矩阵,因此神经网络输入神经元数目为36。要识别0-9这10个数字,本文采用8421码来识别,即对于输出“0”,采用(0,0,0,0)主要的目标向量来表示,对于输入“1”,采用(0,0,0,1)这样的输出向量来表示,以此类推,对于输入“9”,采用(1,0,0,1)这样的输出向量来表示。因此,就可以确定输出层的神经元数目为4,也就是输出向量的维数[4]。
  4.结果和结论
  参考文献
  [1]杨光正,吴岷,张晓莉等.模式识别[M].合肥:中国科学技术大学出版社,2001,7.
  [2]王勃飞.基于Pseudo-Zernike矩的数字识别研究[D].武汉:华中科技大学,2007.
  [3]边肇祺,张学工等.模式识别[M].北京:清华大学出版社,1999,12.
  [4]卜富清,王茂芝,于庆刚.基于BP神经网络的数字识别[J].长江大学学报,2009,6(6):293-294.
  作者简介:
  吴元林(1989—),女,安徽黄山人,华北电力大学自动化系硕士研究生。
  金秀章(1969—),男,河北衡水人,博士,华北电力大学自动化系副教授。

图片识别数字算法(五)
基于特征矩阵的高效数字识别算法

  摘要:传统的数字识别算法存在识别速度、识别准确率和识别方法复杂度三者无法兼顾的问题,为解决该问题,提出了基于特征矩阵的高效数字识别算法。该算法首先在预处理的基础上获取字符的特征矩阵,然后用特征矩阵对字符的特征横线、竖线等特征进行提取,最后利用结构语句识别的方法实现数字识别。实验结果表明,基于特征矩阵的高效数字识别算法思路简单、速度快,且识别率达97% 以上。

  关键词:特征矩阵;数字识别;图像处理;识别率
  中图分类号:TP312 文献标识码:A 文章编号文章编号:16727800(2014)001005903
  作者简介作者简介:徐敬(1989-),女,北方民族大学电信学院硕士研究生,研究方向为嵌入式与信息处理;刘炜(1963-),男,北方民族大学电信学院副教授、硕士生导师,研究方向为智能仪器。
  0 引言
  数字识别技术是图像处理领域中的一个研究热点,在食品、化妆品、药品等外包装生产日期提取上具有重要的实用价值。近年来,随着人们对数字图像识别算法的不断研究,数字图像识别方法也越来越多,主要有基于神经网络数字图像识别[1]、基于最小距离法的数字图像识别,以及基于模板匹配的数字图像识别[2]。在实际应用中,人们发现数字识别算法的识别率一般较低,个别识别率较高的算法比较复杂,且收敛速度普遍较慢,缺少两方面性能皆优的方法。针对目前存在的问题,结合印刷体数字的特点,笔者提出了一种基于特征矩阵的高效数字图像识别算法。该算法首先在预处理的基础上提取字符
  的特征矩阵,
  利用特征矩阵对简单的特征[34](横线)进行提取,然后应用结构语句识别方法将数字中的多数识别出来。再采用排除法缩小识别数字的范围,并对其中的数字特征凹陷区域进行分析和比较,同时采用上述同样的方法对数字进行识别使算法简单,识别速度快且识别效果好。
  1 数字图像预处理
  图像预处理是对采集到的图像画面在进行数字识别之前所做的一些相关工作,主要包括图像灰度化、二值化、梯度锐化、中值滤波、分割、归一化、细化等步骤,具体流程如图 1 所示。对图像进行预处理非常必要,它能够有效地去除图像噪声,减小各类干扰对图像识别的不利影响,为特征提取和识别奠定了基础。图像预处理的每一步结果如图2-图9所示。
  图1 数字预处理流程
  图2 原始图像 图3 灰度化 图4 二值化
  图5 梯度锐化 图6 中值滤波 图7 分割
  图8 归一化 图9 细化
  2 数字识别算法
  经过细化之后,通过从上到下,从左到右对图像进行扫描,提取字符的特征矩阵。由于细化后矩阵的边界可能存在全为0的行或列,为了便于后续特征提取,需要将其全为0的行列全部删除,得到类似如图10所示的矩阵,记为juzhen[m][n]。设前景像素为1,背景像素为0。
  对0~9这10个印刷体数字,首先可以根据是否存在横线将数字分为两个子集,其中1、2、4、5、7存在横线记H=1。0、3、6、8、9不存在横线记H=0。在H=1的集合中,因为横线存在的位置不同,可以将其再分为3个子集:1、2存在下横线;5、7存在上横线;4横线位置记为其它。这样数字识别的范围又进一步缩小了,接下来可以在小范围内进行特征比较来实现数字的识别。如5、7特征比较发现,5上半部分存在左凹陷区,下半部分存在右凹陷区。对于凹陷区域的识别可以依据矩阵在凹陷区域内像素值为0,限定区域范围统计0的行数即可,该区域范围仅针对每个特定数字而言,这样5就可以识别出来,运用排除法7自然而然也被识别出来。1、2特征比较发现,1存在竖线,2没有这个特征,4不需进行特征比较即可得出结果,为了使识别结果更加准确,可以加上竖线这个特征。在H=0的集合中,0的结构较简单,特征也较明显,把它作为一个集合来对待。它是一个封闭的圆圈,圆圈内没有像素则通过矩阵在一个较大区域内像素1的个数小于阈值的范围来提取。3、8、6、9作为另一个集合,特征比较发现,3上、下两部都存在右凹陷区,6上半部分存在左凹陷区,9下半部分存在右凹陷,除此之外就是8。这10个数字中的1较特殊,有的字体底部没有横线,有的底部存在横线,所以除了上述判断还要考虑没有横线的情况。数字识别流程如图11所示,其中上半部分左凹陷区域记为上左,上半部分右凹陷区记为上右,下半部分右凹陷区域记为下右,下半部分左凹陷区域记为下左。识别顺序按照从上到下、从左到右进行。对于易识别错误的字符进行了多处特征比较,如字符3、5等。数字特征提取条件如表1所示,特征的提取需要用到以下自定义函数:
  3 实验结果与分析
  在上述数字图像预处理基础上,利用上述识别算法对图像进行数字识别,结果保存在文本文件中,图像识别的结果如图12所示。
  图12 数字识别结果
  为了检验本文的算法对数字识别的效果,对0~9这10个印刷体数字包括不同字体在内的单个字符各100幅图像进行识别测试,测试硬件环境为 AMD Athlon 1.91 GHz、内存2 GB,采用C语言,并结合数字图像处理和计算机软件平台OpenCV,在VC6.0 集成开发环境中实现
  以上算法编程。 单个字符可在6ms内完成整个识别过程,
  实验结果如表2所示。识别率等于 99% 的 0、1 两个数字
  本身结构比较简单,容易识别;识别率在98%的有 3、5、6、9这4个数字,只要能够限制准确数字凹陷区的起始行、起始列、结束行和结束列,数字识别率还可以提高;图像数字2、8的识别率分别建立在3、5和6、9的识别率的基础之上,所以数字2、8 的识别率比3、5和6、9的识别率要低一些;数字图像4、7在细化后容易对字符造成损害,再加上特征提取的条件较为简单,因此,很容易识别为1和8。
  4 结语
  本文提出了一种基于特征矩阵的高效数字识别算法,并对从0~9的每个数字字符图像进行了测试。结果表明,该算法的思路简单、速度快,且识别率达97% 以上。通过分析发现,使用该方法发生误判时,错误源可能来自于图像的不规范,比如图像本身的不完整、预处理技术的缺陷,以及特征选取的局限性。
  参考文献参考文献:
  [1] 张翼成,陈 欣,杨红军,等.基于组合特征的BP神经网络数字识别方法[J].计算机系统应用,2013,22(3):113116.
  [2] 陈爱斌,陆丽娜.基于多特征的印刷体数字识别[J].计算技术与自动化,2011,30(3):105108.
  [3] 陈军胜.组合结构特征的自由手写体数字识别算法研究[J].计算机工程与应用,2013,49(5):179184.
  [4] 马斌,边树海.特征信息的新数字图像识别方法[J].沈阳建筑大学学报:自然科学版,2011,27(6):11871192.
  责任编辑(责任编辑:孙 娟)

图片识别数字算法(六)
基于模板匹配算法的识别系统

  摘要:传统的模板匹配算法求待匹配图像和模板之间的相似性映射关系均比较复杂,本文将对模板匹配算法进行改进,在模板匹配算法的基础上,将图片平均分成12块区域,再加上5条交线,一共17个特征值。当进行样本训练的时候,用同样的算法计算图片中数字的17个特征值,并到计算机存储区中去匹配,直接利用象素灰度值的差异,找到特征值最接近的一个图片数字,便完成匹配识别的过程,得到匹配的结果。

  关键词:模板匹配 特征值 细化 二值化
  中图分类号:TP391.41 文献标识码:A 文章编号:1007-9416(2013)06-0134-02
  1 模板匹配算法的描述
  在机器识别事物的过程中,常需把不同传感器或同一传感器在不同时间、不同成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据己知模式到另一幅图中寻找相应的模式,这就叫做匹配。因为只有当同一场景的两幅图像在同一坐标系下时,才能进行相似性比较,所以模板匹配的过程实际上也就是把一幅图像变换到另一幅图像的坐标系过程。图像的模板匹配就是先给定一幅图像,然后到另一幅图像中去查找这幅图像,如果找到了,则匹配成功。这看起来好像很简单,因为我们一眼就能看出一幅图中是否包含另一幅图像,遗憾的是电脑并不具有人眼的强大的视觉的功能,因而需要电脑去判定一幅图片中是否包含另一幅图片是件不容易的事情。对于机器视觉系统而言,实现匹配首先要对图像进行预处理。先计算模板图片的特征值,并存储到计算机中。然后计算待测试样板图片的特征值,与计算机中模板进行比较,运用匹配算法实现匹配。整个过程如图1所示。
  在基于图像处理的应用领域中,对于图像匹配的研究可以说一直都是数字图像处理技术和计算机视觉理解的重要研究内容。图像匹配在机器视觉、工业自动模式识别、医学图像的定位等方面都有着重要意义。
  2 图像匹配的数学描述
  3 算法的改进及图示
  根据以上对模板匹配的介绍,可以对字符图像进行识别。但是求相似性度量函数,求待匹配图像和模板之间的相似性映射关系均比较复杂。上一节知识介绍中,也看到了其过程比较麻烦。本系统中识别的图像均为20×36大小的。即模板图像和待测图像大小相同。即会从图像的左下角一直顺着搜索一直至全图结束。而且映射关系及相似性函数均比较复杂,不是数量级上的关系。此时识别效率就不明显。显得木讷不灵巧。并非像前面介绍的在待测图片中搜索,并返回得到匹配点。因此需要基于此模板匹配算法原理的基础上,对算法进行改进,才能更有效的去完成识别的功能及简化其识别的过程。提高识别速度。即将图片区域化。算法改进的思想:将图片(3×4)分为12块区域,具体区域的划分如图3所示。再加上5条交线。共记有17个特征值。
  模板训练时,将数字模板图片17个特征值的信息记下并存储在数组中。当进行样本训练的时候,用同样的算法计算图片中数字的17个特征值,并到计算机存储区中去匹配,直接利用象素灰度值的差异,找到特征值最接近的一个图片数字,便完成匹配识别的过程,到匹配的结果。这样便简单多。
  4 结语
  本系统通过对图片进行区域化处理基本能完成对数字图像的识别功能。虽然有一定的误识率。将图片区域化后再进行模板匹配可以很轻松的实现数字的识别,这是一次对模板匹配算法的新的尝试。通过对数字图片的研究,可以推广到英文字符的识别,甚至可以识别手写或打印的汉字字符。研究识别率达到100%是我们的理想,通过我们的研究可以不断地将字符识别技术推向前进。
  参考文献
  [1]钟志光,卢君,刘伟荣编著.《Visual C++.NET 数字图象处理实例与解析》[M].北京:清华大学出版社,2003年6月.
  [2]何斌,马天予,王运坚,朱红莲编著.《Visual C++ 数字图象处理》第二版[M].北京:人民邮电出版社,2002.
  [3]夏良正编著.《数字图象处理》[M].南京:东南大学出版社,1999年9月.
  [4]葛亮.Visual C++从入门到实践[M].北京:清华大学出版社,2009.
  [5]康晓林,袁建州.Visual C++6.0实用教程[M].北京:电子工业出版社,2008.
  [6]Scott Meyers.Effective C++[M], Addison-Wesley,1992.

图片识别数字算法

http://m.zhuodaoren.com/shenghuo290922/

推荐访问:android数字识别算法 简易数字识别算法

热点事件推荐文章

推荐内容

上一篇:露易丝·格丽克 下一篇:行PFNA手术的术前术后护理