数字字符识别技术及应用
2020-01-16蔡玉婷王外忠杜孟杰杨鑫周铁军
文/蔡玉婷 王外忠 杜孟杰 杨鑫 周铁军
数字字符因为其应用十分普遍,比如邮政编码、车牌号码、电表、水表、电话号码等几乎处处都与数字字符有关,因而通过计算机识别这些数字就是一件相当重要的工作。如何准确识别数学字符吸引了大量研究人员的注意,相关研究成果也有了大量的报道。
数字字符可以分为两大类,一是打印体数字,二是手写体数字。两者的处理方法是有本质的区别的。本文将近年来在这两类数字字符识别研究中提出的方法及应用做一个总结和分析。
1 图像分割方法
图像处理一般都要先进行预处理,然后才能开展图像分析。预处理的好坏直接影响图像分析的效果。预处理一般包括对图像进行平滑、分割、规范化等过程。其中图像分割是一个关键步骤,其目的在于将图像分割成几干个独立的、具有特定属性的区域并从中分离出需要的目标图形。从原理上分类,可以将图像分割大约分为结构分割法、统计分割法和面向模式分割法。常用的图像分割方法中基于区域的分割方法及基于边缘的分割方法都属于结构分割法,结构分割法依赖于对图像结构的分析及获取的结构特征。而常见的基于阈值的分割方法则是属于统计分割法。字符分割中滴水算法可以归纳为结构分割法
1.1 阈值分割方法
阈值分割方法计算简单、效率高,常见的阈值分割法主要有最大类间方差法(即OTSU算法),最大熵的阈值分割法、 最小误差法、共生矩阵法、矩量保持法、概率松弛法等,其中单阈值OTSU算法主要思想是利用给定的一个阈值将图像分成前景与背景两部分,能够使得两部分类间方差最大的阈值就是最优分割阈值。类间方差最大能够保证分割错误概率最小。对于多阈值图像分割,则是利用K-1个阈值将图像分成K个部分,目的就是要求使K个类间方差最大的最佳阈值组合。多阈值OTSU算法是通过多次使用单阈值OTSU方法来进行图像分割,每次分割后计算各部分类内方差,再对类内方差最大的类进行单阈值OTSU分割,直到分割满足结束条件为止[1]。
由于传统的多阈值OTSU分割算法实际上是通过穷举搜素实现的,为了解决计算量大的问题,大量研究聚焦于该算法的优化研究。缩小阈值搜素范围是优化方法之一,殷蔚明等人提出利用双峰法粗步得到的各分割阈值在其周围确定一个较小的灰度级范围,这样可以缩小局部Otsu 阈值的搜索范围[1,2]。
近年来一些新的优化算法不断被引进,比如遗传算法[3]、免疫算法[4]、粒子群算法[5]等。与遗传算法相比,粒子群算法需要的参数少, 可靠性好、不易陷入局部极值[5]。Mirjalili 提出了一种新的随机群优化算法,即正余弦算法(SCA)[6],该算法利用了正余弦函数的震荡特性,通过波动进行全局探索。SCA 收敛速度快,求解精度高,但其局部搜索能力较弱。为了提高局部搜索能力,可以对种群进行混沌初始化来提高初始种群质量;也可以根据粒子适应度值的大小自适应地调整参数;还可以引入反向学习策略并择优选取粒子等措施基于改进正余弦算法,以用于多阈值图像的分割问题[7]。
另外一些仿生算法也被使用来寻找最佳阈值组合,常用的有细菌觅食算法、人工蜂群算法、布谷鸟搜索算法[8],实验结果显示,布谷鸟搜索算法比细菌觅食、人工蜂群两种算法的寻优速度快、寻优质量高。蜂群算法存在的主要问题是算法的收敛速度及容易陷入局部最优解,通过采取最优解引导、局部搜索边界递减和限定食物生成范围等策略可以加快算法的收敛速度,避免蜂群算法的不足[9]。
模糊集理论也被用来寻找最优阈值。模糊C均值聚类算法(FCM)建立一个反映图像像索点与C个类中心之间的相似性的目标函数,通过优化该目标函数获得局部极大从而得到最优分割,FCM的聚类要首先给定聚类的类别数C,聚类结果受初始聚类中心的影响,也受相似性度量方法的影响,目前还没有一种通用的相似性度量准则,也没有一种普遍适用的初始聚类中心确定方法,类别数C的确定也是主观的,带有一定的盲目性。王璐等人提出一种基于Voronoi 距离设计隶属函数以及缩减数据集的FCM 算法[10], 王昭等人文提出直觉FCM算法,该算法的主要改进是引入犹豫度和非隶属度改进隶属度的计算,同时将邻域像素信息包含在目标函数中,使其对图像噪声更为鲁棒[11]。贾娟娟等人利用爬山法获取彩色图像三维颜色直方图的多个峰值,并将峰值个数及各个峰值处的像素点作为FCM聚类类别数C和初始聚类中心[12]。
1.2 手写数字分割方法
手写数字分割时较打印体数字分割困难的地方主要是多个手写数字在书写时可能出现粘连现象,同一个数字也有可能出现笔划断裂现象。对于相邻字符由于书写时可能存在一定的倾斜,不能简单地通过垂直分割方法分离两个数字。考虑到同一个人具有相对稳定的书写习惯,其倾斜角度保持基本一致,所以可以通过先对一个孤立字符确定其倾斜角度后再对其它粘连字符进行分割[13]。对于书写时笔划断裂问题,注意到一串连续书写的字符,其重心在横向上几乎等距分布,而在纵向上高度几乎是一致的,直观地理解,就是这些字符的重心近似形成一条直线,且这些点几乎是等距分离的。根据这样一种书写规律,陈熙霖等人提出基于连通部分重心间距离对笔划断裂字符的分割算法[13]。
可以将多种分割方法结合起来进行图像分割。比如向华等人提出了一种基于字符方向, 将局部分割与全局随机统计最佳准则相结合的字符分割算法[14],该算法在不同的字符方向下,计算度量可分离性的全局随机统计最佳准则函数,取它最大时的字符方向为最佳分割方向。这个方法可以解决字符倾斜方向的确定问题。
字符串常用分割方法滴水算法也可以用来对数字字符进行分割。滴水算法的基本思想是仿照水滴从高处向低处滴落的过程进行字符串的切割, 水滴下落过程是要么向下滴落要么水平滚动, 利用它经过的路线就可以实现对字符的切分。但该算法对粘连数字分割表现不佳,马瑞等人改进了渗漏过程,对字符的笔划粘连部分经过距离变换获取中心线,并结合上面关于字符的倾斜角度来引导水滴在中心线上下端的各自渗漏方向[15]。李兴国等人将字符的宽度统计值和竖直投影直方图中的投影极小值点相结合处作为滴水算法的起始滴落点对粘连字符进行分割[16]。
表1:各种方法在MINIST识别率
表2:各种方法在车牌号码识别方面对比
张洪刚等人利用手写数字串中字符之间的连接特点, 将切分曲线分成5种类型:斜线、弧线、上弧线下斜线、上斜线下弧线及双弧线,对每种切分曲线建立代价函数,选取代价函数值最小的切分曲线实现对字符的分割[17]。
2 数字字符识别技术
一般图像的识别过程是首先将图像点阵由图像空间经过特征抽取映射到特征空间, 然后由对应这些特征的分类器将特征从特征空间映射到最后的结果集合上.
图像特征一般可以从颜色、纹理、形状和空间关系四个方面去提取。所选特征能否全面反映图像本质,直接影响图像识别的结果。简单的特征有周长、面积、质心、灰度直方图,由灰度产生的灰度均值、标准差、平滑度和熵,以及反映两个像素灰度关系的灰度共现矩阵。并不是图像特征越多,识别越准确。所以特征也需要选择或需要组合从而达到降维的目的。统计中的主成份分析方法(PCA)经常被用来进行特征组合。
可以将不同类型的特征进行融合,但融合效果不一定比原特征优,也不一定差,需要进行验证分析。陈浩翔等人考虑了将多种特征样本数据的原始特征、PCA 特征和HOG 特征的不同类型特征的简单拼接,结果发现,PCA 特征和原始特征的融合后分类效果比只用原始特征低,而将PCA 和HOG 特征融合的分类效果优于单类特征[18]。
当图像特征确定后,下一步工作便是选择分类器进行图像识别。分类方法多种多样,一般要结合特征及问题确定用什么样的分类器。两分类问题经常使用的方法有逻辑回归和支持向量机;多分类问题有k近邻分类器、k均值聚类、模糊模式识别、神经网络等。
为了实现对手写邮政编码的识别,刘文等人建立了0-9十个数字的模糊隶属函数,利用最大隶属原则进行数字识别[19]。
闵锋等人将主成分分析和压缩感知结合压缩手写数字字符特征,并用SVM对降维数据进行学习和识别[20]。文献[21]使用多项式作为SVM的核函数,其实验表明在当多项式的阶数为4 时,识别效果最好,正确识别率为98% 以上的次数最多。
顾潘龙对提取的样本特征利用PCA降维,使用K-近邻分类器对手写数字进行匹配识别[22]。
胡钟山等人提出了已知真实值T 时观察值O的概率分布矩阵,及已知观察值O时真实值T 的概率分布矩阵这样两个分类器性能参数,根据这样的性能参数定义了一种有效分类器的概念[23]。对图像分类时有效分类器不止一个,将多个有效分类器组合进行识别可以提高识别准确率,文献[23]将这种组合分类的思想应用于手写数字识别,他们提取了四个特征:Gabar特征、Zernike矩、Legendre矩和Pseudo-Zernike矩,和三个传统的分类器:最近邻分类器、最短距离分类器和Bayesian分类器。
早期利用神经网络分类也离不开特征提取,研究主要集中在对神经网络的训练算法改进方面。顾妍午等人选取LM(Levernberg -Marquardt)算法训练网络[24]。
目前对数字字符的识别也随着机器学习理论的成果发展到利用深度学习神经网络的阶段。深度学习方法可以避免对图像特征的提取,直接将一幅图像作为数据输入神经网络。卷积神经网络CNN具有输入层、多个卷积层、多个池化层及输出层的多层结构,利用该特点可以实现深度学习功能,但它存在过拟合问题。为了解决过拟合问题,经常采用Dropout、DropConnect和Maxout等方法,这些技术通过扩大网络连接的稀疏性或者增加随机性达到消除过拟合、提高神经网络泛化能力的目的[25]。
一般CNN在经过卷积、池化运算后完成特征提取,再采用Softmax进行分类识别。但杜洋等则利用SVM分类器进行分类,它的分类性能明显优于一般的CNN[26]。
曾文献等人将深度卷积神经网络与自动编码器相结合,将卷积层设计成卷积自编码器和反卷积解码器,建立一种深度卷积自编码神经网络[27]。
基于暹罗网络(SN) [28]的深度神经网络模型在识别手写字符识别时,识别率达到98%,但SN 模型没有很好地获取到样本的差异性特征。文献[29]提出的二进制卷积神经网络(B-CNN) 深度学习模型不能很好地学习样本的高级特征。陈玄等人融合SN 和B-CNN 2 种深度网络模型,提出一种融合卷积神经网络模型F-CNN[30]。F-CNN 模型由于共享了SN 模型和B-CNN 模型相应层的参数形式达到对两种网络高级特征的融合。
深度卷积神经网络通过卷积和池化运算自主学习获得图像的特征,它省去了人工确定特征的麻烦,但其产生的特征意义难以解释。将人工特征提取和深度学习思想结合起来有助于对模型的解释。陈浩翔等人考虑了将多种特征样本数据的不同特征融合数据作为深度学习样本,选取栈式稀疏自编码(SAE)作为深度学习模型,进一步提取二次特征,最后将二次特征送入Softmax分类器进行分类[18]。
3 数字字符识别的应用
Matlab、TensorFlow、OpenCV等环境都可以实现对字符图像的识别。王璐[31]、毕波[32]分别利用Matlab和OpenCV提供的强大的图像处理函数实现了车牌号码的识别,而邢萌则基于TensorFlow设计了手写数字模型[33]。
多种数字字符的识别方法被提出,表1中列出了各种方法在MINIST手写字符库上的识别效果。从表1中可以看出k-近邻方法识别率较低,而深度学习网络可以取得很好的识别效果,其中以深度卷积自编码神经网络表现最佳。
表2中列出了几种分类器在车牌号码识别方面的性能。卷积神经网络表现突出,通过一定的改进,卷积神经网络可以达到98.85%的识别率,没有融入深度学习的BP神经网络或支持向量机在识别性能上还有待提高。