发明内容
本发明所要解决的技术问题之一是需要提供一种识别一种新型二维码的方法。
为了解决上述技术问题,本申请的实施例首先提供了一种二维码的识别方法,其特征在于,所述二维码包括数据编码区、格式信息区、校正图案以及包围所述数据编码区、所述格式信息区和所述校正图案的边框,该方法包括:采集二维码图像并对二维码图像进行预处理;从经过预处理的二维码图像中搜索长直线段,定位二维码的边框及顶点;根据二维码的边框及顶点定位格式信息区并解码所述格式信息区中的格式信息;根据二维码的边框及顶点定位校正图案并根据校正图案对所述数据编码区进行图像校正;根据图像校正后的数据编码区解码出纠错码字及数据码字。
优选地,对二维码图像进行预处理,包括:根据预设的阈值将灰阶的二维码图像转换为二值图像,并搜索二值图像的边界得到边界图像。
优选地,根据二维码的边框及顶点定位校正图案,包括:根据边框及边框所围成区域的行列数初步确定待定位的校正图案的初始位置;将待定位的校正图案调整到与二值图像的旋转角度相同的方位;以初始位置为中心移动待定位的校正图案,将其与二值图像上的校正图案的重叠率达到设定值的位置确定为待定位的校正图案的最终位置。
优选地,二值图像的旋转角度,根据如下方式确定:根据边框确定二值图像旋转的第一角度值;通过判断解码得到的格式信息是否为有效信息确定二值图像旋转的第二角度值;将第一角度值与第二角度值的和确定为二值图像的旋转角度;其中,当解码得到的格式信息为无效信息时,第二角度值取为90度或180度;当解码得到的格式信息为有效信息时,第二角度值取为0。
优选地,根据二维码的边框及顶点定位格式信息区并解码所述格式信息区中的格式信息,包括:将边框的一个顶角处互相垂直的两条边确定为格式信息区的两条边界线,将搜索得到的分别与这两条边界线垂直的直线段确定为格式信息区的另外两条边界线,将四条边界线的交点确定为格式信息区的顶点;根据格式信息区的顶点,插值得到格式信息区内各模块的坐标;根据格式信息区内各模块的坐标对格式信息进行采样并解码。
另一方面,本申请的实施例还提供了一种二维码的识别装置,其特征在于,所述二维码包括数据编码区、格式信息区、校正图案以及包围所述数据编码区、所述格式信息区和所述校正图案的边框,该装置包括:图像预处理单元,其采集二维码图像并对二维码图像进行预处理;边框定位单元,从经过预处理的二维码图像中搜索长直线段,定位二维码的边框及顶点;格式信息解码单元,其根据二维码的边框及顶点定位格式信息区并解码所述格式信息区中的格式信息;校正单元,根据二维码的边框及顶点定位校正图案并根据校正图案对所述数据编码区进行图像校正;数据信息解码单元,根据格式信息从图像校正后的数据编码区解码出纠错码字及数据码字。
优选地,图像预处理单元根据预设的阈值将灰阶的二维码图像转换为二值图像,并搜索二值图像的边界得到边界图像。
优选地,校正单元包括:初步确定子单元,根据边框及边框所围成区域的行列数初步确定待定位的校正图案的初始位置;调整子单元,将待定位的校正图案调整到与二值图像的旋转角度相同的方位;移动子单元,以初始位置为中心移动待定位的校正图案,将其与二值图像上的校正图案的重叠率达到设定值的位置确定为待定位的校正图案的最终位置。
优选地,调整子单元被设置为根据边框确定二值图像旋转的第一角度值;通过判断解码得到的格式信息是否为有效信息确定二值图像旋转的第二角度值,将第一角度值与第二角度值的和确定为二值图像的旋转角度;其中,当解码得到的格式信息为无效信息时,第二角度值取为90度或180度;当解码得到的格式信息为有效信息时,第二角度值取为0。
优选地,格式信息解码单元包括:顶点确定子单元,将边框的一个顶角处互相垂直的两条边确定为格式信息区的两条边界线,将搜索得到的分别与这两条边界线垂直的直线段确定为格式信息区的另外两条边界线,将四条边界线的交点确定为格式信息区的顶点;坐标获取子单元,根据格式信息区的顶点,插值得到格式信息区内各模块的坐标;采样解码子单元,根据格式信息区内各模块的坐标对格式信息进行采样并解码。
与现有技术相比,上述方案中的一个或多个实施例可以具有如下优点或有益效果:
该识别方法能够快速定位并获取二维码的矩阵信息,具有识别速度快,抗污损、抗畸变能力强,应用范围广的优点。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明的技术方案而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构和/或流程来实现和获得。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
图1为本申请实施例的二维码识别方法的流程示意图,本申请实施例的二维码的识别方法的具体过程包括:步骤S110、采集二维码图像信息并对图像进行预处理;步骤S120、通过搜索长直线段定位二维码的边框及顶点;步骤S130、根据二维码的边框及顶点定位格式信息区并解码格式信息;步骤S140、定位校正图案及进行图像校正;步骤S150、解码纠错码字及数据码字。
本申请实施例所要识读的二维码如图2所示。从图2中可以看出,该二维码数据编码区21、格式信息区22、校正图案23以及包围所述数据编码区、所述格式信息区以及所述校正图案的边框20。在数据编码区中,还包含有个性化图案24。个性化图案24不遮挡边框20,也不遮挡格式信息区22和校正图案23。在二维码的边框的外围还环绕有留白区25。
其中,数据编码区由排列的数据码字与纠错码字组成,格式信息区存储格式信息,包括数据编码区的纠错等级以及二维码的行数和列数。本发明的实施例中,一个二维码中包含有四个格式信息区,每个格式信息区均存储有相同的内容,每一个格式信息区都可以解码出一份完整的格式信息。四个格式信息区分别位于边框包围形成的矩形的四个顶角处。校正图案用于对数据编码区进行图像校正,且均匀分布于边框包围形成的矩形区域内。
上述二维码可以采用图像识别解码,可以利用手机等具有拍照功能的设备进行识别。首先采集二维码的图像信息并对图像进行一系列预处理,预处理的具体步骤包括,根据预设的阈值将灰阶图像转换为二值图像,并搜索二值图像的边界得到边界图像,如图3所示。图3(a)为灰阶图像示意图,根据灰阶图像得到灰阶图像的直方图,并进一步根据直方图计算阈值,将灰度低于阈值的象素二值化为黑色,灰度高于阈值的象素二值化为白色。考虑到图像可能存在照明不均匀的情况,可以将图像分割为小区块,每个区块分别计算阈值。经过上述处理,可以将灰阶图像转换为二值图像,如图3(b)所示。
然后,通过搜索二值图像获取边界像素。具体为,若当前象素为黑色且其周围4个象素中至少一个为白色,则将该象素标记为边界象素。搜索所有的边界象素,即可得到边界图像,如图3(c)所示。
本申请实施例的识别方法采用边角识读的方式,定位简单准确,识读速度快。具体为,通过图像预处理获得的边界图像,更易于从中提取一些线性信息,例如可以方便地进行直线搜索,图2中的边框20是二维码用于定位的主要结构。对边框进行识别的过程具体为,在边界图像中搜索长直线段,可以得到四条长直线段40,如图4所示。将这四条长直线段确定为二维码的边框。计算相邻边框的交点,可以得到二维码的四个顶点,如图4中的41所示。
根据已经确定的边框及顶点定位格式信息区的具体步骤包括:将边框的一个顶角处互相垂直的两条边确定为格式信息区的两条边界线,将搜索得到的分别与这两条边界线垂直的直线段确定为格式信息区的另外两条边界线,将四条边界线的交点确定为格式信息区的顶点。从图2中可以看出,格式信息区包括四个格式信息区,每个格式信息区占据边框包围形成的矩形的一个顶角,这是一种优选的方案,设置于顶角处的格式信息区更利于格式信息区的定位。进一步从图5中可以看出,每个格式信息区也具有包围并限定它的边界线,如图5中的深色模块形成的正方形,这个正方形包含边框的两条边和一个顶点,如图5中的顶点A。在一个实施例中,在二维码边框的顶点附近,搜索格式信息区的另外两条边界线。计算这两条边界线与二维码边框之间的交点,即可得到格式信息区的四个顶点。
本申请实施例的识别方法具有较强的抗污损、抗畸变能力。由于每个格式信息区都存储有一份内容完全相同的格式信息以及版本信息,这样就可以保证当一个或其中几个区域遭到破坏而产生破损时,例如当二维码缺一角、缺两角、缺三角、缺一条边、中心缺失或整体污损时,如图6所示,图6中的(a)和(b)分别示出了三个角缺失以及中心缺失的情况。只要还有一个格式信息区保持完好,就可以读取到二维码的完整的格式信息。
有了格式信息区的位置信息,就可以利用插值算法计算格式信息区内每个模块的坐标。一般的,每个格式信息区均由多个模块组成,而每个模块都存储一位二进制信息。如图5中的十字形标记表示的是插值得到的点,用以作为基于边界图像进行采样的采样点,可以看出该格式信息区包含36个模块,即可以采样得到一个36位的格式信息。
需要说明的是,首先,由于每个格式信息区都存储有一份独立而完整的格式信息,所以只需对一个格式信息区解码即可。以及,格式信息区内的信息并非顺序存储,而是根据数据编码区的纠错等级进行排布的,所以顺序采样得到的二进制数据,需要根据具体的排布方式进行重新排列以得到格式信息的正确的顺序。最后,格式信息在存储时进行了纠错处理,即其中既包含记录有效格式信息的数据,还包括对这些信息数据进行纠错所得到的部分码字,所以需要对格式信息进行解码,才能最终得到完整有效的格式信息。
校正图案是用于对数据编码区进行图像校正的结构。这是因为当二维码受到破坏时或当布置二维码的表面不平坦,以及由于二维码的识读设备的取像镜头的不平整或曲率导致采样图像发生了拉抻时,就需要对数据编码区进行校正。校正的基本方法是先建立数学模型,并根据可以确定的已知条件确定模型参数,然后根据数学模型利用坐标变换的方法,将采样图像上的坐标点映射到根据数学模型确定的校正图像中,最后根据采样图像的灰阶值(对于二值化处理的图像为0或1)确定校正图像中各像素的灰阶值,一般根据插值法确定灰阶值。上述过程中,准确地建立数学模型对图像校正非常重要,即获取准确的确定的已知条件至关重要。
定位校正图案的具体步骤包括:根据边框及边框所围成区域的行列数初步确定待定位的校正图案的初始位置;将待定位的校正图案调整到与二值图像的旋转角度相同的方位;以初始位置为中心移动待定位的校正图案,将其与二值图像上的校正图案的重叠率达到设定值的位置确定为待定位的校正图案的最终位置。具体为,首先根据二维码图像的四个顶点和行数、列数信息,初步确定待定位的校正图案的初始位置。如图7所示,图中白色十字形标记为初步确定的校正图案的位置。然后根据二维码码图的旋转、倾斜角度,将待定位的校正图案进行相同的旋转、倾斜变换。
需要说明的是,仅根据边框来确定二维码码图的旋转和倾斜角度等难度较大。因为存在如图8所示情形,图8为二值图像旋转角度示意图。从图中可以看出,当通过边框判断二维码码图旋转了α角时,此时存在多种情况,如果二维码逆时针旋转了α角,那么利用边框作出的定位结果是正确的。如果二维码逆时针旋转了90°+α的角度,如图3所示,那么此时原来的X-Y坐标系旋转到了虚线所示的位置,原来位于二维码右上角A处的格式信息区也旋转到了B处的位置,但由于二维码是正方形的,逆时针旋转90度之后会与原位置的二维码重合,所以此时利用边框10无法确定二维码是否发生了旋转。进一步地,如果二维码逆时针旋转了180°+α的角度,仅利用边框10来定位就失效了。此时,可以引入其他手段来获取二维码码图旋转的正确的角度。通过如下步骤来确定:
根据边框确定二值图像旋转的第一角度值;通过判断解码得到的格式信息是否为有效信息确定二值图像旋转的第二角度值,其中,当解码得到的格式信息为无效信息时,第二角度值取为90度或180度;当解码得到的格式信息为有效信息时,第二角度值取为0;将第一角度值与第二角度值的和确定为二值图像的旋转角度。
具体为,如图8所示,首先根据边框确定了角度α(第一角度值),α的值为小于90度的值。接下来,利用前面扫描并解码格式信息区的结果来确定二维码码图旋转的第二角度值。在这里需要补充说明的是,在解码格式信息时,并不是第一次插值解码就能得到有效的格式信息,因为格式信息区是对称地布置在边框的四个顶角处的,那么如果二维码是正方形的,其顺时针或逆时针旋转90度之后可以与正常放置的二维码重合,如果二维码是长方形的,其顺时针或逆时针旋转180度之后可以与正常放置的二维码重合。所以当检测到无效的格式信息时,需要将二维码旋转90度或180度再次扫描解码,或者将扫描获得的图像旋转90度或180度,然后再进行后续处理。应用上述结果可知,对于正方形二维码,当解码得到的格式信息为无效信息时,将第二角度值确定为90度,若第二次解码仍为无效信息,在第一次确定的角度的基础上再加90度,直到解码得到有效的格式信息时停止判断。对于长方形二维码,当解码得到的格式信息为无效信息时,将第二角度值确定为180度,长方形二维码经过一次判断就可以得到第二角度值。第一角度值与第二角度值相加可以得到二值图像的旋转角度
得到确定的旋转角度后,在初步确定的校正图形初始位置附近,移动待定位的校正图案,当重叠度最优时,即可得到精确的校正图形位置。一般通过定义重叠率,并使其满足设定值时的情况判定为最优重叠。图9为调整过角度的校正图案示意图。
最后,根据校正图案的位置,插值计算每个单元模块的坐标。并从二值图像上读取相应坐标的象素值,即可得到每个单元模块的值。
纠错码字及数据码字的解码过程是其编码的逆过程。具体为,先进行纠错解码,包括将采样得到的数据按每8位一个组装成码字。如果码字总数超过255,则对码字进行分组。采用Reed-Solomon纠错算法对每组分别进行纠错,得到最终的数据码字。再进行编码位流解码,将数据码字组装成位流。按以下步骤进行解码:步骤1、提取位流的头3位,得到模式指示符;步骤2、如果该模式指示符是终止符,则停止解码,返回解码结果。否则继续提取数据长度指示符,得到该模式的长度;步骤3、根据该模式的编码方式,提取位流进行解码,直至数据长度达到数据长度指示符,返回步骤步骤1。
本申请的实施例中,还可以从数据编码区中定位出个性化图案并对个性化图案进行识别。
图10为本申请实施例的二维码识别装置的结构示意图,二维码包括数据编码区、格式信息区、校正图案以及包围所述数据编码区、所述格式信息区和所述校正图案的边框。下面参考图10来说明本申请实施例的二维码识别装置的各部分组成。
如图10所示,本申请的二维码识别装置的实施例,包括图像预处理单元1010、边框定位单元1020、格式信息解码单元1030、校正单元1040以及数据信息解码单元1050。
图像预处理单元1010,其采集二维码图像并对二维码图像进行预处理。
边框定位单元1020,与图像预处理单元1010相连,从经过预处理的二维码图像中搜索长直线段,来定位二维码的边框及顶点。
格式信息解码单元1030,与边框定位单元1020相连,根据所定位出的二维码的边框及顶点,定位格式信息区并解码格式信息区中的格式信息。
校正单元1040,与边框定位单元1020相连,根据二维码的边框及顶点定位校正图案并根据校正图案对所述数据编码区进行图像校正;
数据信息解码单元1050,与格式信息解码单元1030及校正单元1040相连,根据格式信息从图像校正后的数据编码区解码出纠错码字及数据码字。
本申请的二维码识别装置的实施例,还可以包括个性化信息定位识别单元,被设置为从数据编码区中定位出个性化图案并对个性化图案进行识别。
本申请的实施例中,图像预处理单元1010根据预设的阈值将灰阶图像转换为二值图像,并搜索二值图像的边界得到边界图像。
本申请的实施例中,所述校正单元1040包括初步确定子单元、调整子单元以及移动子单元。
初步确定子单元,根据边框及边框所围成区域的行列数初步确定待定位的校正图案的初始位置。
调整子单元,与初步确定子单元相连,将待定位的校正图案调整到与二值图像的旋转角度相同的方位。
移动子单元,与调整子单元相连,以初始位置为中心移动待定位的校正图案,将其与二值图像上的校正图案的重叠率达到设定值的位置确定为待定位的校正图案的最终位置。
本申请的实施例中,所述调整子单元被设置为根据边框确定二值图像旋转的第一角度值;通过判断解码得到的格式信息是否为有效信息确定二值图像旋转的第二角度值,将第一角度值与第二角度值的和确定为二值图像的旋转角度。其中,当解码得到的格式信息为无效信息时,第二角度值取为90度或180度;当解码得到的格式信息为有效信息时,第二角度值取为0。
本申请的实施例中,格式信息解码单元1030包括顶点确定子单元、坐标获取子单元以及采样解码子单元。
顶点确定子单元,将边框的一个顶角处互相垂直的两条边确定为格式信息区的两条边界线,将搜索得到的分别与这两条边界线垂直的直线段确定为格式信息区的另外两条边界线,将四条边界线的交点确定为格式信息区的顶点。
坐标获取子单元,与顶点确定子单元相连,根据格式信息区的顶点,插值得到格式信息区内各模块的坐标。
采样解码子单元,与坐标获取子单元相连,根据格式信息区内各模块的坐标对格式信息进行采样并解码。
本申请的二维码识别装置的实施例,还请参考前述本申请的二维码识别方法的实施例。
本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。