发明内容
本发明目的在于提供一种二维矩阵码的解码方法以及记载有编码图片的卡牌,以解决客户端需辨别卡牌方向才能识别卡牌的技术问题,并且可预先设置角色形象在游戏界面展示形象的特定方向。
为实现上述目的,本发明提供了一种二维矩阵码的解码方法,包括步骤:
A、获得数据矩阵
将数据矩阵的对应图形压缩到(n+2)×(n+2)像素,若图片上下左右四边的1个单位像素均为黑色,则按照图片白色像素为1、黑色像素为0的原则,将图片还原为n×n数据矩阵
B、获得数据矩阵旋转后的数据值
将数据矩阵在同一平面内旋转三次,分别得到数据矩阵每次旋转的角度为90°;
上述四个数据矩阵展开成数据形式,分别得到Dv0、Dv1、Dv2、Dv3;
C、CRC校验确定四个数据的正确性
对Dv0、Dv1、Dv2、Dv3四个数据的前X位分别计算Y位CRC校验值,然后比对上述四个数据的后Y位是否分别和计算值相等;X=n2-Y,Y为8、16、32、64;
D、取唯一通过检验的数据,作为解码结果。
优选的,步骤D之后还包括:
将Dv0、Dv1、Dv2、Dv3四个数据进行比对,取极值DvF;
若在步骤D中,未在四个数据中找到唯一相等的数据,则将DvF与曾经识别成功的码Dc进行二进制数据位匹配,设定两者之间的不同位数的个数小于m,则通过校验,取该DvF作为解码结果,0<m<n。
优选的,若码Dc已与虚拟物关联,则通过校验的DvF与同一虚拟物关联。
优选的,所述极值为最大值或者最小值。
优选的,在步骤A之前还包括:
A1、从视频中截取图片;
A2、对图片进行去色、二值化并反色处理;
A3、获得图像中的封闭形状,在封闭形状中搜索四边形;
A4、四边形区域还原,获得数据矩阵的图形。
优选的,每一幅编码图片与一个特定的卡牌角色形象关联。
本申请还提供记载有根据上述的解码方法所针对的编码图片的卡牌,所述卡牌表面记载有编码图片,以及与所述编码图片所关联的角色形象、角色方向一致的图案;所述编码图片为数据矩阵的对应图形。
本发明具有以下有益效果:
本发明提供了一种无需在卡牌角色数据的编码上定义特定的方向识别,利用矩阵码解码过程中的特定规则(旋转数据矩阵获得四个数据矩阵,通过检验选出方向正确的数据矩阵数值),使用者通过数码终端上的常规图片识别,任意方向解码即可获取编码图片所对应的特定方向的卡牌角色形象。
也就是说,本发明解码方法在现有矩形码解码的基础上,新增了方向要素,通过四个方向的CRC校验,选出唯一正确的数据,使得用户在解码时无需关注卡牌上的卡牌方向,使用更为方便。
并且,为让使用者更清晰地了解从卡牌编码图片上获得的角色形象,卡牌表面还记载了与编码图片所关联角色的形象、方向匹配的图形,给予所见即所得的用户体验。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照图,对本发明作进一步详细的说明。
具体实施方式
以下结合附图对本发明的实施例进行详细说明,但是本发明可以根据权利要求限定和覆盖的多种不同方式实施。
参见图1,本发明提供了一种二维矩阵码的解码方法,包括步骤:
A、获得数据矩阵
将数据矩阵的图形压缩到(n+2)×(n+2)像素,判断图片上下左右四边的1个单位像素是否为黑色,如果均为黑色则分析图片中间的n×n像素;按照图片白色像素为1、黑色像素为0的原则,将图片还原为n×n数据矩阵
例如,在n=8时,将图2中的图片压缩至10×10像素,判断图片上下左右四边的1个单位像素是黑色,将图片中间的8×8像素还原为数据矩阵
其按行展开成数据的16进制表示为Dv0=0xEE7E3CD5BD4F5B2C;
B、获得旋转后的数据值
将步骤A获得的数据矩阵在同一平面内旋转三次,分别得到数据矩阵 每次旋转的角度为90°;
例如,数据矩阵旋转后得到如下三个数据矩阵:
第一个数据矩阵为:
其按行展开成数据的16进制表示为Dv1=0x1EC6FDEF7AE9D698;
第二个数据矩阵为:
其按行展开成数据的16进制表示为Dv2=0x34DAF2BDAB3C7E77;
第三个数据矩阵为:
其按行展开成数据的16进制表示为Dv3=0x196B975EF7BF6378。
C、CRC校验确定四个数值的正确性
对Dv0、Dv1、Dv2、Dv3四个数据的前X位分别计算Y位CRC校验值,然后比对上述四个数据的后Y位是否分别和计算值相等;X=n2-Y;
例如,在X=56,Y=8的情况:
Dv0的前56位数据的16进制表示为0xEE7E3CD5BD4F5B;8位CRC校验值为01011110,与其Dv0的后8位不等;
Dv1的前56位数据的16进制表示为0x1EC6FDEF7AE9D8,8位CRC校验值为11010011,与其Dv1的后8位不等;
Dv2的前56位数据的16进制表示为0x34DAF2BDAB3C7E,8位CRC校验值为00001001,与其Dv2的后8位不等;
Dv3的前56位数据的16进制表示为0x196B975EF7BF63,8位CRC校验值为01111000,与其Dv3的后8位相等;
D、取唯一通过检验的数据,作为解码结果。
也就是取在检验中唯一相等的Dv3作为解码结果。
而该编码图片都可以在云端服务器与一个特定的卡牌角色形象关联,例如喷火龙。则使用者在客户端解码该矩阵码图片,获得解码结果Dv3后,则会在相应系统中生成一个喷火龙的角色形象。并且,由于该矩阵码图片携带了该形象的方向信息,生成的喷火龙的角色形象则会直接展现出特定方向,例如向下或向左。
所以,本申请还提供有记载有根据上述的编码方法制得的编码图片(解码方法所针对的编码图片)的卡牌,所述卡牌表面记载有编码图片,以及与所述编码图片所关联的角色形象、角色方向一致的图案。例如,记载有如图2所示的图片,以及一只向下的喷火龙形象。使用者在客户端解码该矩阵码图片后,则会在相应系统中生成一只向下的喷火龙的角色形象。
可与上述编码方法相对应的一种二维矩阵码的编码方法,包括步骤:
A、为二进制数据添加CRC(CyclicRedundancyCheck,循环冗余校验码)校验码:
对X位二进制数据左移Y位,将二进制的Y位CRC校验码加入后,转换为加入CRC校验码的二进制数据,长度为X+Y;Y可为8、16、32、64。
例如,在X=56,Y=8的情况:
随机取56位数据为:00011001011010111001011101011110111101111011111101100011,其16进制表示为0x196B975EF7BF63;
其CRC8校验码为:01111000,其16进制表示为0x78;
合并后数据16进制表示为0x196B975EF7BF6378;
二进制表示为:
0001100101101011100101110101111011110111101111110110001101111000
B、加入CRC校验码的二进制数据转成数据矩阵形式:
数据矩阵阶数为X与Y的和开方后取整,得到n×n数据矩阵
若X+Y<n2,高位用0补齐到n2位;然后按照从高位到低位的顺序,将补齐后的数据每n位为一行,组成一个n×n矩阵
例如:步骤A中,X=56,Y=8的情况,二进制矩阵阶数
步骤A二进制数据:
0001100101101011100101110101111011110111101111110110001101111000
转换后的原始矩阵为:
其按行展开成数据的16进制表示为D0=0x196B975EF7BF6378;
C、旋转此数据矩阵三次,获得三个数据矩阵:
将上一步得到的所述n×n数据矩阵在同一平面内旋转三次,分别得到 每次旋转的角度为90°。旋转的方向不受限制,顺时针或者逆时针旋转都不影响本申请实施例的实现。
例如:旋转后得到如下三个数据矩阵:
第一个数据矩阵为:
其按行展开成数据的16进制表示为D1=0xEE7E3CD5BD4F5B2C;
第二个数据矩阵为:
其按行展开成数据的16进制表示为D2=0x1EC6FDEF7AE9D698;
第三个数据矩阵为:
其按行展开成数据的16进制表示为D3=0x34DAF2BDAB3C7E77。
D、校验合法性:
a)CRC合法性校验
对D1、D2、D3取出前X位,计算出Y位CRC校验码,然后分别和D1、D2、D3的后Y位比对,比对结果为没有任何一个通过CRC校验,则此矩阵码合法;
例如:
D1取出前56位,计算出8位CRC校验码为:01011110;D1的后8位为00101100,比对不相同;
D2取出前56位,计算出8位CRC校验码为:11010011;D2的后8位为10011000,比对不相同;
D3取出前56位,计算出8位CRC校验码为:00001001;D3的后8位为01110111,比对不相同;
为方便计算,可以将二进制数据格式转为十六进制数据格式进行计算。例如D1=0xEE7E3CD5BD4F5B2C,取出前56位0xEE7E3CD5BD4F5B计算得到的CRC8校验码为0x5E,而D1的后8位的16进制表示为0x2C,与其CRC8校验码不相等。再依次同理判断D2、D3。
如此,保证只有D0的CRC校验可以通过;D1、D2、D3均不应该通过CRC校验;则通过了CRC合法性校验。
b)对称校验
四个数据矩阵均不相等,则此矩阵码合法;如果存在相等的情况,则表示四个旋转矩阵存在对称情况,这样的矩阵码无法判断方向,不能使用。
例如,从步骤B、C的数据矩阵表达式来看,四个数据矩阵均不相等;则通过了对称校验。
上述CRC合法性校验和对称校验无先后顺序,先进行任意一个都不影响本实施例的实现。经过多次测试,当X=56,Y=8的情况,CRC合法性校验通过率为98.2%。绝大多数编码是可以通过校验的,并不会造成计算冗余和繁琐。
E、取极值,确定显示码
在四个数据矩阵即D0、D1、D2、D3四个数中取极值DF为显示码;
在步骤D中处理了相等的情况,所以在D0、D1、D2、D3中必然存在极值。在具体实施中,极值DF可以为D0、D1、D2、D3四个数的最大值或者最小值。
F、生成编码图片
获得与DF对应的数据矩阵
图片的长和宽分别为n+2个单位,左右上下各留出一个单位设置为第一色,中间的n×n个单位按照中的数据填充,1填充第二色,0填充第一色。
例如,步骤D中确定的最大码为图片宽度W设定为500像素,按照填充规则生成的编码图片如图2所示。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。