专利名称:二维码及其编解码方法
技术领域:
本发明涉及一种二维码、将数据编码生成该二维码的编码方法、和从该二维码码图符号解码还原为数据的解码方法。
背景技术:
二维码一般由三部分组成特征模式区域、格式信息区域、数据区域。其中特征模式区域指导图像识别算法识别定位码图符号,格式信息区域存放描述码图符号格式与数据纠错相关的参数,数据区域存放经过纠错编码算法编码后的数据。
二维码最有前途的应用方式是利用手机操作平台上的二维码译码程序,通过手机摄像头捕捉解析二维码,获得各种增值服务。因为大多数拍照手机不具备微距成像功能与自动聚焦功能,即便具有自动聚焦功能也会因为聚焦过程耗时长而加大整个解码的时长,此外一般拍照手机不具备照明功能,仅依赖环境光获得的图像的亮度、对比度,信噪比等参数均较低,因此对于传统的由矩形模块组成的矩阵式条码,拍照手机识读效果不佳,不利于二维码的大规模商业化应用。
发明内容本发明的目的就是为了克服以上现有技术的不足,提供一种二维码、将数据编码生成该二维码的编码方法、从该二维码解码还原为数据的解码方法,其易识读,纠错能力强,对设备要求低,可广泛应用。
为实现上述目的,本发明提出一种二维码,其码图符号由具有不同光学反射率的单元模块在平面上排列而成;所述单元模块为圆形单元模块,且模块与模块之间保留间隙。
上述的二维码,所述圆形单元模块为大小相同、等间距排列的实心圆形单元模块。所述相邻两个圆形单元模块的圆心距离大于圆形单元模块的直径。
上述的二维码,所述码图符号具有12×9个圆形单元模块。所述码图符号选用4∶3的外形比例。所述码图符号外围有一个封闭的边框。所述码图符号外围有4个单元模块尺寸宽度的静区。
上述的二维码,所述码图符号四角坐标分别为(0,0)、(11,0)、(0,8)以及(11,8)圆形单元模块是定位单元模块;其余单元模块分为13组,所述坐标为(0,1)、(0,2)、(1,0)、(1,1)(1,2)、(2,0)、(2,1)以及(2,2)为第一组;所述坐标为(0,3)、(0,4)、(0,5)、(1,3)、(1,4)、(1,5)、(2,4)以及(2,5)为第二组;所述坐标为(0,6)、(0,7)、(0,8)、(1,6)(1,7)、(1,8)、(2,6)以及(2,7)为第三组;所述坐标为(0,9)、(0,10)、(1,9)、(1,10)、(1,11)、(2,9)、(2,10)以及(2,11)为第四组;所述坐标为(3,0)、(3,1)、(4,0)、(4,1)、(4,2)、(5,0)、(5,1)以及(5,2)为第五组;所述坐标为(2,3)、(3,2)、(3,3)、(3,4)、(3,5)、(4,3)、(4,4)以及(4,5)为第六组;所述坐标为(2,8)、(3,6)、(3,7)、(3,8)、(3,9)、(4,6)、(4,7)以及(4,8)为第七组;所述坐标为(3,10)、(3,11)、(4,9)、(4,10)、(4,11)、(5,9)、(5,10)以及(5,11)为第八组;所述坐标为(6,0)、(6,1)、(6,2)、(7,0)、(7,1)、(7,2)、(8,1)以及(8,2)为第九组;所述坐标为(6,3)、(6,4)、(7,3)、(7,4)、(7,5)、(8,3)、(8,4)以及(8,5)为第十组;所述坐标为(5,3)、(5,4)、(5,5)、(5,6)、(5,7)、(5,8)、(6,5)以及(6,6)为第十一组;所述坐标为(6,7)、(6,8)、(7,6)、(7,7)、(7,8)、(8,6)、(8,7)以及(8,8)为第十二组;所述坐标为(6,9)、(6,10)、(6,11)、(7,9)、(7,10)、(7,11)、(8,9)以及(8,10)为第十三组。
同时本发明提出了一种上述二维码的编码方法,将二进制数据流编码输出码图符号;包括如下步骤A、将二进制数据流分割成具有特定比特长度的信息数据码词;B、对所述信息数据码词应用纠错算法进行运算,生成纠错码词;C、将所述信息数据码词、纠错码词生成单元模块为圆形单元模块、且模块与模块之间保留间隙的码图符号。
上述的编码方法,所述码图具有12×9圆形单元模块,其中四角的四个单元为定位单元,在余下的104个圆形单元模块中,前80个用于存储信息数据,剩下的24个用于存储纠错数据。所述纠错数据码词按如下方式生成80个比特的信息数据按每8个比特一组分成10组,即共计10个8比特信息数据码词(codeword),对该10个码词运用纠错算法生成3个8比特的纠错码词。所述纠错算法选用Reed-Solomon纠错算法。所述纠错码词选用BCH纠错码。
本发明还提出了一种二维码解码方法,包括如下步骤1)获取码图符号图像,2)对获取的码图符号图像进行二值化处理,3)对圆形单元模块进行边缘检测得到边界图像,4)对边界图像进行闭合边界跟踪,5)圆形单元模块识别,6)区别并剔除不同码图符号的圆形单元模块,7)方向定位,8)码词还原并纠错。
上述的方法,在所述步骤1)和步骤2)之间,还包括步骤1`)对获取的码图符号进行图像增强处理。
上述的方法,所述步骤3)中,所述边缘检测获得的边界象素定义为像素值为0且相邻8个像素中有非0像素的象素;所述边缘检测的方法是对二值图像中所有像素作边界判定得到边界图像,将边界像素标记为最大亮度255,其余则标记为0。
上述的方法,所述步骤4)对边界图像进行闭合边界跟踪的过程包括41)对边界图像按行主的方向扫描,以扫描到的第一个边界像素为边界跟踪的起点像素,如果没有边界像素则表明本次流程结束;42)将起点像素的象素坐标放入队列Q,并将该起点像素标记为0,表示已跟踪过了;43)判断起点像素的相邻8个像素中是否有边界像素,如果有则任选一个像素作为下次跟踪的起点,跳转到42);否则本次跟踪结束,队列Q中的象素坐标列表即是一个闭合边界,存储队列Q中的象素坐标列表并将其清空,跳转到41)。
上述的方法,所述步骤5)圆形单元模块识别的过程包括51)将闭合边界所有边界点的象素横坐标累加,将累加和除以边界点总数得到闭合边界的中心点象素横坐标u;将所有边界点象素纵坐标累加,将累加和除以边界点总数得到闭合边界的中心点象素纵坐标v;52)以闭合边界中心点象素坐标(u,v)按四个方向扫描闭合边界的直径,分别得到四个长度值d1,d2,d3,d4;53)取平均直径为d=(d1+d2+d3+d4)/4,定义圆的规范度为N=|d-d1|/d+|d-d2|/d+|d-d3|/d+|d-d4|/d;54)对每一个闭合边界计算其N值,根据实测统计结果将N值大于设定阈值TN的闭合边界丢弃,剩下的闭合边界认为是条码圆形单元模块的边界。
上述的方法,所述步骤6)区别并剔除不同码图符号的圆形单元模块的过程包括61)取得两个圆的尺寸差异度设一个圆的直径长度为D1,另一个圆的直径长度为D2,则这两个圆的尺寸差异度为Ldif=|D1-D2|/max(D1,D2),设定条码的静区宽度为M个圆形单元模块直径,并且圆的尺寸差异度为Ldif;62)选择离图像中心点最近的圆形单元模块为种子圆形单元模块,然后将距离该圆形单元模块距离小于M且尺寸差异度Ldif小于预设值的圆形单元模块加入到分组中;63)一轮增长结束后,以新加入组的圆形单元模块为种子圆形单元模块重复增长过程,直到没有新的圆形单元模块加入组为止。
上述的方法,所述步骤7)方向定位的过程包括71)找出码图符号的四角定位圆形单元模块;72)设定四角定位圆形单元模块的坐标;73)按照坐标校正公式,计算各圆形单元模块的坐标。
其中,所述步骤71)的具体过程包括根据各圆形单元模块的闭合边界坐标,计算出圆形单元模块组的最小外接矩形,经过该最小外接矩形的中心坐标划一条水平线与垂直线,将圆形单元模块分成左上、右上、左下以及右下四个区,确定每一个区中离最小外接矩形的中心最远的点为该区的定位圆形单元模块。
所述步骤72)的具体过程包括设定四角定位圆形单元模块在条码中的坐标分别为(0,0)、(11,0)、(0,8)以及(11、8);所述步骤73)的具体过程包括根据坐标校正公式x’=K0*x+K1*x*y+K2*y+K3;y’=K4*x+K5*x*y+K6*y+K7;(x’,y’)为各圆形单元模块的坐标,(x,y)为图像中原点的坐标,将四角定位圆形单元模块在条码中的坐标以及它们在图像中的坐标代入上述公式得到8个8元一次方程,解方程组得出K0~K78个系数,将K0~K7代入方程就得到了坐标转换方程,将每个圆形单元模块的中心坐标填入该方程组,计算出该圆形单元模块在条码中的坐标。
上述的方法,所述步骤8)的过程包括根据与编码时的码词比特到条码圆形单元模块的布局,及码图符号中的各圆形单元模块坐标,设置码词各比特位的值,有圆形单元模块对应的码词的比特位为比特1,否则为比特0;运用Reed-solomon纠错算法对码词纠错;纠错成功后,输出数据字。
由于本发明的二维码选用圆形单元模块,且模块与模块之间保留间隙;圆形单元模块在深度离焦条件下成像后还是圆形单元模块,经过unsharpmask滤波后能很好的还原圆形单元模块的形状。这种设计使得图像处理算法对二值化阈值的选择不敏感,这是因为虽然阈值会影响到二值化后圆形单元模块的大小,但圆形单元模块的中心坐标不会因阈值的变化而漂移,又因模块间有间隙,减小了二值化后相邻模块粘连在一起可能性,使得每个模块可以被单独定位。因此,本发明即便在深度离焦、低照度成像条件下仍可以可靠地识读、解码;易识读,纠错能力强,对设备的要求低,利于广泛推广应用。
二维码的圆形单元模块可以取两种颜色,其一为背景色,其二为前景色,为前景色的亮度值与背景色的亮度值保持足够的差别,保证条码易识读性。选用4∶3的外形比例,与手机拍照图像尺寸的宽、高比相适应,最有效的利用所有图像像素,同时与方形条码相比,只需判断是否旋转了180度,减少了一半条码方向判断计算量,利于解码速度的提高。
图1是本发明的一种二维码码图符号。
图2是本发明的解码流程示意图。
图3是解码过程中采集的二维码原始图像。
图4是图3二维码原始图像的增强图像。
图5是对图4增强图像的二值化后的图像。
图6是对图5进行边界检测得到的边界图像。
图7是对边界图像进行闭合边界跟踪的结果图像。
图8是对闭合边界跟踪的结果图像进行圆形单元模块识别的示意图。
图9是重构出的二维码码图符号。
图10是边界检测时某个像素相邻像素的定义示意图。
具体实施方式下面通过具体的实施例并结合附图对本发明作进一步详细的描述。
本设计选用圆形单元模块,且模块与模块之间保留间隙。圆形单元模块在深度离焦条件下成像后还是圆形单元模块,经过unsharp mask滤波后能很好的还原圆形单元模块的形状。这种设计使得图像处理算法对二值化阈值的选择不敏感,这是因为虽然阈值会影响到二值化后圆形单元模块的大小,但圆形单元模块的中心坐标不会因阈值的变化而漂移,又因模块间有间隙,减小了二值化后相邻模块粘连在一起可能性,使得每个模块可以被单独定位。
请参考图1所示,目标条码由12乘9行相同大小等间距排列的实心圆形单元模块组成。相邻两个圆形单元模块的圆心距离大于圆形单元模块的半径。圆形单元模块取两种颜色,其一为背景色,其二为前景色,为保证条码易识读性,前景色的亮度值与背景色的亮度值保持足够的差别。圆形单元模块也可以取多种颜色。选用4∶3的外形比例,与手机拍照图像尺寸的宽、高比相适应,最有效的利用所有图像像素,同时与方形条码相比,只需判断是否旋转了180度,减少了一半条码方向判断计算量。
条码四角的四个圆形单元模块固定为前景色,剩下的104个圆形单元模块用于存储数据,前景色圆形单元模块存储比特“1”,背景色圆形单元模块存储比特“0”。104个圆形单元模块总共可存储104比特数据,其中前80个比特用于存储有效数据,剩下的24比特存储纠错数据。纠错数据按如下方式生成80个比特的有效数据按每8个比特一组分成10组,即10个8比特码词(codeword),对这10个码词运用GF(256)的Reed-Solomon纠错算法生成3个纠错码词(共24比特)。13个码词按如图1所示的方式排列,相邻的同种颜色8个模块存储一个码词。颜色只是标识出分组的码词组,颜色和识读无关,3个纠错码词可以并且最多能纠正一个码词的错误,即最多可以纠正属于同一个码词的8个模块的错误。不考虑条码的污损,这样的纠错能力是足够的(一维条码仅有校验功能也能有效的使用)。为了充分利用24个冗余比特的纠错能力,可以选用BCH纠错码,24个比特的BCH校验位可以最多纠正任意位置11个比特的数据,这样条码就能容忍10%以上面积的污损。
静区(quite zone)的要求静区是指临近码图符号的周围区域,解码要用二维识读设备,为了保证解码成功,对静区有一定的要求。本发明码图符号中没有设置特殊的识别和定位模式,为此必须保持4个单元模块尺寸宽度的静区。也可以给码图符号增加一个封闭的边框作为识别特征,从而减小对静区尺寸的要求。
请参考图2所示,解码过程定义为从手机拍摄到的图像中识别出条码,并将条码所编码的数据还原出来。图像由二维像素矩阵组成,为了表达的统一,本例规定手机拍摄到的图像为8bit灰阶图像,即每一个像素的亮度由8比特数定义,取值范围为0至255,对应图像亮度为最黑至最白。
一、图像增强手机对条码近距离拍照,如图3所示,获得的图像模糊且对比度低,图像中的圆形单元模块目标特征不明显,直接识别难度大,为此需要先进行图像增强。图像增强算法采用USM(Unsharp Mask)算法,该算法是数字图像处理领域常用的图像增强算法,其原理是先对原图像用二维高斯低通滤波获得模糊的图像,然后从原图像中减去该模糊的图像得到对比度增强的图像,如图4所示。设原图像为F(x,y),经过二维高斯低通滤波后得到图像U(x,y),则增强的图像为V(x,y)=F(x,y)+K×(F(x,y)-U(x,y)),其中K为增强系数,经验值为1~4,K越大增强效果越明显,但图像中的噪声也会被放大。
二、二值化获得增强的图像后需要对其进行二值化处理,设定一个阈值T(0<T<255),亮度大于T的像素归为白,其它像素归为黑,因为图像增强后像素亮度值的动态范围扩大了,背景亮度趋近于最大值255,组成圆形单元模块的像素的亮度趋近于最小值0,因此很容易选择一个固定的或动态的阈值T。二值化后的图像请参考图5所示。
三、边缘检测对二值化后的图像进行边缘检测,边缘定义为像素值为0且相邻8个像素中有非0像素。某个像素相邻像素的定义如图10所示编号为0的像素其相邻8个像素分别为编号为1至8的像素。如果一个像素是边界像素将标记为最大亮度255,否则标记为0,对二值图像中所有像素作边界判定得到边界图像。对每个单元模块进行边缘检测后得到的图像请参考图6所不。
四、闭合边界跟踪闭合边界跟踪的操作对象为上述步骤三中边缘检测得到的边缘图像,步骤如下a对边缘图像按行主的方向扫描(即从左至右,从上至下),以扫描到的第一个边界像素为边界跟踪的起点像素,如果没有边界像素则表明本次流程结束;b将起点像素的坐标放入队列Q,并将该起点像素标记为0,表示已跟踪过了;c判断起点像素的相邻8个像素中是否有边界像素,如果有则任选一个边界像素作为下次跟踪的起点,跳转到b;否则本次跟踪结束,队列Q中的坐标列表即是一个闭合边界,也是候选目标圆形单元模块的边界,存储队列Q中的坐标列表并将其清空,跳转到a。
请参考图7所示,此流程结束后圆形单元模块图像的边界都被检测出来了,同时部分噪声黑点混入了检测结果。
五、圆形单元模块识别本步骤目的在于从步骤四的检测结果中剔除部分噪声数据,即将非圆形闭合边界丢弃。噪声数据的判断依据是圆的几何特征。对于一个闭合边界,首先将所有边界点横坐标累加,将累加和除以边界点总数得到闭合边界的中心点横坐标u,然后再将所有边界点纵坐标累加,将累加和初以边界点总数得到闭合边界的中心点纵坐标v,以闭合边界中心点坐标(u,v)按四个方向扫描闭合边界的直径,如图8所示,分别得到四个长度值d1,d2,d3,d4,设平均直径为d=(d1+d2+d3+d4)/4,定义圆的规范度为N=|d-d1|/d+|d-d2|/d+|d-d3|/d+|d-d4|/d,N的值越小则闭合边界是圆的可信度越高。对每一个闭合边界计算其N值,根据实测统计结果将N值大于某个阈值TN的闭合边界丢弃,剩下的闭合边界认为是条码圆形单元模块的边界。
六、区别并剔除不同码图符号的圆形单元模块图像中的所有圆形单元模块不一定都属于同一个二维码,为此还需要从步骤5中检测出的圆中提取一组属于同一个二维码的圆形单元模块。首先定义两个圆的尺寸差异度,设一个圆的直径长度为D1,另一个圆的直径长度为D2,则这两个圆的尺寸差异度为Ldif=|D1-D2|/max(D1,D2),另外规定条码的静区宽度为M个圆形单元模块直径,即条码四周必须留有M个圆形单元模块直径的空白区域,对于静区大小不同的码制有不同的要求的M。此处采用所谓的水晶增长的方法区别并剔除不同码图符号的圆形单元模块。
首先选择离图像中心点最近的圆形单元模块为种子圆形单元模块,然后将距离该圆形单元模块距离小于M且它们的尺寸差异度Ldif小于某个预设值的圆形单元模块加入到分组中,一轮增长结束后,以新加入组的圆形单元模块为种子圆形单元模块重复增长过程,直到没有新的圆形单元模块加入组为止。
至此,条码已经从图像中分割出来,并且组成条码的圆形单元模块也都被定位了,下面的步骤确定各圆形单元模块在条码中的坐标位置。
七、方向定位根据各圆形单元模块的闭合边界坐标,计算出步骤六得到的圆形单元模块组的最小外接矩形,经过该最小外接矩形的中心坐标划一条水平线与垂直线,其交点为图像原点,将圆形单元模块分成左上、右上、左下以及右下四个区,每一个区中离最小外接矩形的中心最远的点就是该区的定位圆形单元模块,这样就找出了条码的上、下、左、右四个定位圆形单元模块。
设四角定位圆形单元模块在条码中的坐标分别为(0,0)、(11,0)、(0,8)以及(11、8);根据这四个定位圆形单元模块的坐标,按照下面的坐标校正公式即计算出其它圆形单元模块在条码中的坐标x’=K0*x+K1*x*y+K2*y+K3;y’=K4*x+K5*x*y+K6*y+K7;(x’,y’)为各圆形单元模块的坐标,(x,y)为图像中原点的坐标,将四角定位圆形单元模块在条码中的坐标以及它们在图像中的坐标代入上面的公式得到8个8元一次方程,解方程组得出K0~K78个系数,将K0~K7代入方程就得到了坐标转换方程,将每个圆形单元模块的中心坐标填入该方程组,即可计算出该圆形单元模块在条码中的坐标,一般情况下计算出的x’和y’的值不是整数,对其四舍五入即可。
八、码词还原并纠错请参考图9所示,根据与编码时的码词比特到条码圆形单元模块的布局,以及步骤7中计算出的条码中的各圆形单元模块坐标,设置码词各比特位的值,有圆形单元模块对应的码词的比特位为比特1,否则为比特0。运用Reed-solomon纠错算法对码词纠错,13个码词中有3个纠错码词,因此可以纠正一个错误,一个码词错任何比特都只算一个错误。如果纠错成功则解码成功,输出10个数据码词。
权利要求
1.一种二维码,其码图符号由具有不同光学反射率的单元模块在平面上排列而成;其特征是所述单元模块为圆形单元模块,且模块与模块之间保留间隙。
2.如权利要求1所述的二维码,其特征是所述圆形单元模块为大小相同、等间距排列的实心圆形单元模块。
3.如权利要求1所述的二维码,其特征是所述相邻两个圆形单元模块的圆心距离大于圆形单元模块的直径。
4.如权利要求1所述的二维码,其特征是所述码图符号具有12×9个圆形单元模块。
5.如权利要求1所述的二维码,其特征是所述码图符号选用4∶3的外形比例。
6.如权利要求1所述的二维码,其特征是所述码图符号外围有一个封闭的边框。
7.如权利要求1所述的二维码,其特征是所述码图符号外围有4个单元模块尺寸宽度的静区。
8.如权利要求4所述的二维码,其特征是所述码图符号四角坐标分别为(0,0)、(11,0)、(0,8)以及(11,8)圆形单元模块是定位单元模块;其余单元模块分为13组,所述坐标为(0,1)、(0,2)、(1,0)、(1,1)(1,2)、(2,0)、(2,1)以及(2,2)为第一组;所述坐标为(0,3)、(0,4)、(0,5)、(1,3)、(1,4)、(1,5)、(2,4)以及(2,5)为第二组;所述坐标为(0,6)、(0,7)、(0,8)、(1,6)(1,7)、(1,8)、(2,6)以及(2,7)为第三组;所述坐标为(0,9)、(0,10)、(1,9)、(1,10)、(1,11)、(2,9)、(2,10)以及(2,11)为第四组;所述坐标为(3,0)、(3,1)、(4,0)、(4,1)、(4,2)、(5,0)、(5,1)以及(5,2)为第五组;所述坐标为(2,3)、(3,2)、(3,3)、(3,4)、(3,5)、(4,3)、(4,4)以及(4,5)为第六组;所述坐标为(2,8)、(3,6)、(3,7)、(3,8)、(3,9)、(4,6)、(4,7)以及(4,8)为第七组;所述坐标为(3,10)、(3,11)、(4,9)、(4,10)、(4,11)、(5,9)、(5,10)以及(5,11)为第八组;所述坐标为(6,0)、(6,1)、(6,2)、(7,0)、(7,1)、(7,2)、(8,1)以及(8,2)为第九组;所述坐标为(6,3)、(6,4)、(7,3)、(7,4)、(7,5)、(8,3)、(8,4)以及(8,5)为第十组;所述坐标为(5,3)、(5,4)、(5,5)、(5,6)、(5,7)、(5,8)、(6,5)以及(6,6)为第十一组;所述坐标为(6,7)、(6,8)、(7,6)、(7,7)、(7,8)、(8,6)、(8,7)以及(8,8)为第十二组;所述坐标为(6,9)、(6,10)、(6,11)、(7,9)、(7,10)、(7,11)、(8,9)以及(8,10)为第十三组。
9.一种如权利要求1-8中任一项所述的二维码编码方法,将二进制数据流编码输出码图符号;包括如下步骤A、将二进制数据流分割成具有特定比特长度的信息数据码词;B、对所述信息数据码词应用纠错算法进行运算,生成纠错码词;C、将所述信息数据码词、纠错码词生成单元模块为圆形单元模块、且模块与模块之间保留间隙的码图符号。
10.如权利要求9所述的编码方法,其特征是所述码图具有12×9圆形单元模块,其中四角的四个单元为定位单元,在余下的104个圆形单元模块中,前80个用于存储信息数据,剩下的24个用于存储纠错数据。
11.如权利要求10所述的编码方法,其特征是所述纠错数据码词按如下方式生成80个比特的信息数据按每8个比特一组分成10组,即共计10个8比特信息数据码词(codeword),对该10个码词运用纠错算法生成3个8比特的纠错码词。
12.如权利要求11所述的编码方法,其特征是所述纠错算法选用Reed-Solomon纠错算法。
13.如权利要求12所述的编码方法,其特征是所述纠错码词选用BCH纠错码。
14.一种二维码解码方法,包括如下步骤1)获取码图符号图像,2)对获取的码图符号图像进行二值化处理,3)对圆形单元模块进行边缘检测得到边界图像,4)对边界图像进行闭合边界跟踪,5)圆形单元模块识别,6)区别并剔除不同码图符号的圆形单元模块,7)方向定位,8)码词还原并纠错。
15.如权利要求14所述的方法,其特征是在所述步骤1)和步骤2)之间,还包括步骤1`)对获取的码图符号进行图像增强处理。
16.如权利要求14所述的方法,其特征是所述步骤3)中,所述边缘检测获得的边界象素定义为像素值为0且相邻8个像素中有非0像素的象素;所述边缘检测的方法是对二值图像中所有像素作边界判定得到边界图像,将边界像素标记为最大亮度255,其余则标记为0。
17.如权利要求14所述的方法,其特征是所述步骤4)对边界图像进行闭合边界跟踪的过程包括41)对边界图像按行主的方向扫描,以扫描到的第一个边界像素为边界跟踪的起点像素,如果没有边界像素则表明本次流程结束;42)将起点像素的象素坐标放入队列Q,并将该起点像素标记为0,表示已跟踪过了;43)判断起点像素的相邻8个像素中是否有边界像素,如果有则任选一个像素作为下次跟踪的起点,跳转到42);否则本次跟踪结束,队列Q中的象素坐标列表即是一个闭合边界,存储队列Q中的象素坐标列表并将其清空,跳转到41)。
18.如权利要求14所述的方法,其特征是所述步骤5)圆形单元模块识别的过程包括51)将闭合边界所有边界点的象素横坐标累加,将累加和除以边界点总数得到闭合边界的中心点象素横坐标u;将所有边界点象素纵坐标累加,将累加和除以边界点总数得到闭合边界的中心点象素纵坐标v;52)以闭合边界中心点象素坐标(u,v)按四个方向扫描闭合边界的直径,分别得到四个长度值d1,d2,d3,d4;53)取平均直径为d=(d1+d2+d3+d4)/4,定义圆的规范度为N=|d-d1|/d+|d-d2|/d+|d-d3|/d+|d-d4|/d;54)对每一个闭合边界计算其N值,根据实测统计结果将N值大于设定阈值TN的闭合边界丢弃,剩下的闭合边界认为是条码圆形单元模块的边界。
19.如权利要求14所述的方法,其特征是所述步骤6)区别并剔除不同码图符号的圆形单元模块的过程包括61)取得两个圆的尺寸差异度设一个圆的直径长度为D1,另一个圆的直径长度为D2,则这两个圆的尺寸差异度为Ldif=|D1-D2|/max(D1,D2),设定条码的静区宽度为M个圆形单元模块直径,并且圆的尺寸差异度为Ldif;62)选择离图像中心点最近的圆形单元模块为种子圆形单元模块,然后将距离该圆形单元模块距离小于M且尺寸差异度Ldif小于预设值的圆形单元模块加入到分组中;63)一轮增长结束后,以新加入组的圆形单元模块为种子圆形单元模块重复增长过程,直到没有新的圆形单元模块加入组为止。
20.如权利要求14所述的方法,其特征是所述步骤7)方向定位的过程包括71)找出码图符号的四角定位圆形单元模块;72)设定四角定位圆形单元模块的坐标;73)按照坐标校正公式,计算各圆形单元模块的坐标。
21.如权利要求14所述的方法,其特征是所述步骤8)的过程包括根据与编码时的码词比特到条码圆形单元模块的布局,及码图符号中的各圆形单元模块坐标,设置码词各比特位的值,有圆形单元模块对应的码词的比特位为比特1,否则为比特0;运用Reed-solomon纠错算法对码词纠错;纠错成功后,输出数据字。
22.如权利要求20所述的方法,其特征是所述步骤71)的具体过程包括根据各圆形单元模块的闭合边界坐标,计算出圆形单元模块组的最小外接矩形,经过该最小外接矩形的中心坐标划一条水平线与垂直线,将圆形单元模块分成左上、右上、左下以及右下四个区,确定每一个区中离最小外接矩形的中心最远的点为该区的定位圆形单元模块。
23.如权利要求20所述的方法,其特征是所述步骤72)的具体过程包括设定四角定位圆形单元模块在条码中的坐标分别为(0,0)、(11,0)、(0,8)以及(11、8);
24.如权利要求20所述的方法,其特征是所述步骤73)的具体过程包括根据坐标校正公式x’=K0*x+K1*x*y+K2*y+K3;y’=K4*x+K5*x*y+K6*y+K7;(x’,y’)为各圆形单元模块的坐标,(x,y)为图像中原点的坐标,将四角定位圆形单元模块在条码中的坐标以及它们在图像中的坐标代入上述公式得到8个8元一次方程,解方程组得出K0~K78个系数,将K0~K7代入方程就得到了坐标转换方程,将每个圆形单元模块的中心坐标填入该方程组,计算出该圆形单元模块在条码中的坐标。
全文摘要
本发明公开了一种二维码及其编解码方法,二维码采用圆形单元模块,且模块与模块之间保留间隙;圆形单元模块在深度离焦条件下成像后还是圆形单元模块,经过unsharp mask滤波后能很好的还原圆形单元模块的形状。这种设计使得图像处理算法对二值化阈值的选择不敏感,又因模块间有间隙,减小了二值化后相邻模块粘连在一起可能性,使得每个模块可以被单独定位。因此,本发明即便在深度离焦、低照度成像条件下仍可以可靠地识读、解码;易识读,纠错能力强,对识读设备的要求低,利于广泛推广应用。
文档编号G06K9/00GK1885311SQ20061002109
公开日2006年12月27日 申请日期2006年5月29日 优先权日2006年5月29日
发明者常治国, 吕迎丰, 张伟 申请人:深圳矽感科技有限公司