字符图片 的示意图,图1D是根据一示例性实施例示出的图片单元的示意图,图1E是根据一示例性实 施例一示出的二值化后的字符图片的示意图;该识别图像中的字符的方法可以应用在终端 设备(例如:智能手机、平板电脑、台式计算机)上,可以通过在终端设备上安装应用的方式 或者在台式计算机上安装软件的方式实现,如图1A所示,该识别图像中的字符的方法包括 以下步骤S101-S104 :
[0064]在步骤S101中,确定图像中所包含的字符的第一个数。
[0065] 在一实施例中,图像中所包含的字符可以为数字,也可以为英文字母,还可以为希 腊字母,本公开对字符的具体类型不做限制。如图1B所示,图像10中所包含的身份证号的 部分数字。
[0066] 在步骤S102中,将图像中所包含的字符分割为第一个数的字符图片。
[0067] 在一实施例中,可以采用图像分割技术将图像中的数字分割为单个的包含一个字 符的字符图片,例如,可以在检测到字符的左右边沿和上下边沿部分,从而沿着左右边沿和 上下边沿将字符图片从图像中分割出来,例如,通过对图像10沿着数字"9"的左右边沿和 上下边沿识别梯度,从而可以将数字"9"从图像10中分割出来,得到图1C所示的字符图片 11。在一实施例中,可以通过将图像进行二值化处理,再识别二值化后的图像中的字符的边 沿部分,从而将二值化后的字符从图像中分割出来,例如,通过将图像10进行二值化处理 后,识别图像10中的数字的边沿部分,依据边沿将数字"9"从二值化后的图像10中分割出 来,形成图1D所示的二值化后的字符图片12。
[0068] 在步骤S103中,将字符图片沿着设定大小的窗口滑动从而将字符图片分割成第 二个数的图片单元。
[0069] 在一实施例中,设定大小的窗口可以根据字符图片的分辨率来定,例如,字符图片 的分辨率为48*48,则设定大小的窗口可以设置为4*4,即窗口的大小应以能够在字符图片 上滑动为准,在一实施例中,窗口滑动的幅度可以确保相邻窗口之间有重叠,例如,第一个 窗口滑动到了字符图片11的1至4行,1至4列,得到了图1E所示的图片单元13,第二个 窗口可以为字符图片11的3至6行,1至4列等,从而在相同行数上滑动的过程中确保顺次 得到的图片单元之间具有重叠的像素点。
[0070] 在步骤S104中,根据第二个数的图片单元内的非零像素点的个数识别图像中的 字符。
[0071] 在一实施例中,可以将第二个数的图片单元内的非零像素点的个数与字符数据库 中的字符模板对应的模板单元的非零像素点的个数进行比较,将两个非零像素点的个数的 差值最小的字符识别为字符图片中的字符,例如,将字符图片中的"9"分割为第二个数的图 片单元,将字符数据库中的与图片单元具有相同分辨率的字符模板也分割为与图片单元相 同分辨率的模板单元,将相同窗口位置的图片单元内的非零像素点的个数与模板单元内的 非零像素点的个数求差值的绝对值,并将第二个数的差值的绝对值求和,将字符图片11与 字符数据库中的字符的差值的绝对值的和值最小的字符模板识别为与字符图片对应的字 符,例如,经过上述计算,确定字符数据库中的字符模板"9"与字符图片11对应的差值的绝 对值的和值最小,则将字符图片11中的字符识别为"9"。
[0072] 本实施例中,由于印刷字符在水平方向与竖直方向均存在很强的边缘,并且在字 符图片的分辨率确定的情况下,设定字符的非零像素点的个数较为固定,因此通过第二个 数的图片单元内的非零像素点的个数识别图像中的字符可以简化字符识别过程中的复杂 度,降低字符识别过程中的计算量,增强了字符识别时的鲁棒性。
[0073] 在一实施例中,方法还可包括:
[0074] 对图像进行边缘增强并二值化,得到二值化后的图像;之后,执行确定图像中所包 含的字符的个数的步骤。
[0075] 在一实施例中,方法还包括:
[0076] 从二值化后的图像的水平方向与竖直方向确定第一个数的字符在图像中的梯 度;
[0077] 通过梯度确定字符在水平方向与竖直方向的边界;之后,执行根据水平边界和竖 直边界将图像中所包含的字符分割为第一个数的字符图片的步骤。
[0078] 在一实施例中,根据第二个数的图片单元内的非零像素点的个数识别图像中的字 符,可包括:
[0079] 依据窗口滑动顺序统计第二个数的图片单元中的每一个图片单元所包含的第一 组非零像素点的个数;
[0080] 依据窗口滑动顺序统计字符数据库中的每一个字符的模板对应的模板单元的分 辨率大小的第二组非零像素点的个数;
[0081] 根据第一组非零像素点的个数和第二组非零像素点的个数识别图像中的字符。
[0082] 在一实施例中,根据第一组非零像素点的个数和第二组非零像素点的个数识别图 像中的字符,可包括:
[0083] 依据窗口滑动顺序统计第一组非零像素点的个数与第二组非零像素点的个数的 差值的绝对值;
[0084] 确定第二个数的绝对值的和值中的最小值对应的字符模板;
[0085] 将最小值对应的字符模板对应的字符识别为字符图片中的字符。
[0086] 具体如何识别图像中的字符的,请参考后续实施例。
[0087] 至此,本公开实施例提供的上述方法,可以简化字符识别过程中的复杂度,降低字 符识别过程中的计算量,增强了字符识别时的鲁棒性。
[0088] 下面以具体实施例来说明本公开实施例提供的技术方案。
[0089] 图2是根据一示例性实施例一示出的识别图像中的字符的方法的流程图;本实施 例利用本公开实施例提供的上述方法,以如何从图像中分割字符图片为例并结合图1B至 图1E进行示例性说明,如图2所示,包括如下步骤:
[0090] 在步骤S201中,对图像进行边缘增强并二值化,得到二值化后的图像。
[0091] 在一实施例中,可以通过相关技术中对图像进行边缘增强并二值化处理的方法对 图像10进行相应的处理,得到二值化后的图像(图中未视)。
[0092] 在步骤S202中,确定二值化后的图像中所包含的字符的个数。
[0093] 在一实施例中,可以根据对图像进行分割的次数来确定图像中所包含的字符的个 数,例如,在对图像进行粗分割的过程中,在确定相邻字符之间的相邻区域时,即可在该相 邻区域进行分割,并统计分割的次数,得到图像中所包含的字符的个数,以图像10为例,在 图像10中,包含数字"0219860",在识别上述数字的过程中,可以先确定相邻数字的相邻区 域,然后在相邻区域对相邻的数字进行分割,在统计分割次数后,可以确定图像10中所包 含的数字的第一个数为7个。
[0094] 在步骤S203中,从二值化后的图像的水平方向与竖直方向确定第一个数的字符 在图像中的梯度。
[0095] 在步骤S204中,通过梯度确定字符在水平方向与竖直方向的边界,根据水平方向 的边界和竖直方向的边界作为字符图片的边界。
[0096] 在步骤S205中,根据水平边界和竖直边界将图像中所包含的字符分割为第一个 数的字符图片。
[0097] 上述步骤S203至步骤S205中,在一实施例中,可以通过sobel或者canny算子来 确定字符在图像中的梯度,例如,通过sobel算子识别到数字"9"的梯度后,进而可以根据 梯度确定数字"9"的水平边界和竖直边界,通过水平边界和竖直边界即可将数字"9"从图 像10中分割出来,得到如图1C所示的字符图片12,图像中给其它数字的分割方法请参考上 述描述,在此不再详述。
[0098] 在步骤S206中,将字符图片沿着设定大小的窗口滑动从而将字符图片分割成第 二个数的图片单元。
[0099] 步骤S206的描述可以参考上述步骤S103的描述,在此不再详述。
[0100] 在步骤S207中,根据第二个数的图片单元内的非零像素点的个数识别图像中的 字符。
[0101] 步骤S207的描述可以参考上述步骤S104的描述,在此不再详述。
[0102] 本实施例在具有上述实施例的有益技术效果的基础上,通过对图像进行图像增强 以及二值化处理,使字符更易于在图像中识别到,进一步提高了字符识别的准确度,进而达 到了很好的识别效果。
[0103] 图3A是根据一示例性实施例二示出的识别图像中的字符的方法的流程图,图3B 是根据一示例性实施例二示出的步骤S304的流程图;本实施例利用本公开实施例提供的 上述方法,以如何通过非零像素点的个数识别图像中的字符为例并结合图1B至图1E进行 示例性说明,如图3A所示,包括如下步骤:
[0104] 在步骤S301中,确定图像中所包含的字符的第一个数。
[0105] 在步骤S302中,将图像中