手机客户端图像扫描方法

文档序号:10655982阅读:792来源:国知局
手机客户端图像扫描方法
【专利摘要】本发明提供了一种手机客户端图像扫描方法,该方法包括:通过二维码图像的定位框边缘方向确定二维码图像的边缘方向;根据行间的兼容度得到实际采样区域,确定每一行与列的实际采样区域,通过像素统计确定当前块灰度。本发明提出了一种手机客户端图像扫描方法,相比于现有方法更简单方便,提高了识别效率。
【专利说明】
手机客户端图像扫描方法
技术领域
[0001]本发明涉及图像识别,特别涉及一种手机客户端图像扫描方法。【背景技术】
[0002]二维码具有存储容量大、数据类型丰富、安全稳定性高等优势;所以被广泛应用在很多行业。在移动互联网逐渐发展起来之后,二维码又在移动互联网中占据了重要地位,如今很多被大众熟知的移动应用都带有二维码扫描的功能,二维码极大地方便了移动应用中查询、支付、下载等功能,渐深入影响着日常生活。然而二维码在逐渐发展和推广的同时也会有一系列的相关问题。现有的实际使用中,二维码所处的环境多变:电子屏幕、印刷品上、 户外广告上等,对于移动设备所采集到二维码图像会有诸多影响,可能会出现失真和光照不均等问题,可能会导致二维码无法准确识别。
【发明内容】

[0003]为解决上述现有技术所存在的问题,本发明提出了一种手机客户端图像扫描方法,包括:
[0004]通过二维码图像的定位框边缘方向确定二维码图像的边缘方向;根据行间的兼容度得到实际采样区域,确定每一行与列的实际采样区域,通过像素统计确定当前块灰度。
[0005]优选地,所述根据行间的兼容度得到实际采样区域,进一步包括:
[0006]步骤1:从二维码的左上角点开始,扫描每一行像素并记录为一个函数;[〇〇〇7]步骤2:从第一行开始扫描计算,将行扫描的函数与邻接行的函数进行兼容度计算:
[0008]定义Mat为行或列像素的函数之间的兼容度
[0009]Mat = l/(l+Ex|f(x,r)-g(x,r) | )[0〇1〇]其中f(x,r)为r行的函数,g(x,r)为r-1行的函数;
[0011]根据采样结果中的Mat的最大值和最小值来决定阈值;
[0012]如果兼容度低于阈值,转到第4步;如果兼容度高于阈值,则邻接行确定为同一个行块,继续扫描,直到出现了邻接行的兼容度低于阈值,其中每一个行块的宽度不小于2;
[0013]步骤3:得到行块的采样区域之后,转到第2步,从下一行开始计算,直到得到行块的采样区域;
[0014]步骤4:如果兼容度低于阈值,则邻接行确定为不属于同一个行块,转到第2步,从下一行开始计算;
[0015]步骤5:根据相同过程对图像进行列扫描,得到列模块的个数和采样区域;
[0016]步骤6:得到行和列的采样区域之后,统计相应区域的块灰度比例,根据黑白像素比例来决定该区域的块灰度。
[0017]本发明相比现有技术,具有以下优点:
[0018]本发明提出了一种手机客户端图像扫描方法,相比于现有方法更简单方便,提高了识别效率。【附图说明】
[0019]图1是根据本发明实施例的手机客户端图像扫描方法的流程图。【具体实施方式】
[0020]下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
[0021]本发明的一方面提供了一种手机客户端图像扫描方法。图1是根据本发明实施例的手机客户端图像扫描方法流程图。
[0022]本发明根据二维码的自身特点利用一种移动终端捕获图像的定位和采样方法,相对于传统方法的边缘检测更简单方便,对几何校正后仍然带有失真的二维码进行采样,提高了识别效率。
[0023]对于二维码这种自身带有特征且稳定性高的符号,可以利用二维码符号的特征来进行检测。利用对定位框定位的检测方法来对定位框的边缘定位,就可以得到二维码的边缘方向。
[0024]首先对二维码的进行水平和竖直两个方向上的扫描;发现具备定位框特征,黑白块比例为1:1:3:1:1的区域,记录下来。在水平方向扫描二维码得到的具备定位框特征的区域,对区域的灰度值进行统计。选择一组值最小的像素点,计算出距离这组像素点距离最近的直线的方程,就是二维码的左边缘方向;同理选择一组值最大的像素点,计算离这组像素点距离最近的直线的方程就是二维码的右边缘方向。然后在竖直方向扫描二维码得到的具备定位框特征的区域,对该区域的灰度值进行统计。选择一组值最小的像素点,计算出离这组像素点距离最近的直线的方程,就是二维码的上边缘方向;同理选择一组值最大的像素点,计算离这组像素点距离最近的直线的方程就是二维码的下边缘方向。
[0025]具体检测步骤如下:
[0026]步骤1:水平方向扫描二维码记录第一个像素点的颜色为W;
[0027]步骤2:继续扫描,直到发现和W不同的颜色为B的像素点,记录当前颜色为W的像素点集的长度为LenA;继续扫描直到再次出现颜色为W的像素点,记录当前颜色为B的像素点集的长度记录为LenB;[〇〇28]步骤3:判断LenA和LenB的差值是否在第一误差阈值内,如果不是则回到第2步,如果是则转到第4步;
[0029]步骤4:继续扫描,直到发现和W不同的颜色为B的像素点,记录当前颜色为W的像素点集的长度为LenC;[〇〇3〇] 步骤5:判断LenC/3和(LenA+LenB)/2是否在第二误差阈值内,如果不是回到第2 步,如果是转到第6步。
[0031]步骤6:继续扫描,直到发现和B不同的颜色为W的像素点,记录当前颜色为B的像素点集的长度为LenD;[〇〇32] 步骤7:判断LenD和(LenA+LenB+LenC)/5是否在第三误差阈值内,如果不是回到第 2步,如果是转到第8步。
[0033]步骤8:继续扫描,直到发现和W不同的颜色为B的像素点,记录着一次颜色为W的像素点集的长度记录为LenE;[〇〇34] 步骤9:判断LenE和(LenA+LenB+LenC+LenD)/6是否在第四误差阈值内,如果不是回到第2步,如果是则将1^1^、1^1113、1^11(]、1^11〇和1^1^作为符合定位框特征的区域。
[0035]水平扫描得到所有结果区域,记录区域的起始像素点和终止像素点;选取终止像素点集合中值最大的N个像素点,得到距离N个像素点最短的直线方程就是二维码的右边缘方向;从起始像素点集合中选取值最小的N个像素点,得到距离这N个像素点最短的直线方程就是二维码的左边缘方向;竖直扫描时方法和水平扫描方法相同,能得到二维码的上边缘和下边缘方向。[〇〇36]关于计算距离N个像素点最短的直线方程,具体为,根据已知的N个像素点的坐标位置(xi,yi),(X2,y2),…,(xn,yn)来做出拟合直线y = kx+b,求得k和b的值使得误差平方和 E (yi_ (hi+b))2为最小,贝ijy = kx+b就是所求的直线方程。[〇〇37]传统的二维码采样方法,在经过几何校正后的可能会出现错误采样值,本发明根据行间的兼容度能得到实际采样区域,对该区域进行采样。即在确定每一行与每一列的实际采样区域交集后,进行像素统计来决定最终当前块的灰度。
[0038]像素行之间的兼容度的计算是关键,具体步骤如下:
[0039]步骤1:从二维码的左上角点开始,扫描每一行像素并记录为一个函数;
[0040]步骤2:从第一行开始扫描计算,将行扫描的函数与邻接行的函数进行兼容度计算。如果兼容度低于阈值,转到第四步。如果兼容度高于阈值,则邻接行确定为同一个行块。 继续扫描,直到出现了邻接行的兼容度低于阈值,每一个行块的宽度不小于2。
[0041]步骤3:得到行块的采样区域之后,转到第2步,从下一行开始计算,直到得到行块的采样区域。
[0042]步骤4:如果兼容度低于阈值,则邻接行确定为不属于同一个行块)。转到第2步,从下一行开始计算。
[0043]步骤5:根据相同过程对图像进行列扫描,得到列模块的个数和采样区域。
[0044]步骤6:得到行和列的采样区域之后,统计相应区域的块灰度比例,根据黑白像素比例来决定该区域的块灰度。[〇〇45]定义Mat为行或列像素的函数与行或列像素的函数的兼容度,定义Mat = l/(1 + Ex f(x,r)-g(x,r)|)
[0046]其中f(x,r)为r行的函数,g(x,r)为r-1行的函数。Mat越大两个函数兼容度越高, 意味着两行像素越大可能属于同一个行块。根据采样结果中的Mat的最大值和最小值来决定阈值。
[0047]在对二维码区域进行准确定位后,将进行解码,本发明二维码解码主要分为扫描获得二维码宽度,确定二维码方向,识别二维码数据。本发明不处理整个二维码区域,仅处理有限条扫描线上的数据。算法主要分如下几个步骤。[〇〇48](1)选择定位扫描过程中,最长的扫描线。将该扫描线与二维码区域的长度相对比。若在该扫描线与二维码区域长度的差值在最小单元宽度的范围内,则确定该扫描线是能够扫描到二维码全部单元的扫描线。反之,则认为该扫描线不能扫描到二维码全部单元, 需要根据二维码区域的四个顶点确定一组在二维码区域内的平行扫描线,由此可以避免二维码破损,扫描错误的情况。
[0049](2)在扫描过程中,使用双线性差值算法获得扫描步长为一个像素的扫描数据,用数组line[n]表示,其中n扫描线的长度。
[0050]对数组line中的灰度值进行判断。若一个点与其下一点的异或值为1则这个点就认为是边缘点,若这个点的灰度值为1则存入数组wb[w],若这个点的灰度值为0则存入数组 bw[m]。将Susan算子中的高斯滤波器大小设为1。记录边缘点所在像素点在line[n]数组中的索引位置,即是边缘点在扫描线上的相对位置。根据一阶导数的正负将由白到黑以及由黑到白的边缘点分别存入数组wb [ m ]、bw [ m ]中。故wb [ m ]的第一个点是扫描线的起始点,bw [m]的最后一个点应是扫描线的终止点。[〇〇51]获得按扫描顺序排列的所有条的边缘点在扫描线中的位置后,根据下式可得二维码中所有连续同色区域的宽度,按顺序交叉排列条和空便是完整的二维码的连续同色区域宽度信息
[0052]Wwide[m] =wb[m+l ]-bw[m]
[0053]bwide[m] =bw[m]-wb[m][〇〇54]将最窄单元宽度视为一个模块的宽度,根据以下公式将各个单元记为不同的正则化值{1,2,3,4}。
[0055]1.6S>7bJljBi = l;
[0056]1.65〈7匕〈2.65则& = 2;
[0057]2.65>7匕〈3.65则& = 3;
[0058]3.6S〈7bJljBi = 4;[〇〇59] h为第i个单元的宽度,对应正则化值。得到连续同色区域排列后根据PDF417 的编码表进行解码。
[0060]综上所述,本发明提出了一种手机客户端图像扫描方法,相比于现有方法更简单方便,提高了识别效率。
[0061]显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。
[0062]应当理解的是,本发明的上述【具体实施方式】仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边缘、或者这种范围和边缘的等同形式内的全部变化和修改例。
【主权项】
1.一种手机客户端图像扫描方法,其特征在于,用于移动终端对二维码进行定位和识 别,包括:通过二维码图像的定位框边缘方向确定二维码图像的边缘方向;根据行间的兼容度得 到实际采样区域,确定每一行与列的实际采样区域,通过像素统计确定当前块灰度。2.根据权利要求1所述的方法,其特征在于,所述根据行间的兼容度得到实际采样区 域,进一步包括:步骤1:从二维码的左上角点开始,扫描每一行像素并记录为一个函数;步骤2:从第一行开始扫描计算,将行扫描的函数与邻接行的函数进行兼容度计算:定义Mat为行或列像素的函数之间的兼容度Mat = l/(l+Ex|f(x,r)-g(x,r) |)其中f (x,r)为r行的函数,g(x,r)为r-1行的函数;根据采样结果中的Mat的最大值和最小值来决定阈值;如果兼容度低于阈值,转到第4步;如果兼容度高于阈值,则邻接行确定为同一个行块, 继续扫描,直到出现了邻接行的兼容度低于阈值,其中每一个行块的宽度不小于2;步骤3:得到行块的采样区域之后,转到第2步,从下一行开始计算,直到得到行块的采 样区域;步骤4:如果兼容度低于阈值,则邻接行确定为不属于同一个行块,转到第2步,从下一 行开始计算;步骤5:根据相同过程对图像进行列扫描,得到列模块的个数和采样区域;步骤6:得到行和列的采样区域之后,统计相应区域的块灰度比例,根据黑白像素比例 来决定该区域的块灰度。
【文档编号】G06K7/10GK106022190SQ201610335073
【公开日】2016年10月12日
【申请日】2016年5月19日
【发明人】董政, 吴文杰, 陈露, 李学生
【申请人】成都陌云科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1