具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的图像预处理过程,具体包括以下步骤:
S101:采集原始图像。
在本申请实施例中,可以用终端或服务器采集原始图像,以及对采集到的原始图像进行后续的处理过程。
所述的原始图像为数字图像,由多个像素组成。其中,每个像素都包含有自身的灰度值,灰度值反应了像素的亮度,取值范围一般为0~255(0为最暗灰度值,对应于黑色,255为最亮灰度值,对应于白色)。一般的,对于数字图像的进行处理时,可将数字图像转换为灰度值图像,由于在灰度值图像中是用像素的灰度值表示该像素,因此,后续可很方便地基于灰度值对数字图像进行处理。
S102:根据该原始图像的像素位置信息和像素灰度值信息,对该原始图像进行滤波处理,生成滤波图像。
在本申请实施例中,采集到的原始图像可能会受到各种图像噪声的干扰,而对原始图像进行滤波处理则可以去除一部分噪声,提高该原始图像的质量,有利于后续处理。
一般的,可以对原始图像进行高斯滤波。高斯滤波是一种根据原始图像的像素位置信息进行滤波的处理方法,具体的,高斯滤波的步骤是:生成高斯模板,然后采用该高斯模板对原始图像做卷积运算,其运算的结果是针对原始图像的每个像素,用该像素的既定邻域范围内所有像素的灰度值的加权均值代替了该像素原来的灰度值,从而可以使原始图像变得平滑,并滤除一部分图像噪声。其中,所述的高斯模板可根据预设的高斯函数和原始图像的像素位置信息生成,所述的像素位置信息是原始图像中像素与该像素既定邻域范围内其他像素之间的空间距离,所述的既定邻域范围是在该原始图像上,以该像素为中心,与高斯模板的大小和形状相同的区域,高斯模板确定了既定邻域范围内所有像素的灰度值的加权权重。
但是,由于高斯滤波在滤除图像噪声的同时,也可能会模糊原始图像中前景(前景,如原始图像中包含的文字信息等)的边缘,从而影响后续的识别正确率。因此,在本申请实施例中,不仅根据原始图像的像素位置信息,同时还可根据原始图像的像素灰度值信息,对该原始图像进行滤波处理。其中,所述的像素灰度值信息可以是原始图像中的像素与该像素周围的像素之间灰度值的差分。具体的,可根据原始图像的像素灰度值信息,生成类似于高斯模板的灰度值差分模板,并用于滤波处理。灰度值差分模板与高斯模板的不同之处是:高斯模板是根据像素的空间位置确定加权权重,而灰度值差分模板是根据像素的灰度值差分确定加权权重,使用灰度值差分模板对原始图像进行滤波可以保持原始图像中前景的边缘。
因此,在本申请实施例中,可根据该原始图像的像素位置信息和像素灰度值信息对该原始图像进行滤波处理,也即,将高斯模板和灰度值差分模板结合使用,对原始图像进行滤波处理,生成滤波图像。这样的话,不仅对原始图像滤除了一部分图像噪声,而且也保持了原始图像中前景的边缘,有利于后续识别。
S103:根据该滤波图像的局部像素信息和整体像素信息,对该滤波图像进行增强处理,生成增强图像。
生成滤波图像后,还可对该滤波图像进行增强处理(也即,对该滤波图像中的各像素的灰度值进行增强),以增强该滤波图像的清晰度。但是,一般的增强算法只考虑待增强的图像的整体像素信息,从而会对待增强的图像中的各像素都以同样的增强系数进行增强,那么,虽然增强后的图像中包含的文字信息对应的像素比增强前更清晰,但是由于该滤波图像中的背景对应的像素也相应地增强了,反而可能带入很多背景噪声,不利于后续识别。
因此,在本申请实施例中,生成滤波图像后,不仅根据该滤波图像的整体像素信息,同时还可根据该滤波图像的局部像素信息,对原始图像进行增强处理,生成增强图像。其中,所述的整体像素信息可以包括该滤波图像的各像素的灰度值的方差,以及根据现有的一些阈值分割算法,如最大类间方差法OTSU,可确定出的该滤波图像的全局分割阈值,所述的局部像素信息可以包括针对该滤波图像中的每个像素,为该像素选定的区域中所有像素的灰度值的均值和方差。
根据上述说明,在对该滤波图像进行增强处理时,可根据该滤波图像的整体像素信息,对该滤波图像的整体进行均匀的增强处理,并在此基础上,针对根据该滤波图像的局部像素信息对每个像素分别进行修正,从而,可以在增强该滤波图像中包含的文字信息同时,抑制背景噪声的带入。需要说明的是,所述的均匀的增强处理和所述的修正既可以同时进行,也可以依次进行。
S104:根据该增强图像,生成类梯度图。
在本申请实施例中,在生成增强图像后,还可根据该增强图像中各像素的灰度值的类梯度,对该增强图像中包含的文字信息进行甄别,以及该增强图像中的背景,并生成类梯度图用于后续二值化处理,可以提高二值化处理的精确度。需要说明的是,所述的类梯度与数学术语“梯度”的含义类似,数学术语“梯度”可用于表示离散函数在既定方向上,相邻的两个取值点之间的差分,而所述的类梯度则可用于表示离散函数在既定方向上,某个取值点与在该取值点选定的邻域范围内的、满足指定条件的另一个取值点之间的差分。
根据该增强图像,生成类梯度图,具体的,可将该增强图像表示为第一离散函数,则生成的类梯度图则可以表示为该第一离散函数的离散函数(为了方便描述,可称为第二离散函数)。其中,所述的第一离散函数上的各取值点对应为该增强图像中的像素的灰度值,所述的第二离散函数上的各取值点对应为该增强图像中的像素的灰度值的类梯度。
S105:对该类梯度图进行二值化处理,生成二值图像。
在本申请实施例中,基于在步骤S104中生成的类梯度图,可以进一步地对该类梯度图进行二值化处理,提高该类梯度图中背景与文字信息的对比度,并将生成的二值图像用于后续识别,则可以提高识别正确率。
一般的,在对图像进行二值化处理时,可直接使用OTSU算法,确定图像的全局分割阈值,然后将图像中灰度值大于该全局分割阈值的像素的灰度值设置为0(这部分像素为背景),将图像中灰度值不大于该全局分割阈值的像素的灰度值设置为255(这部分像素为前景,如文字信息),但是,在实际应用中,文字信息所对应的某些像素也会被误判为是背景对应的像素。
而在本申请实施例中,在对该类梯度图进行二值化处理时,可根据该类梯度图分别生成一张精确的二值图和一张粗糙的二值图,在对该精确的二值图进行迭代的膨胀运算,向该粗糙的二值图生长逼近,直到膨胀运算后的该精确的二值图满足指定条件为止,并将其作为生成的二值图像,用于后续识别。其中,在所述的精确的二值图上,确定出的前景像素(这部分像素的数量为第一数量),所对应的原始图像中的像素也是前景像素,而在所述的粗糙的二值图上,确定出的前景像素,所对应的原始图像中的像素有可能是前景像素(假定这部分像素的数量为第二数量),也有可能是图像噪声,第二数量大于第一数量。这样的话,可以降低被误判的像素的数量,有利于后续识别。
通过上述方法,由于对原始图像进行了以上的预处理操作,在抑制图像噪声的同时,增强了原始图像中包含的文字信息的清晰度和对比度,因此,后续可对预处理后的二值图像中包含的文字信息进行图像识别,提高了识别正确率。
在本申请实施例中,对于上述步骤S102,根据该原始图像的像素位置信息和像素灰度值信息,对该原始图像进行滤波处理,生成滤波图像,具体包括:根据该原始图像的像素位置信息和像素灰度值信息,生成滤波系数模板,使用该滤波系数模板,对该原始图像进行行滤波,并对行滤波结果进行列滤波,生成第一中间图像,使用该滤波系数模板,对该原始图像进行列滤波,并对列滤波结果进行行滤波,生成第二中间图像,根据第一中间图像和第二中间图像,生成滤波图像。
进一步的,根据上述步骤S102中的说明,在生成滤波系数模板时,可先根据该原始图像的像素位置信息,生成高斯模板,并根据该原始图像的像素灰度值信息,生成灰度值差分模板,其中,生成的高斯模板与灰度值差分模板的大小相同,然后,将该高斯模板中的模板系数与该灰度值差分模板中对应位置的模板系数相乘,将乘积作为生成的滤波系数模板中对应位置的模板系数。则生成的滤波系数模板,兼具了高斯模板和灰度值差分模板的优点,使用该滤波系数模板对原始图像进行滤波,可以在滤除一部分图像噪声的同时,较好地保持原始图像的前景边缘。
更进一步的,在实际应用中,也可以直接使用生成的滤波系数模板对该原始图像进行滤波处理,而不是分别对该原始图像进行行滤波和列滤波。但是,需要说明的是,后者方法更优,在此进行简单说明:生成的滤波系数模板是一个二维矩阵,若直接用该滤波系数模板对原始图像进行滤波处理,则会用该二维矩阵卷积该原始图像,计算量较大,耗时较多。而根据本申请实施例提供的滤波方法,可分别对该原始图像进行行滤波和列滤波,则会用根据该滤波系数模板生成的一维向量卷积该原始图像,可以减少计算量,耗时较少。
具体的,在使用该滤波系数模板对原始图像进行滤波处理时,可先将该滤波系数模板转换为行向量和列向量,其中,该行向量和列向量均为一维向量。然后,使用行向量,对该原始图像进行行滤波(也即,用行向量卷积该原始图像),再使用列向量对行滤波结果进行列滤波(也即,用列向量卷积行滤波结果),生成第一中间图像,使用列向量,对该原始图像进行列滤波,再使用行向量对列滤波结果进行行滤波,生成第二中间图像,最后根据第一中间图像和第二中间图像,生成滤波图像。
在本申请实施例中,根据第一中间图像和第二中间图像,生成滤波图像。具体包括:针对第一中间图像中的每个像素,确定该像素的灰度值与第二中间图像中对应位置的像素的灰度值的均值,将该均值作为生成的滤波图像中对应位置的像素的灰度值,生成的滤波图像也用像素的灰度值进行表示。当然,根据应用场景的不同,也可以用其他方法生成滤波图像,例如,假定期望生成的滤波图像更大程度地保持平滑,则可以针对第一中间图像中的每个像素,先将该像素的灰度值乘以一个大于1的系数,再确定乘以系数后的灰度值与第二中间图像中对应位置的像素的灰度值的均值,将该均值作为生成的滤波图像中对应位置的像素的灰度值,这样的话,在确定均值时,实际上已提高了第一中间图像中像素的灰度值的权重,因此,生成的滤波图像更接近第一中间图像,也即,更加平滑,同时前景边缘损失更多;类似的,假定期望生成的滤波图像更大程度地保持前景边缘,则可以将第二中间图像中像素的灰度值乘以一个大于1的系数,再进行类似的取均值处理,这样的话,在确定均值时,实际上已提高了第二中间图像中像素的灰度值的权重,因此,生成的滤波图像更接近第二中间图像,也即,前景边缘保持得更好,同时平滑程度损失更多。
在本申请实施例中,为了加快滤波处理速度,对上述滤波处理方法还进行了优化。下面进行说明,一般的,在上述步骤S102中,生成的滤波系数模板中包含的模板系数会被表示为浮点数的形式,这样的话,在做卷积运算时,若直接用浮点数进行计算,由于在其小数点之后还带有多位的小数,则计算速度较慢,降低了滤波处理速度。因此,在滤波处理时,可以先将卷积计算中可能使用的浮点数均变换为整型数,再用变换出的整型数进行卷积运算,并将卷积运算结果再还原为浮点数,则可以大大地提高滤波处理速度。因此,根据上述说明,在滤波处理过程中,采用所述行向量进行滤波,具体包括:将行向量中的各元素变换为整型数,采用变换后的行向量进行滤波,将滤波结果还原为浮点数。采用列向量进行滤波,具体包括:将列向量中的各元素变换为整型数,采用变换后的列向量进行滤波,将滤波结果还原为浮点数。另外,也可不在将滤波系数模板转换为行向量和列向量后再转换整型数,而是可直接将生成的滤波系数模板中包含的浮点数转换整型数,再将转换后的滤波系数模板转换为行向量和列向量,并进行行过滤和列过滤,最后再将滤波结果还原为浮点数。
以上是对本申请实施例中,所提供的图像预处理方法中的滤波处理这一步骤的详细说明,为了便于理解,进一步地从数学角度进行补充说明:
在实际应用中,对原始图像进行处理时,会将该原始图像在一个坐标系中表示(在本申请实施例中,均可基于该原始图像以及处理后的原始图像位于该坐标系,对预处理过程进行描述),如图2所示,可将该原始图像在一个以x为横坐标,y为纵坐标的二维坐标系中表示,阴影部分表示该原始图像,阴影部分中划分出来的每个正方形的方块都表示该原始图像中的一个像素,M、N均为正整数,其中,省略了该原始图像中的部分像素,未表示出来。可以看出,该原始图像一共有M×N个像素,为了便于后续处理,可将像素最右下角的点的坐标作为该像素的坐标,则该原始图片左上角的第一个像素的坐标值即为(x=1,y=1),类似的,该原始图片最右下角的像素的坐标值即为(x=M,y=N)。
进一步的,可根据图2中各像素的坐标,将各像素的灰度值用一个二维矩阵表示,用于后续处理中的计算,如下所示:
其中,Axy为坐标值为(x,y)的像素的灰度值,该矩阵Axy即可以用于表示该原始图像。
在对原始图像进行滤波处理时,可以选定高斯函数和生成的滤波系数模板的大小,一般的,常用的大小为3×3,则可以根据原始图像的像素位置信息,将像素位置信息代入选定的高斯函数中,生成3×3的高斯模板,可表示为:
并根据原始图像的像素灰度值信息,将像素灰度值信息代入选定的高斯函数中,生成大小为3×3的灰度值差分模板,可表示为:
其中,高斯模板MODEGauss中的各元素表示进行高斯滤波时使用的模板系数,灰度值差分模板MODEDifference中的各元素表示进行灰度值差分滤波时使用的模板系数。
按照本申请实施例提供的方法,可对这两个模板中相应的元素对应相乘作为生成的滤波系数模板中对应位置的元素,也即,根据MODEGauss和MODEDifference生成的滤波系数模板,可表示为:
进一步的,可以直接使用滤波系数模板MODEFinish对原始图像Axy进行过滤,或者,也可以将滤波系数模板MODEFinish转换为行向量和列向量后,在对原始图像Axy进行过滤。
若直接过滤,则滤波结果可以表示为Axy和MODEFinish的卷积:
其中,运算符“*”为卷积运算符,在上述公式中省略了常数的乘积项。
若转换为行向量和列向量后,再进行滤波。则可以根据现有的一些矩阵分解算法,将二维矩阵转换为两个一维向量的乘积,假定将MODEFinish转换为一个行向量和一个列向量,可表示为:
MODEFinish=MODERow×MODELine
MODERow=[R1R2R3]
其中,MODERow为MODEFinish转换出的行向量,MODELine为MODEFinish转换出的列向量,在上述公式中省略了常数的乘积项;
相应的,滤波结果可以表示为:
其中,
根据上述说明,滤波处理这一步骤的详细过程如图3所示,主要包含以下子步骤:
S301:根据原始图像的像素位置信息,生成高斯模板。
S302:根据原始图像的像素灰度值信息,生成灰度值差分模板。
S303:将高斯模板中的模板系数与灰度值差分模板中对应位置的模板系数相乘,将乘积作为生成的滤波系数模板中对应位置的模板系数。
S304:将滤波系数模板中的浮点数转换为整型数。
S305:将转换后的滤波系数模板转换为行向量和列向量,并对原始图像进行行滤波和列滤波。
S306:将滤波结果中的元素还原为浮点数。
S307:将还原后的滤波结果作为生成的滤波图像。
在本申请实施例中,在生成滤波图像后,可进一步地对该滤波图像进行增强处理。对于上述步骤S103,根据该滤波图像的局部像素信息和整体像素信息,对该滤波图像进行增强处理,生成增强图像,具体包括:生成该滤波图像的积分图,并根据该积分图,确定该滤波图像中各像素的灰度值的方差,然后,根据该方差,确定最大增强系数,再根据该滤波图像的局部像素信息和整体像素信息,以及最大增强系数,确定该滤波图像中像素的实际增强系数,并根据实际增强系数,对该滤波图像进行增强处理,生成增强图像。
下面对增强处理的过程进行详细说明。
在对滤波图像进行增强处理时,为了便于后续识别,可对滤波图像中的前景边缘做程度较深的增强,基于该滤波图像的局部像素信息和整体像素信息可以实现这一目的。其中,所述的整体像素信息可以包括该滤波图像的各像素的灰度值的方差,以及根据现有的一些阈值分割算法,如最大类间方差法OTSU,可确定出的该滤波图像的全局分割阈值,所述的局部像素信息可以包括针对该滤波图像中的每个像素,为该像素选定的区域中所有像素的灰度值的均值和方差。
首先,可生成该滤波图像的积分图,并根据该积分图,确定该滤波图像中各像素的灰度值的方差。其中,该积分图中的元素的取值是从该滤波图像的左上角到该元素所构成的矩形区域内所有的点的灰度值之和。对生成积分图举例简单说明,如图4所示,左侧的阴影部分为大小为2×2的原图像,右侧的阴影部分为该原图像对应的积分图,该原图像用矩阵可表示为:
其中,A中的各元素表示位于该原图像对应坐标位置的像素的灰度值;
则该图像的积分图表示为:
由于在积分图中,对原图像中像素的灰度值进行了求和,作为对应的元素的值,则在计算原图像方差的过程中可以直接使用积分图中元素的值,而不用重新计算,因此,可以提高计算原图像方差的速度。当然,在实际应用中,也可以不根据该滤波图像的积分图,而是直接根据该滤波图像,确定该滤波图像中各像素的灰度值的方差,但是,用这种方法比用本申请实施例所提供的方法确定方差的速度慢。
然后,在确定该滤波图像中各像素的灰度值的方差后,则可根据该方差,确定最大增强系数,并根据该滤波图像的局部像素信息和整体像素信息,以及该最大增强系数,确定该滤波图像中像素的实际增强系数。其中,该最大增强系数用于限制对该滤波图像的增强效果,防止对该滤波图像过度增强,该实际增强系数用于确定每个像素各自的增强效果。
最后,可根据像素的实际增强系数,对该滤波图像中的像素进行增强处理,生成增强图像。
在本申请实施例中,对于上述步骤S103,根据滤波图像中各像素的灰度值的方差,确定最大增强系数,具体包括:
采用公式 确定最大增强系数;
其中,θ为最大增强系数;
χ为确定出的该滤波图像中各像素的灰度值的方差;
a为预设的第一方差阈值,b为预设的第二方差阈值,a、b为大于0的常数;
l、m、n为预设的大于0的常数。
一般的,当χ越小时,说明该滤波图像中前景和背景的像素的灰度值相对比较接近,若对该滤波图像给予较强的增强效果时,该滤波图像中的前景和背景可能更难以区分,因此,此时,可对该滤波图像给予较弱的增强效果时,则最大增强系数θ应当越小(和χ可以是线性正比例关系),而当χ增大到不小于预设的第一方差阈值a之后,θ可能还会受到第一方差阈值a影响,且由于θ不能无限增长,则当χ继续增大到不小于预设的第二方差阈值b时,可以趋向常数取值。针对上式,本申请实施例中,提供了一组常数取值,在实际应用中可以取得较好的增强效果,如下所示:
也即,a=500,b=1000,m=20,n=30。
进一步的,在确定最大增强系数后,可根据该滤波图像的局部像素信息和整体像素信息,以及该最大增强系数,确定该滤波图像中像素的实际增强系数,具体包括:确定所述滤波图像的全局分割阈值T(可使用现有的OTSU算法确定),将该滤波图像中像素用函数f(x,y)表示,其中,f(x,y)为该滤波图像中横坐标值为x、纵坐标值为y的像素的灰度值,然后,按照指定距离R,确定以像素f(x,y)为中心、2R为边长的正方形区域内,所有像素的灰度值的方差和均值,其中,确定出的方差用函数χ(x,y)表示,确定出的均值用函数V(x,y)表示,所述局部像素信息至少包括方差χ(x,y)和均值V(x,y),所述整体像素信息至少包括方差χ和全局分割阈值T;
采用公式 确定像素f(x,y)的实际增强系数;
其中,θ'(x,y)为像素f(x,y)的实际增强系数;
c为补偿系数,c为大于0的常数。
例如,假定该滤波图像为图5中所示的图像,对于像素f(1,1),其灰度值为A11(也将该像素称为像素A11),可以看出,当指定距离R=1时,确定出的以像素A11为中心、2R为边长的正方形区域(图中将该正方形区域称为像素A11的指定邻域)中包含的像素为像素A11、A12、A21、A22。相应的,像素A11所对应的局部像素信息为这四个像素的灰度值的方差和均值。
继续对上式进行分析,对于滤波图像中的每个像素,使用上式都可以为该像素确定出对应的实际增强系数,因此可针对各像素,给予不同的增强效果,有利于后续识别。在此,对上式中各乘积项进行分析,显然,θ'(x,y)的取值为最大增强系数θ与之间较小的值。对于乘积项在χ确定的情况下,χ(x,y)越小,则表示当前像素所在的局部区域内的对比度相对于滤波图像整体的对比度越小,给予该像素的增强效果应该越强,但是,由于滤波图像中可能仍存在一些图像噪声,乘积项会将这些图像噪声也增强,因此,还可以用乘积项对这些图像噪声进行抑制。针对上式,本申请实施例中,提供了一组常数取值,在实际应用中可以取得较好的增强效果,如下所示:
也即,c=10。
更进一步的,在确定该滤波图像中像素的实际增强系数后,可以根据该实际增强系数,对该滤波图像进行增强处理,生成增强图像,具体包括:针对该滤波图像中的像素f(x,y),采用公式f0(x,y)=V(x,y)+θ'(x,y)×(f(x,y)-V(x,y))确定增强后的像素,其中,f0(x,y)用于表示增强后的像素f(x,y),f0(x,y)为增强后的像素f(x,y)的灰度值,再根据增强后的各像素的灰度值,生成增强图像。
以上是对本申请实施例中所提供的图像预处理方法中,增强处理这一步骤的说明,据此可知,增强处理这一步骤的详细过程如图6所示,主要包含以下子步骤:
S601:生成该滤波图像的积分图。
S602:根据该积分图,确定该滤波图像中各像素的灰度值的方差。
S603:根据该方差,确定最大增强系数。
S604:根据该方差、该滤波图像的全局分割阈值、局部区域内各像素的方差和均值,以及最大增强系数,确定该滤波图像中像素的实际增强系数。
S605:根据实际增强系数,对该滤波图像进行增强处理,生成增强图像。
下面继续对上述步骤S104和S105(二值化处理)进行详细说明。
在本申请实施例中,在生成增强图像后,可根据该增强图像,生成类梯度图,用于后续二值化处理。对于上述步骤S104,根据该增强图像,生成类梯度图,具体包括:将该增强图像中的像素用函数f0(x,y)表示,其中,f0(x,y)为该增强图像中横坐标值为x、纵坐标值为y的像素的灰度值,采用公式
为该增强图像生成第三中间图;
其中,D(x)为x坐标轴上的类梯度;
W为预设的有效宽度,W为大于0的常数;
d为预设的坐标轴表征值变量,d的每一个取值可表征一根坐标轴;
D(x)d为按照确定x坐标轴上的类梯度的方法,确定出的在d所表征的坐标轴上的类梯度;
D(x,y)为生成的第三中间图中,横坐标值为x、纵坐标值为y的像素的灰度值,D(x,y)用于表示生成的第三中间图;
采用公式 对所述第三中间图进行修正,将修正后的第三中间图作为生成的类梯度图;
其中,D'(x,y)为生成的类梯度图中,横坐标值为x、纵坐标值为y的像素的灰度值,D'(x,y)用于表示生成的类梯度图;
h为不小于0的常数。
当然,也可以不根据该增强图像,生成类梯度图,而是直接对该增强图像进行二值化处理,后续对生成的二值图进行识别。但是,由于该增强图像中前景和背景的像素仍然不能比较准确地区分出来,进而,在生成的二值图中前景和背景的像素仍然不能比较准确地区分出来。
而在本申请实施例中,可以在生成类梯度图的过程中将该增强图像中前景和背景的像素比较准确地区分出来,并对背景进行抑制,从而,生成的二值图中前景和背景的像素也能够比较准确地区分出来,有利于后续识别。
下面对基于上述公式,对根据该增强图像生成类梯度图的过程进行说明。在该增强图像前景的像素的灰度值相对较小,而该增强图像背景的像素的灰度值相对较大。当前景该增强图像前景为该增强图像中包含的文字信息时,利用上述公式可比较准确的甄别出前景,也即,在该增强图像中确定出文字信息所对应的像素。
具体的,可以根据文字信息,预设有效宽度W,其中,该文字信息中的笔画的最大宽度,W可以为大于该最大宽度的常数。则上式 的具体含义是,对于该增强图像所在的坐标轴中,选定一根坐标轴,如x轴,然后在该坐标轴上,计算该像素的类梯度,对于文字信息像素,将其灰度值带入该项所确定出的灰度值应当是背景像素的灰度值,由于背景像素的灰度值大于文字信息像素的灰度值,因此, 类似的,对于背景像素,将其灰度值带入该项所确定出的灰度值应当也是背景像素的灰度值,因此, 在孤点图像噪声较多时,也有可能
进一步的,由于文字信息的笔画一般有横竖撇捺这几个走向,这些笔画走向分别可以与4根坐标轴(x轴、y轴、与x轴和y轴成45度夹角的两根坐标轴)平行,因此,可在这4根坐标轴上分别针对该增强图像的每个像素,将该像素的灰度值带入 得到4个类梯度,将其中最大的类梯度作为该像素的类梯度,也即,另外,为了方便同时计算4根坐标轴上的类梯度,可以在坐标系中将该增强图像进行平移,使该该增强图像的中点与坐标系的原点重合,如图7所示,阴影部分表示该增强图像,还示出了4根坐标轴。根据上述说明,当D(x,y)>0时,可认为该像素为文字信息像素,否则,可认为该像素为背景像素。进一步的,采用公式 对D(x,y)进行修正,也即,将背景像素的灰度值设置为同一个常数,以抑制背景,有利于后续二值化处理,然后,将修正后的D(x,y)作为生成的类梯度图。在实际应用中,可以将h设置为0,也即,修正后的D(x,y)为
在本申请实施例中,对于上述步骤S105,在生成类梯度图后,可对该类梯度图进行二值化处理,生成二值图像,用于后续识别,具体包括:确定该类梯度图的全局分割阈值,根据全局分割阈值,确定第一子分割阈值和第二子分割阈值,然后,按照第一子分割阈值,对该梯度图进行二值化处理,生成第四中间图像,按照第二子分割阈值,对该梯度图进行二值化处理,生成第五中间图像,再根据第四中间图像和第五中间图像,对第四中间图像进行膨胀运算,并判断膨胀运算后的第四中间图像是否满足指定条件,若是,则将膨胀运算后的第四中间图像作为生成的二值图像,否则,对膨胀运算后的第四中间图像重新进行膨胀运算,直至膨胀运算后的第四中间图像满足指定条件为止。所述的第四中间图像即为在步骤S105中的精确的二值图,所述的第五中间图像即为在步骤S105中的粗糙的二值图。在第四中间图像的膨胀过程中,补充加入了之前未被确定为文字信息的像素、但位于文字信息边缘且极有可能是文字信息的像素,同时又没有将第五中间图像中孤立的背景噪声代入,因此,可以提高后续识别的正确率。
进一步的,根据全局分割阈值,确定第一子分割阈值和第二子分割阈值,具体包括:确定该类梯度图的全局分割阈值T',采用公式T1=c1×T'确定第一子分割阈值,采用T2=c2×T'确定第二子分割阈值,其中,T1为第一子分割阈值,T2为第二子分割阈值,c1、c2为大于0的常数,c1大于c2。对第四中间图像进行膨胀运算,具体包括:采用公式对第四中间图像进行膨胀运算,其中,B0为第四中间图像,S0为第五中间图像,P为预设的膨胀结构元素,B0'为进行膨胀运算后的第四中间图像。判断膨胀运算后的第四中间图像是否满足指定条件,具体包括:判断B0'是否满足B0'=B0或B0'=S0。
在实际应用中,可以根据OTSU算法,确定该类梯度图的全局分割阈值T',由于在该类梯度图中,背景像素的灰度值已全被设置为0,而文字信息像素的灰度值均大于0,但具体取值可能不同,而确定出的该类梯度图的全局分割阈值T'也会大于0,则若直接使用T'进行二值化处理,则有一部分灰度值小于T'的文字信息像素将会被误判为背景像素。而采用本申请实施例提供的二值化处理方法可以尽量减少被误判的文字信息像素的数量,在设置c1=1、c2=0.6时,可以达到较好的二值化处理效果,此时,第一子分割阈值为T1=c1×T'=T',第一子分割阈值为T2=c2×T'=0.6×T',显然,根据T1生成的第四中间图像中的文字信息像素,比根据T2生成的第五中间图像中的文字信息像素的数量少。
因此,可以对第四中间图像,向第五中间图像进行膨胀运算,也即,可以对第四中间图像中的文字信息像素进行膨胀运算。对于上式在实际应用中,可选用常用的膨胀结构元素用于膨胀运算,如设置 由于在对第四中间图像进行膨胀运算时,还与第五中间图像做了取交集的运算,且停止膨胀运算的判定条件为B0'=B0或B0'=S0,因此,在第四中间图像的膨胀运算过程中,并不会带入第五中间图像中孤立的背景噪声,从而,可生成更容易识别的二值图,提高了后续的识别正确率。
以上是对本申请实施例中所提供的图像预处理方法中,生成类梯度图并进行二值化处理的步骤的说明,据此可知,该步骤的详细过程如图8所示,主要包含以下子步骤:
S801:确定该增强图像中各像素的类梯度,以生成待修正的类梯度图。
S802:对该待修正的类梯度图进行修正,作为生成的类梯度图。
S803:确定该类梯度图的全局分割阈值。
S804:根据该全局分割阈值,对该类梯度图进行二值化处理,分别生成一张精确图和一张粗糙图。
S805:根据该精确图和该粗糙图,对精确图迭代地进行膨胀运算,向该粗糙图生长逼近,直到膨胀运算后的精确图满足指定条件为止。
S806:将满足指定条件的、膨胀运算后的精确图作为生成的二值图,用于后续识别。
图9示出了在实际应用中,使用本申请实施例提供的图像预处理方法,对某图片进行预处理的效果图。从上至下分别为:原始图像、滤波处理后生成的滤波图像、增强处理后生成的增强图像、二值化处理后生成的二值图像。可以看到,最终生成的二值图像中包含的文字信息比原始图片中包含的文字信息更清晰、更容易辨认,可以提高后续的识别正确率。
以上为本申请实施例提供的图像预处理方法,基于同样的思路,本申请实施例还提供相应的图像预处理装置,如图10所示。
图10为本申请实施例提供的图像预处理装置结构示意图,具体包括:
采集模块1001,用于采集原始图像;
滤波模块1002,用于根据所述原始图像的像素位置信息和像素灰度值信息,对所述原始图像进行滤波处理,生成滤波图像;
增强模块1003,用于根据所述滤波图像的局部像素信息和整体像素信息,对所述滤波图像进行增强处理,生成增强图像;
二值化模块1004,用于根据所述增强图像,生成类梯度图,并对所述类梯度图进行二值化处理,生成二值图像。
所述滤波模块1002具体用于,根据所述原始图像的像素位置信息和像素灰度值信息,生成滤波系数模板,使用所述滤波系数模板,对所述原始图像进行行滤波,并对行滤波结果进行列滤波,生成第一中间图像,使用所述滤波系数模板,对所述原始图像进行列滤波,并对列滤波结果进行行滤波,生成第二中间图像,根据所述第一中间图像和所述第二中间图像,生成滤波图像。
所述滤波模块1002具体用于,根据所述原始图像的像素位置信息,生成高斯模板,根据所述原始图像的像素灰度值信息,生成灰度值差分模板,其中,所述高斯模板与所述灰度值差分模板的大小相同,将所述高斯模板中的模板系数与所述灰度值差分模板中对应位置的模板系数相乘,将乘积作为生成的滤波系数模板中对应位置的模板系数。
所述装置还包括:
系数转换模块1005,用于在所述滤波模块1002使用所述滤波系数模板,对所述原始图像进行行滤波,并对行滤波结果进行列滤波之前,将所述滤波系数模板转换为行向量和列向量;
所述行滤波,具体包括:
采用所述行向量进行滤波;
所述列滤波,具体包括:
采用所述列向量进行滤波。
所述滤波模块1002具体用于,将所述行向量中的各元素变换为整型数,采用变换后的行向量进行滤波,将滤波结果还原为浮点数,将所述列向量中的各元素变换为整型数,采用变换后的列向量进行滤波,将滤波结果还原为浮点数。
所述滤波模块1002具体用于,针对第一中间图像中的每个像素,确定该像素的灰度值与所述第二中间图像中对应位置的像素的灰度值的均值,将该均值作为生成的滤波图像中对应位置的像素的灰度值。
所述增强模块1003具体用于,生成所述滤波图像的积分图,根据所述积分图,确定所述滤波图像中各像素的灰度值的方差,根据所述方差,确定最大增强系数,根据所述滤波图像的局部像素信息和整体像素信息,以及所述最大增强系数,确定所述滤波图像中像素的实际增强系数,根据所述实际增强系数,对所述滤波图像进行增强处理,生成增强图像。
所述二值化模块1004具体用于,确定所述类梯度图的全局分割阈值,根据所述全局分割阈值,确定第一子分割阈值和第二子分割阈值,按照所述第一子分割阈值,对所述梯度图进行二值化处理,生成第四中间图像,按照所述第二子分割阈值,对所述梯度图进行二值化处理,生成第五中间图像,根据所述第四中间图像和所述第五中间图像,对所述第四中间图像进行膨胀运算,并判断膨胀运算后的第四中间图像是否满足指定条件,若是,则将膨胀运算后的第四中间图像作为生成的二值图像,否则,对膨胀运算后的第四中间图像重新进行膨胀运算,直至膨胀运算后的第四中间图像满足指定条件为止。
具体的上述如图10所示的装置可以位于终端或服务器上。
本申请实施例提供一种图像预处理方法及装置,该方法采集原始图像,根据原始图像的像素位置信息和像素灰度值信息,对原始图像进行滤波处理,生成滤波图像,然后根据所述滤波图像的局部像素信息和整体像素信息,对所述滤波图像进行增强处理,生成增强图像,再根据所述增强图像,生成类梯度图,并对所述类梯度图进行二值化处理,生成二值图像。通过上述方法,由于对原始图像进行了以上的预处理操作,在抑制图像噪声的同时,增强了原始图像中包含的文字信息的清晰度和对比度,因此,后续可对预处理后的二值图像中包含的文字信息进行图像识别,提高了识别正确率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。