基于突出中央图案的数据点阵编解码方法、系统及介质与流程

文档序号:19682587发布日期:2020-01-14 17:35阅读:561来源:国知局
基于突出中央图案的数据点阵编解码方法、系统及介质与流程

本发明涉及数据存储技术领域,尤其是基于突出中央图案的数据点阵编解码方法、系统及介质。



背景技术:

现今人们习惯使用的一维和二维条码实质是计算机数字信息即数据,依据一定的编码规则输出形成可视的图形点阵块(可称为图形数据码)。

随着移动互联网的飞速发展,人们越来越多的习惯扫码应用,但现在市面上使用的二维码在发明时硬件技术条件和现在有很大的不同,即过去的二维码主要靠专用识读机具(如扫描枪、读卡器等)来作为“人机接口”,其传感器分辨率是较低的,故当时所发明的数据图形存储方法(一维和二维条码)其数据密度和整体容量是较低的,更无法考虑“良好的人机接口”。

随着技术的进步、时代的发展,人们对数据图形码技术的要求也不断提高,人们在使用产品的过程中愈发追求良好的“用户体验”,必须满足人机交互中“以人为本”的要求,以满足以人的主动性、选择性、决定性的要求,即:由人依据可视的图片、图像、图画、图案、图形(以下简称图形)来决定是否扫码。这就要求图形数据码在有限的资源(屏幕、纸张、印刷品、包装物、墙面等)上能够最大限度兼顾数据存储能力以及可展示的图案。

而到目前为止,纵观市面上的二维码编码方案,真正能较好满足这种人对图形识别领会和电脑对条码数据扫读,这种双重呈现要求的二维码方案还没有。即使现在常用的日本人发明的二维码——qr码(qr_code)方案也只是满足数据存储用途,而非兼顾图形、图案。qr码在实际使用中,在qr码中心抠出一小块“洞”来填上小图案,也是利用qr编码方案中的冗余纠错功能,但这种小图案的面积较小,无法通过图像表达更多识别信息,如果抠出的图案超出面积限制大小,则容易导致qr码扫读失败。因此,现有的qr码无法支持有中心大比例图案的logo、名片、印章、徽标、路牌、警示牌等数字网络接口。

因此,时代的发展要求必须产生一种新的、兼顾较大中央图案的数据阵列点阵码的技术。



技术实现要素:

有鉴于此,本发明实施例提供基于突出中央图案的数据点阵编解码方法、系统及介质。

第一方面,本发明实施例提供了一种基于突出中央图案的数据点阵编码方法,包括以下步骤:

确定数据点阵的编码参数,所述编码参数包括数据压缩算法、冗余纠错级别信息、掩模加密算法、数据冗余纠错策略、数据点阵的块数、每块数据点阵的行数和列数;

根据数据点阵的编码参数,将原始数据转换成预写数据比特流;

根据数据点阵的块数,将预写数据比特流切分为若干个比特流包;

确定每个比特流包的块数据流参数后,生成块数据比特流包;

创建块数据比特流包的码块工作区,并将块数据比特流写入码块工作区;

将码块工作区布局于中央图案外围;

其中,所述中央图案的中心到中央图案边缘的距离为第一距离,所述中央图案的中心到码块工作区边缘的距离为第二距离,所述第一距离与第二距离之间的比值不小于0.618。

进一步,所述确定数据点阵的编码参数这一步骤,包括以下步骤:

根据原始数据的数据性质,确定数据压缩算法和冗余纠错级别信息;

根据原始数据的应用领域,确定掩模加密算法;

根据预选的铺码资源和扫码条件,确定数据冗余纠错策略;

根据原始数据的数据量大小,计算数据点阵的块数、每块数据点阵的行数和列数。

进一步,所述根据数据点阵的编码参数,将原始数据转换成预写数据比特流这一步骤,具体为:

将原始数据转换成比特流,在该比特流中插入冗余纠错比特流,得到预写数据比特流。

进一步,所述确定每个比特流包的块数据流参数后,生成块数据比特流包这一步骤,包括以下步骤:

根据原始数据的应用领域、数据压缩算法、数据冗余纠错策略和掩模加密算法,计算码块参数;

根据数据点阵的码块总数确定块数据流包总数;

根据数据阵列的码块序号确定本块包序号;

根据块数据流包总数、本块包序号和本块包长度,计算块数据流参数;

根据块数据流参数、原始数据和掩模加密数据,生成块数据比特流包。

进一步,所述创建块数据比特流包的码块工作区,并将块数据比特流写入码块工作区这一步骤,包括以下步骤:

构造码块工作区,并在码块工作区内增设行开始符、行结束符、列开始符、列结束符以及方向符;

根据行开始符、行结束符、列开始符、列结束符以及方向符,逐行逐列将块数据比特流写入码块工作区。

第二方面,本发明实施例还提供了一种基于突出中央图案的数据点阵编码系统,包括:

参数确定模块,用于确定数据点阵的编码参数,所述编码参数包括数据压缩算法、冗余纠错级别信息、掩模加密算法、数据冗余纠错策略、数据点阵的块数、每块数据点阵的行数和列数;

转换模块,用于根据数据点阵的编码参数,将原始数据转换成预写数据比特流;

切分模块,用于根据数据点阵的块数,将预写数据比特流切分为若干个比特流包;

生成模块,用于确定每个比特流包的块数据流参数后,生成块数据比特流包;

创建模块,用于创建块数据比特流包的码块工作区,并将块数据比特流写入码块工作区;

布局模块,用于将码块工作区布局于中央图案外围;

其中,所述中央图案的中心到中央图案边缘的距离为第一距离,所述中央图案的中心到码块工作区边缘的距离为第二距离,所述第一距离与第二距离之间的比值不小于0.618。

第三方面,本发明实施例还提供了一种基于突出中央图案的数据点阵解码方法,包括:

获取数据点阵图像;所述数据点阵图像中的码块工作区布局于中央图案外围;所述中央图案的中心到中央图案边缘的距离为第一距离,所述中央图案的中心到码块工作区边缘的距离为第二距离,所述第一距离与第二距离之间的比值不小于0.618;

对数据点阵图像进行识别,得到解码参数;所述解码参数包括数据压缩算法、冗余纠错级别信息、掩模加密算法、数据冗余纠错策略、数据点阵的块数、每块数据点阵的行数和列数;

根据数据点阵图像的解码参数对数据点阵进行掩模解密,获取若干个块数据流包;

对若干个块数据流包进行拼接,得到中间数据流包;

根据数据点阵图像的解码参数对中间数据流包进行数据纠错,得到编码前的原始数据。

进一步,所述获取数据点阵图像这一步骤,具体为:

采集一个或多个数据点阵图像,对多个数据点阵图像进行分割,得到每个数据点阵图像,确定数据点阵中每个点位的值。

进一步,所述对数据点阵图像进行识别,得到解码参数这一步骤,包括以下步骤:

从数据点阵图像中获取各个码块的外部特征识别结果,所述识别结果包括行开始符、行结束符、列开始符、列结束符以及方向符;

根据外部特征识别结果,获取各个码块的解码参数,所述解码参数包括数据压缩算法、冗余纠错级别信息、掩模加密算法、数据冗余纠错策略、数据点阵的块数、每块数据点阵的行数和列数;

根据码块的块数信息判断各个码块是否识别齐全,若是,则不作处理;反之,则返回执行获取数据点阵图像的步骤。

进一步,所述根据数据点阵图像的解码参数对数据点阵进行掩模解密,获取若干个块数据流包这一步骤,包括以下步骤:

确定数据点阵的读码规则后,读取各个码块的数据点阵,得到临时数据流包;

根据掩模加密算法对临时数据流包进行解密运算,得到每个码块的块数据流包。

进一步,所述对若干个块数据流包进行拼接,得到中间数据流包这一步骤,包括以下步骤:

确定块数据流包总数、本块包序号和本块包长度;

根据块数据流包总数、本块包序号和本块包长度,计算块数据流参数;

根据块数据流参数对若干个块数据流包进行拼接,得到中间数据流包。

进一步,所述根据数据点阵图像的解码参数对中间数据流包进行数据纠错,得到编码前的原始数据这一步骤,包括以下步骤:

根据数据点阵图像的解码参数,确定应用领域、数据压缩算法、数据冗余纠错策略和掩模加密算法后,计算得到码块参数;

通过码块参数确定码块参数比特流;

通过码块参数比特流对中间数据流包进行数据纠错和/或数据解压,得到编码前的原始数据。

第四方面,本发明实施例还提供了一种基于突出中央图案的数据点阵解码系统,包括:

获取模块,用于获取数据点阵图像;所述数据点阵图像中的码块工作区布局于中央图案外围;所述中央图案的中心到中央图案边缘的距离为第一距离,所述中央图案的中心到码块工作区边缘的距离为第二距离,所述第一距离与第二距离之间的比值不小于0.618;

识别模块,用于对数据点阵图像进行识别,得到解码参数;所述解码参数包括数据压缩算法、冗余纠错级别信息、掩模加密算法、数据冗余纠错策略、数据点阵的块数、每块数据点阵的行数和列数;

解密模块,用于根据数据点阵图像的解码参数对数据点阵进行掩模解密,获取若干个块数据流包;

拼接模块,用于对若干个块数据流包进行拼接,得到中间数据流包;

纠错模块,用于根据数据点阵图像的解码参数对中间数据流包进行数据纠错,得到编码前的原始数据。

第五方面,本发明实施例还提供了一种基于突出中央图案的数据点阵编码系统,包括:

至少一个处理器;

至少一个存储器,用于存储至少一个程序;

当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现所述的基于突出中央图案的数据点阵编码方法。

第六方面,本发明实施例还提供了一种基于突出中央图案的数据点阵解码系统,包括:

至少一个处理器;

至少一个存储器,用于存储至少一个程序;

当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现所述的基于突出中央图案的数据点阵解码方法。

第七方面,本发明实施例还提供了一种介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行所述的基于突出中央图案的数据点阵编解码方法。

上述本发明实施例中的一个或多个技术方案具有如下优点:本发明的实施例通过数据点阵记录数据信息,密度高且容量大;本发明将原始数据转换为比特流进行分包处理,形成多个码块组合,可以容纳更大规模数据;本发明将码块工作区布局于中央图案外围,并控制第一距离与第二距离之间的比值不小于0.618,通过大比例中央图案和小比例码块数据的组合,来提高人机交互的体验。

附图说明

图1为本发明实施例的第一数据点阵布局示意图;

图2为本发明实施例的第二数据点阵布局示意图;

图3为本发明实施例的第三数据点阵布局示意图;

图4为本发明实施例的第四数据点阵布局示意图;

图5为本发明实施例的第五数据点阵布局示意图;

图6为本发明实施例的第六数据点阵布局示意图;

图7为本发明实施例的第七数据点阵布局示意图;

图8为本发明实施例的初始化码块工作区示意图;

图9为本发明实施例写入码块参数比特流后的码块工作区示意图;

图10为本发明实施例写入块数据比特流包后的码块工作区示意图;

图11为本发明实施例写入填充比特流后的码块工作区示意图;

图12为本发明实施例最终输出的万相码示意图;

图13为本发明实施例的点阵读取示意图;

图14为本发明实施例的数据点阵坐标系示意图;

图15为本发明实施例的第一码块拓展示意图;

图16为本发明实施例的第二码块拓展示意图。

具体实施方式

下面结合说明书附图和具体实施例对本发明作进一步解释和说明。对于本发明实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。

针对现有技术的一维码和二维码存在的问题,本发明提出了基于突出中央图案的数据点阵编解码方法、系统及介质。通过本发明能够突破人机交互的重大瓶颈障碍,实现了人看图做决定扫码后,由机器识码执行操作的人机交互过程,本发明提供了一种围绕在大比例中心图案的外围,生成小比例阵列点阵数据块的布局方法。

需要说明的是,为区别于现有技术中的一维码和二维码,本实施例将构建得到的数据点阵称为万相码,在本发明中提及的万相码均代表数据图形阵列点阵。

具体的,本实施例的万相码的布局方法是将图形居于中央区域,然后数据阵列点阵居于图形外围周边。图形大小尺寸的比例能够满足在有限的资源(屏幕、纸张、印刷品、包装物、墙面等)载体上面让普通人能够明显识别图形的含义,重点满足突出图形主体的视觉要求,而使图形周边的数据阵列点阵部分不突出显眼。更进一步,参照图1-图7所示的万相码布局示意图,本发明的图形、数据阵列点阵(即万相码)块组合的比例满足审美要求,即按“黄金分割位”比例:即整体图形为中心对称(如圆、椭圆、矩形、正方形、正梯形、正三角形、对称三角形、平行四边形、菱形、正多边形、对称多边形等等),整体(包含图形和数据阵列点阵)中心到中央图形边缘尺寸占整体中心到整体边沿的比例不小于0.618,数据阵列点阵(万相码块区域)尺寸所占比例不大于0.382。

根据图1-图7所示的数据点阵布局示意图,使用者可以将需要展示的图形(例如logo、名片、印章、徽标、路牌、警示牌等)置于图形区域,然后根据需要编码的原始数据,将编码后的码块布局在相应的数据点阵区域(即万相码块区域)。

通过本发明的万相码布局方法,商家可以在图形区域放置菜品图,然后在数据点阵区域编码对应的菜单信息,实现扫码下单点菜的功能;商家还可以在图形区域放置活动介绍海报,然后在数据点阵区域编码对应的活动信息,实现扫码参加商家活动的功能。

为实现上述数据点阵的布局方法,本发明还提出了对应的基于突出中央图案的数据点阵编解码方法。

具体的,本发明提供了一种数据图形阵列点阵的编码方法(以下简称“万相码编码方法”),由万相码基本单元组成或由万相码基本单元的扩展单元组成,形成数据存储的阵列点阵。

本发明的基于突出中央图案的数据点阵编码方法包括以下步骤:

s101、确定数据点阵的编码参数,所述编码参数包括数据压缩算法、冗余纠错级别信息、掩模加密算法、数据冗余纠错策略、数据点阵的块数、每块数据点阵的行数和列数;

其中,所述步骤s101包括以下步骤:

s1011、根据原始数据的数据性质,确定数据压缩算法和冗余纠错级别信息;

具体的,本实施例依据原始数据的性质等来选定是否压缩、冗余纠错级别。

s1012、根据原始数据的应用领域,确定掩模加密算法;

具体的,本实施例依据应用领域(如民用、金融、政府、军用),选择对应掩模加密算法。

s1013、根据预选的铺码资源和扫码条件,确定数据冗余纠错策略;

具体的,本实施例依据占用资源(屏幕、纸张等)几何空间的限制,以及原始数据大小、预估的将来的万相码扫码条件(设备的分辨率、扫码距离、环境等),来选取数据冗余纠错的策略和算法。

本实施例中所述铺码是指将条码输出记载到载体上,而这种载体介质成为铺码资源。如屏幕、纸张、印刷品、包装物、墙面等表面就是铺码资源。

本实施例中所述扫码条件包括读取条码所用设备的分辨率、扫码距离、光照条件环境等。

s1014、根据原始数据的数据量大小,计算数据点阵的块数、每块数据点阵的行数和列数。

具体的,本实施例依据原始数据量大小、冗余纠错策略所需占用的空间,来确认确定万相码“块总数”n、每个万相码块的行数l和列数m。

本实施例中,所述码块参数的具体定义为:

(x,y)=(1,10),y=10,即b10代表“行结束符”占位,其值固定为“0”;

(x,y)=(1,9),y=9,即b9代表“掩模”占位;

(x,y)=(1,8),y=8,即b8代表“掩模”占位;

(x,y)=(1,7),y=7,即b7代表“掩模”占位;

(x,y)=(1,6),y=6,即b6代表“纠错”占位;

(x,y)=(1,5),y=5,即b5代表“纠错”占位;

(x,y)=(1,4),y=4,即b4代表“压缩”占位;

(x,y)=(1,3),y=3,即b3代表“压缩”占位;

(x,y)=(1,2),y=2,即b2代表“用途”占位;

(x,y)=(1,1),y=1,即b1代表“用途”占位;

(x,y)=(1,0),y=0,即b0代表“行开始符”占位,其值固定为“0”。

综上,在本实施例中,b1b2=00时代表用途为军用;b1b2=01时代表用途为政府;b1b2=10时代表用途为金融;b1b2=11时代表用途为民用;

b3b4=00时代表预设的第一种数据压缩算法;b3b4=01时代表预设的第二种数据压缩算法;b3b4=10时代表预设的第三种数据压缩算法;b3b4=11时代表无压缩;

b5b6=00时代表预设的第一种数据冗余纠错算法;b5b6=01时代表预设的第二种数据冗余纠错算法;b5b6=10时代表预设的第三种数据冗余纠错算法;b5b6=11时代表无纠错;

b7b8b9=000时代表预设的第一种掩模加密算法;b7b8b9=001时代表预设的第二种掩模加密算法;b7b8b9=010时预设的第三种掩模加密算法;b7b8b9=011时预设的第四种掩模加密算法;b7b8b9=100时代表预设的第五种掩模加密算法;b7b8b9=101时代表预设的第六种掩模加密算法;b7b8b9=110时代表预设的第七种掩模加密算法;b7b8b9=111时代表预设的第八种掩模加密算法;

s102、根据数据点阵的编码参数,将原始数据转换成预写数据比特流;

优选的,预设本实施例的原始数据为字符串“helloworld”,用途标识为“民用”,压缩算法标识为“无需压缩”,纠错算法标识为“无需纠错”,掩模算法标识为“第六种掩模加密算法”,本实施例所述的第六种掩模加密算法是指将数据流按字节与16进制数‘cc’异或运算;另外,本实施例的“填充比特流”为“1”“0”相间序列。

首先,通过查《ascii码对照表》,字符串“helloworld”的十六进制数表示为:’48656c6c6f20576f726c6400’,长度12字节(字符串结尾须添加空字符null“0”),二进制序列表示为:

‘010010000110010101101100011011000110111100100000010101110110111101110010011011000110010000000000’;

接着,“码块参数比特流”中各个标识的表达为:

【用途】“民用”=’11’+【压缩】“无压缩”=’11’+【纠错】“无纠错”=’11’+【掩模】“算法f”=’101’

【本块包长度(字节数)】=“块数据流参数”占位字节数+原始数据字节数

=4+12=16(字节)=十六进制数10

=0000000000010000(二进制数)

即本实施例最终计算得到的“码块参数比特流”=’111111101’。

其中,本实施例中【第六掩模算法】的操作为:与常量比特流’11001100’按位’异或’运算

最后,得到“块数据流参数”的表达式为:【块数据流包总数】’00000001’+【本块包序号】’00000000’+【本块包长度(字节数)】’0000000000010000’

即:“块数据流参数”=’00000001000000000000000000010000’。

本实施例生成“预写数据比特流”的具体计算过程为:“预写数据比特流”=(“块数据流参数”+“原始数据”)xor(掩模加密数据);

其中,“块数据流参数”=(【块数据流包总数】【本块包序号】【本块包长度(字节数)】)=单字节整数值为1,单字节整数值为0,双字节整数值为12+4=16。

“块数据流参数”比特流:‘00000001,00000000,00000000,00010000’;

原始数据(字符串“helloworld”)的比特流为:

010010000110010101101100011011000110111100100000010101110110111101110010011011000110010000000000;

“块数据流参数”+“原始数据”的比特流为:

00000001000000000000000000010000010010000110010101101100011011000110111100100000010101110110111101110010011011000110010000000000;

“第六掩模算法”(数据流与常量比特流’11001100’按位’异或’运算):

输入数据比特流(128b)为:

00000001000000010000000000010000010010000110010101101100011011000110111100100000010101110110111101110010011011000110010000000000

掩模数据比特流(128b)为:

11001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100

异或运算输出比特流(128b)为:

11001101110011011100110011011100100001001010100110100000101000001010001111101100100110111010001110111110101000001010100011001100

计算结果为:

“预写数据比特流”=

11001101110011011100110011011100100001001010100110100000101000001010001111101100100110111010001110111110101000001010100011001100

s103、根据数据点阵的块数,将预写数据比特流切分为若干个比特流包;

另外,由于本实施例的原始数据小,采用一个万相码码块装载即可。本实施例为仅1个码块,故“块数据比特流包”等于“预写数据比特流”。

对于确定数据点阵的块数的步骤,具体包括以下步骤:

首先计算“可写点阵容量”:可写入比特流的阵列点阵总数,由万相码“内空”阵列点阵数构成(即不包含外边沿的“行列开始符”和“方向符”)。如基本单元的可写点阵容量为9x9=81个点。

接着计算“码块参数”=【用途】+【压缩】+【纠错】+【掩模】。其中,本实施例的“码块参数”固定占位9个点。

然后计算“块数据流参数”=【块数据流包总数】+【本块包序号】+【本块包长度(字节数)】,其中,本实施例的“块数据流参数”固定占位32个点。

再计算“块数据流包总数”=“万相码块总数”;“本块包序号”=“本码块序号”

“行数”l:基本单元存放数据的行数默认为9,如果要纵向扩展行数,则每次按2的倍数增加行数。

“列数”m:“列数”m等于(“码块参数”占位+“块数据流参数”占位+“块数据流包”占位)被“行数”l整除取商,如果有余数,则“列数”m加1;如果“列数”m为偶数,则”列数”m加1。

最后,本实施例中总共需要阵列点阵数(b:比特位个数,b:字节数)=(【用途】2b+【压缩】2b+【纠错】2b+【掩模】3b+【块数据流包总数】8b+【本块包序号】8b+【本块包长度(字节数)】16b+【原始数据长度】12x8b=137b。

得到,总需点阵数=137;

“列数”m=137div9=15余2

“列数”m有余数,则加1,等于16,又是偶数,则再加1,等于17

因此,最终计算结果是:数据阵列点阵为9x17,“行数”l等于9,“列数”m等于17,需填充点位数9-2+9=16。

s104、确定每个比特流包的块数据流参数后,生成块数据比特流包;

具体的,所述步骤s104包括以下步骤:

s1041、根据原始数据的应用领域、数据压缩算法、数据冗余纠错策略和掩模加密算法,计算码块参数;

s1042、根据数据点阵的码块总数确定块数据流包总数;

s1043、根据数据阵列的码块序号确定本块包序号;

s1044、根据块数据流包总数、本块包序号和本块包长度,计算块数据流参数;

s1045、根据块数据流参数、原始数据和掩模加密数据,生成块数据比特流包。

优选的,本实施例的块数据流参数定义为:

按字节单位定义块数据流参数,按序排列:b1b2b3b4……

其中,b1代表块数据流包总数,其取值范围为1-255;

b2代表本块包序号,其取值范围为0-254;

b3b4代表本块包长度(字节数),其取值范围为4-65535。

s105、创建块数据比特流包的码块工作区,并将块数据比特流写入码块工作区;

具体的,所述步骤s105包括以下步骤:

s1051、构造码块工作区,并在码块工作区内增设行开始符、行结束符、列开始符、列结束符以及方向符;

s1052、根据行开始符、行结束符、列开始符、列结束符以及方向符,逐行逐列将块数据比特流写入码块工作区。

首先,如图8所示,根据上述的原始数据,本实施例初始化工作区:构造9x17矩阵工作区,增加行/列开始符/结束符和方向符。

接着,如图9所示,写入“码块参数比特流”:在第一列写入’111111101’;

然后,如图10所示,从从第二列开始写入“块数据比特流包”(按列分组):110011011,100110111,001100110,111001000,010010101,001101000,001010000,010100011,111011001,001101110,100011101,111101010,000010101,000110011,00。

再接着,如图11所示,写入“1”“0”相间序列组成的“填充比特流”(长度16b):1010101010101010101010。

最终,如图12所示,输出生成的万相码,优选的,用户可以存储或打印或显示该图像。

s106、将码块工作区布局于中央图案外围;

其中,所述中央图案的中心到中央图案边缘的距离为第一距离,所述中央图案的中心到码块工作区边缘的距离为第二距离,所述第一距离与第二距离之间的比值不小于0.618。

组成这些点阵的点在载体介质上依据输出方式的不同(例如打印、转印、压痕、穿孔);形成的点可以形成的是圆点,也可以是方块、凹坑、孔洞等,统称为“1”;凡是在介质载体上操作、没有引起介质明显变化(例如空白或平坦)的区域,统称为“0”。这样就将数据信号(“0”和“1”)以比特流形式记载到了载体介质上,完成数据编码输出。

本实施例中万相码基本单元的构成为:列开始符+9x9数据阵列点阵+列结束符+行开始符+行结束符;

例如,数据存储阵列点阵:

第1列:(x1,y1)(x1,y2)(x1,y3)(x1,y4)(x1,y5)(x1,y6)(x1,y7)(x1,y8)(x1,y9)

第2列:(x2,y1)(x2,y2)(x2,y3)(x2,y4)(x2,y5)(x2,y6)(x2,y7)(x2,y8)(x2,y9)

…………

第9列:(x9,y1)(x9,y2)(x9,y3)(x9,y4)(x9,y5)(x9,y6)(x9,y7)(x9,y8)(x9,y9)

其中,x轴代表列,y轴代表行。

相对应的,本发明提供了一种基于突出中央图案的数据点阵编码系统,包括:

参数确定模块,用于确定数据点阵的编码参数,所述编码参数包括数据压缩算法、冗余纠错级别信息、掩模加密算法、数据冗余纠错策略、数据点阵的块数、每块数据点阵的行数和列数;

转换模块,用于根据数据点阵的编码参数,将原始数据转换成预写数据比特流;

切分模块,用于根据数据点阵的块数,将预写数据比特流切分为若干个比特流包;

生成模块,用于确定每个比特流包的块数据流参数后,生成块数据比特流包;

创建模块,用于创建块数据比特流包的码块工作区,并将块数据比特流写入码块工作区;

布局模块,用于将码块工作区布局于中央图案外围;

其中,所述中央图案的中心到中央图案边缘的距离为第一距离,所述中央图案的中心到码块工作区边缘的距离为第二距离,所述第一距离与第二距离之间的比值不小于0.618。

相对应的,本发明提供了一种基于突出中央图案的数据点阵编码系统,包括:

至少一个处理器;

至少一个存储器,用于存储至少一个程序;

当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现所述的基于突出中央图案的数据点阵编码方法。

本发明还提供了一种基于突出中央图案的数据点阵解码方法(本实施例也称为万相码解码方法)。本发明由图像采集设备同时采集由多个万相码“包围”的图像,各个万相码之间不重叠;获取各个万相码的在采集图像中的边界,根据各个万相码的边界对每个万相码的图像进行分割,取得每个万相码的图像;依据各个万相码的图像,提取各个万相码的识别信息,依据每个万相码的识别信息采用对应的规则对该万相码进行解码及信息读取,得到各个万相码中的“块数据流包”;对读取的各个“块数据流包”的进行拼装缝合,得到“中间数据比特流”;依据万相码的识别、控制信息对“中间数据比特流”进行处理:掩模解密、纠错、去除冗余纠错码和填充比特流,最后得到原始数据。

本发明的基于突出中央图案的数据点阵解码方法包括以下步骤:

s201、获取数据点阵图像;所述数据点阵图像中的码块工作区布局于中央图案外围;所述中央图案的中心到中央图案边缘的距离为第一距离,所述中央图案的中心到码块工作区边缘的距离为第二距离,所述第一距离与第二距离之间的比值不小于0.618;

其中,所述步骤s201具体为:采集一个或多个数据点阵图像,对多个数据点阵图像进行分割,得到每个数据点阵图像,确定数据点阵中每个点位的值。

优选的,本实施例通过采集设备对准万相码“包围”的图案和条码区域,尽可能将区域内的每个万相码尽收镜头;

然后对采集到的图像进行处理,分割出每一个万相码图像(本实施例要求的前提是各个万相码之间且和其他图案不重叠)。

本实施例通过数码照相机或摄像头对记载万相码介质的表面拍照或摄像,如果介质表面有多个互互不重叠的万相码,则一次采集获取多个万相码图像,对图像进行分割、特征提取。本实施例获取的万相码图像如图12所示。

s202、对数据点阵图像进行识别,得到解码参数;所述解码参数包括数据压缩算法、冗余纠错级别信息、掩模加密算法、数据冗余纠错策略、数据点阵的块数、每块数据点阵的行数和列数;

其中,所述步骤s202包括以下步骤:

s2021、从数据点阵图像中获取各个码块的外部特征识别结果,所述识别结果包括行开始符、行结束符、列开始符、列结束符以及方向符;

s2022、根据外部特征识别结果,获取各个码块的解码参数,所述解码参数包括数据压缩算法、冗余纠错级别信息、掩模加密算法、数据冗余纠错策略、数据点阵的块数、每块数据点阵的行数和列数;

s2023、根据码块的块数信息判断各个码块是否识别齐全,若是,则不作处理;反之,则返回执行获取数据点阵图像的步骤。

优选的,本实施例首先对每一个万相码图像进行处理、识别,判定其外部特征(方向、边界、行列开始符、行列结束符);

然后提取各个万相码块的数据点阵阵列,取得各个万相码的识别、控制信息,从而得到解码参数(行列数、总万相码块总数及本块序号、压缩及纠错、应用领域、掩模解密算法);

最后依据各万相码的识别、控制信息中的码块总数,统计判定各码块是否齐全,如果码块不齐(还有遗漏的码块未采集识别),则返回到获取模块的执行步骤。

本实施例通过识别万相码图像,找出行列开始符、行列结束符和方向符,标出行列坐标,获取9x17数据点阵,按列从(1,1)~(17,9)顺序扫描点阵,读取点位值,黑点为“1”,白点为“0”,获得点阵比特流(按列分组):

111111101,110011011,100110111,001100110,111001000,

010010101,001101000,001010000,010100011,111011001,

001101110,100011101,111101010,000010101,000110011,

001010101,010101010,

以第一列的点阵读取结果为例,如图13所示,x坐标代表列数,y坐标代表行数,在x=1的第一列数据中,从y=1的第一行数据开始读起(图13中由下往上),得到第一列的读取结果为111111101。

s203、根据数据点阵图像的解码参数对数据点阵进行掩模解密,获取若干个块数据流包;

具体的,所述步骤s203包括以下步骤:

s2031、确定数据点阵的读码规则后,读取各个码块的数据点阵,得到临时数据流包;

s2032、根据掩模加密算法对临时数据流包进行解密运算,得到每个码块的块数据流包。

优选的,本实施例依据每个万相码的识别、控制信息采取相应的读码规则,读取该码块数据阵列点阵,黑点为“1”,白点为“0”,得到“临时数据流包”;

然后依据掩模加密指示策略的算法,对每个“临时数据流包”进行解密运算,得到每个万相码对应的“块数据流包”。

本实施例通过查阅“码块参数”表来解析得到码块参数:

具体的,对于读取到的第一列点阵:’111111101’,参照前述b1-b9的各个数位的含义,解析得到该点阵中b1b2=11;b3b4=11;b5b6=11;b7b8b9=101,即该码块对应的码块参数为:

【用途】=“民用”;

【压缩算法】=“无压缩”;

【纠错算法】=“无纠错”;

【掩模算法】=“算法f”;其中,本实施例的掩模算法f即第六掩模算法,具体操作是:与常量比特流’11001100’按位’异或’运算。

读取到的“块数据流包”比特流为(参照图13,从第2列至第17列,共16列128b):

110011011,100110111,001100110,111001000,010010101,001101000,

001010000,010100011,111011001,001101110,100011101,111101010,

000010101,000110011,001010101,010101010,

掩模解密比特流为(128b):

110011001,100110011,001100110,011001100,110011001,100110011,

001100110,011001100,110011001,100110011,001100110,011001100,

110011001,100110011,001100110,011001100,

根据确定的“掩模算法f”(数据流与常量比特流’11001100’按位’异或’运算):获取异或运算结果比特流(128b):

000000010,000000100,000000000,100000100,100001100,101011011,

000110110,001101111,001000000,101011101,101111011,100100110,

110001100,100000000,000110011,001100110,

最终计算结果(128b):

“块数据流包”=’

000000010000000100000000000100000100100001100101011011000110110001101111001000000101011101101111011100100110110001100100000000000110011001100110’

s204、对若干个块数据流包进行拼接,得到中间数据流包;

具体的,所述步骤s204包括以下步骤:

s2041、确定块数据流包总数、本块包序号和本块包长度;

s2042、根据块数据流包总数、本块包序号和本块包长度,计算块数据流参数;

s2043、根据块数据流参数对若干个块数据流包进行拼接,得到中间数据流包。

优选的,本实施例首先提取“块数据流参数”=【块数据流包总数】+【本块包序号】+【本块包长度(字节数)】。其中,“块数据流参数”固定占位32个点。

本实施例中:“块数据流参数”占32b:

【块数据流包总数】8b+【本块包序号】8b+【本块包长度(字节数)】16b=‘00000001’+‘00000001’+‘0000000000010000’;

其中,‘00000001’的十六进制数为1,十进制数为1;‘00000001’的十六进制数为1,十进制数为1;‘0000000000010000’的十六进制数为10;十进制数为16;

因此,得到【块数据流包总数】=1;【本块包序号】=0;【本块包长度(字节数)】=16由于本实施例的万相码只有一个码块,因此不用对“块数据流包”进行拼装缝合。

s205、根据数据点阵图像的解码参数对中间数据流包进行数据纠错,得到编码前的原始数据。

具体的,所述步骤s205包括以下步骤:

s2051、根据数据点阵图像的解码参数,确定应用领域、数据压缩算法、数据冗余纠错策略和掩模加密算法后,计算得到码块参数;

s2052、通过码块参数确定码块参数比特流;

s2053、通过码块参数比特流对中间数据流包进行数据纠错和/或数据解压,得到编码前的原始数据。

本实施例首先依据万相码的识别、控制信息对“中间数据比特流”进行数据纠错(如果有的话);

接着判定对每个码块的数据纠错是否成功,如不成功则返回并对该纠错失败的码块进行重新扫描采集;

然后去除冗余纠错码和填充比特流;

再依据码块信息的控制参数,判定是否有数据压缩及压缩方案,如果有压缩,则对数据流进行数据解压还原处理;

最后得到原始数据(解码结果)。

其中,本实施例通过“码块参数比特流”来判断该码块是否需要进行冗余纠错。

根据前述的计算,本实施例的“码块参数”为:b1b2=11;b3b4=11;b5b6=11;b7b8b9=101

查表得:

【纠错】=11=“无纠错”;

【压缩】=11=“无压缩”;

因此,本实施例的解码结果无需进行解压处理和纠错处理。

最终,将“块数据流包”转换成十六进制表示:

“块数据流包”(二进制)=

000000010000000100000000000100000100100001100101011011000110110001101111001000000101011101101111011100100110110001100100000000000110011001100110

“块数据流包”(二进制8位分组)=

00000001,00000001,00000000,00010000,01001000,01100101,01101100,01101100,01101111,00100000,01010111,01101111,01110010,01101100,01100100,00000000,01100110,01100110

“块数据流包”(十六进制)=

01,01,00,10,48,65,6c,6c,6f,20,57,6f,72,6c,64,00,66,66

其中,“块数据流参数”占32b(4字节),得到:

【块数据流包总数】=1;

【本块包序号】=0;

【本块包长度(字节数)】=16

因此,原始数据长度=【本块包长度(字节数)】-“块数据流参数”固定占位(字节数)=16–4=12(字节)

本实施例对“块数据流包”“掐头”(4字节“块数据流参数”)“去尾”(16比特“填充符”)得到十六进制数据=48,65,6c,6c,6f,20,57,6f,72,6c,64,00,

通过查《ascii码对照表》,十六进制数据“48,65,6c,6c,6f,20,57,6f,72,6c,64,00”对应的字符串为“helloworld”。

最后得到万相码解码结果,即编码前原始数据——字符串“helloworld”。

相应的,本发明实施例还提供了一种基于突出中央图案的数据点阵解码系统,包括:

获取模块,用于获取数据点阵图像;所述数据点阵图像中的码块工作区布局于中央图案外围;所述中央图案的中心到中央图案边缘的距离为第一距离,所述中央图案的中心到码块工作区边缘的距离为第二距离,所述第一距离与第二距离之间的比值不小于0.618;

识别模块,用于对数据点阵图像进行识别,得到解码参数;所述解码参数包括数据压缩算法、冗余纠错级别信息、掩模加密算法、数据冗余纠错策略、数据点阵的块数、每块数据点阵的行数和列数;

解密模块,用于根据数据点阵图像的解码参数对数据点阵进行掩模解密,获取若干个块数据流包;

拼接模块,用于对若干个块数据流包进行拼接,得到中间数据流包;

纠错模块,用于根据数据点阵图像的解码参数对中间数据流包进行数据纠错,得到编码前的原始数据。

本发明实施例还提供了一种基于突出中央图案的数据点阵解码系统,包括:

至少一个处理器;

至少一个存储器,用于存储至少一个程序;

当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现所述的基于突出中央图案的数据点阵解码方法。

上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。

此外,本发明实施例还提供了一种介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行所述的基于突出中央图案的数据点阵编解码方法。

另外,对于本发明的数据点阵编码规则,下面对其中涉及的各个组成单元的定义进行详细描述:

如图14所示,本实施例中的方向标记、行结束符、列结束符分别如图位置。

本实施例中万相码基本单元的构成为:列开始符+9x9数据阵列点阵+列结束符+行开始符+行结束符;

例如,数据存储阵列点阵:

第1列:(x1,y1)(x1,y2)(x1,y3)(x1,y4)(x1,y5)(x1,y6)(x1,y7)(x1,y8)(x1,y9)

第2列:(x2,y1)(x2,y2)(x2,y3)(x2,y4)(x2,y5)(x2,y6)(x2,y7)(x2,y8)(x2,y9)

…………

第9列:(x9,y1)(x9,y2)(x9,y3)(x9,y4)(x9,y5)(x9,y6)(x9,y7)(x9,y8)(x9,y9)

其中,x轴代表列,y轴代表行。

参照图14,本实施例的基本单元列的开始符的纵向排列点阵为:

(x,y)从(-1,0)~(-1,10)=“10101010101”;

(x,y)从(0,0)~(0,10)=“11101010101”。开始符的点阵布置(从阵列由下往上,从左至右)。其中,“1”为黑点,“0”为白点。

参照图14,本实施例的基本单元的列结束符的纵向排列点阵为:

(x,y)从(10,0)~(10,10)=“10101010101”;

(x,y)从(11,0)~(11,10)=“10000000001”。列开始符点阵布置(从阵列由下往上,从左至右)。其中,“1”为黑点,“0”为白点。

参照图14,本实施例的基本单元的行开始符为:

横向排列点阵(xi,y0)=(-1,0)(0,0)(1,0)(2,0)(3,0)(4,0)(5,0)(6,0)(7,0)(8,0)(9,0)(10,0)(11,0),其中i=-1~11;

即:行开始符点阵布置(在阵列左下角,从左至右):

(-1,0)~(11,0)=“1101010101011”。“1”为黑点,“0”为白点。

参照图14,本实施例的基本单元行结束符为:

横向排列点阵(xi,y10)=(-1,10)(0,10)(1,10)(2,10)(3,10)(4,10)(5,10)(6,10)(7,10)(8,10)(9,10)(10,10)(11,10),其中i=-1~11;

即:行结束符点阵布置(在阵列左上角,从左至右):

(-1,10)~(11,10)=“1101010101011”。“1”为黑点,“0”为白点。

另外,在一些实施例中,为了万相码形成以后在扫读解码时能够从采集扫描图像中快速分离出数据阵列点阵,必须在其四周留白,以便于解码识读过程快速、准确。

在数据阵列点阵的四周,在列开始符前增加至少1列全“0”白点,在列结束符后增加至少1列全“0”白点,在行开始符前增加至少1行全“0”白点,行结束符后增加至少1行全“0”白点。

在数据写入的过程中:本实施例首先将9x9阵列点阵“清零”,即把阵列从(1,1)至(9,9)的每个交叉点擦除黑点(写入白点);

然后将写入到万相码的数据转换成比特流,比特位值为“1”的,写入黑点,比特位值为“0”的,写入白点。

顺序为:第1个比特放入(1,1)、第2个比特放入(1,2)…第9个比特放入(1,9)、第10个比特放入(2,1)、第11个比特放入(2,2)……第80个比特放入(9,8)、第81个比特放入(9,9);

对于比特流位数大于81个的情形,需要对基本单元扩展或另外申请一个基本单元来存放比特流。

优选的,本发明还能对数据阵列点阵进行拓展,具体包括以下方法:

1、优先横向扩展(或称之为水平方向或x轴方向扩展)

(1)在基本单元基础上做水平(x轴)方向扩展:每次按2的倍数增加列,每水平扩展一次相当于增加18比特位。

(2)在纵向(y轴)方向扩展(按2的倍数增加行)后做水平(x轴)方向扩展:每次按2列的倍数增加,每水平扩展一次相当于增加列位数2倍比特位。

2、在横向扩展到空间几何尺寸极限时且还不能满足存放数据情形做数据阵列点阵的纵向扩展(或称之为垂直方向或y轴方向扩展)

(1)在基本单元基础上做垂直(y轴)方向扩展:每次按2的倍数增加行,每垂直扩展一次相当于增加18比特位。

(2)在横向(x轴)方向扩展(按2的倍数增加列)后做垂直(y轴)方向扩展:每次按2行的倍数增加,每垂直扩展一次相当于增加行位数2倍的比特位。

假设基本单元横向扩展7次,则有效存储阵列9x(16+7=23)=207比特位=25字节容量。

再有,如图15和图16所示,本发明的数据点阵布局方法可以对码块进行拓展,图15和图16展示出来的是4个码块的示意图,用户可以根据原始数据量的大小拓展数据点阵的块数(即万相码的块数)。

综上所述,本发明可以应用于以下产品中:

1、纸质和电子形态的公文、证照、文件、合同、凭证;

2、物电一体、动态二维码防伪印章;

3、纸电合一的公文、证照、凭证制作打印输出系统;

4、纸电合一的公文、证照、凭证查询验证、便捷分享系统;

5、代替现有二维码(qr、pdf417等)应用范围,且能保证数据安全、链接安全。

具体的,1、在生成、制作纸质公文、证照、凭证的同时,依据本发明的编码方法,在印章盖印的印鉴周边生成数据阵列点阵;

2、在生成、制作标牌、logo、徽标、警示牌的同时,在其周边依据本发明的编码方法生成数据阵列点阵;

3、从编码定义中设定不同应用领域的不同安全级别,适应不同领域应用:如,普通民用、金融支付、中国政府、中国军用。

相较于现有技术,本发明具有以下优点:

1、采用阵列点阵记录信息,密度高、容量大。

2、将原始数据转换为比特流分包预处理,形成多个万相码块组合,可以容纳超大规模数据,为数字信息存储提供了一个新的途径。

3、支持大比例中央图案小比例周边数据条码方案,解决目前二维条码人机交互识别的痛点。

4、采用阵列点阵扩展、多模块分包,将数据分割成若干个万相码块,在条码占用资源几何空间上带来了巨大的灵活性,扩展了二维码的应用范围。

5、万相码数据阵列点阵的行列可调、可变形,可以根据资源的几何空间灵活布局,可以适应特殊资源空间的限制,如圆弧、扇形、透视、扭曲等。

6、可以用万相码块组成笔画、绘画元素,如用万相码块组成汉字笔画、绘画的“笔迹”,使二维码技术具备更广阔的应用前景。

7、底层掩模加密算法提供了超高安全性。

8、万相码编码采用比特流方式,可以利用当今信息处理最成熟技术,如数据压缩、冗余纠错、数据加密、分级授权控制等。

9、支持应用行业划分(民用、金融、政府、军用)及分级授权策略,结合官方颁发的电子印章及认证信息平台,使万相码自主、可控、安全、可信。

10、万相码支持纸电合一的凭证、物电合一的电子印章,实现盖章凭证的快速查验、安全分享。

此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,所述的功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

以上是对本发明的较佳实施进行了具体说明,但本发明并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

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