一种图像识别方法及终端转让专利

申请号 : CN201610604477.X

文献号 : CN107665324B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 姜媚刘海龙熊鹏飞

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本发明实施例公开了一种图像识别方法及终端,用于解决现有图像识别中存在局限性的问题,不仅可以识别出任意形状的一维码,还可以识别一维码以外的其他编码图像,从而有效提高识别图像的广泛性以及可靠性,无需对图像进行形态学操作和连通域分析,有效提高识别图像的速率。本发明实施例方法包括:获取目标图像的第一图像特征;根据所述第一图像特征确定所述目标图像的目标区域;通过过滤所述目标区域对应的图像确定所述目标图像的目标子区域;获取所述目标子区域对应的图像的第二图像特征;根据所述第二图像特征识别出所述目标子区域对应的图像的编码类型,其中,所述编码类型包括一维码,二维码或者无码中的至少一种类型。

权利要求 :

1.一种图像识别方法,其特征在于,包括:

获取目标图像的第一图像特征,所述目标图像中包含一维码、二维码以及无码中的至少一个,所述第一图像特征是灰度值;

根据所述第一图像特征确定所述目标图像的目标区域,所述目标区域是粗略的编码区域;

通过过滤所述目标区域对应的图像确定所述目标图像的目标子区域,所述目标子区域是精确的编码区域;

获取所述目标子区域对应的图像的第二图像特征,所述第二图像特征包括:蕨Fern特征,Haar特征或树Tree特征;

根据所述第二图像特征识别出所述目标子区域对应的图像的编码类型,其中,所述编码类型包括一维码,二维码或者无码中的至少一种类型。

2.根据权利要求1所述的方法,其特征在于,所述根据所述第一图像特征确定所述目标图像的目标区域包括:确定所述目标图像中的每个像素点对应的第一绝对差值,其中,所述第一绝对差值为像素点在水平方向的灰度值和竖直方向上的灰度值的梯度绝对差值;

分别比较所述每个像素点对应的第一绝对差值与第一预设阈值的大小;

将第一绝对差值大于第一预设阈值所对应的全部像素点所对应的区域确定为所述目标区域。

3.根据权利要求1所述的方法,其特征在于,所述根据所述第一图像特征确定所述目标图像的目标区域包括:确定所述目标图像中的任意两个像素点所对应的第二绝对差值,其中,所述第二绝对差值为所述任意两个像素点的灰度值的绝对差值;

比较所述第二绝对差值与第二预设阈值的大小;

将所述第二绝对差值小于第二预设阈值所对应的全部像素点所对应的区域确定为所述目标区域。

4.根据权利要求1至3任一项所述的方法,其特征在于,所述通过过滤所述目标区域对应的图像确定所述目标图像的目标子区域包括:将所述目标区域划分为多个子区域;

确定每个子区域对应的图像上的每个像素点与所述每个像素点的相邻像素点之间的第一灰度值大小关系;

根据所述第一灰度值大小关系确定所述每个子区域对应的图像上的每个像素点的相邻像素点的局部二值模式LBP编码;

获取所述每个子区域对应的图像上的全部像素点的LBP编码跳变次数的总和;

将所述LBP编码跳变次数的总和大于第三预设阈值的子区域确定为所述目标子区域。

5.根据权利要求1至3任一项所述的方法,其特征在于,所述通过过滤所述目标区域对应的图像确定所述目标图像的目标子区域包括:将所述目标区域划分为多个子区域;

确定每个子区域对应的图像上的每个像素点对应的第一绝对和值,其中,所述第一绝对和值为像素点在水平方向的灰度值和竖直方向上的灰度值的绝对和值;

获取所述每个子区域对应的图像上的全部像素点对应的第一绝对和值的总和;

将所述第一绝对和值的总和大于第四预设阈值的子区域确定为所述目标子区域。

6.根据权利要求1所述的方法,其特征在于,当所述第二图像特征为蕨Fern特征时,所述获取所述目标子区域对应的图像的第二图像特征包括:获取所述目标子区域对应的图像上的任意两个像素点之间的第二灰度值大小关系;

根据所述第二灰度值大小关系确定所述目标子区域对应的图像的Fern特征,其中,所述Fern特征用二进制比特位表示;

所述根据所述第二图像特征识别出所述目标子区域对应的图像的编码类型包括:将所述Fern特征转换成十进制数;

将所述十进制数输入至目标函数;

根据所述目标函数的输出结果识别出所述目标子区域对应的图像的编码类型。

7.根据权利要求1所述的方法,其特征在于,当所述第二图像特征为树Tree特征时,所述获取所述目标子区域对应的图像的第二图像特征包括:获取所述目标子区域对应的图像上的各个树节点对应的两个像素点之间的第三灰度值大小关系;

根据所述第三灰度值大小关系确定所述目标子区域对应的图像的Tree特征,其中,所述Tree特征用二进制比特位表示;

所述根据所述第二图像特征识别出所述目标子区域对应的图像的编码类型包括:将所述Tree特征转换成十进制数;

将所述十进制数输入至目标函数;

根据所述目标函数的输出结果识别出所述目标子区域对应的图像的编码类型。

8.一种图像识别终端,其特征在于,包括:

第一获取模块,用于获取目标图像的第一图像特征,所述目标图像中包含一维码、二维码以及无码中的至少一个,所述第一图像特征是灰度值;

第一确定模块,用于根据所述第一图像特征确定所述目标图像的目标区域,所述目标区域是粗略的编码区域;

第二确定模块,用于通过过滤所述目标区域对应的图像确定所述目标图像的目标子区域,所述目标子区域是精确的编码区域;

第二获取模块,用于获取所述目标子区域对应的图像的第二图像特征,所述第二图像特征包括:蕨Fern特征,Haar特征或树Tree特征;

识别模块,用于根据所述第二图像特征识别出所述目标子区域对应的图像的编码类型,其中,所述编码类型包括一维码,二维码或者无码中的至少一种类型。

9.根据权利要求8所述的终端,其特征在于,所述第一确定模块具体用于确定所述目标图像中的每个像素点对应的第一绝对差值,其中,所述第一绝对差值为像素点在水平方向的灰度值和竖直方向上的灰度值的梯度绝对差值;分别比较所述每个像素点对应的第一绝对差值与第一预设阈值的大小;将第一绝对差值大于第一预设阈值所对应的全部像素点所对应的区域确定为所述目标区域。

10.根据权利要求8所述的终端,其特征在于,所述第一确定模块具体用于确定所述目标图像中的任意两个像素点所对应的第二绝对差值,其中,所述第二绝对差值为所述任意两个像素点的灰度值的绝对差值;比较所述第二绝对差值与第二预设阈值的大小;将所述第二绝对差值小于第二预设阈值所对应的全部像素点所对应的区域确定为所述目标区域。

11.根据权利要求8至10任一项所述的终端,其特征在于,所述第二确定模块具体用于将所述目标区域划分为多个子区域;确定每个子区域对应的图像上的每个像素点与所述每个像素点的相邻像素点之间的第一灰度值大小关系;根据所述第一灰度值大小关系确定所述每个子区域对应的图像上的每个像素点的相邻像素点的局部二值模式LBP编码;获取所述每个子区域对应的图像上的全部像素点的LBP编码跳变次数的总和;将所述LBP编码跳变次数的总和大于第三预设阈值的子区域确定为所述目标子区域。

12.根据权利要求8至10任一项所述的终端,其特征在于,所述第二确定模块具体用于将所述目标区域划分为多个子区域;确定每个子区域对应的图像上的每个像素点对应的第一绝对和值,其中,所述第一绝对和值为像素点在水平方向的灰度值和竖直方向上的灰度值的绝对和值;获取所述每个子区域对应的图像上的全部像素点对应的第一绝对和值的总和;将所述第一绝对和值的总和大于第四预设阈值的子区域确定为所述目标子区域。

13.根据权利要求8所述的终端,其特征在于,当所述第二图像特征为蕨Fern特征时,所述第二获取模块具体用于获取所述目标子区域对应的图像上的任意两个像素点之间的第二灰度值大小关系;根据所述第二灰度值大小关系确定所述目标子区域对应的图像的Fern特征,其中,所述Fern特征用二进制比特位表示;

所述识别模块具体用于将所述Fern特征转换成十进制数;将所述十进制数输入至目标函数;根据所述目标函数的输出结果识别出所述目标子区域对应的图像的编码类型。

14.根据权利要求8所述的终端,其特征在于,当所述第二图像特征为树Tree特征时,所述第二获取模块具体用于获取所述目标子区域对应的图像上的各个树节点对应的两个像素点之间的第三灰度值大小关系;根据所述第三灰度值大小关系确定所述目标子区域对应的图像的Tree特征,其中,所述Tree特征用二进制比特位表示;

所述识别模块具体用于将所述Tree特征转换成十进制数;将所述十进制数输入至目标函数;根据所述目标函数的输出结果识别出所述目标子区域对应的图像的编码类型。

15.一种计算机可读取存储介质,其特征在于,包括若干指令用以执行如权利要求1-7任一项所述的方法。

说明书 :

一种图像识别方法及终端

技术领域

[0001] 本发明涉及图像识别领域,具体涉及一种图像识别方法及终端。

背景技术

[0002] 传统的扫码引擎,对于输入图像流中的每一帧图像都需要进行扫码,而当输入图像流中包含大量无码图像时,则耗费了扫描引擎的资源,从而降低了识别有码(例如:一维码,二维码等)图像的速率。
[0003] 目前,通过简单的图像梯度信息粗略地识别一维码图像,其具体流程包括:先获取原始图像,假设原始图像是一维码图像,由于一维码图像基本呈现竖状条纹排列,其x方向和y方向的灰度值的绝对差值较大,因此,计算原始图像在x方向和y方向上的灰度值的绝对差值,后对灰度值的绝对差值采用固定阈值二值化,从而过滤掉平滑区域,再进行均值滤波、形态学操作识别出原始图像的一维码区域。
[0004] 但是,基于图像梯度信息只能识别竖状一维码,对稍微有些旋转的一维码则无法识别,对一维码以外的其他编码也无法识别,因此存在图像识别的局限性。另外,采用了形态学操作和连通域分析,都是针对像素点逐个进行运算,计算量大,无法实现快速识别图像的目的。

发明内容

[0005] 本发明实施例提供了一种图像识别方法及终端,用于解决现有图像识别中存在局限性的问题,不仅可以识别出任意形状的一维码,还可以识别一维码以外的其他编码图像,从而有效提高识别图像的广泛性以及可靠性,无需对图像进行形态学操作和连通域分析,有效提高识别图像的速率。
[0006] 本发明第一方面提供一种图像识别方法,包括:
[0007] 获取目标图像的第一图像特征;
[0008] 根据所述第一图像特征确定所述目标图像的目标区域;
[0009] 通过过滤所述目标区域对应的图像确定所述目标图像的目标子区域;
[0010] 获取所述目标子区域对应的图像的第二图像特征;
[0011] 根据所述第二图像特征确定所述目标子区域对应的图像的编码类型,其中,所述编码类型包括一维码,二维码或者无码中的至少一种类型。
[0012] 本发明第二方面提供一种终端,包括:
[0013] 第一获取模块,用于获取目标图像的第一图像特征;
[0014] 第一确定模块,用于根据所述第一图像特征确定所述目标图像的目标区域;
[0015] 第二确定模块,用于通过过滤所述目标区域对应的图像确定所述目标图像的目标子区域;
[0016] 第二获取模块,用于获取所述目标子区域对应的图像的第二图像特征;
[0017] 识别模块,用于根据所述第二图像特征识别出所述目标子区域对应的图像的编码类型,其中,所述编码类型包括一维码,二维码或者无码中的至少一种类型。
[0018] 从以上技术方案可以看出,本发明实施例具有以下优点:
[0019] 当获取目标图像的第一图像特征后,根据该第一图像特征确定该目标图像的目标区域,例如:根据该第一图像特征确定大致的编码区域,并通过过滤该目标区域对应的图像确定该目标图像的目标子区域,根据获取的该目标子区域对应的图像的第二图像特征确定该目标子区域对应的图像的编码类型,例如:在大致的编码区域内确定精确的编码区域,然后在精确的编码区域上确定出图像的编码类型,例如:一维码,二维码,无码等。可见,编码类型不限于是一维码,还可以是一维码以外的其他编码图像,从而有效提高识别图像的广泛性以及可靠性,无需对图像进行形态学操作和连通域分析,有效提高识别图像的速率。

附图说明

[0020] 图1为本发明实施例中终端的一个结构示意图;
[0021] 图2为本发明实施例中图像识别方法的一个实施例示意图;
[0022] 图3为本发明实施例中确定目标区域的一个流程示意图;
[0023] 图4为本发明实施例中确定目标区域的另一个流程示意图;
[0024] 图5为本发明实施例中确定目标子区域的一个流程示意图;
[0025] 图6a为本发明实施例中计算LBP跳变次数的一个流程示意图;
[0026] 图6b为本发明实施例中级联分类器运行的一个流程示意图;
[0027] 图6c为本发明实施例中tree特征的一个流程示意图;
[0028] 图6d为本发明实施例中梯度值的一个流程示意图;
[0029] 图6e为本发明实施例中识别出图像的编码类型的一个应用场景示意图;
[0030] 图6f为本发明实施例中另一级联分类器运行的一个流程示意图;
[0031] 图7为本发明实施例中确定目标子区域的另一个流程示意图;
[0032] 图8为本发明实施例中识别出图像的编码类型的一个流程示意图;
[0033] 图9为本发明实施例中识别出图像的编码类型的另一个流程示意图;
[0034] 图10为本发明实施例中终端的另一个结构示意图。

具体实施方式

[0035] 本发明实施例提供了一种图像识别方法及终端,用于解决现有图像识别中存在局限性的问题,不仅可以识别出任意形状的一维码,还可以识别一维码以外的其他编码图像,从而有效提高识别图像的广泛性以及可靠性,无需对图像进行形态学操作和连通域分析,有效提高识别图像的速率。
[0036] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0037] 本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0038] 在介绍本发明实施例之前,先介绍一下本发明实施例中涉及的术语:
[0039] 术语“灰度值”:是指灰色图像中的颜色深度,灰度值的范围一般从0到255,其中,白色的灰度值为255,黑色的灰度值为0。
[0040] 术语“局部二值模式”:所述局部二值模式(英文全称:Local Binary Patterns,缩写:LBP),是一种用来描述图像局部纹理特征的算子,具有旋转不变性和灰度不变性等显著的优点。LBP算子在每个像素点都可以得到一个LBP编码,那么,对一幅图像(记录的是每个像素点的灰度值)提取其原始的LBP算子之后,得到的原始LBP特征依然是一幅图像(记录的是每个像素点的LBP编码值)。
[0041] 术语“聚类分析”:又称群分析,是根据“物以类聚”的道理,对样品或指标进行分类的一种多元统计分析方法,它们讨论的对象是大量的样品,要求能合理地按各自的特性来进行合理的分类,没有任何模式可供参考或依循,即是在没有先验知识的情况下进行的。聚类分析是将数据分类到不同的类或者簇这样的一个过程,所以同一个簇中的对象有很大的相似性,而不同簇间的对象有很大的相异性,聚类分析的目标就是在相似的基础上收集数据来分类。聚类源于很多领域,包括数学,计算机科学,统计学,生物学和经济学。在不同的应用领域,很多聚类技术都得到了发展,这些技术方法被用作描述数据,衡量不同数据源间的相似性,以及把数据源分类到不同的簇中。
[0042] 术语“连通域分析”:连通域一般是指图像中具有相同像素值且位置相邻的前景像素点组成的图像区域。连通域分析是指将图像中的各个连通区域找出并标记,是一种图像分析处理领域中较为常用和基本的方法。例如:视觉跟踪中的运动前景目标分割与提取(行人入侵检测、遗留物体检测、基于视觉的车辆检测与跟踪等)、医学图像处理(感兴趣目标区域提取)等。也就是说,在需要将前景目标提取出来以便后续进行处理的应用场景中都能够用到连通域分析方法,通常连通域分析处理的对象是一张二值化后的图像。
[0043] 下面举例介绍一下本发明可能涉及的应用场景:
[0044] 在现实生活中,用户在商场购买商品,可能涉及到售货员用扫码器对商品的条形码进行扫码,从而确定商品的价格信息,用户想要知道某个商品的价格,可直接通过终端上的扫描软件对商品的条形码进行扫描,从而获取商品的价格信息。现在一些社交应用广泛流行,例如:用户A可通过扫描用户B的微信二维码,从而添加用户B为微信好友,因此,一维码,二维码或者未来其他编码的扫描为用户的生活带来了极大的便利,然而,在扫描编码的过程中,涉及到识别图像信息,需要判断图像是一维码或者二维码或者无码的图像,然后通过对应的解码器进行解码,以微信产品为例,在用户打开“扫一扫”的功能后,从手机摄像头获取到的实时图像流经过聚焦定位后进入扫码预判模块,如果图像流经扫码预判模块判断后包含一维码/二维码,则送入QBar扫码引擎中进行解码,否则直接跳到下一帧,其中,QBar扫码引擎是微信模式识别中心通过对二维码和条形码识别技术进行了长期的优化和完善后,开发出的一套二维码和条形码识别引擎。
[0045] 在实际应用中,扫码预判模块与QBar扫码引擎封装在一起,当终端启动扫码功能时自动调用扫码预判模块进行一维码/二维码的识别。然而现有的扫码引擎技术在进行解码之前,没有扫码预判模块,因此需要对每帧输入图像进行一维码和二维码解码,从而影响识别编码的速率。本发明中所述的扫码预判模块通过先提取图像的第一图像特征,确定图像的目标区域,在目标区域的技术上,进一步过滤该目标区域对应的图像,从而确定图像的目标子区域,然后提取目标子区域上对应的第二图像特征,通过该第二图像特征确定目标子区域上对应的图像的编码类型,例如:一维码,二维码,无码等。可见,编码类型不限于是一维码,还可以是一维码以外的其他编码图像,从而有效提高识别图像的广泛性以及可靠性,无需对图像进行形态学操作和连通域分析,有效提高识别图像的速率。
[0046] 下面,介绍一下本发明涉及的终端,如图1所示,对所述终端的具体结构进行介绍,所述终端100包括:射频(英文全称:Radio Frequency,缩写:RF)电路110、存储器120、处理器130、以及电源140等部件。本领域技术人员可以理解,图1中示出的终端100的结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0047] RF电路110可用于收发信息,例如:信号的接收和发送,通常,RF电路110包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:Low Noise Amplifier,缩写:LNA)、双工器等。此外,RF电路110还可以通过无线通信与网络和终端等其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(英文全称:Global System of Mobile communication,缩写:GSM)、通用分组无线服务(英文全称:General Packet Radio Service,缩写:GPRS)、码分多址(英文全称:Code Division Multiple Access,缩写:CDMA)、宽带码分多址(英文全称:Wideband Code Division Multiple Access,缩写:WCDMA)、长期演进(英文全称:Long Term Evolution,缩写:LTE)、电子邮件、短消息服务(英文全称:Short Messaging Service,缩写:SMS)等。
[0048] 存储器120可用于存储软件程序以及模块,处理器130通过运行存储在存储器120的软件程序以及模块,从而执行终端100的各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端100的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0049] 处理器130是终端100的控制中心,利用各种接口和线路连接整个终端100的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端100的各种功能和处理数据,从而对终端100进行整体监控。可选的,处理器130可包括一个或多个处理单元;优选的,处理器130可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器130中。
[0050] 终端100还包括给各个部件供电的电源140(比如电池),优选的,电源可以通过电源管理系统与处理器130逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
[0051] 尽管未示出,所述终端100还可以包括输入单元、显示单元等,在此不再赘述。
[0052] 在本发明实施例中,所述处理器130用于执行以下步骤:
[0053] 获取目标图像的第一图像特征;
[0054] 根据所述第一图像特征确定所述目标图像的目标区域;
[0055] 通过过滤所述目标区域对应的图像确定所述目标图像的目标子区域;
[0056] 获取所述目标子区域对应的图像的第二图像特征;
[0057] 根据所述第二图像特征识别出所述目标子区域对应的图像的编码类型,其中,所述编码类型包括一维码,二维码或者无码中的至少一种类型。
[0058] 在一些可能的实现方式中,所述处理器130用于当所述第一图像特征为灰度值时,确定所述目标图像中的每个像素点对应的第一绝对差值,其中,所述第一绝对差值为像素点在水平方向的灰度值和竖直方向上的灰度值的梯度绝对差值;分别比较所述每个像素点对应的第一绝对差值与第一预设阈值的大小;将第一绝对差值大于第一预设阈值所对应的全部像素点所对应的区域确定为所述目标区域。
[0059] 在一些可能的实现方式中,所述处理器130用于当所述第一图像特征为灰度值时,确定所述目标图像中的任意两个像素点所对应的第二绝对差值,其中,所述第二绝对差值为所述任意两个像素点的灰度值的绝对差值;比较所述第二绝对差值与第二预设阈值的大小;将所述第二绝对差值小于第二预设阈值所对应的全部像素点所对应的区域确定为所述目标区域。
[0060] 在一些可能的实现方式中,所述处理器130用于将所述目标区域划分为多个子区域;确定每个子区域对应的图像上的每个像素点与所述每个像素点的相邻像素点之间的第一灰度值大小关系;根据所述第一灰度值大小关系确定所述每个子区域对应的图像上的每个像素点的相邻像素点的局部二值模式LBP编码;获取所述每个子区域对应的图像上的全部像素点的LBP编码跳变次数的总和;将所述LBP编码跳变次数的总和大于第三预设阈值的子区域确定为所述目标子区域。
[0061] 在一些可能的实现方式中,所述处理器130用于将所述目标区域划分为多个子区域;确定每个子区域对应的图像上的每个像素点对应的第一绝对和值,其中,所述第一绝对和值为像素点在水平方向的灰度值和竖直方向上的灰度值的绝对和值;获取所述每个子区域对应的图像上的全部像素点对应的第一绝对和值的总和;将所述第一绝对和值的总和大于第四预设阈值的子区域确定为所述目标子区域。
[0062] 在一些可能的实现方式中,所述处理器130用于获取所述目标子区域对应的图像上的任意两个像素点之间的第二灰度值大小关系;根据所述第二灰度值大小关系确定所述目标子区域对应的图像的Fern特征,其中,所述Fern特征用二进制比特位表示;将所述Fern特征转换成十进制数;将所述十进制数输入至目标函数;根据所述目标函数的输出结果识别出所述目标子区域对应的图像的编码类型。
[0063] 在一些可能的实现方式中,所述处理器130用于获取所述目标子区域对应的图像上的各个树节点对应的两个像素点之间的第三灰度值大小关系;根据所述第三灰度值大小关系确定所述目标子区域对应的图像的Tree特征,其中,所述Tree特征用二进制比特位表示;将所述Tree特征转换成十进制数;将所述十进制数输入至目标函数;根据所述目标函数的输出结果识别出所述目标子区域对应的图像的编码类型。
[0064] 下面,请参阅图2,本发明实施例中图像识别方法的一个实施例示意图,具体流程如下:
[0065] 步骤201、获取目标图像的第一图像特征。
[0066] 在本发明实施例中,获取的目标图像可能是彩色图像,也可能是黑白图像,其中,该目标图像是待识别的图像,该第一图像特征为用于表征目标图像的图像信息,例如:灰度值,亮度值,色坐标等,此处不做具体限定。本发明实施例中以第一图像特征为灰度值进行说明。
[0067] 步骤202、根据所述第一图像特征确定所述目标图像的目标区域。
[0068] 在本发明实施例中,根据第一图像特征确定该目标图像的目标区域,其中,该目标区域是编码区域对应的一个大致区域,例如:通过该第一图像特征确定该目标图像的粗略的编码区域。
[0069] 在实际应用中,根据第一图像特征确定目标图像的目标区域的方式有很多种,例如:聚类分析、连通域分析,梯度差值-二值化分析等,此处不做具体限定。
[0070] 步骤203、通过过滤所述目标区域对应的图像确定所述目标图像的目标子区域。
[0071] 在本发明实施例中,通过对该目标区域对应的图像进行过滤,得到该目标图像的目标子区域,可见,目标子区域是一个比较精确的编码区域。在实际应用中,可利用LBP弱分类器进行LBP跳变统计,sobel梯度统计的过滤方法过滤该目标区域对应的图像从而确定该目标图像的目标子区域,此处不做具体限定。
[0072] 步骤204、获取所述目标子区域对应的图像的第二图像特征。
[0073] 在本发明实施例中,当确定目标图像的目标子区域时,获取该目标子区域对应的图像的第二图像特征,其中,该第二图像特征是将目标图像的原始特征进行处理后得到的特征,便于后续利用该第二图像特征确定目标图像的编码类型,在实际应用中,该第二图像特征可以为Fern特征,Haar特征、Tree特征等简单快速的图像特征,此处不做具体限定,其中Haar特征的计算方法类似于Fern特征,是计算图像中两个相邻区域内的全部像素点的灰度值的总和的差值,Tree特征与Fern特征类似,也是比较任意位置的一对像素点的灰度值,不同的是其计算特征的结构呈树状。
[0074] 步骤205、根据所述第二图像特征识别出所述目标子区域对应的图像的编码类型,其中,所述编码类型包括一维码,二维码或者无码中的至少一种类型。
[0075] 在本发明实施例中,根据该第二图像特征识别出该目标子区域对应的图像的编码类型,例如:例如:一维码,二维码,无码等。可见,编码类型不限于是一维码,还可以是一维码以外的其他编码图像,从而有效提高识别图像的广泛性以及可靠性,无需对图像进行形态学操作和连通域分析,有效提高识别图像的速率。
[0076] 在一些可能的实现方式中,如图3所示,当所述第一图像特征为灰度值时,所述根据所述第一图像特征确定所述目标图像的目标区域包括以下流程:
[0077] 步骤301、确定所述目标图像中的每个像素点对应的第一绝对差值,其中,所述第一绝对差值为像素点在水平方向的灰度值和竖直方向上的灰度值的梯度绝对差值;
[0078] 该目标图像是由多个像素点组成,每个像素点都有一个对应的第一绝对差值,任意一个像素点对应的第一绝对差值都是其水平方向上的灰度值和竖直方向上的灰度值的梯度绝对差值。
[0079] 步骤302、分别比较所述每个像素点对应的第一绝对差值与第一预设阈值的大小;
[0080] 由于该目标图像是由多个像素点组成的,分别将每个像素点对应的第一绝对差值与第一预设阈值进行比较。
[0081] 步骤303、将第一绝对差值大于第一预设阈值所对应的全部像素点所对应的区域确定为所述目标区域。
[0082] 将第一绝对差值大于第一预设阈值所对应的全部像素点累计所对应的区域确定为该目标区域,将第一绝对差值小于或者等于第一预设阈值所对应的全部像素点所对应的平滑区域被过滤掉。
[0083] 在实际应用中,由于一维码/二维码图像具有较强的梯度变化信息,采用梯度差值对编码区域进行粗略的定位,以便快速过滤掉图像中的平滑区域,以减少后续精确定位时造成的干扰,梯度差值的计算和二值化的计算用如下公式表示:
[0084] Gdiff=︱Gx-Gy︱,Gx=Ix+1-Ix-1,Gy=Iy+1-Iy-1;
[0085] Gdiff=255,if Gdiff>thr;Gdiff=0,if Gdiff≤thr。
[0086] 其中,I是表示灰度值;x,y分别表示水平方向和竖直方向;G表示梯度值;Gdiff表示梯度差值;thr表示固定阈值,通常thr取70左右。
[0087] 在二值化图像上,通过对其水平方向和竖直方向的直方图进行分析,确定粗略的编码区域。
[0088] 在另一些可能的实现方式中,如图4所示,当所述第一图像特征为灰度值时,所述根据所述第一图像特征确定所述目标图像的目标区域包括以下流程:
[0089] 步骤401、确定所述目标图像中的任意两个像素点所对应的第二绝对差值,其中,所述第二绝对差值为所述任意两个像素点的灰度值的绝对差值;
[0090] 目标图像有多个像素点组成,选取任意两个像素点的灰度值的绝对差值,则该目标图像可以确定多对像素点对应的第二绝对差值。例如:像素点a和像素点b所对应的第二绝对差值用Idiff表示,则Idiff=︱Ia-Ib︱,其中,Ia表示像素点a的灰度值,Ib表示像素点B的灰度值。
[0091] 步骤402、比较所述第二绝对差值与第二预设阈值的大小;
[0092] 步骤403、将所述第二绝对差值小于第二预设阈值所对应的全部像素点所对应的区域确定为所述目标区域。
[0093] 分别比较每个第二绝对差值与第二预设阈值的大小,将第二绝对差值小于第二预设阈值所对应的全部像素点所对应的区域确定为所述目标区域。继续参照步骤401中的示例,假设Idiff小于第二预设阈值,像素点a和像素点b为所述目标区域的像素点。同理,假设像素点c和像素点d所对应的第二绝对差值小于该第二预设阈值,以此类推,则像素点a和像素点b以及像素点c和像素点d等满足条件的像素点所对应的区域确定为所述目标区域。
[0094] 在一些可能的实现方式中,如图5所示,所述通过过滤所述目标区域对应的图像确定所述目标图像的目标子区域包括以下流程:
[0095] 步骤501、将所述目标区域划分为多个子区域;
[0096] 在本发明实施例中,将该目标区域按照预设规则划分为多个子区域,例如:划分为用于LBP弱分类器检测的滑动窗口。
[0097] 步骤502、确定每个子区域对应的图像上的每个像素点与所述每个像素点的相邻像素点之间的第一灰度值大小关系;
[0098] 在本发明实施例中每个子区域的图像包括多个像素点,其中,确定每个像素点与其相邻像素点之间的第一灰度值大小关系,例如:某像素点的灰度值为I0,与其相邻的像素点的灰度值分别为I1,I2,I3,I4…,则确定I0与I1,I2,I3,I4等之间的大小关系。
[0099] 步骤503、根据所述第一灰度值大小关系确定所述每个子区域对应的图像上的每个像素点的相邻像素点的局部二值模式LBP编码;
[0100] 本发明实施例中,当确定每个子区域对应的图像上的每个像素点与该每个像素点的相邻像素点之间的第一灰度值大小关系后,根据该第一灰度值大小关系确定该每个子区域对应的图像上的每个像素点的相邻像素点的局部二值模式LBP编码,一般情况下,当某像素点的灰度值小于相邻像素点的灰度值时,则相邻像素点对应的LBP编码为0,当某像素点的灰度值大于或者等于相邻像素点的灰度值时,则相邻像素点对应的LBP编码为1。继续参照步骤502的示例,假设I0<I1,则I1对应的LBP编码为0,I0>I2,则I2对应的LBP编码为1。
[0101] 步骤504、获取所述每个子区域对应的图像上的全部像素点的LBP编码跳变次数的总和;
[0102] 在本发明实施例中,根据每个像素点的相邻像素点对应的LBP编码,判断其发生跳变的次数,例如:从0到1发生跳变的次数和从1到0发生跳变的次数,此处不做具体限定。则统计全部像素点的LBP编码发生跳变次数的总和。
[0103] 步骤505、将所述LBP编码跳变次数的总和大于第三预设阈值的子区域确定为所述目标子区域。
[0104] 在本发明实施例中,如果某个子区域对应的LBP编码跳变次数的总和大于第三预设阈值,则确定该子区域为目标子区域,可见,该目标子区域为精确的编码区域,其中,该第三预设阈值一般为780,此处不做具体限定。
[0105] 在实际应用中,为了检测图像中任意尺寸的目标区域,通常需要计算由不同尺度的图像组成的金字塔,并在该金字塔的每一层上调用训练得到的分类器进行滑窗检测,输出候选窗口的位置,为了提高检测速度,可利用LBP特征值对窗口进行快速过滤,使用这一特征的原因是一维码/二维码具有较强的纹理特性,而LBP特征值在描述图像纹理信息方面具有不可比拟的优势。
[0106] 首先计算图像中每个像素点与其局部邻域像素点在灰度上的二值关系,其次对二值关系按一定方式形成LBP编码,然后对目标区域的LBP编码统计得到LBP直方图,以此作为此区域的纹理描述。
[0107] LBP编码运用到的公式为:LBP=⊕N-1k=1s(Ic,Ik),其中,Ic≥Ik时,s(Ic,Ik)=1;Ic<Ik时,s(Ic,Ik)=0,其中,Ic是中心像素点的灰度值,Ik(k=0,1,2,…,N-1)是中心像素处等间隔分布的N个邻域像素点的灰度值,⊕是串接操作符,s用于表示比较。
[0108] 如图6a所示,将中心像素点和其邻域内的8个像素点的灰度值进行比较,如果邻域内像素点的灰度值大于或者等于中心像素的灰度值,则该邻域内对应的像素点在LBP编码序列中的值置为1,否则置为0,可见,通过比较后的邻域内的8个像素点按次序编码为8位二进制数,其中,该中心像素点对应的LBP跳变的次数为4次(从0到1或者1到0)。
[0109] 为了降低算法的运算复杂度,我们仅统计每个滑窗范围内,所有像素点的LBP跳变次数的累加,其实这是对原始LBP编码的有效压缩,在保证不丢失任何信息的同时也可以有效减少图像中噪声带来的干扰,LBP跳变次数的计算方法如图6a所示,例如:LBP编码从0~1或1~0的跳变次数,从而反应了图像局部区域的纹理变化。
[0110] 在一个滑动窗口内对每一个像素点都提取LBP跳变次数,然后累加该窗口内的所有像素点的LBP跳变次数的总和,将累加的LBP跳变次数的总和与预设阈值(本发明中该预设阈值为780)进行比较,如果大于该预设阈值,则确定该滑动窗口区域通过,进入下一流程,否则不再继续。
[0111] 在另一些可能的实现方式中,如图7所示,所述通过过滤所述目标区域对应的图像确定所述目标图像的目标子区域包括以下流程:
[0112] 步骤701、将所述目标区域划分为多个子区域;
[0113] 在本发明实施例中,在本发明实施例中,将该目标区域按照预设规则划分为多个子区域,例如:划分为用于LBP弱分类器检测的滑动窗口。
[0114] 步骤702、确定每个子区域对应的图像上的每个像素点对应的第一绝对和值,其中,所述第一绝对和值为像素点在水平方向的灰度值和竖直方向上的灰度值的绝对和值;
[0115] 在本发明实施例中,每个子区域的图像由多个像素点组成,其中,获取每个像素点对应的第一绝对和值,例如:像素点a对应的第一绝对和值为像素点a在水平方向上的灰度值的绝对值和像素点a在竖直方向上的灰度值的绝对值的和。
[0116] 步骤703、获取所述每个子区域对应的图像上的全部像素点对应的第一绝对和值的总和;
[0117] 在本发明实施例中,由于每个子区域对应有多个像素点,则获取每个子区域上的图像的全部像素点对应的第一绝对和值的总和,例如:某子区域下有像素点a和像素点b以及像素点c(为了举例说明,实际应用中,每个子区域有很多个像素点),则像素点a对应的第一绝对和值为I1,像素点b对应的第一绝对和值为I2,像素点b对应的第一绝对和值为I3,则该子区域对应的第一绝对和值I总=I1+I2+I3。
[0118] 步骤704、将所述第一绝对和值的总和大于第四预设阈值的子区域确定为所述目标子区域。
[0119] 在本发明实施例中,获取每个子区域对应的第一绝对和值的总和,将第一绝对和值的总和大于第四预设阈值的子区域确定为目标子区域。例如:继续参照上述步骤703的示例,假设I总大于第四预设阈值,则该子区域确定为目标子区域。
[0120] 在一些可能的实现方式中,如图8所示,当所述第二图像特征为蕨Fern特征时,所述获取所述目标子区域对应的图像的第二图像特征以及根据所述第二图像特征识别出所述目标子区域对应的图像的编码类型包括以下流程:
[0121] 步骤801、获取所述目标子区域对应的图像上的任意两个像素点之间的第二灰度值大小关系;
[0122] 在本发明实施例中,获取目标子区域对应的图像上的任意两个像素点的灰度值,例如:像素点a的灰度值为I1,像素点b的灰度值为I2,假设I1>I2,则I1>I2就是像素点a和像素点b之间的第二灰度值关系。
[0123] 步骤802、根据所述第二灰度值大小关系确定所述目标子区域对应的图像的Fern特征,其中,所述Fern特征用二进制比特位表示;
[0124] 步骤803、将所述Fern特征转换成十进制数;
[0125] 步骤804、将所述十进制数输入至目标函数;
[0126] 步骤805、根据所述目标函数的输出结果识别出所述目标子区域对应的图像的编码类型。
[0127] 在本发明实施例中,目标函数为输入转换成十进制数的Fern特征输出编码结果的函数,如果该目标函数预设的编码类型为二维码,假设输出的结果为1,则确定该目标图像的编码类型为二维码,如果输出的结果为0,则确定该目标图像的编码类型不是二维码。如果该目标函数预设的编码类型为一维码,假设输出的结果为1,则确定该目标图像的编码类型为一维码,如果输出的结果为0,则确定该目标图像的编码类型不是一维码。
[0128] 在实际应用中,通过LBP弱分类器过滤后的图像滑窗被送入Fern特征计算模块进行Fern特征提取。Fern特征由n个二进制比特位表示,表示0到2n-1范围中的十进制数,每一位二进制比特位代表图像中任意位置的一对像素点的灰度值的相对大小,如下式:
[0129] fFern=bn-1bn-2…b0,其中,当Ii>Ij时,bk=1,当Ii≤Ij时,bk=0,0≤k<n,i和j分别表示任意两个像素点,b代表二进制比特位。
[0130] 可见,Fern特征表征了图像中若干个像素点对之间的灰度值的大小,适合用于检测一维码/二维码这种由随机黑白区域组成的目标图像,同时Fern特征计算复杂度较低,仅需在图像原始灰度值层面进行取值、对比、移位等基本操作,从而达到快速识别图像的目的。
[0131] 在实际应用中,在计算滑动窗口内图像区域的fern特征的值fFern后,将其输入到训练好的分类器中。本发明实施例中采用由Viola Jones提出的级联分类器结构(Cascade Boosting),该结构依然是计算机视觉中快速检测的经典算法,其基本思路是强分类器按照复杂性的顺序被组成一种层级级联结构,每一个后续分类器的训练样本都是通过了之前所有分类器的样本,如果级联的任何一个分类器拒绝了一个滑动窗口,则该滑动窗口不再进行任何的进一步检测,如图6b所示,有三个分类器,从分类器1输入fern特征,如果分类器1拒绝输入fern特征的滑动窗口,则停止对该滑动窗口的检测,如果分类器1没有拒绝该滑动窗口,则继续通过分类器2进行检测,以此类推。
[0132] 其中,每个分类器都是一个二类分类器,可以看作从输入特征x映射到输出类别w的函数h,在本发明实施例中,输入的特征值是0~64范围内的十进制数,输出的类别是1(属于该类编码)或0(不属于该类编码)。
[0133] 函数h表示为:conf(x)=h(x,θ);
[0134] w=sign(conf(x)-thr),w=0,1。
[0135] 其中,θ是分类器的参数,θ是通过样本训练得到,sign是sign(x)函数,在输入大于0时输出为1,小于0时输出为0,conf是分类器输出的置信度分数,通过将该分数与训练得到的阈值thr进行比较,如果大于阈值thr则输出类别号w=1,小于阈值thr则输出类别号w=
0。在测试时,为了减少计算复杂度,将训练得到的分类器映射值保存成固定列表,根据输入的Fern特征值fFern查表得到相应的置信度分数。
[0136] 在训练阶段,采集了一批各种角度、光照、拍摄条件下不同的一维码和二维码,为了减少类内差异,针对一维码和二维码分别训练了各自的Fern特征和分类器。在测试时,每个滑动窗口分别进行一维码特征提取与分类以及二维码特征提取与分类,并得到两种分类器的分类结果w1和w2,如果两者结果均为1,则选取置信度分数大的作为最终的类别输出。
[0137] 在另一些可能的实现方式中,如图9所示,当所述第二图像特征为树Tree特征时,所述获取所述目标子区域对应的图像的第二图像特征以及根据所述第二图像特征识别出所述目标子区域对应的图像的编码类型包括以下流程:
[0138] 步骤901、获取所述目标子区域对应的图像上的各个树节点对应的两个像素点之间的第三灰度值大小关系;
[0139] 在本发明实施例中,获取目标子区域对应的图像上的各个树节点对应的两个像素点的灰度值,假设某节点的像素点a的灰度值为I1,像素点b的灰度值为I2,假设I1>I2,则I1>I2就是像素点a和像素点b之间的第三灰度值关系。
[0140] 步骤902、根据所述第三灰度值大小关系确定所述目标子区域对应的图像的Tree特征,其中,所述Tree特征用二进制比特位表示;
[0141] 步骤903、将所述Tree特征转换成十进制数;
[0142] 步骤904、将所述十进制数输入至目标函数;
[0143] 步骤905、根据所述目标函数的输出结果识别出所述目标子区域对应的图像的编码类型。
[0144] 与上述步骤805相似,目标函数为输入转换成十进制数的Tree特征输出编码结果的函数,如果该目标函数预设的编码类型为二维码,假设输出的结果为1,则确定该目标图像的编码类型为二维码,如果输出的结果为0,则确定该目标图像的编码类型不是二维码。如果该目标函数预设的编码类型为一维码,假设输出的结果为1,则确定该目标图像的编码类型为一维码,如果输出的结果为0,则确定该目标图像的编码类型不是一维码。
[0145] 在实际应用中,以图6c的三层tree特征为例,在每个树节点中,比较两个像素点的灰度值,大于则走节点左分支,小于则走右分支,每个分支依次类推直到达到叶子节点,每个左分支都赋值为1,右分支赋值为0,根据所走的路线串联分支上的1或0,到达底层叶子节点时得到最终的二进制比特位。图6c中最后得到的二进制比特位即为011,转化为十进制数就是3,即最终的特征值就是3。因此,用于LBP跳变次数的统计值也可以换成sobel梯度的统计值,sobel算子是一种较常用于梯度计算的算子,其计算公式如下:
[0146] Gx=z3+2*z6+z9-(z1+2*z4+z7)
[0147] Gy=z7+2*z8+z9-(z1+2*z2+z3)
[0148] G=|Gx|+|Gy|
[0149] 式中,z1~z9分别表示一个3*3邻域内的像素点的梯度值,如图6d所示,由于sobel梯度算子能够反映出图像的梯度变化,纹理复杂程度,因此可以将LBP跳变值过滤换成sobel梯度值过滤,达到同样的粗过滤效果。
[0150] 在实际应用中,完整的分类架构如图6e所示,包含两部分,LBP弱分类器过滤和fern级联分类器分类,最终的输出结果为0,1,2,其中,0分别表示非编码,1表示一维码,2表示二维码。根据所采用的特征不同,该分类器也可以是soft cascade等其他结构的分类器,其中,soft cascade是一种改进型的级联分类器结构,如图6f所示,传统的级联分类器结构由不同层组成,每层包含若干个分类器,输入依次通过每个分类器然后将该层分类器的输出值累加并与该层的阈值作比较,判断是否通过到下一层。而soft cascade没有层的概念,输入通过每个分类器时得到的分数与该分类器自身的阈值做判断,从而判断是否进入到下一个分类器,soft cascade比传统级联结构的计算速度更快,因为每通过一个弱分类器就可以判断是否继续。
[0151] 通过上述识别图像方法的描述,在实际应用中,为了验证本发明实施例中的识别方法对扫码引擎速度的提升作用,选取一些终端进行测试,主要针对运行时间和识别率进行测试。其中,运行时间的对比实验分成两组,主流机型上无码样本的加入预判算法和不加预判算法的平均运行时间对比实验(如表1所示),以及有码(一维码/二维码)样本的加入预判算法和不加预判算法的平均运行时间对比实验(如表2所示)。
[0152]
[0153]
[0154] 表1不同机型无码样本测试速度对比
[0155]
[0156] 表2有码样本测试速度对比
[0157] 可以看出,对于无码图像,主流机型上的处理速度均有较大幅度地提高,部分机型平均运行时间降低到10ms以内,而对于有码图像,一维码的平均识别时间稍慢于原始方法,但差别不大,二维码的平均识别时间相对缩短了130ms左右,总识别时间缩短了约50ms。
[0158] 在识别率方面,我们分别测试了不同样本集上的二维码和一维码的识别率对比(分别如表3和表4所示)。
[0159]
[0160]
[0161] 表3二维码识别率对比
[0162] 测试集   Google标准 模糊条码正确率(%) 加入预判 61.8 27.92
正确率(%) 关闭预判 61.8 27.92
[0163] 表4一维码识别率对比
[0164] 测试数据表明,除了手机实拍的二维码测试集上有少量(0.34%)性能损失外,在其他样本集上均保持识别率不变,图像识别方法的加入在保证识别性能的同时,减少了客户端的阻塞,从而使得识别响应更加及时。
[0165] 为便于更好的实施本发明实施例的上述相关方法,下面还提供用于配合上述方法的相关装置。
[0166] 如图10所示,为本发明实施例中终端1000的一个结构示意图,包括:第一获取模块1001,第一确定模块1002,第二确定模块1003,第二获取模块1004以及识别模块1005。
[0167] 第一获取模块1001,用于获取目标图像的第一图像特征;
[0168] 第一确定模块1002,用于根据所述第一图像特征确定所述目标图像的目标区域;
[0169] 第二确定模块1003,用于通过过滤所述目标区域对应的图像确定所述目标图像的目标子区域;
[0170] 第二获取模块1004,用于获取所述目标子区域对应的图像的第二图像特征;
[0171] 识别模块1005,用于根据所述第二图像特征识别出所述目标子区域对应的图像的编码类型,其中,所述编码类型包括一维码,二维码或者无码中的至少一种类型。
[0172] 在一些可能的实现方式中,当所述第一图像特征为灰度值时,所述第一确定模块1002具体用于确定所述目标图像中的每个像素点对应的第一绝对差值,其中,所述第一绝对差值为像素点在水平方向的灰度值和竖直方向上的灰度值的梯度绝对差值;分别比较所述每个像素点对应的第一绝对差值与第一预设阈值的大小;将第一绝对差值大于第一预设阈值所对应的全部像素点所对应的区域确定为所述目标区域。
[0173] 在一些可能的实现方式中,当所述第一图像特征为灰度值时,所述第一确定模块1002具体用于确定所述目标图像中的任意两个像素点所对应的第二绝对差值,其中,所述第二绝对差值为所述任意两个像素点的灰度值的绝对差值;比较所述第二绝对差值与第二预设阈值的大小;将所述第二绝对差值小于第二预设阈值所对应的全部像素点所对应的区域确定为所述目标区域。
[0174] 在一些可能的实现方式中,所述第二确定模块1003具体用于将所述目标区域划分为多个子区域;确定每个子区域对应的图像上的每个像素点与所述每个像素点的相邻像素点之间的第一灰度值大小关系;根据所述第一灰度值大小关系确定所述每个子区域对应的图像上的每个像素点的相邻像素点的局部二值模式LBP编码;获取所述每个子区域对应的图像上的全部像素点的LBP编码跳变次数的总和;将所述LBP编码跳变次数的总和大于第三预设阈值的子区域确定为所述目标子区域。
[0175] 在一些可能的实现方式中,所述第二确定模块1003具体用于将所述目标区域划分为多个子区域;确定每个子区域对应的图像上的每个像素点对应的第一绝对和值,其中,所述第一绝对和值为像素点在水平方向的灰度值和竖直方向上的灰度值的绝对和值;获取所述每个子区域对应的图像上的全部像素点对应的第一绝对和值的总和;将所述第一绝对和值的总和大于第四预设阈值的子区域确定为所述目标子区域。
[0176] 在一些可能的实现方式中,当所述第二图像特征为蕨Fern特征时,所述第二获取模块1004具体用于获取所述目标子区域对应的图像上的任意两个像素点之间的第二灰度值大小关系;根据所述第二灰度值大小关系确定所述目标子区域对应的图像的Fern特征,其中,所述Fern特征用二进制比特位表示;
[0177] 所述识别模块1005具体用于将所述Fern特征转换成十进制数;将所述十进制数输入至目标函数;根据所述目标函数的输出结果识别出所述目标子区域对应的图像的编码类型。
[0178] 在一些可能的实现方式中,当所述第二图像特征为树Tree特征时,所述第二获取模块1004具体用于获取所述目标子区域对应的图像上的各个树节点对应的两个像素点之间的第三灰度值大小关系;根据所述第三灰度值大小关系确定所述目标子区域对应的图像的Tree特征,其中,所述Tree特征用二进制比特位表示;
[0179] 所述识别模块1005具体用于将所述Tree特征转换成十进制数;将所述十进制数输入至目标函数;根据所述目标函数的输出结果识别出所述目标子区域对应的图像的编码类型。
[0180] 综上,当获取目标图像的第一图像特征后,根据该第一图像特征确定该目标图像的目标区域,例如:根据该第一图像特征确定大致的编码区域,并通过过滤该目标区域对应的图像确定该目标图像的目标子区域,根据获取的该目标子区域对应的图像的第二图像特征确定该目标子区域对应的图像的编码类型,例如:在大致的编码区域内确定精确的编码区域,然后在精确的编码区域上确定出图像的编码类型,例如:一维码,二维码,无码等。可见,编码类型不限于是一维码,还可以是一维码以外的其他编码图像,从而有效提高识别图像的广泛性以及可靠性,无需对图像进行形态学操作和连通域分析,有效提高识别图像的速率。
[0181] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0182] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0183] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0184] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0185] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0186] 以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。