发明内容
本发明实施例公开了颜色标识型彩色二维图码的生成、识读方法及装置,用于解决现有彩色二维图码中颜色信息不包含任何有效信息的问题。技术方案如下:
第一方面,本发明实施例提供了一种颜色标识型彩色二维图码的生成方法,包括:
获取待编码的原始信息,并将其转化为二进制比特流数据;
将所述二进制比特流数据进行分组,使分组所得组的数量与待置入矩阵的元素数量相同,其中,每一组数据包含预定位数的所述二进制比特流数据,所述预定位数基于预定颜色模型确定;
将所述每一组数据按照预设规则置入所述待置入矩阵中,得到初始数据矩阵;
将所述初始数据矩阵中每一个元素扩大预定倍数,得到第一像素矩阵,其中,所述预定倍数基于所述预定颜色模型确定;
根据预设的关于元素与颜色的对应关系,确定所述第一像素矩阵中的元素对应的颜色;
将所确定出的颜色填充入待生成的彩色二维图码的数据存储区域中,并将预先为所述待编码的原始信息设置的特征信息填充入当前的所述彩色二维图码的特征信息区域中,完成彩色二维图码的生成。
优选的,所述预定颜色模型为RGB模型;
相应的,所述预定位数为三位,所述预定倍数为255倍。
优选的,所述将所述二进制比特流数据进行分组,包括:
按照预定的遍历顺序,以三位为一组对所述二进制比特流数据进行分组;
判断分组所得组的数量是否与所述待置入矩阵的元素数量相同,如果否,继续按照预定的遍历顺序,以三位为一组对所述二进制比特流数据进行分组,直至满足组的数量要求,其中,所述预定的遍历顺序为:从左到右的顺序或从右到左的顺序;
或者,
所述将所述二进制比特流数据进行分组,包括:
按照预定的遍历顺序,以三位为一组对所述二进制比特流数据进行分组;
判断分组所得组的数量是否与所述待置入矩阵的元素数量相同,如果否,将数字0作为所述二进制比特流数据的补充二进制比特流数据,继续对当前分组所剩余的二进制比特流数据进行分组,直至满足组的数量要求,其中,所述预定的遍历顺序为:从左到右的顺序或从右到左的顺序。
优选的,所述将所述每一组数据按照预设规则置入所述待置入矩阵中,得到初始数据矩阵具体为:
将所述每一组数据按照Z字型走向顺次置入所述待置入矩阵中,使所述待置入矩阵中每个元素对应一组数据,得到初始数据矩阵。
优选的,所述预设的关于元素与颜色的对应关系为:
元素(0,0,0)对应黑色;元素(0,0,255)对应蓝色;元素(0,255,0)对应绿色;元素(0,255,255)对应青蓝色;元素(255,0,0)对应红色;元素(255,0,255)对应洋红色;元素(255,255,0)对应黄色;元素(255,255,255)对应白色。
优选的,所述将所述特征信息区域中的特征信息填充入当前的所述彩色二维图码的特征信息区域中之后,还包括:
对所述特征信息区域进行掩模处理。
第二方面,本发明实施例提供了一种颜色标识型彩色二维图码的识读方法,包括:
获取待识读的彩色二维图码的第二像素矩阵,其中,所述待识读的彩色二维图码为通过上述颜色标识型彩色二维图码的生成方法生成的彩色二维图码;
将所述第二像素矩阵中每一个元素缩小预定倍数,得到还原数据矩阵;
按照生成所述彩色二维图码时所利用的预设规则的逆过程,将所述还原数据矩阵分解成由所述预定位数的二进制比特流数据组成的数据组;
将所述数据组按照生成所述彩色二维图码时所利用的分组过程的逆过程,还原得到二进制比特流数据;
将所述二进制比特流数据进行解码,得到原始信息,完成彩色二维图码的识读。
优选的,所述将所述第二像素矩阵中每一个元素缩小预定倍数,得到还原数据矩阵,包括:
对所述第二像素矩阵进行纠错处理;
将纠错处理后的第二像素矩阵中每一个元素缩小预定倍数,确定出还原数据矩阵;
其中,所述纠错处理包括:
根据公式:
计算出所述第二像素矩阵中的元素与预设的元素的欧氏距离值r
1~r
8,其中,x为所述第二像素矩阵中的元素的R值,y为所述第二像素矩阵中的元素的G值,z为所述第二像素矩阵中的元素的B值,n=1,2…8,R、G、B分别为所述预设的元素的R值、G值、B值;
比较所述欧氏距离值r1~r8的大小,用值最小的rn对应的所述预设的元素替换所述第二像素矩阵中的元素,完成纠错处理;
其中,所述预设的元素包括:
(0,0,0)、(0,0,255)、(0,255,0)、(0,255,255)、(255,0,0)、(255,0,255)、(255,255,0)及(255,255,255)。
第三方面,本发明实施例提供了一种颜色标识型彩色二维图码的生成装置,包括:
第一获取模块,用于获取待编码的原始信息,并将其转化为二进制比特流数据;
分组模块,用于将所述二进制比特流数据进行分组,使分组所得组的数量与待置入矩阵的元素数量相同,其中,每一组数据包含预定位数的所述二进制比特流数据,所述预定位数基于预定颜色模型确定;
置入模块,用于将所述每一组数据按照预设规则置入所述待置入矩阵中,得到初始数据矩阵;
元素扩大模块,用于将所述初始数据矩阵中每一个元素扩大预定倍数,得到第一像素矩阵,其中,所述预定倍数基于所述预定颜色模型确定;
颜色确定模块,用于根据预设的关于元素与颜色的对应关系,确定所述第一像素矩阵中的元素对应的颜色;
生成模块,用于将所确定出的颜色填充入待生成的彩色二维图码的数据存储区域中,并将预先为所述待编码的原始信息设置的特征信息填充入当前的所述彩色二维图码的特征信息区域中,完成彩色二维图码的生成。
第四方面,本发明实施例提供了一种颜色标识型彩色二维图码的识读装置,包括:
第二获取模块,用于获取待识读的彩色二维图码的第二像素矩阵,其中,所述待识读的彩色二维图码为通过上述颜色标识型彩色二维图码的生成方法生成的彩色二维图码;
元素缩小模块,用于将所述第二像素矩阵中每一个元素缩小预定倍数,得到还原数据矩阵;
分解模块,用于按照生成所述彩色二维图码时所利用的预设规则的逆过程,将所述还原数据矩阵分解成由所述预定位数的二进制比特流数据组成的数据组;
还原模块,用于将所述数据组按照分组过程的逆过程,还原得到二进制比特流数据;
解码模块,用于将所述二进制比特流数据进行解码,得到原始信息,完成彩色二维图码的识读。
本方案中,首先获取待编码的原始信息,并将其转化为二进制比特流数据;将所述二进制比特流数据进行分组,使分组所得组的数量与待置入矩阵的元素数量相同,然后将所述每一组数据按照预设规则置入所述待置入矩阵中,得到初始数据矩阵;再将所述初始数据矩阵中每一个元素扩大预定倍数,得到第一像素矩阵后,根据预设的关于元素与颜色的对应关系,确定所述第一像素矩阵中的元素对应的颜色,最后将所确定出的颜色填充入待生成的彩色二维图码的数据存储区域中,并将预先为所述待编码的原始信息设置的特征信息填充入当前的所述彩色二维图码的特征信息区域中,完成彩色二维图码的生成。采用该生成方法生成的彩色二维图码中的颜色信息包含有效的原始信息,而不仅仅是视觉上的冲击。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了使彩色二维图码中颜色信息包含有效信息,而不仅仅是给人带来视觉上的冲击,本发明实施例提供了颜色标识型彩色二维图码的生成、识读方法及装置。
下面首先对本发明实施例所提供的一种颜色标识型彩色二维图码的生成方法进行介绍。
如图1所示,一种颜色标识型彩色二维图码的生成方法,可以包括:
S101,获取待编码的原始信息,并将其转化为二进制比特流数据;
其中,该待编码的原始信息可以为任意需要存储到待生成的彩色二维图码中的信息,例如可以是产品的生产厂家、生产日期、网页的网址链接等。将该待编码的原始信息转化为二进制比特流数据可以通过现有技术实现,在此不做具体限定。例如,若该待编码的原始信息为汉字类型的信息,则可以采用国标法将其转化为二进制比特流数据;若该待编码的原始信息为英文字母类型的信息,则可以采用ASCII码将其转化为二进制比特流数据。
S102,将所述二进制比特流数据进行分组,使分组所得组的数量与待置入矩阵的元素数量相同;
其中,每一组数据包含预定位数的该二进制比特流数据,该预定位数基于预定颜色模型确定,该预定颜色模型一般可以为RGB模型,相应的,该预定位数即为三位。该待置入矩阵的行数和列数可以根据实际需要生成的彩色二维图码的类型确定,例如,若要生成D9ing码类型的彩色二维图码,则该待置入矩阵即为一个448行,448列的空矩阵,当然并不局限于此。
具体的,将该二进制比特流数据进行分组的方式一般可以采用以下两种方式中的一种:
第一种方式为:按照预定的遍历顺序,以三位为一组对该二进制比特流数据进行分组,然后判断分组所得组的数量是否与待置入矩阵的元素数量相同,如果否,继续按照预定的遍历顺序,以三位为一组对该二进制比特流数据进行分组,直至满足组的数量要求,其中,该预定的遍历顺序为:从左到右的顺序或从右到左的顺序。
需要说明的是,为了将待编码的原始信息全部存储到所要生成的彩色二维图码中,预先确定的该待置入矩阵是可以将全部待编码的原始信息转化的该二进制比特流数据存储进去的,也就是说,上述分组所得组的数量一般不会大于该待置入矩阵的元素数量。
当判断分组所得组的数量小于该待置入矩阵的元素数量时,则继续按照预定的遍历顺序,以三位为一组对该二进制比特流数据进行分组,直至满足组的数量要求。举例而言,由待编码的原始信息转化的二进制比特流数据为10010001011,按照预定的从左到右的遍历顺序,以三位为一组对该二进制比特流数据进行分组,得到三组数据,分别为:(1,0,0)、(1,0,0)、(0,1,0),剩余两位二进制比特流数据1和1。若待置入矩阵的元素数量为四,由于分别所得的组的数量为三,小于该待置入矩阵的元素数量,则按照从左到右的遍历顺序对该二进制比特流数据继续分组,剩余的两位二进制比特流数据1、1和第一位二进制比特流数据1被分为一组,得到第四组数据(1,1,1),此时分组所得组的数量与该待置入矩阵的元素数量相同,停止分组。当然也可以采用从右到左的遍历顺序对该二进制比特流数据进行分组,具体过程与上述按照从左到右的遍历顺序对该二进制比特流数据进行分组的过程相似,在此不再进行详细说明。
第二种方式为:按照预定的遍历顺序,以三位为一组对该二进制比特流数据进行分组;判断分组所得组的数量是否与待置入矩阵的元素数量相同,如果否,将数字0作为该二进制比特流数据的补充二进制比特流数据,继续对当前分组所剩余的二进制比特流数据进行分组,直至满足组的数量要求,其中,该预定的遍历顺序为:从左到右的顺序或从右到左的顺序。
如上述说明,分组所得组的数量一般是不会大于该待置入矩阵的元素数量,当判断分组所得组的数量小于该待置入矩阵的元素数量时,则将数字0作为该二进制比特流数据的补充二进制比特流数据,继续对当前分组所剩余的二进制比特流数据进行分组,直至满足组的数量要求。举例而言,由待编码的原始信息转化的二进制比特流数据为10010001011,按照从左到右的遍历顺序,以三位为一组对该二进制比特流数据进行分组,得到三组数据,分别为:(1,0,0)、(1,0,0)、(0,1,0),剩余两位二进制比特流数据1和1。若待置入矩阵的元素数量为四,由于分组所得的组的数量为三,小于该待置入矩阵的元素数量,则将数字0作为该二进制比特流数据的补充二进制比特流数据,继续对当前分组所剩余的二进制比特流数据进行分组,得到第四组数据(1,1,0),此时分组所得组的数量与该待置入矩阵的元素数量相同,停止分组。当然也可以采用从右到左的遍历顺序对该二进制比特流数据进行分组,具体过程与上述按照从左到右的遍历顺序对该二进制比特流数据进行分组的过程相似,在此不再进行详细说明。
S103,将所述每一组数据按照预设规则置入所述待置入矩阵中,得到初始数据矩阵;
具体的,可以将该每一组数据按照Z字型走向顺次置入该待置入矩阵中,使该待置入矩阵中每个元素对应一组数据,得到初始数据矩阵。例如,对二进制比特流数据进行分组后得到四组数据,分别为:(1,0,0)、(1,0,0)、(0,1,0)和(1,1,0),待置入矩阵为一个二阶的空矩阵,元素数量为四,按照Z字型走向,顺次将第一组数据(1,0,0)置入矩阵的第一行第一列,将第二组数据(1,0,0)置入矩阵的第二行第一列,将第三组数据(0,1,0)置入矩阵的第一行第二列,将第四组数据(1,1,0)置入矩阵的第二行第二列,得到初始数据矩阵
需要说明的是,本发明实施例所给出的Z字型走向的预设规则仅仅作为示例,并不应该构成对本发明实施例的限定,可以理解的是,在实际应用中,该预设规则也可以为根据实际需要预设的其他规则,举例而言:可以将该每一组数据顺次置入待置入矩阵的每一行,在此不做具体限定和说明。
S104,将所述初始数据矩阵中每一个元素扩大预定倍数,得到第一像素矩阵;
其中,该预定倍数基于该预定颜色模型确定,该预定颜色模型一般为RGB模型,相应的,该预定倍数即为最大灰度级255倍,将该初始数据矩阵中每一个元素扩大255倍,即得到该第一像素矩阵,当然并不局限于此。例如,将上述初始数据矩阵
扩大255倍,即得到对应的第一像素矩阵
S105,根据预设的关于元素与颜色的对应关系,确定所述第一像素矩阵中的元素对应的颜色;
具体的,预设的关于元素与颜色的对应关系可以如下表所示:
由于在实际应用中,使用的设备镜头等对颜色的分辨能力可能不同,该预设的关于元素与颜色的对应关系可以根据实际需要进行修改,并不局限于此。
S106,将所确定出的颜色填充入待生成的彩色二维图码的数据存储区域中,并将预先为所述待编码的原始信息设置的特征信息填充入当前的所述彩色二维图码的特征信息区域中,完成彩色二维图码的生成。
可以理解的是,该待生成的彩色二维图码的数据存储区域的像素个数与该第一像素矩阵中的元素的数量相同,每行像素的个数与该第一像素矩阵中每行的元素的数量相同,每列像素的个数与该第一像素矩阵中每列的元素的数量相同,该待生成的彩色二维图码的数据存储区域的像素与该第一像素矩阵中的元素存在一一对应关系。确定出该元素对应的颜色后,也就确定出了该待生成的彩色二维图码的数据存储区域中每个位置的像素对应的颜色,例如,上述第一像素矩阵
对应的待生成的彩色二维图码的数据存储区域的四个位置的像素所对应的颜色即为
将这些颜色按照对应的位置关系填入该待生成的彩色二维图码的数据存储区域即完成对待生成的彩色二维图码的数据存储区域的填充。
进一步的,该待生成的彩色二维图码的数据存储区域填充完成后,将预先为该待编码的原始信息设置的特征信息填填充入当前的彩色二维图码的特征信息区域中,完成彩色二维图码的生成。
需要说明的是,该预先为该待编码的原始信息设置的特征信息可以包括格式信息和版本信息,该格式信息和该版本信息可以根据该待生成的彩色二维图码的类型确定,将上述特征信息区域中的特征信息填充入当前的彩色二维图码的特征信息区域中的方式可以采用现有技术,在此不作具体限定。
举例而言,若该待生成的彩色二维图码为D9ing码类型,则根据该待生成的彩色二维图码的行数、列数和纠错等级生成格式信息,采用现有的D9ing码的特征信息填充方式,将该格式信息和预先设置的版本信息填充入当前的彩色二维图码的特征信息区域中。若该待生成的彩色二维图码为QR码类型,则该设置的特征信息中的格式信息表示纠错级别,可以分为L、M、Q、H四个级别;该设置的特征信息中的版本信息即为该QR码类型的该待生成的彩色二维图码的规格,可以采用现有的QR码的40种规格中一种,采用现有的QR码的特征信息填充方式,将该格式信息和该版本信息填充入当前的彩色二维图码的特征信息区域中即可。
进一步需要说明的是,在将该特征信息区域中的特征信息填充入当前的彩色二维图码的特征信息区域中之后,上述方法还可以包括:
对该特征信息区域进行掩模处理。
具体的掩模处理可以根据实际需要采用现有的掩模处理中的一种,一般是将该特征信息区域中的格式信息区域进行掩模处理,使生成的该彩色二维图码更加美观,同时增加该彩色二维图码的保密性。进一步的,也可以对上述数据存储区域进行掩模处理,以增加该彩色二维图码的美观性,使保密性更好。
可见,本方案提供的一种颜色标识型彩色二维图码的生成方法中,首先获取待编码的原始信息,并将其转化为二进制比特流数据;将所述二进制比特流数据进行分组,使分组所得组的数量与待置入矩阵的元素数量相同,然后将所述每一组数据按照预设规则置入所述待置入矩阵中,得到初始数据矩阵;再将所述初始数据矩阵中每一个元素扩大预定倍数,得到第一像素矩阵后,根据预设的关于元素与颜色的对应关系,确定所述第一像素矩阵中的元素对应的颜色,最后将所确定出的颜色填充入待生成的彩色二维图码的数据存储区域中,并将预先为所述待编码的原始信息设置的特征信息填充入当前的所述彩色二维图码的特征信息区域中,完成彩色二维图码的生成。采用该生成方法生成的彩色二维图码中的颜色信息包含有效的原始信息,而不仅仅是视觉上的冲击。
基于上述的颜色标识型彩色二维图码的生成方法,本发明实施例还提供了一种颜色标识型彩色二维图码的识读方法。
如图2所示,本实施例所提供的一种颜色标识型彩色二维图码的识读方法,可以包括:
S201,获取待识读的彩色二维图码的第二像素矩阵;
需要说明的是,该待识读的彩色二维图码为通过本发明实施例上述所提供的颜色标识型彩色二维图码的生成方法所生成的彩色二维图码,获取该待识读的彩色二维图码的第二像素矩阵的方式可以采用任意一种现有的获取方式,在此不做具体限定。
S202,将所述第二像素矩阵中每一个元素缩小预定倍数,得到还原数据矩阵;
其中,该预定倍数基于该待识读的彩色二维图码的颜色模型确定,可以理解的是,该待识读的彩色二维图码的颜色模型与通过上述的彩色二维图码的生成方法所生成的彩色二维图码的颜色模型是一致的,例如,该颜色模型可以是RGB模式的,相应的,该预定倍数即为255倍。
具体的,将该第二像素矩阵中每一个元素缩小预定倍数,得到还原数据矩阵,可以包括:
对该第二像素矩阵进行纠错处理;
该纠错处理具体可以包括:
根据公式:
计算出该第二像素矩阵中的元素与预设的元素的欧氏距离值r
1~r
8,其中,x为该第二像素矩阵中的元素的R值,y为该第二像素矩阵中的元素的G值,z为该第二像素矩阵中的元素的B值,n=1,2…8,R、G、B分别为该预设的元素的R值、G值、B值;
比较该欧氏距离值r1~r8的大小,用值最小的rn对应的该预设的元素替换该第二像素矩阵中的元素,完成纠错处理;
其中,该预设的元素包括:(0,0,0)、(0,0,255)、(0,255,0)、(0,255,255)、(255,0,0)、(255,0,255)、(255,255,0)及(255,255,255)。
将纠错处理后的第二像素矩阵中每一个元素缩小预定倍数,确定出还原数据矩阵。
举例而言,该第二像素矩阵中的一个元素为(2,0,250),对其进行纠错处理具体为:根据上述公式,将其与预设的八个元素分别进行欧氏距离计算,得到r1~r8分别为:250、6、357、255、356、253、438及439,可以明显的看出r2的值最小,则用元素(0,0,255)替换该第二像素矩阵中的元素(2,0,250),通过同样的方法可以对该第二像素矩阵中的所有元素进行纠错处理,由于在实际应用时获取的该第二像素矩阵可能纯在误差,会导致识读的不准确,进行纠错处理可消除误差,使得到的该第二像素矩阵更加准确。
纠错处理完成后,将该第二像素矩阵中每一个元素缩小预定倍数,例如,上述元素(0,0,255)缩小255倍,得到元素(0,0,1),将该第二像素矩阵中每一个元素都缩小预定倍数后便得到该还原数据矩阵。
S203,按照生成所述彩色二维图码时所利用的预设规则的逆过程,将所述还原数据矩阵分解成由所述预定位数的二进制比特流数据组成的数据组;
需要说明的是,该预定位数基于该待识读的彩色二维图码的颜色模型确定,例如,该待识读的彩色二维图码的颜色模型为RGB模型,相应的,该预定位数即为三位。
具体的,如果生成所述彩色二维图码时所利用的预设规则为按照Z字型走向顺次置入待置入矩阵中,则可以将该还原数据矩阵中的元素按照Z字型走向,顺次分解成由该预定位数的二进制比特流数据组成的数据组,使该还原数据矩阵中每个元素对应一组数据,得到该数据组。
例如,该还原数据矩阵为
元素数量为四,按照Z字型走向,顺次将第一行第一列的元素(1,0,0),第二行第一列的元素(1,0,0),第一行第二列的元素(0,1,0),第二行第二列的元素(1,1,0)分解出来,得到由三位二进制比特流数据组成的数据组,分别为:(1,0,0)、(1,0,0)、(0,1,0)和(1,1,0)。
本领域技术人员可以理解的是,如果生成所述彩色二维图码时所利用的预设规则为其他预设规则,则相应的按照该预设规则的逆过程对还原数据矩阵进行分解处理,在此不做具体说明。
S204,将所述数据组按照生成所述彩色二维图码时所利用的分组过程的逆过程,还原得到二进制比特流数据;
具体的,将该数据组按照生成该彩色二维图码时所利用的分组过程的逆过程,还原得到二进制比特流数据的方式,根据生成该彩色二维图码时所利用的分组的方式确定,一般可以采用以下两种方式中的一种:
若生成该彩色二维图码时所利用的分组方式为生成该彩色二维图码时的上述第一种方式,则采用如下方式还原得到二进制比特流数据:
按照预定的遍历顺序,将该数据组还原为初始二进制比特流数据,其中,该预定的遍历顺序为:从左到右的顺序或从右到左的顺序;
判断在生成该彩色二维图码时,分组过程中是否存在继续按照预定的遍历顺序,以三位为一组对该二进制比特流数据进行分组的步骤;
如果是,将继续按照预定的遍历顺序,以三位为一组对该二进制比特流数据进行分组步骤中所用到的二进制比特流数据从初始二进制比特流数据中去除,得到该二进制比特流数据。
举例而言,该数据组为(1,0,0)、(1,0,0)、(0,1,0)及(1,1,1),按照预定的从左到右的遍历顺序,将四个数据组还原为初始二进制比特流数据100100010111;判断得到,在生成该彩色二维图码时,分组过程中存在继续按照预定的遍历顺序,以三位为一组对该二进制比特流数据进行分组的步骤,将继续按照预定的遍历顺序,以三位为一组对该二进制比特流数据进行分组步骤中所用到的二进制比特流数据1从初始二进制比特流数据100100010111中去除,得到该二进制比特流数据10010001011。
需要说明的是,该遍历顺序与生成该彩色二维图码时的分组过程中所用的遍历顺序是一致的,若生成该彩色二维图码时的分组过程中所用的遍历顺序是从右到左的遍历顺序,则该遍历顺序为从右到左的遍历顺序,具体过程与上述按照从左到右的遍历顺序对该数据组进行还原的过程相似,在此不再进行详细说明。
若生成该彩色二维图码时所利用的分组方式为生成该彩色二维图码时的上述第二种方式,则采用如下方式还原得到二进制比特流数据:
按照预定的遍历顺序,将该数据组还原为初始二进制比特流数据,其中,该预定的遍历顺序为:从左到右的顺序或从右到左的顺序;
判断在生成该彩色二维图码时,分组过程中是否存在将数字0作为该二进制比特流数据的补充二进制比特流数据,继续对当前分组所剩余的二进制比特流数据进行分组的步骤;
如果是,将补充二进制比特流数据0从初始二进制比特流数据中去除,得到该二进制比特流数据。
举例而言,该数据组为(1,0,0)、(1,0,0)、(0,1,0)及(1,1,0),按照预定的从左到右的遍历顺序,将四个数据组还原为初始二进制比特流数据100100010110;判断得到,在生成该彩色二维图码时,分组过程中存在在将数字0作为该二进制比特流数据的补充二进制比特流数据,继续对当前分组所剩余的二进制比特流数据进行分组的步骤,将补充二进制比特流数据0从初始二进制比特流数据100100010110中去除,得到该二进制比特流数据10010001011。
需要说明的是,该遍历顺序与生成该彩色二维图码时的分组过程中所用的遍历顺序是一致的,若生成该彩色二维图码时的分组过程中所用的遍历顺序是从右到左的遍历顺序,则该遍历顺序为从右到左的遍历顺序,具体过程与上述按照从左到右的遍历顺序对该数据组进行还原的过程相似,在此不再进行详细说明。
S205,将所述二进制比特流数据进行解码,得到原始信息,完成彩色二维图码的识读。
其中,将该二进制比特流数据进行解码的方式可以采用现有的解码方式,在此不做具体限定,若生成该彩色二维图码时,所用的编码方式为国标法,则可采用现有的与国标法对应的解码方式对该二进制比特流数据进行解码;若生成该彩色二维图码时,所用的编码方式为ASCII码,则可采用现有的与ASCII码对应的解码方式对该二进制比特流数据进行解码。
进一步的,在步骤S201之前,上述方法还可以包括:
对该待识读的彩色二维图码进行图像矫正处理;
具体的,该图像矫正处理可以包括:图像增强和去噪操作处理,可以采用现有的灰度增强算法和中值滤波算法等,对该待识读的彩色二维图码进行图像矫正处理可以提高识读的正确率,避免识读错误发生。
可见,本方案提供的一种颜色标识型彩色二维图码的识读方法,可以准确的识读通过本发明实施例所提供的颜色标识型彩色二维图码的生成方法所生成的彩色二维图码中存储的有效信息。
相应于上述颜色标识型彩色二维图码的生成方法,本发明实施例还提供了一种颜色标识型彩色二维图码的生成装置,如图3所示,所述装置,可以包括:
获取模块310,用于获取待编码的原始信息,并将其转化为二进制比特流数据;
分组模块320,用于将所述二进制比特流数据进行分组,使分组所得组的数量与待置入矩阵的元素数量相同;
其中,每一组数据包含预定位数的该二进制比特流数据,该预定位数基于预定颜色模型确定;
置入模块330,用于将所述每一组数据按照预设规则置入所述待置入矩阵中,得到初始数据矩阵;
元素扩大模块340,用于将所述初始数据矩阵中每一个元素扩大预定倍数,得到第一像素矩阵;
其中,该预定倍数基于该预定颜色模型确定;
颜色确定模块350,用于根据预设的关于元素与颜色的对应关系,确定所述第一像素矩阵中的元素对应的颜色;
生成模块360,用于将所确定出的颜色填充入待生成的彩色二维图码的数据存储区域中,并将预先为所述待编码的原始信息设置的特征信息填充入当前的所述彩色二维图码的特征信息区域中,完成彩色二维图码的生成。
可见,本方案提供的一种颜色标识型彩色二维图码的生成装置中,首先获取待编码的原始信息,并将其转化为二进制比特流数据;将所述二进制比特流数据进行分组,使分组所得组的数量与待置入矩阵的元素数量相同,然后将所述每一组数据按照预设规则置入所述待置入矩阵中,得到初始数据矩阵;再将所述初始数据矩阵中每一个元素扩大预定倍数,得到第一像素矩阵后,根据预设的关于元素与颜色的对应关系,确定所述第一像素矩阵中的元素对应的颜色,最后将所确定出的颜色填充入待生成的彩色二维图码的数据存储区域中,并将预先为所述待编码的原始信息设置的特征信息填充入当前的所述彩色二维图码的特征信息区域中,完成彩色二维图码的生成。采用该生成装置生成的彩色二维图码中的颜色信息包含有效的原始信息,而不仅仅是视觉上的冲击。
具体的,该预定颜色模型为RGB模型;
相应的,该预定位数为三位,该预定倍数为255倍。
具体的,该分组模块320具体用于:
按照预定的遍历顺序,以三位为一组对所述二进制比特流数据进行分组;
判断分组所得组的数量是否与所述待置入矩阵的元素数量相同,如果否,继续按照预定的遍历顺序,以三位为一组对该二进制比特流数据进行分组,直至满足组的数量要求,其中,该预定的遍历顺序为:从左到右的顺序或从右到左的顺序;
或者,
按照预定的遍历顺序,以三位为一组对该二进制比特流数据进行分组;
判断分组所得组的数量是否与该待置入矩阵的元素数量相同,如果否,将数字0作为该二进制比特流数据的补充二进制比特流数据,继续对当前分组所剩余的二进制比特流数据进行分组,直至满足组的数量要求,其中,该预定的遍历顺序为:从左到右的顺序或从右到左的顺序。
具体的,该置入模块330具体用于:
将该每一组数据按照Z字型走向顺次置入该待置入矩阵中,使该待置入矩阵中每个元素对应一组数据,得到初始数据矩阵。
进一步的,该预设的关于元素与颜色的对应关系为:
元素(0,0,0)对应黑色;元素(0,0,255)对应蓝色;元素(0,255,0)对应绿色;元素(0,255,255)对应青蓝色;元素(255,0,0)对应红色;元素(255,0,255)对应洋红色;元素(255,255,0)对应黄色;元素(255,255,255)对应白色。
更进一步的,本发明实施例所提供的一种颜色标识型彩色二维图码生成装置,还可以包括:
掩模处理模块,用于在将该特征信息区域中的特征信息填充入当前的该彩色二维图码的特征信息区域中之后,对该特征信息区域进行掩模处理。
相应于上述颜色标识型彩色二维图码的识读方法,本发明实施例还提供了一种颜色标识型彩色二维图码的识读装置,如图4所示,所述装置,可以包括:
第二获取模块410,用于获取待识读的彩色二维图码的第二像素矩阵;
其中,所述待识读的彩色二维图码为通过本发明实施例所提供的颜色标识型彩色二维图码的生成方法所生成的彩色二维图码。
元素缩小模块420,用于将所述第二像素矩阵中每一个元素缩小预定倍数,得到还原数据矩阵;
分解模块430,用于按照生成所述彩色二维图码时所利用的预设规则的逆过程,将所述还原数据矩阵分解成由所述预定位数的二进制比特流数据组成的数据组;
还原模块440,用于将所述数据组按照分组过程的逆过程,还原得到二进制比特流数据;
解码模块450,用于将所述二进制比特流数据进行解码,得到原始信息,完成彩色二维图码的识读。
可见,本方案提供的一种颜色标识型彩色二维图码的识读装置,可以准确的识读通过本发明实施例所提供的颜色标识型彩色二维图码的生成方法所生成的彩色二维图码中存储的有效信息。
具体的,该元素缩小模块420具体用于:
对该第五像素矩阵进行纠错处理;
将纠错处理后的第二像素矩阵中每一个元素缩小预定倍数,确定出还原数据矩阵;
其中,该纠错处理包括:
根据公式:
计算出该第二像素矩阵中的元素与预设的元素的欧氏距离值r
1~r
8,其中,x为该第二像素矩阵中的元素的R值,y为该第二像素矩阵中的元素的G值,z为该第二像素矩阵中的元素的B值,n=1,2…8,R、G、B分别为该预设的元素的R值、G值、B值;
比较该欧氏距离值r1~r8的大小,用值最小的rn对应的该预设的元素替换该第二像素矩阵中的元素,完成纠错处理;
该预设的元素包括:
(0,0,0)、(0,0,255)、(0,255,0)、(0,255,255)、(255,0,0)、(255,0,255)、(255,255,0)及(255,255,255)。
进一步的,本发明实施例所提供的一种颜色标识型彩色二维图码的识读装置,还可以包括:
图像矫正处理模块,用于对该待识读的彩色二维图码进行图像增强和去噪操作处理。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。