本发明涉及图形码的扫描、解码处理技术,尤其涉及一种图形码处理方法及装置。
背景技术:
二维码等图形码在社交、支付等场景中得到广泛应用。用户通过调整扫码设备(如具有摄像头的智能手机、平板电脑等移动终端,或者,专用于扫码的终端如扫描枪)的位姿,使得图形码在图像采集的预览界面中呈现的图像的轮廓与预览界面中预定的扫描区域一致(例如,在预览界面中提示扫描区域的轮廓,以使用户调整终端的位姿)时,扫码设备对图形码进行采集并解码得到图形码中的信息,如收款方的接收账户信息,或者广告中的落地页地址等,从而对应实现电子货币的发送、或者页面的跳转。
实际应用中,用户扫描图形码时经常遇到图形码在图像采集的预览界面中成像与预览界面中设定的扫描框不一致的情况,导致采集到的图形码相对扫描框过小,或者在扫描框内没有形成不完整的图形码图形,从而无法对采集到的图形码进行解码。
技术实现要素:
本发明实施例提供一种图形码处理方法及装置,能够解决图形码成像的尺寸过小或者不完整进而导致无法进行识别的问题。
本发明实施例的技术方是这样实现的:
第一方面,本发明实施例提供一种图形码处理方法,包括:
对包括图形码的环境进行采集;
确定所采集图像的像素在不同参考方向的连续分布区域,将所述连续分布区域的重叠区域识别为所述图形码的潜在分布区域;
从所述潜在分布区域对应的局部图像中识别出扫描步长,基于所述扫描步长扫描所述局部图像得到图形码图像;
基于所述图形码图像进行解码处理,直至解码成功得到所述图形码中所调制的信息。
第二方面,本发明实施例提供一种图形码处理装置,包括:
采集单元,用于对包括图形码的环境进行采集;
定位单元,用于确定所采集图像的像素在不同参考方向的连续分布区域,将所述连续分布区域的重叠区域识别为所述图形码的潜在分布区域;
识别单元,用于所述潜在分布区域对应的局部图像中识别出扫描步长,基于所述扫描步长扫描所述局部图像得到图形码图像;
解码单元,用于基于所述图形码图像进行解码处理,直至解码成功得到所述图形码中所调制的信息。
第三方面,本发明实施例提供一种图形码处理装置,包括存储介质和处理器;存储介质中存储有可执行指令,用于引起处理器执行本发明实施例提供的图形码处理方法。
第四方面,本发明实施例提供一种存储介质,其中存储有可执行指令,用于执行本发明实施例提供的图形码处理方法。
本发明实施例具有以下有益效果:
通过在预览界面中对呈现的图像中尝试识别图形码并进行解码,与仅基于在扫描框中形成的图像进行解码相比,用户只要调整采集方位使得图形码在预览界面完整成像即可进行解码,不需要继续调整采集的方位使图形码在扫描框中形成完整的图形码,显著降低了扫码的操作难度;
因环境的限制导致图形码无法在扫描框内无法完整成像时,只要调整采集方位在预览界面内完整成像即可完成扫码和解码,克服了相关技术提供的扫码方式因环境限制时,因在扫描框内无法完整成像而导致识别解码失败的问题。
附图说明
图1-1至图1-3为相关技术基于扫描框扫码的示意图;
图2-1是本发明实施例中图形码处理方法的一个可选的流程示意图;
图2-2是本发明实施例中图形码处理方法的一个可选的场景示意图;
图3是本发明实施例中图形码处理装置的一个可选的软硬件结构示意图;
图4-1是本发明实施例提供的图形码处理方法的一个可选的流程示意图;
图4-2是本发明实施例提供的图形码处理方法的一个可选的流程示意图;
图5-1至图5-3是本发明实施例中在预览界面形成不同图形码的一个可选的示意图;
图6是本发明实施例提供的图形码处理方法的一个可选的流程示意图;
图7-1至图7-38是本发明实施例中从采集包括二维码的图像到识别出二维码图像处理过程中的各处理结果的示意图;
图8-1和图8-2为本发明实施例中图形码处理装置的可选的功能结构示意图。
具体实施方式
以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
对本发明进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)图形码,使用特定的图形元素按一定规律在平面(二维方向上)分布形成的图形。示例性地,图形码使用若干个与二进制码字相对应的符号(图形元素)来表示文字或数值等信息。通常,图形码的码制有其特定的字符集,字符集中的每个符号占有一定的宽度,具有一定的校验功能等。常用的图形码包括如二维码、条形码等。
2)图形码图像,包括有至少部分图形码的图像,例如,图形码图像的全部区域都是二维码的成像,或者,图形码图像的部分成像区域是二维码的成像,其余部分区域是环境中其他对象如人、物的成像。
3)图像二值化,将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果。
4)解码,基于二维码图像中的符号还原为二进制码字,并基于二进制码字还原出信息(如页面地址、联系人信息等)的过程。
5)实例,也即请求扫描二维码的实例,扫码设备中运行的请求扫码的应用、进程等,如社交应用。
这里以图形码为二维码为例,针对相关技术提供的二维码扫描、以及解码方式进行说明。参见图1-1示出的扫描二维码的一个可选的场景示意图,当图形码距离用户较近且图形码的尺寸较大时,如果用户移动不方便,会使得图形码在预览界面的成像超出预定的扫描区域,导致在扫描区域执行扫描操作时仅能够扫描到部分的二维码;参见图1-2示出的扫描二维码的一个可选的场景示意图,当二维码的位置较高时,在扫描框内仅能够采集到部分的二维码;参见图1-3示出的扫描二维码的一个可选的场景示意图,用户使用终端采集二维码的方位无法调整(例如,受限于用户所处环境的空间有限的情况),导致在扫描区域执行扫描操作时仅能够扫描到部分的二维码。
上述情况都会因无法对采集到图形码而无法进行解码,针对上述问题,本发明实施例提供一种图形码处理方法,参见图2-1示出的图形码处理方法的一个可选的流程示意图,步骤101,对包括图形码的环境进行采集;步骤102,确定所采集图像的像素在不同参考方向的连续分布区域,将连续分布区域的重叠区域识别为图形码的潜在分布区域;步骤103,从潜在分布区域对应的局部图像中识别出扫描步长,基于扫描步长扫描局部图像得到图形码图像;步骤104,基于图形码图像进行解码处理,直至解码成功得到图形码中所调制的信息。
本发明实施例可以提供应用上述图形码处理方法的图形码处理装置,图形码处理装置可以采用各种方式来实施。
例如,如图2-2所示,图形处理装置可以实施为具有基本的图像采集功能的智能手机、平板电脑等各种移动终端,移动终端通过内置的摄像头(如前置摄像头、后置摄像头)对采集到的图像中识别出图形码。
又例如,图形码处理装置的模块分布实施在移动终端侧和云端的服务器侧,由移动终端采集到包括图形码的图像并发送到云端的服务器,由云端的服务器在图像中识别出图形码并进行解码,并将解码的结果发送到移动终端进行处理。
又例如,可以图形码处理模块实施为具有图像采集功能以及图形码识别、解码功能的片上系统(soc,systemonsystem),采用专用集成电路(asic)和逻辑可编程门阵列(fpga)等技术实现,支持在采集的图像中进行图形码图形进行识别和解码,片上系统支持通过方式与移动终端或者服务器进行通信,在满足输出条件(如定期输出时间达到)输出定位和/或识别的结果。
再例如,图形码处理装置可以实施为用于识别图形码的专用扫描设备,包括:条形码扫描枪、二维码扫描枪等。
本发明实施例还可以提供存储介质,例如,存储介质中包括用于执行本发明实施例提供的图形码处理方法的可执行指令,可执行指令可以提供为应用、应用插件、操作系统升级包的形式、或者提供为编译的各种形式的二进制代码的形式,可以理解地,存储介质在物理形态可以采用硬盘、光盘等形式。
在硬件层面上,示例性地,图形码处理装置可以基于移动终端(或者服务器)的资源如计算资源(如处理器)和通信资源(如网络接口)实现,此时,移动终端作为执行图2-1示出的图形码处理方法的实体。
当然,本发明实施例提供的图形码处理方法的部分步骤可以在用户侧的移动终端执行,例如由即时通信服务器和移动终端协同执行上述的图形码处理方法,相应地,图形码处理装置基于即时通信服务器侧和移动终端侧的资源如计算资源(如处理器)和通信资源(如网络接口)共同实现。
在软件层面上,图形码处理装置可以实施为存储于存储介质的可执行指令,包括诸如程序、模块之类的计算机可执行指令,存储介质可以设置与即时通信服务器,或者,分布设置在即时通信服务器和移动终端中。
如上,参见图3示出的图形码处理装置10的一个可选的软硬件结构示意图,图形码处理装置10包括件层、中间层、操作系统层和软件层。然而,本领域的技术人员应当理解,图3示出的图形码处理装置10的结构仅为示例,并不构成对图形码处理装置10结构的限定。例如,图形码处理装置10以根据实施需要设置较图3更多的组件,或者根据实施需要省略设置部分组件。
图形码处理装置10的硬件层包括处理器11、输入/输出接口13,存储介质14以及网络接口12,组件可以经总线连接通信。
处理器11可以采用中央处理器(cpu)、微处理器(mcu,microcontrollerunit)、专用集成电路(asic,applicationspecificintegratedcircuit)或逻辑可编程门阵列(fpga,field-programmablegatearray)实现。
输入/输出接口13可以采用如显示屏、触摸屏、扬声器等输入/输出器件实现。
存储介质14可以采用闪存、硬盘、光盘等非易失性存储介质实现,也可以采用双倍率(ddr,doubledatarate)动态缓存等易失性存储介质实现,其中存储有用以执行上述信息处理方法的可执行指令。
示例性地,存储介质14可以与图形码处理装置10共同在同一地点设置,也可以相对于图形码处理装置10异地远程设置,或者相对图形码处理装置10本地和异地分布设置。网络接口12向处理器11提供外部数据如异地设置的存储介质14的访问能力,示例性地,网络接口12可以基于近场通信(nfc,nearfieldcommunication)技术、蓝牙(bluetooth)技术、紫蜂(zigbee)技术进行的近距离通信,另外,还可以实现如基于码分多址(cdma,codedivisionmultipleaccess)、宽带码分多址(wcdma,widebandcodedivisionmultipleaccess)等通信制式及其演进制式的通信。
驱动层包括用于供操作系统16识别硬件层并与硬件层各组件通信的中间件15,例如可以为针对硬件层的各组件的驱动程序的集合。
操作系统16用于提供面向用户的图形界面,示例性地,包括插件图标、桌面背景和应用图标,操作系统16支持用户经由图形界面对设备的控制本发明实施例对上述设备的软件环境如操作系统类型、版本不做限定,例如可以是安卓操作系统、ios操作系统、linux操作系统或unix操作系统等。
软件层包括需要扫描图形码的各种应用17,示例性地,如通过扫描图形码添加好友、转账或赠送电子红包的社交应用,通过扫描图形码向商家进行支付的电子支付应用等。
基于图2-1示出的图形码处理方法以及图3示出图形码处理装置提出本发明以下具体实施例。
下面,以本发明实施例提供的图形码处理方法在用户侧的移动终端实施为例进行说明,相应地,图3示出的图形码处理装置可以实施为用户侧的移动终端。对于图形码处理装置的其他实施方式可以参照下述的记载而实施。基于本发明实施例提供的图形码处理方法在移动终端侧的实施,本领域技术人员可以轻易将部分处理迁移到云端的服务器实施,从而由云端的服务器与用户侧的移动终端协同实施本发明实施例提供的图形码处理方法,例如,由移动终端完成对包括图形码的图像的采集,由云端的服务器从图像中定位图形码并进行识别,将识别的二维码发送到移动终端中需要基于图形码识别结果进行处理的应用(如社交应用、电子支付应用等)。
以下,以图形码处理装置实施为扫描设备(如智能手机等移动终端,或者扫描枪等中扫描设备),并由扫描设备实施图形码处理方法为例,结合图4-1示出的本发明实施例提供的图形码处理方法的一个可选的流程示意图进行说明,参见图4-1,图形码处理包括以下步骤:
步骤201,开启图形码扫描功能。
例如,用户在使用手机中的社交应用时,通过触控操作或其他形式的触发操作启动社交应用中的扫码功能如“扫一扫”,以扫描二维码名片、二维码收款账号或者二维码网址。又例如,商场的收银人员使用扫描枪的扫码收银功能,以扫描用户采购商品的条形码,或者扫描用户出示的付款二维码以进行划款。
后续步骤图形码扫描功能被开启后扫描设备的响应进行说明。
在扫描设备的图形码扫描功能开启时,即使扫描设备没有开启预览界面以及扫描框,当用户将扫描设备调整至合适的采集方位时,扫描设备仍然可以采集到包括完整二维码的图像。
在一个实施例中,在扫描设备的图形码扫描功能开启时,扫描设备还可以开启预览框以及位于预览框内的扫描框,从而便于用户通过观看采集的图像而调整扫描设备的采集方位,实现高效采集到包括完整二维码图像的效果,结合步骤202a和步骤202b进行说明。
步骤202a,开启图像采集的预览界面,并在预览界面中加载扫描框。
步骤202b,对包括图形码的环境进行采集,并在预览界面中呈现采集得到的图像流中的图像。
如果扫描功能开启时通过开启预览框,用户通过观察二维码是否在预览框内完成成像,可以有针对性对扫描设备的采集方位进行调整,从而使二维码在预览框内完整成像,
位于预览框内部的扫描框用于辅助用户调整扫描设备进行采集的方位,从而使环境中的图形码在预览界面的成像尺寸与扫描框一致或者位于扫描框内部,从而实现对图形码的快速扫描和解码。
可以理解地,扫描框的位置和形状可以有多种方式,例如,扫描框位于预览界面的中心部位(当然,可以位于其他部位如预览界面的上部)并呈现扫描框的外部轮廓,轮廓采用方形、圆形等形状(可以采用实线也可以采用虚线方框)。
二维码在预览界面的完整成像包括这样的几种情况:1)如图5-3所示,二维码在扫描框内完整成像;2)如图5-2所示,二维码在预览框内完整成像,在扫描框内部分成像;3)二维码在预览框内除扫描框之外的区域完整成像。
扫描设备通过摄像头(例如,扫描设备自身设置的摄像头、或通过有线、无线方式进行控制的外部的摄像头)对包括图形码的环境采集形成帧图像(简称图像)构成的流,并在预览界面实施呈现图像流中的各图像。
需要指出的是,由于扫描设备采集的方位受到用户握持位姿的影响,在扫描设备开始采集后,用户往往难以快速调整扫描设备调用摄像头采集的方位,以使得图形码在预览界面的成像与扫描框匹配,例如,如图5-1所示,预览界面中最初呈现的图像中可能未呈现图形码,随着用户对扫描设备采集方位的调整,在预览界面中呈现有部分的图形码,直至在预览界面中完整成像。
步骤203,确定所采集图像的像素在不同参考方向的连续分布区域,将连续分布区域的重叠区域识别为图形码的潜在分布区域。
对采集图像进行二值化处理,确定所采集图像的二值化图像中黑色像素在不同参考方向例如x轴、y轴的连续分布区域,将连续分布区域的重叠区域识别为图形码在相应图像的潜在分布区域,潜在分布区域是指,在所采集区域中具有图形码的概率最大的区域。
步骤204,从潜在分布区域对应的局部图像中识别出扫描步长,基于扫描步长扫描局部图像得到图形码图像。
扫描设备的采集方位往往处于动态调整过程中,因此采集的图像中不可避免地存在图像码之外的其他对象,如环境中的景物等,潜在分布区域扫描设备采集的图像中分布有图形码的区域,还可能包括其他的对象。
在一个实施例中,对于从潜在分布区域对应的局部图像中识别出扫描步长,基于扫描步长扫描局部图像得到图形码图像时,通过如下步骤实现:
步骤(1)在局部图像的二值化图像中分析出所述图形码中符号的尺寸作为扫描步长。
在一个实施例中,对局部图像的二值化图像进行膨胀和腐蚀操作,在局部图像的二值化图像中识别出各黑色像素块(是由连续分布的黑色像素的集合)以及相邻尺寸的黑色像素块的累计出现次数,确定最高累计出现次数对应的黑色像素块的尺寸,最高累计出现次数对应的黑色像素块中中间尺寸的像素块为图形码中符号的尺寸。
例如,在局部图像的二值化图像中识别出各黑色像素块以及相邻尺寸的黑色像素块的出现次数,确定最高出现次数对应的黑色像素块的尺寸时,对所述局部图像的二值化图像按照不同的参考方向进行抽样得到条状图像,识别各条状图像的直方统计图中连续分布区域的长度,统计各长度以及在长度波动范围内的相邻长度的出现次数,选取最高出现次数的对应的长度作为最高出现次数对应的黑色像素块的尺寸。
步骤(2)基于所述扫描步长扫描所述局部图像得到图形码图像。
在一个实施例中,以符号的尺寸为扫描步长对局部图像的二值化图像进行扫描,将扫描得到符合扫描模式的像素点的点集映射到局部图像的二值化图像中,将映射得到的像素点的点集识别为图形码图像。一般地,以符号的尺寸为扫描步长对局部图像的二值化图像进行扫描之前,可以对局部图像的二值化图像进行膨胀和腐蚀操作以去除噪声,避免二值化图像中噪声对确定图形码中的符号的尺寸的精度产生不利影响。
例如,在以符号的尺寸为扫描步长对局部图像的二值化图像进行扫描时,检测到所述局部图像的二值化图像中各黑色像素点是否为符合预定扫描模式的黑色像素点、以及与所述黑色像素点(符合预定扫描模式的黑色像素点)相距扫描步长的位置是否具有符合预定扫描模式的白色像素点时,得到黑色像素点的点集作为符合扫描模式的像素点的点集,以点集的形式构成图形码图像。
另外,在将扫描得到符合扫描模式的像素点的点集映射到局部图像的二值化图像之前,基于像素点的点集的直方图对像素点的点集进行去噪处理,可以有效去除解码的干扰,提升解码的成功率。
由于扫描设备采集的每个图像的方位不同,相应地,当图像中包括图形码时图形码中符号的尺寸也存在区别,通过对局部图像的二值化图像分析出符号的尺寸,实现了基于图像流中每个图像的采集方位自适应确定相应图像中图形码的扫描步长的效果,与使用固定的扫描步长对图像中二维码进行扫描相比,扫描结果更更精确。
步骤205,调整图形码图像与扫描框的尺寸一致,基于调整后的图形码图像进行解码处理,并判断解码是否成功,如果成功,则执行步骤206,否则,返回步骤203继续处理采集到的下一图像。
一般地,扫描设备对与扫描框的尺寸一致的图形码图像进行解码,由于扫描框中图形码图像的尺寸是确定的,因此可以快速识别出图形码的定位符号并进行解码,解码的效率高,然而上述在预览界面中识别出的图形码图像往往不会与扫描框的尺寸一致,通过将图形码图像的尺寸调整到扫描框一致,调用基于扫描框的扫码处理方案,提升了图形码解码的效率和精度。
步骤206,中止对包括图形码的环境进行采集。
在一个实施例中,当解码成功即得到图形码中调制的信息后,还可以执行以下步骤207和步骤208至少之一:
步骤207,呈现图形码中调制的信息。
例如,当图形码为二维码名片时,呈现二维码中调制的联系人的名称等基本信息,当图形码为页面地址时,呈现二维码中调制的地址信息。
步骤208,发送图形码中调制的信息至请求扫描图形码的实例。
例如,当对浏览器请求扫描的图形码解码得到页面地址时,将页面地址发送给浏览器供浏览器加载相应的页面数据。
仍然结合图5-1示出的二维码扫码的一个示例对上述图形码处理方法的实际应用场景进行说明,用户使用扫描设备运行的浏览器需要扫描网址二维码时,开启浏览器中的扫码功能,扫描设备的摄像头对根据当前采集方位采集图像,在预览界面中加载扫描框,并在预览界面实时呈现图像流中的图像,用户开启扫码功能时,由于扫描设备的采集方位没有对准图形码,导致图形码没有在预览界面51中成像,用户调整扫描设备的采集的方位,使图形码在预览界面52中呈现有部分的二维码图像,随着采集方位的不断校准,在预览界面53中呈现完整的二维码图像,在预览界面53中二维码图像虽然没有全部位于扫描框中,如前所述,基于上述的图形码处理方法能够对二维码图像进行解码得到其中调制的页面地址,这样,就克服了相关技术需要用户继续调整扫描设备的采集方位,以在扫描框内呈现完整的二维码图形才能进行解码的限制,降低了二维码扫码的操作难度,提升了二维码扫码的效率。
另外,对于这样的情况,当需要扫描的二维码位于狭小的空间内且面积非常大时,用户无法移动至距离二维码足够远的位置以使得二维码在预览界面内成像完全位于扫描框内,但是使二维码完全在预览界面内成像则相对容易,那么基于上述的图形码处理方法对在预览界面53内的二维码图像进行解码,克服了相关技术依赖扫描框时因二维码面积过大而无法扫码的限制。
再对于这样的情况,当需要扫描的二维码位于较高的位置,用户因不能调整扫描设备至足够高的位置,导致二维码在扫描框内的成像不完整,但是,调整扫描设备的采集高度而使二维码在预览界面53形成完整成像则相对容易,从而克服了因二维码面积过大而无法扫码的限制。
在一个实施例中,参见图4-2示出的图形码处理方法的一个可选的流程示意图,基于图4-1,在步骤203之前,还包括以下步骤:
步骤209,基于所采集的图像在扫描框内形成的局部图像进行解码处理,检测到是否解码成功,如果成功,则转入步骤206并执行步骤207;如果失败,则转入步骤203。
仍以二维码扫码为例对图5-2、图5-3示出的图形码处理方法的应用场景进行说明,当用户使用扫码设备扫描二维码时,因距离二维码较近而无法使二维码在扫描框内完整成像时,首先基于扫描框内的局部图像尝试解码,对于图5-3所示的情况,由于二维码在扫描框内已经完整成像,因此基于扫描框内的局部图像可以解码成功;而对于图5-2的情况,由于二维码在扫描框内没有完整成像导致解码失败;然后,基于预览界面中当前呈现的图像定位二维码的潜在分布区域,基于潜在分布区域识别出二维码并进行解码,由于在图5-3中二维码在预览界面完整成像,从而可以解码得到二维码中调制的信息。
可以看出,通过首先尝试使用在扫描框内的图像进行界面,然后尝试使用预览界面中的图像(也就是预览界面中当前所呈现的图像流中的图像)进行解码,由于基于扫描框内图像解码时更容易定位二维码的分区区域,因此扫码效率相对基于预览框内图像定位二维码并进行解码要高,一方面,通过首先使用二维码内图形解码的方案能够保证解码的效率,另一方面,在基于扫描框内图像解码失败时使用预览界面中图像解码,能够最大程度提升解码成功率,避免用户频繁调整采集方位的问题,以及因环境限制无法如何调整采集方位也无法使二维码在扫描框内完整成像的问题。
另外,需要说明的是,由于本发明实施例是基于所采集的图像(可选地,在预览框内呈现所采集的图像)进行图形码的解码,因此预览框中加载扫描框并不是实施上述图形码处理方法的必要条件,例如,在另一个场景中,用户通过预览框调整采集方位直至图形码在预览框内完成成像,此时,无论图形码是否在扫描框内成像,均可以通过图4-1以及后续图6示出的图形码处理方法进行识别和解码,从而,对于用户来说,使图形码在预览界面内完成成像较使图形码在扫描框内完整成像更加容易(因为预览界面的采集角度更大),对于用户来说,不需要使用扫描框对准图形码,因此扫码更加简单。
结合图6示出的图形码处理方法的一个可选的流程示意图,对二维码扫码的具体示例对前述的图形码处理方法的实施进行说明,在图6中包括以下步骤:
步骤401,输入图像,也就是通过扫码设备的摄像头采集到包含单个二维码的图像。
步骤402,图像二值化。
首先根据整幅图像的像素值分布,计算出图像二值化阈值,根据二值化阈值对图像进行二值化,图1-1、图1-2和图1-3中预览界面二值化后的图像对应如图7-1、图7-2和图7-3所示。
步骤403,对二值化后的图像进行膨胀和腐蚀,去除图像中噪声点。
示例性地,7-1、图7-2和图7-3示出的二值化图形进行膨胀滤波后如图7-4、图7-5和图7-6所示。
步骤404,对去噪后的图像进行直方图统计,统计每行与每列黑色像素的个数(统计数据)。
示例性地,图7-4所示的二值化图像中每行的黑色像素的直方统计图对应如图7-7和图7-8所示,图7-5所示的二值化图像中每行的黑色像素的直方统计图对应如图7-9和图7-10所示,图7-6所示的二值化图像中每行的黑色像素的直方统计图对应如图7-11和图7-12所示。
步骤405,根据直方图去噪算法对黑色像素直方图进行去噪。
要根据黑色像素统计直方图最大可能的找出二维码图像所在区域,需要先去掉直方图中的干扰统计,本发明实施例提供的直方图统计数据去噪算法如下:
直方图统计数据去噪算法:
(1)将直方图分成n等分,暂设n=10,将每个等分划分为左右两半,将左右两半统计数据之差与较小一半的相差a(设a=3)倍的等分统计数据置为0,每等分中最大值与最小值相差b(设b=4)倍以上的,统计数据置为0,可以表述为:
righthistsum表示为直方图等分每一份中的右半部分,lefthistsum表示为直方图等分每一份中的左半部分。maxhist表示为直方图等分每一份中的最大值,minhist表示为直方图等分每一份中的最小值。
当righthistsum>lefthistsum时,
errorrightleft=righthistsum-lefthistsum;
如果:errorrightleft/lefthistsum>3,则将等分内的所有直方图统计值设置为0.;或者,当maxhist/minhist>=4时,则将等分内的所有直方图统计值设置为0。
(2)将等分块中左右相邻块的所有统计值都设置为0的统计块的所有统计值也设置为0,假设将10等分中所有统计值可设置0的等分标记为‘1’,保持原统计数据所有统计值不变的等分标记为‘0’,则符合标记模式为‘101’的直方图等分时,需要将‘101’中标记为‘0’的等分即原来保持直方图统计数据的等分也需要将其等分内的所有统计值置为0。
(3)计算等分块中正常信号与相邻噪声的比值,去除信噪比较小的数据分块,保留信噪比最大的数据块,即假设保留下来的直方图统计块为等分块2、等分块3、等分块4,而等分块1与等分块5均被置为0,等分块2的总统计值为a,等分块4的总统计值为b,等分块1的总统计值为c,等分块5的总统计值为d,则,
等分块2与等分块1的信噪比为:z1=a/c;
等分块4与等分块5的信噪比为:z2=b/d;
去除掉噪声之后,从而获得直方图去噪后的统计图。
步骤406,对于形成的直方图连接区域整体,将直方图连接区域整体映射回膨胀腐蚀(铝箔)图像,将图像中连接区域整体对应的图像块取出,获得局部二值(化)图像。
以图7-7,图7-8示出的直方统计图为例,将直方统计图如图7-13和图7-14进行n等分,暂设n=10:图7-13中,10等分从左到右标记为:等分1,等分2,等分3,等分4,......,等分10。
等分1中左半部分统计和为:17372,右半部分统计和为:2644,最大值为:1276,最小值为:30。
等分2中左半部分统计和为:9162,右半部分统计和为:10568,最大值为:398,最小值为:25。
等分3中左半部分统计和为:10657,右半部分统计和为:9879,最大值为:421,最小值为:111。
等分4中左半部分统计和为:11269,右半部分统计和为:8966,最大值为:408,最小值为:154。
等分5中左半部分统计和为:11301,右半部分统计和为:9363,最大值为:384,最小值为:164。
等分6中左半部分统计和为:7654,右半部分统计和为:12156,最大值为:426,最小值为:146。
等分7中左半部分统计和为:10010,右半部分统计和为:12871,最大值为:430,最小值为:228。
等分8中左半部分统计和为:10326,右半部分统计和为:8773,最大值为:394,最小值为:42。
等分9中左半部分统计和为:8129,右半部分统计和为:2199,最大值为:483,最小值为:28。
等分10中左半部分统计和为:3179,右半部分统计和为:15489,最大值为:1154,最小值为:46。
图7-13从左到右的等分1到等分10的统计和分别为:
20016;19730;20536;20235;20664;19810;22881;19099;10328;18668。
根据直方图去噪算法第一步,将10等分中可设置0的等分标记为1,保持原统计数据的等分标记为0,于是图7-16从左到右的等分1到等分10的标记结果分别为:
1;1;0;0;0;0;0;1;1;1。
标记中没有101的模式,于是不需要去掉独立分块统计图。
分块3与分块2的信噪比为:z1=20536/19730=1.04;
分块7与分块8的信噪比为:z2=22881/19099=1.198。
图7-14中,10等分从下到上标记为:等分1,等分2,等分3,等分4,......,等分10。
等分1中左半部分统计和为:4509,右半部分统计和为:2577,最大值为:177,最小值为:0。
等分2中左半部分统计和为:7892,右半部分统计和为:11714,最大值为:289,最小值为:39。
等分3中左半部分统计和为:1114,右半部分统计和为:1167,最大值为:45,最小值为:5。
等分4中左半部分统计和为:5825,右半部分统计和为:3346,最大值为:170,最小值为:9。
等分5中左半部分统计和为:8609,右半部分统计和为:16759,最大值为:346,最小值为:9。
等分6中左半部分统计和为:17127,右半部分统计和为:13688,最大值为:342,最小值为:134。
等分7中左半部分统计和为:14353,右半部分统计和为:16442,最大值为:326,最小值为:109。
等分8中左半部分统计和为:17223,右半部分统计和为:10382,最大值为:363,最小值为:20。
等分9中左半部分统计和为:3461,右半部分统计和为:2928,最大值为:115,最小值为:24。
等分10中左半部分统计和为:6838,右半部分统计和为:26013,最大值为:708,最小值为:23。
图7-14从下到上的等分1到等分10的统计和分别为:
7086;19606;2281;9171;25368;30815;30795;27605;6389;32851。
根据直方图去噪算法第一步,将10等分中可设置0的等分标记为1,保持原统计数据的等分标记为0,于是图7-17从下到上的等分1到等分10的标记结果分别为:
1;1;1;1;1;0;0;1;1;1。
标记中没有101的模式,于是不需要去掉独立分块统计图。
分块6与分块5的信噪比为:z1=30815/25368=1.215;
分块7与分块8的信噪比为:z2=30795/27605=1.115。
根据直方图统计数据去噪算法,去除统计的干扰数据,得到去噪后的直方图7-15和图7-16所示。图7-15中保留的列统计范围为:144~503,图7-16中保留的行统计范围为:640~895。获得行统计范围与列统计范围其相交范围内的图像块如如图7-17所示。
步骤407,对局部图像块进行图像条抽样。
步骤408,获得6块局部图像抽样条图像,对这6块图像中的3块行抽样图像进行x轴直方图统计,3块列抽样进行y轴直方图统计:包括:
(1)从中间按行方向取一个图像块,该图像块的宽为边界区域内图像的宽,高为b,b暂时设10个像素点,b是可调节的,并且对图像进行膨胀腐蚀处理后获得如图7-18所示的图像。
(2)从中间按列方向取一个如图7-19所示的图像块,该图像块的宽为a,a暂时设为10个像素点,a是可调节的,高为统计边界取出来的图像的高度。
(3)对边界区域内的图像块中以行方向从中间将图像块分为上下两个长条区域,在两个长条区域内的1/2处,分别再以行方向取一条图像块,如图7-20和图7-21所示,该图像块的宽为边界区域内图像的宽,高为b,b暂时设20个像素点,b是可调节的。
(4)对边界区域内的图像块中以列方向从中间将图像块分为左右两个长条区域,在两个长条区域内的1/2处,分别以列方向取一条图像块,如图7-22和图7-23所示,该图像块的宽为a,a暂时设为20个像素点,a是可调节的,高为统计边界取出来的图像的高度。
自适应步长计算方法如下:
目前,算法获得了6个小的图像区域块,3个行方向的图像块,3个列方向的图像块。
(1)对行方向的图像,对黑色像素进行直方图统计,将其统计值记录在x坐标轴上。
(2)对列方向的图像,对黑色像素进行统计,将其统计值记录在y坐标轴上。
(3)对x,y轴上统计值连成的线段按长度进行统计,获得每条线段的统计数目。
(4)计算每条线段长度值以长度波动值为h(设h=2)范围内的线段长度总数,并将该数目标记在该长度值上。
(5)将线段长度值本身长度波动值统计数与左右相邻长度波动值h2(设h2=1)内的统计数相加之和最大的长度选为自适应步长。
举例说明:
图7-18,图7-20,图7-21在x轴上的直方统计图分别如图7-24、图7-25和图7-26所示。
图7-19、图7-22和图7-23在y轴上的直方统计图分别如如图7-27、图7-28和图7-29所示。
图7-24在x轴从左到右的线段长度值为:
26;26;10;7;9;16;6;3;12;22;7;16。
图7-25在x轴从左到右的线段长度值为:
10;42;27;34;14;30;41。
图7-26在x轴从左到右的线段长度值为:
11;14;15;16;14;19;39;55;17;12。
图7-27在y轴从上到下的线段长度值为:
11;15;50;12;13;14;16;12。
图7-28在y轴从上到下的线段长度值为:
5;10;26;8;36。
图7-29在y轴从上到下的线段长度值为:
104;14;24;48。
步骤409,根据直方图统计构成的连续线段长度进行长度数目统计,根据自适应步长统计算法,计算自适应步长。
对以上长度值分别以长度波动值为2和长度波动值为3的进行数目统计,得到统计数目如下表1所示:
表1
取长度波动值为2时的统计值,求统计数据在线段长度相距为1的统计数目之和:
可求得线段长度13与其相距为1的长度12,14,三个长度的统计总和为:15+14+16=45,45为最大值,于是选定长度13为自适应步长。
步骤410,以自适应步长为单元的二维码扫描模式对滤波二值化图像按行进行扫描。
步骤411,获得二维码区域点图。
检测二维码覆盖范围:
在获得二维码探测步长后,按照以下扫描模式,对整幅图像进行扫描,从而获得二维码所在区域的点集。二维码扫描模式如图7-30所示:
扫描模式描述:
(1)扫描模式中,检测点像素值必须符合像素值为0的黑色点;
(2)扫描模式中,检测点的上下2个像素处各有一个黑色点,检测点斜对角方向,行方向相距2个像素,列方向相距1个像素处有4个黑色点,检测点左右相距4个像素点处各有一个黑色点;
扫描模式中,相距检测点距离为检测步长steplen处各有一辅助点,辅助点的像素值为255为白色点,辅助点周围必须分布有8个其他白色点,分布规则和检测点周围点的分布一致,如图7-30所示。
通过扫描模式对图7-4进行扫描,获得具有二维码特性数据点,如图7-31所示。
步骤412,对二维码区域点图进行行列直方图统计,取最大块统计区域。
对二维码通过扫描模式检测到的点进行直方图统计,如图7-32和图7-33所示,直方图去噪后图像如图7-34和图7-35所示。
步骤413,映射回二值化图像,获得精确的二维码图像块。
根据直方图最大块区域x范围为:79~576,y范围为:539~993,即宽为497,高为454,将该区域映射到二值化图像中如图7-36所示。
步骤414,根据二维码图像块与扫码框的大小比值进行缩放。
步骤415,将二维码图像块缩放成扫码框可识别的大小图像进行解码,从而完成整个单个二维码自适应定位识别的过程。
为了保留跟多的边界信息,将xy范围扩大为:x范围为:59~596,y范围为:519~1013,对应的图像如图7-37所示。
而原扫描框的大小为:宽409,高370。于是可以算得截取出的二维码图像的缩放比为:宽度缩放比=扫描框宽/二维码截取图像宽=409/497=0.82。
高度缩放比=扫描框高/二维码截取图像高370/454=0.81。
于是取缩放比0.7,将截取出来的二维码图像(图7-37)缩小为原来的0.7,获得图像如图7-38所示。
原图为:537*494,缩放后为:375*345。缩放后图像不会超出扫描框区域:409*370。
再对前述的图形码处理装置的功能结构进行说明,参见图8-1和图8-2示出的图形码处理装置20的一个可选的功能结构示意图,包括:
采集单元21,可由包括摄像头的摄像模组实现,用于对包括图形码的环境进行采集;
预览界面单元22,在预览界面中加载扫描框,并在所述预览界面呈现采集得到的图像流中的图像;
定位单元23,用于潜在分布区域对应的局部图像中识别出扫描步长,基于所述扫描步长扫描所述局部图像得到图形码图像;
识别单元24,用于在所述潜在分布区域对应的局部图像中识别出扫描步长,基于所述扫描步长扫描所述局部图像得到图形码图像;
解码单元25,用于基于所述图形码图像尝试进行解码处理,直至解码成功得到所述图形码中所调制的信息。
实际应用中,图形码处理装置中除采集单元21的功能单元可由图3示出的处理器11通过运行存储介质14中的可执行指令而实现具有相应功能的单元,如图8-1所述图形码处理装置中的功能单元可在扫码设备(如智能手机)侧实现,也就是说,对包括图形码的图像的采集、图形码的定位识别以及解码均在移动终端侧完成;当然,如8-2所示,图形码处理装置20的功能单元可以在扫码设备侧和云端的服务器侧实现,扫码设备负责采集包括图形码的图像,云端的服务器负责定位识别图形码以及解码,并将解码结果发送到扫码设备。
在一个实施例中,所述解码单元25,还用于在所述采集单元21采集的图像中定位图形码的潜在分布区域之前,基于所述图像在所述预览界面的扫描框内形成的局部图像进行解码处理,并检测到解码失败。
在一个实施例中,解码单元25还用于在所述采集单元21采集的图像中定位图形码的潜在分布区域之前,基于所述图像在所述预览界面的扫描框内形成的局部图像进行解码;所述采集单元21,还用于当所述解码单元25解码得到所述图形码中所调制的信息时,中止对包括所述图形码的环境进行采集。
在一个实施例中,所述解码单元25,还用于调整所述图形码图像的尺寸与所述扫描框的尺寸一致,基于调整后的图形码图像进行解码处理。
在一个实施例中,所述解码单元25,还用于呈现所述图形码中调制的信息,和/或,发送所述图形码中调制的信息至请求扫描图形码的实例。
在一个实施例中,所述定位单元23在确定所采集图像的像素在不同参考方向的连续分布区域,将所述连续分布区域的重叠区域识别为所述图形码的潜在分布区域时,可以采用如下的方式:确定采集单元21采集图像的二值化图像中黑色像素在不同参考方向的连续分布区域,将所述连续分布区域的重叠区域识别为所述图形码在相应图像的潜在分布区域。
在一个实施例中,定位单元23确定所述图像的二值化图像中黑色像素在不同参考方向的连续分布区域时,可以采用如下的方式:确定所述图像的二值化图像中黑色像素在不同参考方向的直方统计图,对所述直方统计图进行去噪,确定去噪后直方统计图中的连续分布区域映射到相应图像的二值化图像中的区域。
在一个实施例中,定位单元23所述对直方统计图进行去噪,可以采用如下的方式:将所述直方统计图沿相应的参考方向等分得到等分块,将满足预定条件的等分块中的统计数据置零。
在一个实施例中,定位单元23所述将满足预定条件的等分块中的统计数据置零,包括以下至少之一:
当所述等分块中统计数据的差异程度超出阈值时,将相应等分块中的统计数据置零;当所述等分块的相邻等分块的统计数据为零时,将相应等分块中的统计数据置零;当所述等分块与相邻等分块的信噪比为相邻等分块之间信噪比的最小值时,将相应等分块中的统计数据置零。
在一个实施例中,定位单元23从潜在分布区域对应的局部图像中识别出扫描步长,可以采用如下的方式:对所述局部图像的二值化图像进行膨胀和腐蚀操作,在所述局部图像的二值化图像中识别出各黑色像素块以及相邻尺寸的黑色像素块的累计出现次数,确定最高累计出现次数对应的黑色像素块的尺寸。
在一个实施例中,定位单元23在局部图像的二值化图像中识别出各黑色像素块以及相邻尺寸的黑色像素块的出现次数,确定最高出现次数对应的黑色像素块的尺寸,可以采用如下的方式:对所述局部图像的二值化图像按照不同的参考方向进行抽样得到条状图像,识别各条状图像的直方统计图中连续分布区域的长度,统计各长度以及在长度波动范围内的相邻长度的出现次数,选取最高出现次数对应的长度,作为最高出现次数对应的黑色像素块的尺寸。
在一个实施例中,识别单元24基于所述符号的尺寸从所述局部图像中识别出图形码图像,可以采用如下的方式:以所述符号的尺寸为扫描步长对所述局部图像的二值化图像进行扫描,将扫描得到符合扫描模式的像素点的点集映射到所述局部图像的二值化图像中,将映射得到的像素点的点集识别为所述图形码图像。
在一个实施例中,识别单元24以所述符号的尺寸为扫描步长对所述局部图像的二值化图像进行扫描,可以采用如下的方式:检测到所述局部图像的二值化图像中各黑色像素点是否为符合预定扫描模式的黑色像素点、以及与所述黑色像素点相距扫描步长的位置是否具有符合预定扫描模式的白色像素点时,得到所述黑色像素点的点集。
在一个实施例中,识别单元24还用于在将扫描得到符合扫描模式的像素点的点集映射到所述局部图像的二值化图像之前,基于所述像素点的点集的直方图对所述像素点的点集进行去噪处理。
综上所述,本发明实施例具有以下有益效果:
1)通过在预览界面中对依次呈现的图像中识别完整图形码并进行解码,与仅基于在扫描框中形成的图像进行解码相比,用户只要调整采集方位使得图形码在预览界面形成完整的图形码即可进行解码,不需要继续调整采集的方位使图形码在扫描框中形成完整的图形码,显著降低了扫码的操作难度;
2)因环境的限制导致图形码无法在扫描框形成完整的图形码时,只要用户调整采集方位在预览界面形成完整的图形码即可完成扫码和解码,克服了相关技术提供的扫码方式因环境限制而无法扫码的限制。
3)针对这种二维码与扫码设备因距离问题而无法扫码定位的情况,提出了一种自适应识别二维码的方法。通过数据采样与聚类实现了二维码的定位问题,根据采样数据半径与扫码框的比例进行缩放,使得二维码图像大小能够自适应调节,达到快速定位解码的效果,使得二维码与扫码设备不会因为太近或太远而无法识别。
本领域的技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、随机存取存储器(ram,randomaccessmemory)、只读存储器(rom,read-onlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ram、rom、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。