本发明属于信息存储、3d打印领域,涉及一种新型二维码的编码、定位及识别方法。
背景技术:
datamatrix是在国际制造领域广泛使用的二维码,与1989年由美国国际资料公司发明,广泛用于商品的防伪、统筹标识,是一种可以直接标记在固体表面的编码,该编码可以像普通条形码一样被相应的扫描装置自动读取,很受制造业青睐。目前datamatrix被广泛用于产品标识、防伪、质量追踪、自动仓储、物流管理与控制等系统。datamatrix采用了复杂的纠错码技术,使得该编码具有超强的抗污染能力。即使编码部分破损,一样不会影响读出全部信息。datamatrix的印刷特征使得它成为目前唯一支持可以直接标记(印刷、刻制、光刻、腐蚀、冲压等方式)在产品或零部件表面的编码。它的高效容错性能使它可以承受制造或流通过程中对零部件表面标识的污染,因此非常受制造业的欢迎。针对各种不同的应用,国际上已经颁布了多种形式的datamatrix符号标准体系。datamatrix的最小尺寸是目前所有条码中最小的,尤其特别适用于小零件的标识,以及直接印刷在实体上。
datamatrix码是一种矩阵式二维条码,其最大特点就是密度高,其最小尺寸是目前所有条码中最小的码。dm码可在仅仅25mm2的面积上编码30个数字。dm采用了复杂的纠错码技术,使得该编码具有超强的抗污染能力。datamatrix因提供极小又高密度的标签,且仍可存放合理的资料内容,故特别适用于小零件标识,商品防伪,电路标识等。由于其优秀的纠错能力,dm码己成为韩国手机二维条码的主流技术。相对qr而言,dm码由于信息容量差异不多,应用简单,被业内称为“简易码”,对终端要求不高,30万像素的手机就可识别,它更多的是基于wap的增值。二维码给手机上网带来了新的入口,通过扫描各类条码,用户很快就能进入wap网站,进行快速浏览。datamatrix符号看起来像一个由深浅两种颜色组成的国际象棋棋盘,每一个相同大小的黑色或白色方格称为一个数据单位,datamatrix符号就是由许多这样的数据单位组成。在寻边区外层有宽度为一个数据单位的静区。寻边区是“棋盘”的边界,只用于定位和定义数据单位大小,而不含有任何编码信息。被寻边区包围的数据区包含着编码信息。
点阵式二维码主要由标记区、空白区、探测区、数据区、填充区构成,数据区位于二维码图形的中间,探测区位于数据区的四周,由两条实线和两条虚线构成,探测区的外围四周是空白区,部分二维码图形的填充区位于数据区的右下角,标记区用于将二维矩阵数据隔开。点阵式二维码适用于工业流水线生产中3d打印机的打印输出,解决二维码识别中光照不匀、拍摄角度多样、对比度低及易污损的问题和二维码3d打印输出时由于二维矩阵形成多连通区域造成的打印不连续的问题。
点阵式二维码主要由标记区、空白区、探测区、数据区、填充区构成,空白区位于二维码图形的四周,主要用于将二维码符号与背景分离;探测区可表示一个模块的宽度,是数据区的边界,由两部分构成,一部分是由左边界和下边界构成的“l”型实线边缘,另一部分是由上边界和右边界构成的“l”型虚线边缘,主要用于限定符号的单元结构,也可用于确定物理尺寸及符号失真的问题;数据区是由保留点和镂空点组成的正方形区域,里面信息的存储方式是保留点和镂空点的不同排列组合,采用二进制进行编码,其中数据区里面包括码字信息和纠错信息,部分尺寸的数据区由于码字信息和纠错信息无法完全填充数据区,会导致数据区存在部分空白,该区域位于数据区的右下角,一般采用保留点和镂空点交替排列的方式进行填充。在实际中,编码后得到的二维矩阵是一个多连通区域,如果采用‘1’作为保留点,‘0’作为镂空点或者‘1’作为镂空点,‘0’作为保留点的方式进行打印的话,会造成打印区域不连续,无法完整的表示整个二维码区域。
因此,研究一种在二维矩阵中间增加标杆以达到固定编码信息的方法,具有重要的意义。
技术实现要素:
本发明要解决的技术问题,是提供一种新型二维码的编码、定位及识别方法,在二维矩阵中间增加标杆以达到固定编码信息,采用在n*n矩阵的二维码符号的基础上,在矩阵每一列的左侧添加一列全0或者全1的值,将n*n的矩阵变换为n*2n的矩阵的方法进行编码,防止在进行镂空打印时二维码不连贯时产生无法进行打印的现象,后续再进行二维码定位和识别时,再将其转换为n*n的矩阵,既能够方便二维码的识别,同时解决了镂空打印时出现的不连贯现象,而无法完整的表示整个二维码区域的问题。
为解决上述技术问题,本发明所采取的技术方案是:
一种新型二维码的编码、定位及识别方法,按照以下步骤顺序进行:
一)编码方法
1)将数据信息转换为数据码字;
2)根据reed-solomon算法及纠错要求,生成纠错码字;
3)按照标准模板放置纠错码字到矩阵中,生成n*n矩阵的二维码符号;
4)在n*n矩阵的二维码符号的基础上,在矩阵每一列的左侧添加一列全0或者全1的值,将n*n的矩阵变换为n*2n的矩阵;
二)二维码区域定位方法
1)harris角点检测算法,确定角点的位置;
2)hough变换方法从角点中提取直线;
三)二维码区域的识别方法
1)用二维高斯卷积算子对图像i(x,y)按块大小为
2)对卷积后的图像用otsu算法做二值化计算,得到二值化矩阵;
3)从得到的二值化矩阵的第二列为起始列取出,然后每隔一列取出下一列的值,将取出的列按顺序放置在一个新的矩阵的列中,将n*2n的矩阵转换得到的n*n的新矩阵即为二维码矩阵,利用解码算法对该二维码矩阵进行解码得到码字信息。
作为本发明的一种限定,所述的步骤一)中按照ascii基本编码规则将数据信息转换为数据码字。
作为上述限定的进一步限定,所述的ascii基本编码规则为:
1)基本ascii字符,即ascii值为0-127的字符,数据编码时用原值加1,编码后的码字值为1-128;
2)扩展ascii字符,即ascii值为128-255的字符,使用控制字符235编码为两个数值,第一个是在码字流中加入切换码字235,第二个是在原ascii值减去128加1得到结果.编码后的字符值为(235,1)-(235,128);
3)两位数00-99,或者两个十以内的数字相连,使用130-299编码,即两位数的实际值加130,编码后的码字值为130-229;
4)实际编码过程中,编码后的码字不能完全占用码字个数时,要在编码码字后增加填充字符;第一个填充字符编码后的码字为129,之后的填充字符的编码结果是在129的基础上再加上一个伪随机数,该算法为253状态随机算法。
作为本发明的另一种限定,所述的步骤一)中2)的纠错方法为:
ⅰ)建立码字多项式c(x)
c(x)=cn-1xn-1+k+cn-2xn-2+k+…+c1x1+k+c0xk;
其中,cn-1,cn-2,…,c1,c0是数据码字,cn-1是第一个数据码字,c0是最后一个数据码字,k是纠错码字的个数;
ⅱ)建立纠错码字生成多项式g(x)
g(x)=xk+gk-1xk-1+…+g1x+g0
上式中所有的运算都是基于galois域;
ⅲ)利用c(x)和g(x)求出纠错码多项式e(x)
e(x)=ek-1xk-1+ek-2xk-2+…+e1x+e0
ek-1,ek-2,…,e1,e0为纠错码字,ek-1是第一个纠错码字,e0是最后一个纠错码字;e(x)的计算方法也是基于galois域。
作为本发明的第三种限定,所述的步骤一)中3)的方法为:
最终生成的码字流为cn-1,cn-2,…,c1,c0,ek-1,ek-1,…,e1,e0,按照标准模板放置码字符号。
作为本发明的第四种限定,所述的步骤二)中1)的方法为:
ⅰ)设一幅图像的函数为i(x,y),对图像的每个像素点用taylor展开去近似其邻域的任意方向,则每个像素点及其邻域的能量为:
对该函数进行线性变换展开并整理得到:
则展开后最终的结果为:
式中,lx为x方向的差分,ly为y方向的差分,w(x,y)为高斯函数;
ⅱ)由于矩阵m的两个特征向量l1和l2与矩阵m的主曲率成正比;其中,l1和l2为矩阵
用下式来判定角点处的能量:
r=detm-k(tracem)2;其中,k为0.04~0.06。
ⅲ)对于得到的能量矩阵r,以
作为本发明的第五种限定,所述的步骤二)中2)的方法为:
采用hough变换方法对检测到的角点提取直线,获得二维码区域的定位信息;
设直角坐标系中一条直线的直线方程为:
y=k*x+b
由于直角坐标中的直线在极坐标系中变为一条正弦曲线,因此将其转换为极坐标系下的方程为:
p=x*cos(a)+y*sin(a)
上式中a为极坐标系下从原点引出的射线与x轴正向的夹角,p为从原点引出的垂线长度;在图像中检测出角点后,经过hough变换,角点的正弦曲线在极坐标中会有一个公共交点;hough变换算法的计算过程为:
(1)根据直角坐标系的方程将图像空间每一点映射到hough空间中的一组累加器;
(2)满足上式的每一个公共交点,将使对应的累加器中的值加1;
(3)检测累加器中的局部极大值;
如果图像中包含一条直线,则有一个对应的累加器会出现局部最大值,通过检测hough空间中的局部最大值,即可确定与该条直线对应的一对参数,则从公共参数中提取出的直线,即为二维码区域中边缘位置,因此通过hough变换对检测到的角点进行直线检测,就提取出了二维码区域。
作为本发明的第六种限定,所述的步骤三)中1)的方法为:
用二维高斯卷积算子对图像i(x,y)按块大小为
程为在区域
其中高斯算子为:
设卷积后的图像为g(x,y),则:
其中,
本发明还有一种限定,所述的步骤三)中2)的方法为:
设区域内像素的取值范围为(min~max),该区域内像素总数目为n,设该区域二值化的最佳阈值为t,t∈(min~max),则当阈值为ti时:
1)若该区域灰度值大于ti的像素数目为sum1,像素和为max1,则其灰度均值为:
2)该区域灰度值小于ti的像素数目为sum2,像素和为max2,则其灰度均值为:
3)得到该区域的整体灰度均值为:avg3=w1*avg1+w2*avg2;
从而得到两部分方差和为:plus=w1*((avg1-avg3)^2)+w2*((avg2-avg3)^2);
4)遍历所有的ti,将得到最大方差值的阈值作为将该区域二值化的阈值。
由于采用了上述的技术方案,本发明与现有技术相比,所取得的技术进步在于:
本发明在二维矩阵中间增加标杆以达到固定编码信息,采用在n*n矩阵的二维码符号的基础上,在矩阵每一列的左侧添加一列全0或者全1的值,将n*n的矩阵变换为n*2n的矩阵的方法进行编码,防止在进行镂空打印时二维码不连贯时产生无法进行打印的现象,后续再进行二维码定位和识别时,再将其转换为n*n的矩阵,既能够方便二维码的识别,同时解决了镂空打印时出现的不连贯现象,而无法完整的表示整个二维码区域的问题。本发明中的点阵式dm码是一种矩阵式二维码,由保留点与镂空点按照二维矩阵的格式排列而成;采用上述方法能够解决二维矩阵形成多连通区域造成的打印不连续的问题,在打印时将全0或者全1的列作为固定支撑物,以实现二维码的镂空打印,后续的二维码识别时,再生成符号为布满0、1值的n*n方阵的二维码,方便打印需改变符号的排版方式,上述方法实现了镂空打印3d二维码,在进行二维码识别时,光线能够实现穿透,增加了0、1值在光线照射下的对比度,更加方便识别,在获取解码图像时光照不均匀、拍摄角度多样化、对比度低及易污损等问题。
本发明适用于镂空打印二维码的打印及识别。
本发明下面将结合说明书附图与具体实施例作进一步详细说明。
附图说明
图1为本发明实施例1中步骤一)编码生成的示意图;
图2为本发明实施例1中步骤二)中第1)步确定角点的示意图;
图3为本发明实施例1中步骤二)中第2)步提取直线的示意图;
图4为本发明实施例1中步骤三)中第3)步二维码识别后的示意图。
具体实施方式
实施例1一种新型二维码的编码、定位及识别方法
一种新型二维码的编码、定位及识别方法,按照以下步骤顺序进行:
一)编码方法
1)将数据信息转换为数据码字;
按照ascii基本编码规则将数据信息转换为数据码字;所述的ascii基本编码规则为:
1)基本ascii字符,即ascii值为0-127的字符,数据编码时用原值加1,编码后的码字值为1-128;
2)扩展ascii字符,即ascii值为128-255的字符,使用控制字符235编码为两个数值,第一个是在码字流中加入切换码字235,第二个是在原ascii值减去128加1得到结果.编码后的字符值为(235,1)-(235,128);
3)两位数00-99,或者两个十以内的数字相连,使用130-299编码,即两位数的实际值加130,编码后的码字值为130-229;
4)实际编码过程中,编码后的码字不能完全占用码字个数时,要在编码码字后增加填充字符;第一个填充字符编码后的码字为129,之后的填充字符的编码结果是在129的基础上再加上一个伪随机数,该算法为253状态随机算法。
2)根据reed-solomon算法及纠错要求,生成纠错码字;
具体方法如下:ⅰ)建立码字多项式c(x)
c(x)=cn-1xn-1+k+cn-2xn-2+k+…+c1x1+k+c0xk;
其中,cn-1,cn-2,…,c1,c0是数据码字,cn-1是第一个数据码字,c0是最后一个数据码字,k是纠错码字的个数;
ⅱ)建立纠错码字生成多项式g(x)
g(x)=xk+gk-1xk-1+…+g1x+g0
上式中所有的运算都是基于galois域;
ⅲ)利用c(x)和g(x)求出纠错码多项式e(x)
e(x)=ek-1xk-1+ek-2xk-2+…+e1x+e0
ek-1,ek-2,…,e1,e0为纠错码字,ek-1是第一个纠错码字,e0是最后一个纠错码字;e(x)的计算方法也是基于galois域。
所述的步骤一)中3)的方法为:
最终生成的码字流为cn-1,cn-2,…,c1,c0,ek-1,ek-1,…,e1,e0,按照标准模板放置码字符号。
3)按照标准模板放置纠错码字到矩阵中,生成n*n矩阵的二维码符号;
4)在n*n矩阵的二维码符号的基础上,在矩阵每一列的左侧添加一列全0或者全1的值,将n*n的矩阵变换为n*2n的矩阵,生成编码如图1所示;
二)二维码区域定位方法
1)harris角点检测算法,确定角点的位置,如图2所示;
具体方法为:
ⅰ)设一幅图像的函数为i(x,y),对图像的每个像素点用taylor展开去近似其邻域的任意方向,则每个像素点及其邻域的能量为:
对该函数进行线性变换展开并整理得到:
则展开后最终的结果为:
式中,lx为x方向的差分,ly为y方向的差分,w(x,y)为高斯函数;
ⅱ)由于矩阵m的两个特征向量l1和l2与矩阵m的主曲率成正比;其中,l1和l2为矩阵
用下式来判定角点处的能量:
r=detm-k(tracem)2;其中,k为0.04~0.06。
ⅲ)对于得到的能量矩阵r,以
2)hough变换方法从角点中提取直线,如图3所示;
具体方法为:采用hough变换方法对检测到的角点提取直线,获得二维码区域的定位信息;
设直角坐标系中一条直线的直线方程为:
y=k*x+b
由于直角坐标中的直线在极坐标系中变为一条正弦曲线,因此将其转换为极坐标系下的方程为:
p=x*cos(a)+y*sin(a)
上式中a为极坐标系下从原点引出的射线与x轴正向的夹角,p为从原点引出的垂线长度;在图像中检测出角点后,经过hough变换,角点的正弦曲线在极坐标中会有一个公共交点;hough变换算法的计算过程为:
(1)根据直角坐标系的方程将图像空间每一点映射到hough空间中的一组累加器;
(2)满足上式的每一个公共交点,将使对应的累加器中的值加1;
(3)检测累加器中的局部极大值;
如果图像中包含一条直线,则有一个对应的累加器会出现局部最大值,通过检测hough空间中的局部最大值,即可确定与该条直线对应的一对参数,则从公共参数中提取出的直线,即为二维码区域中边缘位置,因此通过hough变换对检测到的角点进行直线检测,就提取出了二维码区域。
三)二维码区域的识别方法
1)用二维高斯卷积算子对图像i(x,y)按块大小为
用二维高斯卷积算子对图像i(x,y)按块大小为
程为在区域
其中高斯算子为:
设卷积后的图像为g(x,y),则:
其中,
2)对卷积后的图像用otsu算法做二值化计算,得到二值化矩阵;
设区域内像素的取值范围为(min~max),该区域内像素总数目为n,设该区域二值化的最佳阈值为t,t∈(min~max),则当阈值为ti时:
1)若该区域灰度值大于ti的像素数目为sum1,像素和为max1,则其灰度均值为:
2)该区域灰度值小于ti的像素数目为sum2,像素和为max2,则其灰度均值为:
3)得到该区域的整体灰度均值为:avg3=w1*avg1+w2*avg2;
从而得到两部分方差和为:plus=w1*((avg1-avg3)^2)+w2*((avg2-avg3)^2);
4)遍历所有的ti,将得到最大方差值的阈值作为将该区域二值化的阈值。
3)从得到的二值化矩阵的第二列为起始列取出,然后每隔一列取出下一列的值,将取出的列按顺序放置在一个新的矩阵的列中,将n*2n的矩阵转换得到的n*n的新矩阵即为二维码矩阵,如图4所示,利用解码算法对该二维码矩阵进行解码得到码字信息。
采用上述方法解决了在进行镂空打印时二维码不连贯时产生无法进行打印的现象,后续再进行二维码定位和识别时,再将其转换为n*n的矩阵,既能够方便二维码的识别,同时解决了镂空打印时出现的不连贯现象,而无法完整的表示整个二维码区域的问题。本发明中的点阵式dm码是一种矩阵式二维码,由保留点与镂空点按照二维矩阵的格式排列而成;采用上述方法能够解决二维矩阵形成多连通区域造成的打印不连续的问题,在打印时将全0或者全1的列作为固定支撑物,以实现二维码的镂空打印,后续的二维码识别时,再生成符号为布满0、1值的n*n方阵的二维码,方便打印需改变符号的排版方式,上述方法实现了镂空打印3d二维码,在进行二维码识别时,光线能够实现穿透,增加了0、1值在光线照射下的对比度,更加方便识别,在获取解码图像时光照不均匀、拍摄角度多样化、对比度低及易污损等问题。
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限定,任何熟悉本专业的技术人员可能利用上述技术内容作为启示加以变更或改型为等同变化的等效实施例。但是,凡是未脱离本发明技术构思,依据本发明的技术实质对以上实施例所作出的简单修改,等同变化与改型,仍属于本发明权利要求的保护范围。