卿东升 李建军 邓巧玲
摘要:为了保证印刷体数字识别的准确性和良好的扩展性,提出了一种基于二进制的印刷体数字识别算法,旨在为每一个被识别的印刷体数字分配一组特定的二进制,从而保证其识别的准确性和可扩展性。通过Matlab编程仿真可知,识别的准确率非常高,证明了其识别的可行性。
关键词:数字识别;二进制;特征值;数字分割
中图分类号:TP391.4文献标志码:A文章编号:1008-1739(2018)05-62-3
Printed Digital Recognition Algorithm Based on Binary
QING Dongsheng1, LI Jianjun1,DENG Qiaoling2(1.College of Computer Science and Information Technology, Central South University of Forestry and Technology, Changsha Hunan 410004, China;2. Hunan Applied Technology University, Changde Hunan 415000, China)
0引言
随着互联网的发展和科学技术的不断进步和成熟,大数据、物联网及互联网+等智能科学技术时代已经到来,数字图像识别技术的应用也越来越广泛[1-3]。在此之前,印刷体数字的识别有很多算法,但这些算法各有优缺点[4-6]。本文提出一种基于二进制特征的印刷体数字识别方法,利用数字本身的独特结构,把其独特的结构转化为二进制数字0和1,并用一组二进制数字来表示一个数字,作为该数字的识别编码。该算法容易理解、识别率高、扩展性好及易于后期的维护和升级。
1数字分割技术
1.1提取扫描图像
在印刷体数字识别过程中,扫描到的数字必然会是一连串的数字,因此,在识别单个数字之前,必须先对这一连串数字进行分割,以便把单个数字图像分割出来进行识别。
1.2分割方法
文中的数字分割方法是根据数字图像的特征,寻找数字图像中每个数字的左右边界来分割每个数字的图像,具体步骤如下:
①读取扫描图像并转化成二值图像,获取该二值图像的尺寸。由数字图像的特征可知,数字图像中的每一个数字都有边界,因此只要把数字图像中的每一个数字的左右边界找到,就可以把每一个数字分离出来。
②从左至右扫描二值图像,并且用一个游标p1来记录数字图像中扫描的变化情况,如果该游标遇到数值为0(p1=0),即该处有黑点,表示在该处找到第一个数字的左边界并标记col11;继续向右扫描来寻找数字的右边界,如果在扫描过程中游标p1=1,即该处为白点。此时,以该点作为数字图像的基点,从上到下扫描该数字对应的所有行,用p2记录该列数字图像变化的情况,如果从上到下扫描该列对应的行都没有找到黑点及p2=1,则表示在该处找到第一个数字的右边界并标记col12,记录该数字图像为number1。否则,表示该白点只是数字中间的某个白点,并不是该数字的右边界点。此时继续向右扫描,直到找到某一列对应的行全部为白点及p2=1为止,这样就分割出了数字图像中的第一个数字。
③以前一个数字的右边界为扫描起点,重复步骤②,以此类推,直到把所有的数字图像都分割出来为止,分割示意图如图1所示。
2数字二进制特征值提取
通过分割数字图像技术得到单个数字图像后,提取单个数字图像二进制特征值。根据数字特征识别需要,文中提取的数字特征值的个数为7。
(1)数字的高度与宽度之比。根据数字特征可以发现,在0~9这几个数字中,每一个数字的高度和宽度之比都是不同的,仔细观察可以发现,数字1的宽度最窄,因此,通过數字的高度和宽度之比会得出数字1的比值最大,如图2所示。
此时,印刷体数字1234567890提取到的二进制特征值为0111111111。
(2)选取数字坐标(1/3,1/2)处,向右扫描该组数字,看是否会碰到黑点,如果碰到,则输出1;否则,输出0,如图3所示。
此时,1234567890提取到的二进制特征值为1111001111。
(3)选取数字坐标(1/3,1/2)处,向左扫描该组数字图像,看是否会碰到黑点,如果碰到,则输出1;否则,输出0,如图4所示。
此时,1234567890提取到的二进制特征值为1101010111。
(4)选取数字坐标(1/2,1/2)处,扫描该组数字图像,看其是否为黑点,如果是黑点,则输出1;否则,输出0,如图5所示。
此时,1234567890提取到的二进制特征值为1010000100。
(5)选取数字坐标(2/3,1/2)处,扫描该组数字图像,看其是否为黑点,如果是黑点,则输出0;否则,输出1,如图6所示。
此时,1234567890提取到的二进制特征值为0011110111。
(6)判断该组数字图像左邊界的横坐标和右边界的横坐标是否相等。如果相等,则输出1;否则输出0。选择其作为特征值是因为数字0的特殊性,如图7所示。
此时,1234567890提取到的二进制特征值为0000000001。
(7)扫描该组数字坐标(3/7, 1/5)处,看其是否为黑点。如果是黑点,则输出0;否则,输出1。该组特征值主要是为了区别数字4和9,如图8所示。
此时,1234567890提取到的二进制特征值为1111101100。
4数字识别
4.1数字二进制特征值
根据上文中提取到的数字二进制特征值,就可以对0~9中的每一个数字进行识别,每一个数字特有的一组二进制特征值如表1所示。
4.2识别过程
根据每个数字提取到的二进制特征值,识别步骤如下:①先把所有数字的二进制特征值存入一个数组中;②从数组中取出一组二进制进行比较,如果该二进制数字为0111001,则输出识别数字1;否则,比对二进制数字1110001,如果匹配,则输出识别数字2;否则,比对二进制数字11001101。以此类推,直到所有数字都识别完成为止。
5结束语
通过Matlab编程实验可知,该算法的准确率非常高,基本上每一个数字图像中的数字都可以很清楚地识别出来,因为每一个数字都有特定的二进制数字与其对应。理论上来说,该算法的识别率可以达到100%,且容易理解,可扩展性强。但是该算法的执行效率不高,所耗费的运算量比较大,理想的情况,识别10个数字只需要4位二进制数字足够,文中算法用了7位二进制,造成的原因主要是因为选取的识别点和算法优化度不够,可以通过多做实验,选取最优识别算法,把识别数字的二进制数减少到4位。
参考文献
[1] Rivera A R,Chae O.Spatiotemporal Directional Number Transitional Graph for Dynamic Texture Recognition[J].IEEE Transactions on Pattern Analysis & Machine Intelligence, 2015,37(10):2146-2152.
[2] Aghayan R,Ellis T,Dehmeshki J.Planar Numerical Signature Theory Applied to Object Recognition[J].Journal of Mathematical Imaging and Vision,2014,48(3):583-605.
[3] Dinh D L,Lee S Y,Kim T S.Hand Number Gesture Recognition Using Recognized Hand Parts in Depth Images[J].Multimedia Tools and Applications,2016,75(2):1333-1348.
[4]严国莉,黄山,等.印刷体数字快速识别算法在身份证编号数字识别中的应用[J].计算机工程,2003,29(1):179.
[5]倪桂博,梁晓尊.基于结构形状的印刷体数字识别方法[J].软件导刊,2010,9(5):67-68.
[6]张董,游福成,王惠华,等.受限制Boltzmann机深度置信网络与手写数字识别[J].北京印刷学院学报,2016,24(4):56-58.