一种彩色二维码的实现方法与流程

文档序号:12178157阅读:1068来源:国知局
一种彩色二维码的实现方法与流程

本发明属于计算机信息编码技术领域,具体涉及一种彩色二维码的实现方法。



背景技术:

二维码在许多领域得到了广泛应用,目前主要有QR、Data Matrix和PDF417等多种二维码编码方式。无论哪一种编码方式,虽然编码规则和数据格式不同,但其本质上都是二进制编码,即采用两种不同颜色(常用黑白色)分别表示0和1。词语“二维码”对应的QR编码,分别采用黑白色和红黄色进行表达。在二维码图像的使用过程中,图像中每一个像素点的色彩可以有很多种,如计算机中24位真彩色共有224种不同颜色,而目前的编码方式仅采用了两种颜色,容量低。



技术实现要素:

本发明的目的是提供一种彩色二维码的实现方法,以解决现有二维码容量低的问题。

本发明采用以下技术方案:一种彩色二维码的实现方法,包括编码和解码两个步骤,编码时采用传统的二维码编码算法生成双色二维码,对生成的多幅双色二维码图逐个像素点按位进行数学运算,利用24位真彩色的编码规则来形成彩色二维码;解码时将彩色二维码的每个像素点的每一位提取出来,形成多幅双色二维码,采用传统的二维码解码算法提取所包含的信息。

进一步的,编码的具体方法为:

步骤1.1、将待编码的数据分解为n个长度为P、以及一个长度为M-n*P的原始数据块,数据块的序号依次标记为1,2,……,n,n+1;

其中,设现有二维码编码方式中单幅图像的数据容量最大为P个字节,待编码的数据总长度为M个字节;0≤n≤23,1≤M-n*P≤P;

步骤1.2、采用现有的二维码编码方式,生成n+1个原始数据块所对应的n+1个双色二维码图像,其序号依次标记为1,2,……,n,n+1;

步骤1.3、获得每幅双色二维码图像的二维像素矩阵bk,k=1,2,……,n,n+1;由于现有的双色二维码图像为二值图,因此得到的矩阵中每一个元素的取值为0或1;

步骤1.4、利用n+1个像素矩阵bk按下式生成新的像素矩阵C:

C(i,j)=b1(i,j)+b2(i,j)*2+b3(i,j)*22+……+bn(i,j)*2n-1+bn+1(i,j)*2n

其中,i=1,2,……,L2、j=1,2,……,L1,二维码图像最大宽度为L1个像素、最大高度为L2个像素;

步骤1.5、利用步骤1.4中获得的矩阵C,按照24位真彩色编码规则生成彩色图像,该图像即为彩色二维码图像。

进一步的,步骤1.1中,M的最大值为24*P,当M超出此最大值时应当拆解成两组或多组待编码的数据。

进一步的,步骤1.3中,如果像素矩阵bn+1的大小小于L1×L2,则将其大小扩充至L1×L2,扩充部分的矩阵元素取值均设置为1或0。

进一步的,解码的具体方法为:

(1)对步骤1.5中生成的彩色二维码图像,循环进行二十四次数据处理,得到24幅双色二维码图像;

(2)将24幅双色二维码图像逐个按传统二维码的解码处理方法进行解码,得到24个数据块;

(3)按24个数据块顺序连接起来即为该彩色二维码图像所包含的信息。

进一步的,解码过程的循环处理的方法为:

(1)根据24位真彩色的编码规则,将彩色二维码图像的像素色彩转换成整数值矩阵C,矩阵的行元素数量为H1,列元素数量为H2

(2)生成新矩阵b,它的元素b(i,j)=(C(i,j)AND 2n-1)/2n-1,其中n=1,2,…,24,表示循环处理的次数;AND表示计算机技术中的“按位与”运算;i=1,2,……,H2、j=1,2,……,H1

(3)矩阵b的元素均为0或1,将其转换为传统的双色二维码图像。

本发明的有益效果是:在传统二维码的编码处理方法之后增加了一道处理过程,将多幅传统二维码图像叠加为彩色二维码;在传统二维码的解码处理方法之前增加了一道处理过程,将彩色二维码分解成多幅传统二维码。单幅本发明的彩色二维码图像的数据容量,达到了同样尺寸双色二维码的数据容量的24倍,容量得到大幅扩充;而且采用本发明的实现方法,在编码和解码时,无需进行复杂的数学运算和图像处理,仍可采用原有的二维码编码和解码算法。

【附图说明】

图1a至图1d为实施例中第1幅、第11幅、第21幅和第24幅的二维码图像;

图2为实施例中生成的24位真彩色二维码图像;

图3a至图3d为实施例中第1幅、第11幅、第21幅和第24幅双色二维码图像。

【具体实施方式】

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

本发明的一种彩色二维码的实现方法包括编码和解码两个步骤,编码时采用传统的二维码编码算法生成双色二维码,对生成的多幅双色二维码图逐个像素点按位进行数学运算,利用24位真彩色的编码规则来形成彩色二维码;解码时将彩色二维码的每个像素点的每一位提取出来,形成多幅双色二维码,采用传统的二维码解码算法提取所包含的信息。本发明特点是在传统二维码的编码处理方法之后增加了一道处理过程,将多幅传统二维码图像叠加为彩色二维码;在传统二维码的解码处理方法之前增加了一道处理过程,将彩色二维码分解成多幅传统二维码。发明点在于合成算法和分解算法。

一、编码:

步骤1.1、将待编码的数据分解为n个长度为P、以及一个长度为M-n*P的原始数据块,数据块的序号依次标记为1,2,……,n,n+1;

其中,设现有编码方式中单幅图像的数据容量最大为P个字节,待编码的数据总长度为M个字节;0≤n≤23,1≤M-n*P≤P;M的最大值为24*P,当M超出此最大值时应当拆解成两组或多组待编码的数据。

步骤1.2、采用现有的二维码编码方式,生成n+1个原始数据块所对应的n+1个双色二维码图像,其序号依次标记为1,2,……,n,n+1;

步骤1.3、获得每幅双色二维码图像的二维像素矩阵bk,k=1,2,……,n,n+1;由于现有的双色二维码图像为二值图,因此得到的矩阵中每一个元素的取值为0或1;

前n个像素矩阵的大小为L1×L2,第n+1个像素矩阵的大小根据第n+1个数据块的长度而变化,最大为L1×L2

如果像素矩阵bn+1的大小小于L1×L2,则将其大小扩充至L1×L2,扩充部分的矩阵元素取值均设置为1或0。

步骤1.4、利用n+1个像素矩阵bk按下式生成新的像素矩阵C:

C(i,j)=b1(i,j)+b2(i,j)*2+b3(i,j)*22+……+bn(i,j)*2n-1+bn+1(i,j)*2n

其中,i=1,2,……,L2、j=1,2,……,L1,二维码图像最大宽度为L1个像素、最大高度为L2个像素;

步骤1.5、利用步骤1.4中获得的矩阵C,按照24位真彩色编码方式生成彩色图像,该图像即为彩色二维码图像。

二、解码的具体方法为:

假定按5.1所述方法生成的24位真彩色二维码图像宽度和高度分别为L1和L2个像素。

(1)对步骤1.5中生成的彩色二维码图像,循环进行二十四次数据处理,得到24幅双色二维码图像;

(2)将24幅双色二维码图像逐个按传统二维码的解码处理方法进行解码,得到24个数据块;

(3)按24个数据块顺序连接起来即为该彩色二维码图像所包含的信息。

其中,解码过程的循环处理的方法为:

(a)根据24位真彩色的编码规则,将彩色二维码图像的像素色彩转换成整数值矩阵C,矩阵的行元素数量为H1,列元素数量为H2

(b)生成新矩阵b,它的元素b(i,j)=(C(i,j)AND 2n-1)/2n-1,其中n=1,2,…,24,表示循环处理的次数;AND表示计算机技术中的“按位与”运算;i=1,2,……,H2、j=1,2,……,H1

(c)矩阵b的元素均为0或1,将其转换为传统的双色二维码图像。

实施例:

(1)编码过程

1.1需要转换的字符串如下:

1.0000000000-03.162277660-14.142135624-054.7722557511.4142135624-04.472135955-20.000000000-077.4596669241.7320508076-05.477225575-24.494897428-094.8683298052.0000000000-06.324555320-28.284271247-109.5445115012.2360679775-07.071067812-31.622776602-122.4744871392.4494897428 -07.745966692-34.641016151-134.1640786502.6457513111-08.366600265-37.416573868-144.9137674622.8284271247-08.944271910-40.000000000-154.9193338483.0000000000-09.486832981-42.426406871-164.3167672523.1622776602-10.000000000-44.721359550-173.2050807573.3166247904-10.488088482-46.904157598-181.6590212463.4641016151-10.954451150-48.989794856-189.7366596103.6055512755-11.401754251-50.990195136-197.4841765813.7416573868-11.832159566-52.915026221-204.9390153193.8729833462-12.247448714-54.772255751-212.1320343564.0000000000-12.649110641-56.568542495-219.0890230024.1231056256-13.038404810-58.309518948-225.8317958134.2426406871-13.416407865-60.000000000-232.3790007724.3588989435-13.784048752-61.644140030-238.7467277264.4721359550-14.142135624-63.245553203-244.9489742784.5825756950-14.491376746-64.807406984-250.9980079604.6904157598-14.832396974-66.332495807-256.9046515734.7958315233-15.165750888-67.823299831-262.6785107315.6568542495-17.888543820-80.000000000-309.838667697

1.2、将原始数据分成24个数据块(每一个数据块为一行)

1.0000000000-03.162277660-14.142135624-054.772255751

1.4142135624-04.472135955-20.000000000-077.459666924

1.7320508076-05.477225575-24.494897428-094.868329805

2.0000000000-06.324555320-28.284271247-109.544511501

2.2360679775-07.071067812-31.622776602-122.474487139

2.4494897428-07.745966692-34.641016151-134.164078650

2.6457513111-08.366600265-37.416573868-144.913767462

2.8284271247-08.944271910-40.000000000-154.919333848

3.0000000000-09.486832981-42.426406871-164.316767252

3.1622776602-10.000000000-44.721359550-173.205080757

3.3166247904-10.488088482-46.904157598-181.659021246

3.4641016151-10.954451150-48.989794856-189.736659610

3.6055512755-11.401754251-50.990195136-197.484176581

3.7416573868-11.832159566-52.915026221-204.939015319

3.8729833462-12.247448714-54.772255751-212.132034356

4.0000000000-12.649110641-56.568542495-219.089023002

4.1231056256-13.038404810-58.309518948-225.831795813

4.2426406871-13.416407865-60.000000000-232.379000772

4.3588989435-13.784048752-61.644140030-238.746727726

4.4721359550-14.142135624-63.245553203-244.948974278

4.5825756950-14.491376746-64.807406984-250.998007960

4.6904157598-14.832396974-66.332495807-256.904651573

4.7958315233-15.165750888-67.823299831-262.678510731

5.6568542495-17.888543820-80.000000000-309.838667697

1.3、采用双色法生成每一个数据块的二维码,每一幅图像的像素数量为194*194,其中,第1幅、第11幅、第21幅、第24幅的二维码,分别如图3a至图3d所示。

1.4、提取每一个像素点对应的二进制代码,并计算出新图像对应的色彩值。随机列出7个位置的色彩值,如表1所示:

表1

1.5、如图2所示,生成24位真彩色二维码。

(2)解码过程:

2.1、将彩色二维码逐个像素提取其色彩对应的数值,随机列举7个位置的色彩值,如表2所示:

表2

2.2、将每一个像素色彩对应的数值转换按算法转换为对应的二进制串,随机列举一些二进制代码,如表3所示:

表3

2.3、将所有的二进制串,逐位提取出来,作为双色二维码对应位置的像素值,生成双色二维码图像,其中,第1幅、第11幅、第21幅、第24幅双色二维码图像分别如图3a至图3d所示。

2.4、对双色二维码进行解码,得到每一幅二维码所包含的信息。

1.0000000000-03.162277660-14.142135624-054.772255751

1.4142135624-04.472135955-20.000000000-077.459666924

1.7320508076-05.477225575-24.494897428-094.868329805

2.0000000000-06.324555320-28.284271247-109.544511501

2.2360679775-07.071067812-31.622776602-122.474487139

2.4494897428-07.745966692-34.641016151-134.164078650

2.6457513111-08.366600265-37.416573868-144.913767462

2.8284271247-08.944271910-40.000000000-154.919333848

3.0000000000-09.486832981-42.426406871-164.316767252

3.1622776602-10.000000000-44.721359550-173.205080757

3.3166247904-10.488088482-46.904157598-181.659021246

3.4641016151-10.954451150-48.989794856-189.736659610

3.6055512755-11.401754251-50.990195136-197.484176581

3.7416573868-11.832159566-52.915026221-204.939015319

3.8729833462-12.247448714-54.772255751-212.132034356

4.0000000000-12.649110641-56.568542495-219.089023002

4.1231056256-13.038404810-58.309518948-225.831795813

4.2426406871-13.416407865-60.000000000-232.379000772

4.3588989435-13.784048752-61.644140030-238.746727726

4.4721359550-14.142135624-63.245553203-244.948974278

4.5825756950-14.491376746-64.807406984-250.998007960

4.6904157598-14.832396974-66.332495807-256.904651573

4.7958315233-15.165750888-67.823299831-262.678510731

5.6568542495-17.888543820-80.000000000-309.838667697

2.5、将上述信息连接起来就是彩色二维码所表达的信息。

在二维码图像的使用过程中,图像中每一个像素点的色彩可以有很多种,如计算机中24位真彩色共有224种不同颜色,而目前的编码方式仅采用了两种颜色,容量低。很显然采用多种颜色(如4种、8种甚至更多)可以大幅提高二维码的容量。目前已经出现的“三维彩码”(简称三维码、彩码),采用4种颜色(红、绿、蓝和黑)甚至更多种颜色来表达信息。虽然部分三维码图像与现有二维码非常相似,但是该编码是完全重新设计的编码模式,其所用的编码、解码和图像识别算法等均需重新设计。

采用本发明的一种彩色二维码的实现方法后,单幅二维码图像的数据容量达到了同样尺寸双色二维码的数据容量的24倍。而且在编码和解码时,无需进行复杂的数学运算和图像处理,仍可采用原有的二维码编码和解码算法。

如QR码的版本设为3、纠错等级为低、模块大小为6时,生成的二维码图像像素为194*194,最大容纳53个字符。采用本发明后,可以容纳1272个字符,数据容量提高到原来的24倍。在编码时,仍采用原有的任一种二维码编码算法,只需要将多幅二维码图像按照编码过程中的算法,将同一坐标位置的像素“叠加”处理即可生成彩色二维码图像。在解码时,只需要将获得的彩色图像按照解码过程的算法逐个像素“提取”出多幅双色二维码图像,然后采用原有的二维码解码算法,即可得到二维码所表达的信息。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1