著录项信息
专利名称 | 动态二维码及其解码方法 |
申请号 | CN201210149439.1 | 申请日期 | 2012-05-14 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2012-10-24 | 公开/公告号 | CN102750564A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06K19/06 | IPC分类号 | G;0;6;K;1;9;/;0;6;;;G;0;6;K;7;/;1;0查看分类表>
|
申请人 | 王安然;牛建伟 | 申请人地址 | 北京市昌平区沙河高教园区北京航空航天大学
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 王安然,牛建伟 | 当前权利人 | 王安然,牛建伟 |
发明人 | 王安然 |
代理机构 | 北京中海智圣知识产权代理有限公司 | 代理人 | 徐金伟 |
摘要
本发明公开了动态二维码,其特征在于,该动态二维码包括至少两帧二维码,在单位时间内以一定的帧率连续展示二维码;其中,每一帧二维码包括用于探测每一帧二维码边界的位置探测像素点(1)和数据区(4),且组成数据区的颜色数大于等于2;所述帧率小于等于一半摄像设备的帧率。另外,该动态二维码还包括用于区分连续的任意两帧和判断是否出现拖影现象的帧奇偶校验像素点(5)、用于探测每一帧二维码的亮度分布的亮度探测区域(2)和用于降低动态二维码信息出错概率的行/列数据奇偶校验区域(3)。
动态二维码及其解码方法\n技术领域\n[0001] 本发明属于信息安全领域,特别涉及动态二维码及其解码方法。\n背景技术\n[0002] 二维码,又称静态二维条码,静态二维条形码最早发明于日本,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化等特点。\n[0003] 多行组成的条形码,不需要连接一个数据库,本身可存储大量数据,应用于:医院、驾驶证、物料管理、货物运输,当条形码受一定破坏时,错误纠正能使条形码能正确解码二维码。它是一个多行、连续性、可变长、包含大量数据的符号标识。每个条形码有3~90行,每一行有一个起始部分、数据部分、终止部分。它的字符集包括所有128个字符,最大数据含量是1850个字符。\n[0004] 一维条形码只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,其一定的高度通常是为了便于阅读器的对准。\n[0005] 一维条形码的应用可以提高信息录入的速度,减少差错率,但是一维条形码也存在一些不足之处:\n[0006] 数据容量较小:30个字符左右;\n[0007] 只能包含字母和数字;\n[0008] 条形码尺寸相对较大(空间利用率较低);\n[0009] 条形码遭到损坏后便不能阅读;\n[0010] 在水平和垂直方向的二维空间存储信息的条形码,称为二维条形码(dimensional bar code)。\n[0011] 从以上的介绍可以看出,与一维条形码相比二维条形码有着明显的优势,归纳起来主要有以下几个方面:\n[0012] 一)数据容量更大;\n[0013] 二)超越了字母数字的限制;\n[0014] 三)条形码相对尺寸小;\n[0015] 四)具有抗损毁能力;\n[0016] 但是,随着社会的发展,二维条形码的数据容量仍然满足不了现在人们的需要。急需解决如何扩大二维条形码的数据容量这个问题。\n发明内容\n[0017] 为了克服上述缺陷,本发明提供一种具有大数据容量的二维条形码及其解码方法,该条形码在具有现有的二维条形码的基础上,增大了数据容量。\n[0018] 为实现上述发明目的,提出该动态二维码包括至少两帧二维码,在单位时间内以一定的帧率连续展示二维码;其中,每一帧二维码包括用于探测每一帧二维码边界的位置探测像素点和数据区,且组成数据区的颜色数大于等于2;所述帧率小于等于一半摄像设备的帧率。\n[0019] 更优选地,该动态二维码还包括用于区分连续的任意两帧和判断是否出现拖影现象的帧奇偶校验像素点。\n[0020] 更优选地,还包括用于探测每一帧二维码的亮度分布的亮度探测区域。\n[0021] 更优选地,还包括用于降低动态二维码信息出错概率的行/列数据奇偶校验区域。\n[0022] 更优选地,所述数据区是一个(a+2)*(b+2)的像素矩阵;其中,第一列为颜色模式列,从左到右依次是从0到n所表示的颜色(n为颜色数),最后一行和最后一列为空白;中间a*b的区域的编码方式人为定制。\n[0023] 更优选地,所述帧率≤10。\n[0024] 为实现上述发明目的,本发明还提出一种对动态二维码解码方法,其特征在于,[0025] 步骤1):对动态二维码中每一帧二维码的第二行颜色点进行采样,并用最近点算法构造颜色映射表;\n[0026] 步骤2):将对应帧的数据区的(a+2)*(b+2)个点进行采样,储存帧奇偶校验位、文件开始位及文件结束位,将采样信息通过所述步骤1)中的颜色映射表映射为二进制数据;\n把二进制信息存入第一内存缓冲区中;\n[0027] 步骤3):将所述步骤2)中的二进制数据进行解码;其中,\n[0028] 若解码不成功,则获取动态二维码完整信息失败;\n[0029] 若解码成功,则判断该帧二维码中文件开始位是否有效,如果无效,则对其他帧二维码中的开始位是否有效进行判断直至找到有效的开始位;如果有效,则获取动态二维码表示的文件长度L及文件类型信息;\n[0030] 步骤4):根据所述步骤3)获取的动态二维码的文件类型在第二内存缓冲区中建立相同类型的文件F,设置计数器,计数器的取值为t,并判断当前帧的数据量是否小于等于文件长度L;若是,则开始读取数据,直到t=L;否则,则开始读取数据,从第一帧开始,对每次进 入第二内存缓冲区的前delta=min(L-t,223)字节数据存入文件F中,并使t=t+delta,直到t=L;\n[0031] 步骤5):判断文件结束位是否有效,如果无效,则获取动态二维码完整信息失败,否则,则成功获取动态二维码完整信息。\n[0032] 更优选地,所述步骤3)中的解码算法为RS(255,R)解码算法,其中,R为表示每一帧表示数据的字节数。\n[0033] 更优选地,所述步骤3)探测所述位置探测像素点的方法包括:\n[0034] 将每一有效帧的某一区域的Y分量最大与Y分量最小按1∶4的比例取平均数为阈值;当采样点小于或等于阈值时,该采样点视为有效采样,并记录该点的坐标信息,取所有有效采样点的平均坐标,若在该平均坐标上的Y分量小于阈值,则视为已找到该区域的位置探测像素点;否则,视为未检测到位置探测像素点。\n[0035] 本发明的优点在于,我们可以通过该技术利用可见光传输各种类型的数据,如文本、定长文件、流媒体数据等,设备上也只需要可以彩色动态显示的设备和可以摄像的设备,目前的智能手机、平板电脑、电纸书等设备已遍及千家万户。由于不需要其他新型设备,作为一个崭新的技术,它可以应用的领域是十分广泛的。\n[0036] 首先,普通二维码的用途动态二维码都可以实现,如商品标识和商品描述。由于动态二维码的特点,它更适合虚拟商品和数码商品。\n[0037] 动态二维码最基础的用途便是数据传输。我们可以在任何拥有显示器的设备和任何拥有摄像功能的设备之间传递轻量级数据,传输速率也比较可观。在此基础上,动态二维码可以拥有许多的应用。\n[0038] 该技术可以用于广告。在电视、电影、网页等媒体中的广告中,可能需要包含一些难以通过视频展示的信息,或者一些需要用户储存的信息,如商品图片、介绍、商品说明书、地点、甚至商品本身等。我们可以通过将表示这些信息的动态二维码嵌入到广告的一个角落中循环播放。用户只需要一个可拍摄的设备,如安卓手机,即可将这些信息储存在设备中方便查阅。这在广告中用处很大,通过增大广告的信息量,并且用户可以储存信息,可以让广告起到更好的“广而告之”的作用。普通二维码由于数据量较小,甚至连一张完整的图片都无法表示,所以几乎无法实现该应用。\n[0039] 该技术也可以在大量的公共场所得以应用。比如说,我们可以在博物馆、运动场等公共场所通过动态二维码向人们传递物品的介绍、图片、价格等信息,方便人们获取并储存这些信息。也可以在公共交通枢纽通过动态二维码向路人传递地图、公交信息等数据,让人们更为方便的获取、检索并储存位置信息;还可以在教学、演讲时通过动态二维码向观众传递课件、论文等资料,起到一定的互动作用。\n[0040] 还有,该技术可以用来安全的传递数据。LIFI技术的本意便是数据安全,因为它是通过可见光进行传递的。动态二维码技术本质上属于广义上的LIFI技术,所以它十分安全:如果你看不到它,你便无法知道它表示的数据。另外,其编解码方式都是人为定义的,所以我们可以通过改变颜色、跳过指定的帧或像素点等方式来实现数据的混淆。\n附图说明\n[0041] 图1为动态二维码中每一帧二维码的组成结构示意图;\n[0042] 图2为动态二维码中一帧二维码的示意图;\n[0043] 图3为一种对所述的动态二维码解码方法流程图。\n具体实施方式\n[0044] 下面结合附图和具体实施方式,对本发明的技术方案进行进一步详细的说明。\n[0045] 首先,定义以下“深色”和“浅色”,“深浅”决定于背景。不同于背景颜色均统称为“深色”;相似于背景颜色统称为“浅色”。\n[0046] 通过对普通二维码进行“多色化”及“动态化”处理,设计一种动态二维码,使其可以在目前已逐渐普及的彩色显示设备和彩色摄像设备的帮助下,传递数据量更大的信息,如普通文件等;也可以传递流媒体,如音乐等。\n[0047] 多色化:指构成二维码的颜色数大于或等于2,这样的二维码称为多色二维码。普通二维码的颜色数只有深浅两种,虽然可以通过更改深浅两色的具体颜色来表示一个可见的图案,但是其单个数据单位的信息量依然为1位。通过使单个数据单位的颜色增大到n种不同的颜色,每个颜色对应着[0,n-1]中的一个数字,可以使单个数据单位的信息量增大到floor(log2n位。颜色的选取与识别率关系很大。首先,其不能对亮度敏感,因为其可在不同的亮度环境中使用。所以在定义颜色的不同时,应对其亮度分量进行忽略。其次,各个颜色之间应尽可能有明显的区别。考虑到目前的电子摄像设备大多采用YUV格式的颜色空间,所以应忽略其Y(亮度)分量(可以使用一个合适的固定的Y分量),并使用明显不同的UV(蓝色及红色)分量。\n[0048] 动态化:指二维码在单位时间内以一定的帧率连续展示多张多色二维码,这样的二维码称为动态二维码。帧率与拍摄质量相关。一般来讲,帧率需要最多小于等于摄像的帧率的一半,因为可能会出现拍摄的每一帧均穿过了动态二维码的连续两帧的情况。同时,由于光线原因,可能会出现拖影的现象,所以动态二维码的帧率不应过高,一般为10以下。\n为了区分不同的帧,我们用一个特定的像素点来表示帧的奇偶。\n[0049] 如图1所示,图1为动态二维码中每一帧二维码的组成结构示意图。对于浅色背景的动态二维码,其每一帧的组成为:\n[0050] 位置探测像素1是一个深色的像素点。通过四个位置探测像素的中心点,便可以较为精 确的知道该帧的具体位置。\n[0051] 亮度探测区域2是横竖两排纯白色的像素点。通过探测它们的亮度差异便可知道该帧的亮度分布,进而便可以对数据区的图像信息进行调整,以克服深色条纹所带来的错误。在显示效果较好时,该区域可以忽略。\n[0052] 行/列数据奇偶校验区域3是横竖两排深浅二色的像素点。每一个像素代表该行/列的所有像素所代表的值的和的奇偶。该值为黑白两色并且在二维码的边缘,出错的概率很小。所以通过该像素可以以较大的概率确定该行/列是否有错误。通过一个行数据奇偶校验像素和一个列数据奇偶校验像素,便可以较大的概率确定在该行和该列的像素点是否出现错误。在引入纠错算法后,该区域用处不大,可以忽略。\n[0053] 数据区4表示要传递的数据,是一个(a+2)*(b+2)的像素矩阵,其中最后一行、第一列、最后一列为空白以提高位置探测像素的识别准确率,第一列为颜色模式列,从左到右依次是从0到n所表示的颜色(n为颜色数)。中间a*b的区域的编码方式可以人为定制,如在传递定长文件时,可采用以下编码方法:首先要求a*b能够被256整除。我们在文件具体内容之前插入一个长度为8字节的数据,前四字节表示文件长度,后四字节表示文件类型。随后,将这8字节与文件具体内容分为长度为223字节的多部分,每部分编码使其具有\n255字节中任意16字节的纠错能力。在其末尾加上一个值为0的字节,然后,将这256字节组合起来,将其转换为n进制串,通过数字-颜色的映射表,将其转换为动态二维码的颜色数据,并顺序填充到数据区中。若一帧被填充完毕,则继续进行下一帧的编码。通过两个特定位置的像素表示文件开始及文件结束。若文件刚刚开始,则文件开始像素为深色,否则为浅色;若文件传递结束,则文件结束像素为深色,否则为浅色。文件传递结束后,继续在下一帧从头进行文件的传递,以此循环往复。\n[0054] 帧奇偶校验像素5是一个深浅二色的像素点。若该帧为奇数帧则为深色,否则则为浅色,反之亦可。帧像素分布于左上角和右下角,通过判断它们是否相同,便可确定是否出现拖影。帧奇偶校验像素与位置探测像素不相连,可以提高位置探测像素的识别准确率。\n[0055] 该动态二维码包括至少两帧静态二维码,在单位时间内以一定的帧率连续展示静态二维码;其中,每一帧二维码包括用于探测每一帧二维码中心点的位置探测像素点和数据区,且颜色数大于等于2;所述频率小于等于一半摄像设备的帧率。如图2所示,图2为动态二维码中一帧二维码的示意图。当前的规格有如下几种:其中c为颜色数,a为行数,b为列数。当然,规格可以因软硬件的发展而变化。\n[0056] 1):c=2,a=32,b=32,帧率=6帧/秒。传输速率为0.75KB/s。可在不支持彩色的显示设备和摄像设备上实现编解码;\n[0057] 2):c=4,a=32,b=32,帧率=6帧/秒。传输速率为1.5KB/s。可在几乎任何可以摄像的设 备上实现解码;\n[0058] 3):c=4,a=32,b=32,帧率=10帧/秒。传输速率为2.5KB/s。同上,在光线较好时可以采用;\n[0059] 4):c=4,a=64,b=64,帧率=6帧/秒。传输速率为6KB/s。可在支持720p分辨率摄像的设备上实现解码;\n[0060] 5):c=4,a=64,b=64,帧率=10帧/秒。传输速率为10KB/s。同上,在光线较好时可以采用;\n[0061] 6):c=4,a=96,b=96,帧率=6帧/秒。传输速率为13.5KB/s。可在支持1080p分辨率摄像的设备上实现解码;\n[0062] 7):c=4,a=96,b=96,帧率=10帧/秒。传输速率为22.5KB/s。同上,在光线较好时可以采用。\n[0063] 其他动态二维码的属性类似于普通二维码。\n[0064] 本发明还提出一种对所述的动态二维码解码方法,如图3所示。\n[0065] 步骤1):对动态二维码中每一帧二维码的第二行颜色点进行采样,并用最近点算法构造颜色映射表;\n[0066] 步骤2):将对应帧的数据区的(a+2)*(b+2)个点进行采样,储存帧奇偶校验位、文件开始位及文件结束位,将采样信息通过所述步骤1)中的颜色映射表映射为二进制数据;\n把二进制信息存入第一内存缓冲区中;\n[0067] 步骤3):将所述步骤2)中的二进制数据进行解码;其中,\n[0068] 若解码不成功,则获取动态二维码完整信息失败;\n[0069] 若解码成功,则判断该帧二维码中文件开始位是否有效,如果无效,则对其他帧二维码中的开始位是否有效进行判断直至找到有效的开始位;如果有效,则获取动态二维码表示的文件长度L及文件类型信息;\n[0070] 步骤4):根据所述步骤3)获取的动态二维码的文件类型在第二内存缓冲区中建立相同类型的文件F,设置计数器,计数器的取值为t,并判断当前帧的数据量是否小于等于文件长度L;若是,则开始读取数据,直到t=L;否则,则开始读取数据,从第一帧开始,对每次进入第二内存缓冲区的前delta=min(L-t,223)字节数据存入文件F中,并使t=t+delta,直到t=L;\n[0071] 步骤5):判断文件结束位是否有效,如果无效,则获取动态二维码完整信息失败,否则,则成功获取动态二维码完整信息。\n[0072] 在步骤3)中解码方法可以采用解码算法现有的技术。但是建议优选RS解码算法。\n因为该算法在本技术方案中应用起来比其他算法要简便,不易出错。\n[0073] 任何一个可以支持数字摄像的设备都可以进行图像处理的处理进而实现解码。以下以最为普遍使用的Android设备为例。\n[0074] 从手机摄像头传来的原始缓冲区数据为YUV格式的图像数据。我们首先定义如下情况的处理:\n[0075] 1、未检测到位置探测像素;\n[0076] 2、文件未开始并未检测到该帧的文件开始位为深色;\n[0077] 3、该帧的帧奇偶校验位与上一帧的奇偶校验位相同;\n[0078] 4、该帧的数据经RS解码算法无法解码;\n[0079] 5、该帧的文件结束位为深色。\n[0080] 若出现情况1或情况4并正在进行传输,则停止传输,传输失败;出现情况2或情况3则该帧为无效帧,否则为有效帧;出现情况5则继续处理图像并提示传输成功。\n[0081] 我们再定义图像采样方式。由于原始数据中存在噪点,所以我们需要为采样进行滤波。我们通过邻域先中值再均值的滤波方法,取像素及其周围8个像素去掉亮度最高及亮度最低的像素后,取平均值作为该像素的采样值。\n[0082] 对于每一有效帧,在左上、右上、右下、左下四个区域搜寻位置探测像素点1,方法是分别将指定区域的最亮像素(Y分量最大)与最暗像素(Y分量最小)按1∶4的比例取平均数为阈值,对区域内的所有点进行采样得到的亮度值(Y分量值)小于或等于该值的采样视为有效采样并记录它的坐标。最后取所有有效采样的平均坐标,若在该坐标上的采样亮度小于阈值则视为已找到该区域的位置探测像素,否则视为未检测到位置探测像素。\n[0083] 接下来是构造网格。默认显示设备为平面。通过四个顶点构造四条边,将两组对边平均分为a+3和b+3份用点分隔开。加上四个顶点,连接相对的对应点构成一个网络,其所有交点即为动态二维码中的所有像素点所在位置。\n[0084] 若为第一次处理,则对第二行的颜色点进行采样并用最近点算法构造颜色映射表;对中间数据区的(a+2)*(b+2)个点进行采样,储存帧奇偶校验位、文件开始位及文件结束位,并对其中的a*b个数据点通过颜色映射表映射为二进制数据,存入第一内存缓冲区。\n[0085] 一个静态二维码所能表示的最大数据为256字节的倍数,每一部分为256字节,为了保证信息的正确率,这256个字节中还有一些纠错校验位。比如:256字节中取223字节为数据位,其余32字节为纠错校验位。对于每次进入缓冲区的一帧二维码进行RS(255,R)解码。其中,R表示每一帧表示数据的字节数,取R=223。若解码成功,则取它所表示的\n223字节数据加入第二内存缓冲区中,若该帧的开始位为有效位,则获取该动态二维码所表示的文件的长度L及文件类型T,并判断当前帧的数据量是否小于等于文件长度L,若是,则在存储器(如SD卡)中建立T类型的文件F,开始读取数据。因为第一帧的数据量已经表达出了文件信息,前面已经提到了动态二维码包括至少2帧的静态二维码,那么第二帧的静态二维码的数据区4表示的信息为无效的信息。若当前帧的数据量大于文件长度L,则在存储器(如SD卡)中建立T类型的文件F,开始读取数据,并设置一个计数器,计数器的取值 为t,表示已处理的数据长度,起初为零。从该帧开始,对每次进入第二内存缓冲区的前delta=min(L-t,223)字节数据存入文件F中,并使t=t+delta,直到计数器中的值等于文件长度L为止。若此时的帧为文件结束帧,则接收成功;否则接收失败。\n[0086] 最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
法律信息
- 2017-06-30
未缴年费专利权终止
IPC(主分类): G06K 19/06
专利号: ZL 201210149439.1
申请日: 2012.05.14
授权公告日: 2016.03.30
- 2016-03-30
- 2012-12-19
实质审查的生效
IPC(主分类): G06K 19/06
专利申请号: 201210149439.1
申请日: 2012.05.14
- 2012-10-24
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-03-10
|
2009-03-27
| | |
2
| |
2009-12-02
|
2008-05-28
| | |
3
| |
2011-04-27
|
2009-09-28
| | |
4
| |
2011-11-16
|
2010-05-14
| | |
5
| |
2011-11-16
|
2011-07-21
| | |
6
| | 暂无 |
2007-07-19
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |