一种二维条码及其编解码方法

文档序号:6610682阅读:207来源:国知局

专利名称::一种二维条码及其编解码方法
技术领域
:本发明涉及一种二维条码的编码和解码方法。
背景技术
:矩阵式二维码一般由三部分组成特征模式区域,格式信息区域,数据码词区域。其中特征模式区域指导图像识别算法识别定位码图,格式信息区域存放描述码图格式与数据纠错相关的参数,数据码词区域存放经过纠错编码算法编码后的数据。如果特征模式区域与格式信息区域被破坏到一定程度就会导致码图不能被识别,因此这两个区域也就成为了码图中的致命区域(vulnerablearea),降低了二维码的可靠性。如图1所示是PDF417码结构示意图,在码图的左右两端的宽细不等的竖线是其特征模式区域10,在码图的左右两端的特征模式区域10以内的一部分是其格式信息区域20,如果特征模式区域10与格式信息区域20受到一定的破坏,该码图将不能被正确识别。如图2所示是QR码(QuickResponseCode)结构示意图,在码图的上部左右两角和下部左角处的"回"形区域是其特征模式区域30,在码图的三个角附近的特征模式区域30以内用虚线框出的部分是其格式信息区域40,如果特征模式区域30与格式信息区域40受到一定的破坏,该码图将不能被正确识别。
发明内容本发明所要解决的技术问题是:克服现有二维条码编码方法得到的条码容易被破坏而导致不能识别码图以及解码方法的可靠性、效率和精度不高的缺点,提供一种改进的二维条码及其编码和解码方法。本发明公开了一种二维条码,具有正方形码图,所述码图包括在基材表面连续排列的、分别具有深色和浅色光学特征的正方形单元模块,所述码图被分割成多个宏模块,所述宏模块包括在正方形的横向和纵向两个方向上交替排列的最外一周全部为浅色单元模块的白边框宏模块和最外一周全部为深色单元模块的黑边框宏模块。所述每个宏模块包括边框部分、码词部分和层号位,所述码词包括数据码词和纠错码词。所述边框部分是位于宏模块最外一周的单元模块,所述层号位是存储有层号信息的单元模块,码词部分是该宏模块内其它存储有码词的单元模块。优选的,所述宏模块包括NXN个单元模块,N为》3的自然数。所述码图每一边的宏模块至少有M个,M为^l的奇数。所述层号位是4个,分别位于所述边框模块内的4个角。所述宏模块按照由中心向外顺时针或逆时针螺旋式排列,并自中心向外依次分层和按层分簇,每层包括一个由4个比特位组成的层号,其值是0111、0011和0001三个中的一个,该三个值按层循环排列,相邻簇的层号不同。优选的,所述宏模块包括的单元模块数为N为6、7或8;所述宏模块包括NXN个单元模块,N为6、7或8,其对应存储的码词长度分别为6比特、7比特或8比特,从而每个宏模块包括整数个数据码词。本发明还公开了一种二维条码的编码方法,包括以下步骤数据码词生成步骤分割被编码二进制数为具有特定二进制比特长度的数据码词;纠错码词生成步骤对所述数据码词运用RS纠错算法生成纠错码词;码图主框架生成步骤生成码图的主框架,即生成各个宏模块的边框部分和层号位,所述边框部分分布在宏模块的最外一周,所述层号位分布在边框部分内的四个角,存储有层号信息,所述宏模块的其它部分为码词存储部分;码词填充获取码像步骤按照由中心向外以顺时针或逆时针螺旋方式填充所述数据码词和纠错码词到码图中每个宏模块的码词存储部分,生成码像文件,该码像中宏模块的排列顺序也即码词的存储顺序。优选的,码图主框架生成步骤中所述层号信息由四个比特位组成,分别是Olll、0011和0001三个值中的一个。再优选的,所述由四个比特位组成的三个值Olll、0011和0001按层循环排列,相邻层的值不同。所述宏模块的边框部分全部是深色单元模块或全部是浅色单元模块,分别称为黑边框宏模块和白边框宏模块,这两种宏模块在码图的纵向和横向两个方向上交替排列。优选的,数据码词生成步骤中所述特定的比特流的长度是6比特、7比特或8比特;所述宏模块包括NXN个单元模块,N为6、7或8,其对应存储的码词长度分别为6比特、7比特或8比特,从而每个宏模块包括整数个数据码词。所述码图主框架生成步骤还可以包括确定码图尺寸的步骤,即根据码词的数量确定码图的尺寸后再生成码图的主框架。所述码词填充步骤还可以包括形成新的特定二进制比特长度的码词的步骤,即先将数据码词和纠错码词进行适当的组合形成新的特定二进制比特长度的码词,然后再填充。本发明还公开了一种二维条码的解码方法,解码流程与编码流程相反,在解码之前先获取宏模块的大小,即每个宏模块所包括的单元模块数及其对应的码词的二进制比特长度,同时获取每个宏模块中层号模块的值和单元模块数,然后解码宏模块的二维码。解码包括如下步骤A.通过数码照相方式获取码图的灰阶图像;B.统计所述灰阶图像中不同像素的灰度值的分布;C.根据灰度值的分布确定阈值并转化所述灰阶图像为二值图像;D.检测所述二值图像的边界像素获得边界图像;E.获取所述边界图像中的直线的直线方程组并求解获得各个宏模块的四角坐标,或通过模板匹配算法定位每个宏模块并计算出其四角坐标;F.获取对应于被解码码图的数据码词矩阵;G.根据宏模块中层号位所存储的层号信息确定码图在被扫描时的方向、起始码词和每个宏模块在码图中的位置,并根据层号位的三种值的排列顺序获取码图预定的纠错等级;H.以步骤G所获得的结果为依据,根据正确的中心宏模块和码图方向读取数据码词并运用RS纠错算法纠正码词中的错误;I.输出数据码词并恢复数据码词为二进制数。所述步骤B中,采用直方图统计法统计所述灰阶图像中不同像素的灰度值的分布。所述步骤C中确定阈值的方法是直方图双峰法,所述转化灰阶图像为二值图像的方法是分割所述灰阶图像为不重叠或部分重叠的几部分,分别统计灰度值的分布,重叠部分的灰度值取平均值,二值化并将二值化的各个部分组合在。所述步骤D中,标记每一个上下左右4个像素只要有一个深色像素的浅色像素和每一个上下左右4个像素只要有一个浅色像素的深色像素为边界像素,采用霍夫算法获得边界图像。所述步骤E中计算每个宏模块的四角坐标方法是,获取步骤D的边界图像中的直线的直线方程组并求解获得各个宏模块的四角坐标,或者根据步骤D的边界图像通过模板匹配算法定位每个宏模块并计算出其四角坐标。所述步骤G中,当部分宏模块的信息位缺失时,通过多个层号位所存储的比特信息的统计来确定其在码图中的位置。优选的,所述步骤G中,还根据层号位的三种值的排列顺序获取码图预定的纠错等级。再优选的,所述步骤H中,按照预定的纠错等级运用RS纠错算法纠正码词中的错误。所述步骤G中获取对应于被解码码图的数据码词矩阵的方法是根据宏模块的四角坐标和己知的单元模块的尺寸计算宏模块内每个单元模块的中心坐标,根据所得每个单元模块的中心坐标从二值图像中读取单元模块存储的比特值,或者由单元模块中心坐标周围的像素值的统计值确定单元模块存储的比特值,从而获得被解码码图的数据码词矩阵。本发明的有益效果是因为该发明的编码方法在码像的每个宏模块的边框部分内的四个角内生成了含有由四个比特位组成的层号信息的层号位,所以每个宏模块都可以单独标识码图的方向,进而方便确定码图的方向,这样,即使码图有部分破损、被污染或变形的情况,通过其它部分也仍然可以确定出码,的方向并顺利解码。因为编码时采用长度是6比特、7比特或8比特的比特流长度编码,同时所述宏模块包括NXN个单元模块,N为6、7或8,其对应存储的码词长度分别为6比特、7比特或8比特,从而每个宏模块包括整数个数据码词,使得二维码以码词为单位存储和传输数据,提高了解码的可靠性。层号位的三个值采用按层循环排列方式,根据不同的排列方式,可标识出码图的纠错等级,方便解码时按照该预定的等级进行解码,从而提高了纠错效率和精度。同时,也使得形成的码图格式信息简单,与传统二维码相比少了容易受伤害的特定格式信息区域,因此,提高了码图的抗破损、抗污染和抗变形能力,即提高了码图的可靠性。在码图生成步骤中预先确定码图尺寸,然后再生成码图,可以使码图既可容纳所有码词,又不会太大。当码词数量比较多时,还可以在码词填充步骤中先将数据码词和纠错码词进行适当的组合,形成新的特定二进制比特长度的码词,然后再填充,可以确保一个码词对应一个宏模块,从而以码词为单位存储和传输,提高精度和效率。图1是PDF417码结构示意图;图2是QR码结构示意图3是本发明一个实施例的二维条码码图4A、4B是本发明一个实施例的二维条码码图中白边框宏模块和黑边框宏模块示意图5是本发明一个实施例的二维条码码图中宏模块结构示意图6是本发明一个实施例的二维条码码图中宏模块排列方式示意图7是本发明一个实施例的二维条码簇分布示意图8是本发明一个实施例的二维条码的层号示意图9是本发明一个实施例的二维条码编码流程图10是利用本发明解码方法获得的一个实施例二值图像示意图11是利用本发明解码方法对一个实施例的二值图像进行边界检测获得的边界图像示意图12是对本发明一个实施例的边界图像做边界检测后运用霍夫算法获得的直线效果图13是本发明一个实施例求得每个宏模块的四角坐标的示章图14A、14B是本发明一个实施例的码图在宏模块的四角可能具有的特殊图形模式;图15是本发明解码方法所用的确定阈值的方法示意具体实施例方式下面对照附图并通过具体实施例对本发明的二维条码及其编解码方法作进一步说明。如图3所示,是本发明实施例的二维条码码图,其包括在在基材表面沿正方形横向和纵向两个方向上交替排列的白边框宏模块501和黑边框宏模块502.如图4A和图4B所示,是本发明实施例的白边框宏模块和黑边框宏模块的示意图,两者均是由6X6个单元模块组成。如图5所示是本发明的一个实施例的二维条码码图中宏模块结构图,其每行具有6个单元模块,总数为36个单元模块;其最外围一圈的边框部分51包括单元模块20个,边框单元模块以内码词存储部分52包括数据单元模块12个,层号位53共有4个。如图6所示是本发明实施例的二维条码码图中宏模块排列方式示意图,图中深色模块为黑边框模块,浅色模块为白边框模块,宏模块的排列顺序由图中的序号表示,这也是码词存储的顺序(从中心向外按顺时针螺旋式排列V码图的每一边的宏模块数为5个,则该码图共有5X5个宏模块。将码图中的宏模块从中心向外分层,l号模块为第一层,2至9号宏模块组成第二层,10至25号宏模块组成第3层。该实施例的码图共有3层宏模块。定义第一层宏模块为第1簇,第二层宏模块为第2簇,第三层宏模块为第3簇,码图的簇号分布如图7所示。层号由4个比特位组成,层号一共有三个值可供选择,分别为Olll,0011,0001,相邻簇的宏模块层号必不相同,如图8是本发明实施例的二维条码的层号示意图所示,这样可以用来区分不同簇的宏模块,通过三个值的循环排列来标识不同簇的宏模块和码图的纠错等级,其中白色模块表示O,黑色模块表示1。纠错等级的标识规定如表一所示。表一<table>complextableseeoriginaldocumentpage10</column></row><table><table>complextableseeoriginaldocumentpage11</column></row><table>对于版本1的GM码(GridMatrixCode),受层号数量的限制,只能表示3个纠错等级,如表二所示。表二<table>complextableseeoriginaldocumentpage11</column></row><table>如图9所示,是本发明实施例的二维条码编码流程图,下面以宏模块为5X5、每个宏模块包括6X6个单元模块的码图为例具体说明本发明的编解码方法。首先将原始数据转换成具有6比特位的信息数据码词;再根据数据码词的数量确定出码图的尺寸;然后用RS编码算法生成纠错码词并附加在信息数据码词之间;接着生成码图的主框架,即白边框宏模块最外一周的浅色单元模块和黑色宏模块最外一周的深色单元模块,以及每个宏模块的4个层号位;再由码图中心开始按顺时针螺旋方向将数据码词和纠错码词填充到码图中形成码词部分,进而生成码像文件,编码结束。解码流程与编码流程相反,在解码之前先获取宏模块的大小,即每个宏模块所包括的单元模块数及其对应的码词的比特数,同时获取每个宏模块中层号模块的值和单元模块数,对本实施例来讲,宏模块尺寸为6X6,每种宏模块包括2个6比特位的码词,其具体的解码方法如下1.使用数码相机通过照相方式获取码图的灰阶图像,这种图像信号在存储器中的存在形式可以是包括了每一个像素的灰度值的像素矩阵,这种灰阶图像也可以直接在显示器上显示出来;2.对灰度图像中不同像素的灰度值的分布进行统计,例如采用直方图统计;3.根据不同像素的灰度值的分布确定阈值,将码图的灰阶图像转化成二值图像。确定阈值的方法可以是直方图双峰法,如图15所示,其中峰值VI代表深色模块灰度分布中心,峰值V3代表浅色模块灰度分布中心,二值化阈值V2介于峰值VI和峰值V3之间。如图10所示是利用本发明解码方法获得的实施例的二值图像,所有像素的值在图中表现为深色和浅色两种;4.对上述二值图像进行边界检测,对每一个浅色像素,如果与它最临近的上下左右4个像素只要有一个深色像素则该像素被标记为边界像素。对于深色像素,如果与它最临近的上下左右4个像素只要有一个浅色像素则该像素被标记为边界像素。如图11所示是本发明实施例的码图的边界图像示意图。5.检测上述边界图像中的所有直线,包括连续的和不连续的,并获得直线方程组。因为码图中具有交替排列的白边框宏模块和黑边框宏模块,所以检测出的直线切割出宏模块的分界线。如图12所示是运用霍夫算法在图11所示边界图像中检测出直线后的图像。6.解上述直线方程组求得每个宏模块的四角坐标,如图13所示,再根据宏模块的四角坐标和已知的单元模块的尺寸运用插值算法计算宏模块内每个单元模块的中心坐标,根据单元模块的中心坐标从二值图像中读取该单元模块存储的比特值(0或者1);该单元模块存储的比特值也可以由其中心坐标周围的像素值的统计值确定。7.经过上述步骤得到各个宏模块的定位,进而获取对应于被解码码图的数据码词矩阵。8.判断被解码的码图的方向在扫描码图时的旋转角度在每一个宏模块中,都有4个信息位,分布在宏模块的4个内角,这4个信息位有0111、0011、0001三种填充方式,所以每一个宏模块都可以单独标识出二维码符号的方向,故通过读取宏模块的4个信息位即可获得符号的方向;如果部分宏模块信息位缺失,可以通过多个宏模块的方向信息统计来确定符号方向,从而得到被解码的码图的方向在扫描码图时的旋转角度。9.以上面的计算结果为依据,并根据正确的中心宏模块(中心宏模块的确定方法同申请号为200410022052.5的发明专利申请说明书第13页第3段,其主要通过以上获取的数据码词矩阵的对称关系来确定中心宏模块的数据码词,从而确定中心宏模块。)和码图的方向读取数据码词,再运用RS纠错算法纠正所述读取的码词中可能存在的错误,如果纠错成功输出数据码词,将数据码词恢复成字节数据,解码结束。在上述步骤2和3中将灰阶图像二值化时,还可以将灰阶图像分割成不重叠或者部分重叠的几部分,针对各个分别统计灰阶值的分布确定阈值并二值化,重叠部分的灰阶阈值可以取平均值,然后再将二值化的各部分组合在一起。上述定位各个宏模块的方法也可以是模板匹配算法。因本发明的二维条码的码图采用白边框宏模块与黑边框宏模块交叉排列,从而在不同宏模块拼接处、也即在宏模块的四角形成了特殊的图形模式,如图14A、14B所示是实施例的特殊的图形模式示意图,故通过模板匹配算法可快速准确的测出并定位各个宏模块。以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属
技术领域
的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。权利要求1.一种二维条码的编码方法,包括以下步骤数据码词生成步骤分割被编码二进制数为具有特定二进制比特长度的数据码词;纠错码词生成步骤对所述数据码词运用RS纠错算法生成纠错码词;码图主框架生成步骤生成码图的主框架,即生成各个宏模块的边框部分和层号位,所述边框部分分布在宏模块的最外一周,所述层号位分布在边框部分内的四个角,存储有层号信息,所述宏模块的其它部分为码词存储部分;码词填充形成码像步骤按照由中心向外以顺时针或逆时针螺旋方式填充所述数据码词和纠错码词到码图中每个宏模块的码词存储部分,生成码像文件,该码像中宏模块的排列顺序也即码词的存储顺序。2.如权利要求1所述的二维条码的编码方法,其特征是所述层号信息由四个比特位组成,分别是Olll、0011和0001三个值中的一个。3.如权利要求2所述的二维条码的编码方法,其特征是所述由四个比特位组成的三个值Olll、0011和0001按层循环排列,相邻层的值不同。4.如权利要求1-3中任一所述的二维条码的编码方法,其特征是所述宏模块的边框部分全部是深色单元模块或全部是浅色单元模块,分别称为黑边框宏模块和白边框宏模块,这两种宏模块在码图的纵向和横向两个方向上交替排列。5.如权利要求4所述的二维条码的编码方法,其特征是所述码图主框架生成步骤还包括确定码图尺寸的步骤,即根据码词的数量确定码图的尺寸后再生成码图的主框架。6.如权利要求1-3中任一所述的二维条码的编码方法,其特征是所述特定的比特流的长度是6比特、7比特或8比特,所述宏模块包括NXN个单元模块,N为6、7或8,其对应存储的码词长度分别为6比特、7比特或8比特,从而每个宏模块包括整数个数据码词。7.如权利要求4所述的二维条码的编码方法,其特征是所述特定的比特流的长度是6比特、7比特或8比特,所述宏模块包括NXN个单元模块,N为6、7或8,其对应存储的码词长度分别为6比特、7比特或8比特,从而每个宏模块包括整数个数据码词。8.如权利要求7所述的二维条码的编码方法,其特征是所述码词填充步骤还包括形成新的特定二进制比特长度的码词的步骤,即先将数据码词和纠错码词进行适当的组合形成新的特定二进制比特长度的码词,然后再填充。9.一种二维条码的解码方法,其特征是-A.通过数码照相方式获取码图的灰阶图像;B.统计所述灰阶图像中不同像素的灰度值的分布;C.根据灰度值的分布确定阈值并转化所述灰阶图像为二值图像;D.检测所述二值图像的边界像素获得边界图像;E.计算每个宏模块的四角坐标;F.根据各宏模块的四角坐标和已知的单元模块的尺寸计算运用差值算法计算宏模块内每个单元模块的中心坐标,然后根据单元模块的中心坐标从二值图像中读取其存储的比特值或由其中心坐标周围的像素值的统计值确定其存储的比特值,从而获得对应于被解码码图的数据码词矩阵;G.根据宏模块中层号位所存储的层号信息确定码图在被扫描时的方向、起始码词和每个宏模块在码图中的位置,并根据层号位的三种值的排列顺序获取码图预定的纠错等级;H.以步骤G所获得的结果为依据,根据正确的中心宏模块和码图方向读取数据码词并运用RS纠错算法纠正码词中的错误;I.输出数据码词并恢复数据码词为二进制数。10.如权利要求9所述的二维条码的解码方法,其特征是所述步骤G中,当部分宏模块的信息位缺失时,通过多个层号位所存储的比特信息的统计来确定其在码图中的位置。11.如权利要求9所述的二维条码的解码方法,其特征是所述步骤G中,还根据层号位的三种值的排列顺序获取码图预定的纠错等级。12.如权利要求10所述的二维条码的解码方法,其特征是所述步骤H中,按照预定的纠错等级运用RS纠错算法纠正码词中的错误。13.如权利要求9所述的二维条码的解码方法,其特征是所述步骤B中,采用直方图统计法进行统计。14.如权利要求9所述的二维i码的解码方法,其特征是所述步骤C中确定阈值的方法是直方图双峰法,所述转化灰阶图像为二值图像的方法是分割所述灰阶图像为不重叠或部分重叠的几部分,分别统计灰度值的分布,重叠部分的灰度值取平均值,二值化并将二值化的各个部分组合在一起。15.如权利要求9所述的二维条码的解码方法,其特征是所述步骤D中,标记每一个上下左右4个像素只要有一个深色像素的浅色像素和每一个上下左右4个像素只要有一个浅色像素的深色像素为边界像素,采用霍夫算法获得边界图像。16.如权利要求9所述的二维条码的解码方法,其特征是所述步骤E中计算每个宏模块的四角坐标方法是,获取步骤D的边界图像中的直线的直线方程组并求解获得各个宏模块的四角坐标,或者根据步骤D的边界图像通过模板匹配算法定位每个宏模块并计算出其四角坐标。17.如权利要求9所述的二维条码的解码方法,其特征是所述步骤G中获取对应于被解码码图的数据码词矩阵的方法是先根据宏模块的四角坐标和已知的单元模块的尺寸计算宏模块内每个单元模块的中心坐标,再根据每个单元模块的中心坐标从二值图像中读取单元模块存储的比特值,或由单元模块中心坐标周围的像素值的统计值确定单元模块存储的比特值,从而获得被解码码图的数据码词矩阵。全文摘要本发明公开了一种二维条码的编码和解码方法,其编码方法包括数据码词生成步骤、纠错码词生成步骤、码图主框架生成步骤和码词填充形成码像步骤;所述解码方法是通过数码照相方式获取码图的灰阶图像,统计所述灰阶图像中不同像素的灰度值的分布,确定阈值并转化所述灰阶图像为二值图像并获取其边界图像,计算码图中每个宏模块的四角坐标和宏模块内每个单元模块的中心坐标,确定各个单元模块存储的比特值,从而获得对应于被解码码图的数据码词矩阵,根据正确的中心宏模块和码图方向读取数据码词并运用RS纠错算法按照预定的纠错等级纠正码词中的错误,输出数据码词并恢复数据码词为二进制数。文档编号G06K19/06GK101197004SQ20071012539公开日2008年6月11日申请日期2007年12月25日优先权日2007年12月25日发明者樊旭川,骏熊申请人:深圳矽感科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1