技术领域
[0001] 本发明涉及一种图像识别方法。
相关背景技术
[0002] 为了顺利进行字符分割,需要将图像进行去噪处理,解决与字符相连或者形同字符的噪点。常用的去噪算法有滤波、数学形态学、小波变换、总体分布等。传统的滤波算法包括均值滤波、中值滤波、最大最小值、挖芯、高斯滤波和非线性扩散滤波法(P‑M滤波法)等。均值滤波和中值滤波在某种程度上可以控制噪声,但不能保证边缘的清晰度,容易导致图像整体模糊。在整个字符图像的预处理研究历程中,去噪与边缘的定位精度一直是一个难以平衡的问题,需要更多的优化创新纠正传统预处理算法。
[0003] 在字符分割方面,通常有手工分割、滴水算法、连通域算法、基于投影算法和其他综合类分割算法。但在对倾斜字符的处理能力仍显不足,当字符存在一定程度的倾斜时,一些算法可能会将其识别为两个独立的字符,导致分割错误。
[0004] 为了解决这些问题,需要进一步研究和改进字符分割算法,提高其对复杂背景、不同字体、倾斜字符的适应性和鲁棒性。同时,也需要结合具体的应用场景和需求,选择合适的算法并进行优化。
具体实施方式
[0033] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0034] 如图1所示,本发明提供一种图像识别方法,包括:
[0035] 步骤1:将原始字符图像数据进行细化处理,以得到细化后的字符图像数据;
[0036] 优选的,步骤1,包括:采用Hilditch的细化算法,将各个原始图像数据中的笔画线条细化,使不同原始图像数据的差别变得小于预设阈值,以便后续提取字符的骨架特征;
[0037] 步骤2:对细化后的字符图像数据的倾斜度进行矫正,得到矫正倾斜后的字符图像数据;
[0038] 在此,为了提高识别的准确率与效率,对图像进行倾斜矫正。其核心思想就是使图像的倾斜角度的接近于0,所以可以将它当成一个最优化的问题,也就是找寻需要调整多少角度,才可使得原图像的倾斜角度最小。本发明并不估算图像的倾斜角度,而是在1度到45度的调整角度范围内进行二分查找,找寻最佳的调整角度,使得矫正倾斜后的字符图像数据的倾斜角度最小,使结果更符合实际样本特征输出,其操作如下:
[0039] 步骤2.1:设置最大调整角度小于等于45度;
[0040] 在此,通常情况下倾斜角度不会高于45度,如果高于45度也没有调整的必要了。
[0041] 步骤2.2:把每张细化后的字符图像数据先分为多个区域,对每张细化后的字符图像数据中的每个区域计算图像的高宽比,以得到该区域当前的倾斜角度;若该区域当前的倾斜角度比该区域上次计算得到的调整角度,则把该区域当前的倾斜角度减半,作为该区域当前计算得到的调整角度;若该区域当前计算得到的调整角度小于等45度,则将该区域将该区域继续跟信息库内的各个字符样本区域进行搜索匹配;若按照当前计算得到的的调整角度调整后的该区域,相对于匹配得到字符样本区域的倾斜角度趋近于0,则退出搜索匹配,且用当前计算得到的的调整角度对该区域所属于的细化后的字符图像数据进行实际调整,得到矫正倾斜后的字符图像数据。
[0042] 例如,当前的倾斜角度为30度,假如当前的倾斜角度30度比该区域上次计算得到的调整角度如45度小,则把当前的倾斜角度减半为15度(二分查找)作为当前的调整角度,判断当前的调整角度是不是小于等45度,若是,然后将该区域继续跟信息库内的各个字符样本区域进行搜索匹配,假如按照当前计算得到的的调整角度调整后的该区域,相对于匹配得到字符样本区域的倾斜角度趋近于0,则退出搜索匹配,且用当前计算得到的的调整角度对该区域所属的细化后的字符图像数据进行实际调整,得到矫正倾斜后的字符图像数据。
[0043] 优选的,在实际的操作过程中,矫正倾斜通常会选择旋转变换操作,但书写时的倾斜一般并非旋转造成的,而有可能是由书写姿势不正确引起,所以旋转不能起到较好的作用。所以用当前计算得到的的调整角度对该区域所属的细化后的字符图像数据进行实际调整中,本申请可通过水平侧向校正来实现,也就是像素点的高度不变,而是基于当前计算得到的调整角度,调整细化后的字符图像数据的水平位置,实现对图像进行适当的调整。
[0044] 步骤3:选择激活函数,对矫正倾斜后的字符图像数据进行卷积操作,以得到卷积结果;
[0045] 优选的,本步骤可以包括:选择sigmoid函数作为激活函数,并采用离散卷积,卷积的步长是l,在水平与竖直方向上每次移动矫正倾斜后的字符图像数据一个像素,以得到卷积结果;
[0046] 步骤4:构建改进的基于卷积神经网络的图像识别算法M‑CNN,基于M‑CNN算法和卷积结果,得到基于MapReduce的分布式运算结果,包括:识别到的目标字符图像、待识别的文字图片文件与识别到的目标字符图像的相似度的概率。
[0047] 在此,基于MapReduce的CNN算法设计,即将改进的基于卷积神经网络的图像识别算法应用到Hadoop平台上,进行基于MapReduce的分布式运算,此处使用的CNN技术是LeNet模型的经典结构,以下称之为M‑CNN
[0048] 可以将改进的基于卷积神经网络的图像识别算法M‑CNN应用于Hadoop平台,进行基于MapReduce的分布式运算。
[0049] 步骤4.1:将卷积结果作为需要被训练的数据,将需要被训练的数据对应于Hadoop平台上的主节点和分节点的数量分成相同数量的各个部分,其中,与Hadoop平台上的主节点的数量只有1个,Hadoop平台上的分节点的数量为2个或2个以上,各个部分分别与主节点和分节点一一对应,即每个部分对应一个主节点或分节点,以平均分布的形式在每个主节点和分节点上存储对应的部分,用分节点上所存储的部分,来完成对改进的基于卷积神经网络的图像识别算法M‑CNN的训练,以得到全局文件;
[0050] 步骤4.1.1:完成对改进的基于卷积神经网络的图像识别算法M‑CNN的训练,包括:通过正向与反向传播,计算出改进的基于卷积神经网络的图像识别算法M‑CNN的权值与偏置的局部变化量,训练完成每个分节点对应的中间键的数值。识别率比较的参考图2。
[0051] 步骤4.1.2:当所有分节点上的中间键的数值训练完成以后,对每个分节点内的所有中间键的数值进行汇总,作为每个分节点对应的本地文件,每个分节点对应的本地文件包括:所得到的权值、偏置的梯度值以及梯度变化率;将所有分节点对应的本地文件写入到全局文件中。训练与测试对比结果参考图3。
[0052] 如图1所示,步骤4.2:将全局文件作为参数输入到MapReduce框架,用户程序直接把待识别的文字图片文件对应的目录路径输入到MapReduce中,作为MapReduce程序的输入;MapReduce程序中的ImageInputFormat对输入进行划分得到key和value;MapReduce程序中的ImageRecordReader对输入进行记录读取,得到key值为ImageSplit对象的路径,value的值为ImageWritable,从而得到值对。
[0053] 步骤4.3:MapReduce框架把值对传递给Map程序进行执行,Map程序基于值对,对待识别的文字图片文件进行处理得到处理后的图像分片,利用Reduce程序将处理后的图像分片进行整合,得到处理后的整个池化图像文件;Reduce程序将池化图像文件传递给ImageOutputFormat进行输出,输出的内容包括:识别到的目标字符图像、待识别的文字图片文件与识别到的目标字符图像的相似度的概率。
[0054] 具体的,在实际图像识别过程中,具有类标记的数据少之又少,为图像数据设计类标记即费时又费力,并且类标识设计需要人工设置,因此很难保证准确率。但为了使卷积神经网络识别算法具有高的泛化能力,实际中需要大量的类标记样本进行CNN训练,这就影响了CNN在实际图像识别中的应用。近几年卷积神经网络识别算法一直被作为高性能的识别算法,是因为它有大量的参数和有类标记的数据来为其训练过程作支撑,这就显现出了CNN识别算法的单一性问题。到目前为止所有的CNN结构都是针对某一问题而设计的不同结构,在针对某一问题时采用何种CNN结构完全出自作者的经验,如何在针对某一问题选取出最佳的网络结构是目前CNN所存在的一个最大的问题。
[0055] 本发明采用多区域选择图像测试方法,通过多区域图像识别方法来确定最优的图像识别区域,并通过整合几个识别区域的结果来确定图像识别的最后结果,从而使图像识别的准确率提高。
[0056] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
[0057] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0058] 显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。