具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。相反,本申请的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
下面参考附图描述根据本申请实施例的文字识别方法和装置。
图1是本申请一实施例提出的文字识别方法的流程示意图,该方法包括:
S101:根据预设的特征算子,获取待识别的图像的特征向量,所述特征算子用于根据当前处理的像素点的不同方向上的相邻的局部像素点进行运算。
其中,预设的特征算子包括至少一种。在本申请的一个实施例中,如图2所示,特征算子可以是如下算子中的至少一项:
第一种特征算子(图2中的算子a),所述第一种特征算子用于根据当前处理的像素点的相邻行的局部像素点进行运算;
第二种特征算子(图2中的算子b),所述第二种特征算子用于根据当前处理的像素点的相邻列的局部像素点进行运算;
第三种特征算子(图2中的算子c),所述第三种特征算子用于根据当前处理的像素点的一种相邻对角线的局部像素点进行运算;
第四种特征算子(图2中的算子d),所述第四种特征算子用于根据当前处理的像素点的另一种相邻对角线的局部像素点进行运算。
具体地,可以分别采用每种特征算子,对所述待识别的图像进行运算,得到与所述特征算子数量相同的至少一组的特征向量,对所述至少一组的特征向量进行组合,获取待识别的图像的特征向量。
进一步地,参见图3,分别采用每种特征算子,对所述待识别的图像进行运算,得到与所述特征算子数量相同的至少一组的特征向量,可以通过以下步骤实现:
S301:分别采用每种特征算子,对待识别的图像进行运算,得到第一图像和第二图像。
下面将以算子a为例对至少一组的特征向量的计算方法进行说明。
具体地,参见图4,对于输入的待识别的图像Img,其经过算子a进行局部运算后会得到两张同样大小的图像Img0和Img1。对图中的每个非边缘像素点p0,可以采用如下方式确定所述像素点对应的第一图像和第二图像中的像素点的值:
获取所述每种特征算子描述的方向上与所述像素点相邻的第一组像素点的灰度值和第二组像素点的灰度值;获取所述第一组像素点的灰度值之和与所述第二组像素点的灰度值之和之间的差值。具体地,在利用算子a进行计算时,则为计算p0上下相邻行局部像素点的灰度值之和的差值v:v=(p1+p2+p3)-(p4+p5+p6);其中,局部像素点是指左右和/或上下相邻的像素点。这一步骤与现有的边缘计算算子的方法相近,但在本方案中,为了去除因光照或打印不均匀造成的局部差值波动较大、便于向量归一化,还需要根据预先设置的阈值和比较方向,对所述差值v进行二值化处理,得到第一图像中的像素点的值,以及第二图像中的像素点的值:
其中,p0′是第一图像中的像素点的值,p0″是第二图像中的像素点的值,v是差值,δ是预先设置的阈值。
经过二值化处理后,p0’和p0”的输出值变得比较稳定,受光照打印质量的影响很小。δ的取值,在具体实施例中可以取3*10,即默认像素间最小有10个灰度级的差别。
上式中第一图像与第二图像中的差值v的比较方向不同,是由于图像中的字,局部存在从黑到白、从白到黑的跳变,通过这两种不同的比较可以判断跳变的方式,或者是平坦的区域,从而达到对局部像素纹理较准确的表示。
S302:根据所述第一图像得到第一组一维向量,根据所述第二图像得到第二组一维向量。
通常在文字识别中,图像大小为64*64或40*40,如果利用算子a计算后直接将图像Img0、Img1中的像素点的值排成一维向量,则特征向量的维数将很大(2*64*64或2*40*40)。
为解决这一问题,本实施例可采取下采样方式来降低特征向量的维数。
具体地,参见图5,可以对所述第一图像进行下采样,得到下采样后的第一图像SubImg0,以及,对所述第二图像进行下采样,得到下采样后的第二图像SubImg1。然后将下采样后的第一图像转换为第一组一维向量[fea0],将下采样后的第二图像转换为第二组一维向量[fea1]。
在下采样后,点p0’、p0”的值分别为图像SubImg0、SubImg1中对应点的局部高斯加权和。其中,高斯加权的方式可以减少因下采样导致的信息损失,同时可以较好地处理文字的局部变形和平移变换。
S303:将所述第一组一维向量和所述第二组一维向量组合后,得到与所述特征算子对应的一组特征向量。
最终,算子a对应的特征向量为第一组一维向量[fea0]与第二组一维向量[fea1]排成一维向量后的结果[fea0,fea1]。在本实施例中,SubImg0和SubImg1大小为7*7,因此算子a得到的特征向量长度为2*7*7。
类似的,可以通过图3所述的方法计算其他三种算子对应的特征向量。
需要理解的是,由于上述的四种算子的设计思想在于描述文字的四种方向,因此在采用不同的算子进行运算时,局部计算方式可能存在一定程度的区别。
最后,对所述至少一组的特征向量进行组合,获取待识别的图像的特征向量。例如,若使用四种算子,则图像的特征向量由上述四种算子对应的四组特征向量的组合构成;或者使用a、b两种算子,则图像的特征向量由算子a和算子b对应的两组特征向量的组合构成,具体的组合方式可以有多种,在此不再一一列举。
S102:将待识别的图像的特征向量与预先获取的文字样本的特征向量进行比对,获取待识别的图像的文字识别结果,其中,所述文字样本的特征向量是根据所述特征算子对所述文字样本进行运算后得到的。
具体地,可以预先收集每个文字的大量样本,根据所述特征算子通过与图3所示的方法得到每个样本的特征向量,再利用聚类的方法从大量样本中找出预设个数的具有代表性的聚类中心,从而每个文字都可以由预设个数的文字样本的特征向量来表示。当需要识别图像中的文字时,可将待识别的图像的特征向量与预先获取的文字样本的特征向量进行比对,计算所述待识别的图像的特征向量与每个所述文字样本的特征向量之间的相似度数值,将相似度数值最大的文字样本确定为所述待识别的图像的文字识别结果。
本实施例通过根据预设的特征算子,获取待识别的图像的特征向量并与预先获取的文字样本的特征向量进行比对,获取待识别的图像的文字识别结果,由于特征向量是根据预设的特征算子对当前处理的像素点的不同方向上的相邻的局部像素点进行运算得到的,对文字的特征表述更加准确,提高了识别准确率,且计算简单,提高了识别速度。
图6是根据本申请另一实施例提出的文字识别方法的流程示意图,该方法包括:
S601:收集每个文字的大于预设数量的样本,并根据特征算子得到每个样本的特征向量。
具体地,每个文字都存在多种样本,例如同一个字在不同的字体、不同的语种中或不同的角度下都可能对应不同的形状,因此,可以收集每个文字的大量样本,并根据特征算子通过图3中的方法计算每个样本对应的特征向量。
S602:对每个样本的特征向量进行聚类处理,得到预设个数的聚类中心。
具体地,可以对每个样本的特征向量进行聚类处理,从大量样本中找出预设个数的具有代表性的聚类中心。
其中,聚类方法可以有多种,例如kmeans聚类方法等,在此不再一一列举。预设个数可以根据每个文字对应的样本的具体情况进行设定。
S603:将预设个数的聚类中心对应的特征向量作为所述文字的文字样本的特征向量。
从而每个文字都可以由预设个数的文字样本的特征向量来表示。
S604:根据预设的特征算子,获取待识别的图像的特征向量。
具体与步骤S101相同,在此不再赘述。
S605:计算所述待识别的图像的特征向量与每个所述文字样本的特征向量之间的相似度数值。
具体的,可通过数学方法,依次计算所述待识别的图像的特征向量与每个所述文字样本的特征向量之间的相似度数值,也可以在已知的文字样本的特征向量中查找与所述待识别的图像的特征向量相同的特征向量。
S606:将相似度数值最大的文字样本确定为所述待识别的图像的文字识别结果。
本实施例通过根据预设的特征算子,获取待识别的图像的特征向量并与预先获取的文字样本的特征向量进行比对,获取待识别的图像的文字识别结果,由于特征向量是根据预设的特征算子对当前处理的像素点的不同方向上的相邻的局部像素点进行运算得到的,对文字的特征表述更加准确,且提高了识别的准确率,且计算简单,提高了识别速度。另外,预先获取的每个文字都对应预设个数的文字样本的特征向量,可识别不同形态的文字,提高了识别率。
为了实现上述实施例,本申请还提出一种文字识别装置。
图7是本申请另一实施例的文字识别装置的结构示意图。如图7所示,该文字识别装置包括:获取模块100和识别模块200。
具体地,获取模块100用于根据预设的特征算子,获取待识别的图像的特征向量,所述特征算子用于根据当前处理的像素点的不同方向上的相邻的局部像素点进行运算。其中,预设的特征算子包括至少一种。在本申请的一个实施例中,如图2所示,特征算子可以是如下算子中的至少一项:
第一种特征算子(图2中的算子a),所述第一种特征算子用于根据当前处理的像素点的相邻行的局部像素点进行运算;
第二种特征算子(图2中的算子b),所述第二种特征算子用于根据当前处理的像素点的相邻列的局部像素点进行运算;
第三种特征算子(图2中的算子c),所述第三种特征算子用于根据当前处理的像素点的一种相邻对角线的局部像素点进行运算;
第四种特征算子(图2中的算子d),所述第四种特征算子用于根据当前处理的像素点的另一种相邻对角线的局部像素点进行运算。
更具体地,获取模块100可以分别采用每种特征算子,对所述待识别的图像进行运算,得到与所述特征算子数量相同的至少一组的特征向量,对所述至少一组的特征向量进行组合,获取待识别的图像的特征向量。
识别模块200用于将所述待识别的图像的特征向量与预先获取的文字样本的特征向量进行比对,获取所述待识别的图像的文字识别结果,其中,所述文字样本的特征向量是根据所述特征算子对所述文字样本进行运算后得到的。更具体地,识别模块200可以预先收集每个文字的大量样本,根据所述特征算子得到每个样本的特征向量,再利用聚类的方法从大量样本中找出预设个数的具有代表性的聚类中心,从而每个文字都可以由预设个数的文字样本的特征向量来表示。当需要识别图像中的文字时,可将待识别的图像的特征向量与预先获取的文字样本的特征向量进行比对,计算所述待识别的图像的特征向量与每个所述文字样本的特征向量之间的相似度数值,将相似度数值最大的文字样本确定为所述待识别的图像的文字识别结果。
本实施例通过根据预设的特征算子,获取待识别的图像的特征向量并与预先获取的文字样本的特征向量进行比对,获取待识别的图像的文字识别结果,由于特征向量是根据预设的特征算子对当前处理的像素点的不同方向上的相邻的局部像素点进行运算得到的,对文字的特征表述更加准确,提高了识别准确率,且计算简单,提高了识别速度。
图8是本申请另一实施例的文字识别装置的结构示意图。如图8所示,该文字识别装置包括:获取模块100、运算子模块110、运算单元111、生成单元112、组合单元113、组合子模块120、识别模块200、计算子模块210、确定子模块220、收集模块300、聚类模块400和关联模块500。其中,获取模块100包括运算子模块110和组合子模块120;运算子模块110包括运算单元111、生成单元112和组合单元113;识别模块200包括计算子模块210和确定子模块220。
运算子模块110用于分别采用每种特征算子,对所述待识别的图像进行运算,得到与所述特征算子数量相同的至少一组的特征向量。
其中,运算单元111用于分别采用每种特征算子,对所述待识别的图像进行运算,得到第一图像和第二图像。
具体地,以算子a为例,参见图4,对于输入的待识别的图像Img,其经过算子a进行局部运算后会得到两张同样大小的图像Img0和Img1。对图中的每个非边缘像素点p0,运算单元111可以采用如下方式确定所述像素点对应的第一图像和第二图像中的像素点的值:
获取所述每种特征算子描述的方向上与所述像素点相邻的第一组像素点的灰度值和第二组像素点的灰度值,并获取所述第一组像素点的灰度值之和与所述第二组像素点的灰度值之和之间的差值。更具体地,在利用算子a进行计算时,则为计算p0上下相邻行局部像素点的灰度值之和的差值v:v=(p1+p2+p3)-(p4+p5+p6);其中,局部像素点是指左右和/或上下相邻的像素点。这与现有的边缘计算算子的方法相近,但在本方案中,为了去除因光照或打印不均匀造成的局部差值波动较大、便于向量归一化,还需要根据预先设置的阈值和比较方向,对所述差值v进行二值化处理,得到第一图像中的像素点的值,以及第二图像中的像素点的值:
其中,p0′是第一图像中的像素点的值,p0″是第二图像中的像素点的值,v是差值,δ是预先设置的阈值。
经过二值化处理后,p0’和p0”的输出值变得比较稳定,受光照打印质量的影响很小。δ的取值,在具体实施例中可以取3*10,即默认像素间最小有10个灰度级的差别。
上式中第一图像与第二图像中的差值v的比较方向不同,是由于图像中的字,局部存在从黑到白、从白到黑的跳变,通过这两种不同的比较可以判断跳变的方式,或者是平坦的区域,从而达到对局部像素纹理较准确的表示。
生成单元112用于根据所述第一图像得到第一组一维向量,根据所述第二图像得到第二组一维向量。通常在文字识别中,图像大小为64*64或40*40,如果利用算子a计算后直接将图像Img0、Img1中的像素点的值排成一维向量,则特征向量的维数将很大(2*64*64或2*40*40)。
为解决这一问题,参见图5,生成单元112还可以用于对所述第一图像进行下采样,得到下采样后的第一图像SubImg0,以及,对所述第二图像进行下采样,得到下采样后的第二图像SubImg1;以及将下采样后的第一图像转换为第一组一维向量[fea0],将下采样后的第二图像转换为第二组一维向量[fea1],从而降低特征向量的维数。
在下采样后,点p0’、p0”的值分别为图像SubImg0、SubImg1中对应点的局部高斯加权和。其中,高斯加权的方式可以减少因下采样导致的信息损失,同时可以较好地处理文字的局部变形和平移变换。
组合单元113用于将所述第一组一维向量和所述第二组一维向量组合后,得到与所述特征算子对应的一组特征向量。最终算子a对应的特征向量为第一组一维向量[fea0]与第二组一维向量[fea1]排成一维向量后的结果[fea0,fea1]。在本实施例中,SubImg0和SubImg1大小为7*7,因此算子a得到的特征向量长度为2*7*7。
类似的,可以通过图3中的方法计算其他三种算子对应的特征向量。
需要理解的是,由于上述的四种算子的设计思想在于描述文字的四种方向,因此在采用不同的算子进行运算时,局部计算方式可能存在一定程度的区别。
然户,组合子模块120对所述至少一组的特征向量进行组合,获取待识别的图像的特征向量。例如,若使用四种算子,则图像的特征向量由上述四种算子对应的四组特征向量的组合构成;或者使用a、b两种算子,则图像的特征向量由算子a和算子b对应的两组特征向量的组合构成,具体的组合方式可以有多种,在此不再一一列举。
在本申请的一个实施例中,进行识别之前,需要预先获取大量文字样本的特征向量。
收集模块300用于收集每个文字的大于预设数量的样本,并根据所述特征算子得到每个样本的特征向量。具体地,每个文字都存在多种样本,例如同一个字在不同的字体、不同的语种中或不同的角度下都可能对应不同的形状,因此,收集模块300可以收集每个文字的大量样本,并根据特征算子通过图3中的方法计算每个样本对应的特征向量。
聚类模块400用于对所述每个样本的特征向量进行聚类处理,得到预设个数的聚类中心。具体地,聚类模块400可以对每个样本的特征向量进行聚类处理,从大量样本中找出预设个数的具有代表性的聚类中心。其中,聚类方法可以有多种,例如kmeans聚类方法等,在此不再一一列举。预设个数可以根据每个文字对应的样本的具体情况进行设定。
关联模块500用于将所述预设个数的聚类中心对应的特征向量作为所述文字的文字样本的特征向量。从而每个文字都可以由预设个数的文字样本的特征向量来表示。
之后,在需要进行文字识别时,计算子模块210用于计算所述待识别的图像的特征向量与每个所述文字样本的特征向量之间的相似度数值。具体的,计算子模块210可通过数学方法,依次计算所述待识别的图像的特征向量与每个所述文字样本的特征向量之间的相似度数值,也可以在已知的文字样本的特征向量中查找与所述待识别的图像的特征向量相同的特征向量。然后确定子模块220将相似度数值最大的文字样本确定为所述待识别的图像的文字识别结果。
本实施例通过根据预设的特征算子,获取待识别的图像的特征向量并与预先获取的文字样本的特征向量进行比对,获取待识别的图像的文字识别结果,由于特征向量是根据预设的特征算子对当前处理的像素点的不同方向上的相邻的局部像素点进行运算得到的,对文字的特征表述更加准确,且提高了识别的准确率,且计算简单,提高了识别速度。另外,预先获取的每个文字都对应预设个数的文字样本的特征向量,可识别不同形态的文字,提高了识别率。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。