一种点阵二维码的编码和识读方法

文档序号:10535419阅读:1184来源:国知局
一种点阵二维码的编码和识读方法
【专利摘要】本发明公开了一种点阵二维码的编码和识读方法,所述点阵二维码由M×N个虚拟码点存储区块组成,通过在虚拟码点存储区块内填充码点分别形成多个坐标校正区块、多个数据存储区块和一个方向指示区块;多个坐标校正区块内所填充的码点有且仅有一个并均位于虚拟码点存储区块的中心位置;方向指示区块内填充有至少两个码点,其中仅有一个码点位于虚拟码点存储区块的中心位置;多个坐标校正区块和方向指示区块均相互隔开,分布于多个数据存储区块之间;多个数据存储区块内填充的码点用于存储数据信息;其中,M≥4,N≥4,M与N均取偶数。本发明具有编码容量大、对人眼的视觉干扰小、可被简单可靠识别等优点。
【专利说明】
一种点阵二维码的编码和识读方法
技术领域
[0001] 本发明涉及图像识别技术领域,特别是涉及一种点阵二维码的编码和识读方法。
【背景技术】
[0002] 传统的书籍、报纸等主要靠眼睛来阅读,这种获取信息的方式比较枯燥,时间长了 眼睛容易疲劳。而且,盲人或者患有眼疾的人,无法阅读这种传统出版物。为此,近年来出现 了语音阅读出版物,如专利号为ZL200610156879.4的中国发明专利,针对MPR(Multimedia Print Reader)出版物,利用二维码语音阅读装置,可以对语音阅读出版物中的内容进行解 码,供读者在阅读的同时还可接收音视频内容,提高了阅读或记忆的效率,更方便儿童或眼 耳有残疾的人士学习。关于MPR二维码,请见MPR出版物行业标准,包括MPR出版物第1部分 (MPR码符号规范,标准编号:CY/T58.1-2009)、第2部分(MPR码编码规则,标准编号:CY/ T58.2-2009)、第3部分(通用制作规范,标准编号:CY/T58.3-2009)、第4部分(MPR码印制质 量要求及检验方法,标准编号:CY/T58.4-2009)和第5部分(基本管理规范,标准编号:CY/ T58.5-2009)。
[0003] 图1是点阵码应用示意图,图文101 (如图1中的图案"公鸡")和点阵码102-同印刷 在纸张等物体的表面100上,103为一具有光学图像采集与识别功能的电子装置,当电子装 置103接近点阵码102时电子装置103识别出点阵码102中存储的索引数据,电子装置103通 过有线或无线的方式将索引数据发送给媒体播放部件(内置于电子装置103或独立于电子 装置103),媒体播放部件根据索引数据检索并播放与图文101关联的数字媒体内容(例如 "公鸡的叫声")。此种应用广泛应用于低幼儿童的有声读物。随着移动互联网技术的飞速发 展,将互联网上的包括图、文、音频、视频在内的全媒体内容与纸质教材关联的需求越来越 迫切,例如将老师的线上授课视频与学生的纸质教材关联,学生通过无线或有线连接到视 频播放器的电子装置103点触教材中的知识点内容而触发视频播放器播放与该知识点内容 关联的老师授课视频。互联网上的资源是海量的,因此每个被关联的数字媒体内容必须有 唯一的ID编码,如果相同ID编码被重复使用,被关联的数字媒体内容将会被分隔为多个独 立的系统,内容消费者将需要针对每个独立系统使用不同的点读笔,这是目前本领域技术 产品的一大弊端,为了解决这个问题必须加大点阵二维码的编码容量。加大编码容量有两 个方法,第一个方法是保持单个点阵二维码面积不变的前提下加大码点的印刷密度,但这 样会加大码点对图文的视觉干扰,使得图文看起来比正常印刷的要灰暗很多;第二个方法 是保持码点间距不变,增加单个点阵二维码面积,但这样会显著增加图像识别的运算量以 及码点坐标定位的错误率。
[0004] 如图2所示为第一种已知的点阵码,它由第一码点组210和具有数据存储功能的第 二码点组211组成。由于光学成像系统存在透视变形,当行和列加大后,第二码点组211中的 码点偏离第一码点组210中的码点越来越远,根据第一码点组210中的码点坐标恢复的第二 码点组211中的网格的中心坐标误差也会越来越大。
[0005] 如图3所示是第二种已知的点阵码,是图2所示点阵码的改进版。一个码点最多有8 种偏尚状态可存储3bit数据,相同的行列数下图3与图2有相同的存储容量,图3中起坐标校 正作用的码点在矩阵中的分布相对均匀一些,但并没有达到每个数据存储码点都至少有1 个坐标校正码点相邻的效果。
[0006] 综上所述,现有技术中的码点配置形式都不能很好的应用于大编码容量的情况, 因此如何设计一种编码容量大、适应较大光学成像畸变、对人眼的视觉干扰小,并且可被简 单可靠识别的点阵二维码编码方法及其对应的识别与解码算法是本领域的工程技术人员 的一大挑战。
[0007] 以上【背景技术】内容的公开仅用于辅助理解本发明的发明构思及技术方案,其并不 必然属于本专利申请的现有技术,在没有明确的证据表明上述内容在本专利申请的申请日 已经公开的情况下,上述【背景技术】不应当用于评价本申请的新颖性和创造性。

【发明内容】

[0008] 本发明目的在于提出一种点阵二维码的编码和识读方法,以解决上述现有技术由 于坐标校正码点分布不均匀导致编码容量加大后的识别运算量增加和码点定位错误率高 的技术问题。
[0009] 为此,本发明提出一种点阵二维码的编码方法,所述点阵二维码由MXN个虚拟码 点存储区块组成,通过在所述虚拟码点存储区块内所填充码点分别形成多个坐标校正区 块、多个数据存储区块和一个方向指示区块;
[0010] 所述多个坐标校正区块内所填充的码点均位于所述虚拟码点存储区块的中心位 置;
[0011] 所述方向指示区块内填充有至少两个码点,其中仅有一个码点位于所述虚拟码点 存储区块的中心位置;
[0012] 所述多个坐标校正区块和所述方向指示区块均相互隔开,分布于所述多个数据存 储区块之间;
[0013] 所述多个数据存储区块内填充的码点用于存储数据信息;
[0014] 所述多个坐标校正区块和多个数据存储区块内均有且仅有一个码点;
[0015] 其中,M2 4,N2 4,M和N均取偶数。
[0016] 根据实施例,该编码方法还可以包括以下技术特征:
[0017] 所述点阵二维码中,行坐标和列坐标均为奇数或均为偶数的所述虚拟码点存储区 块为坐标校正区块和所述方向指示区块,其余的所述虚拟码点存储区块为所述数据存储区 块。
[0018] 所述多个坐标校正区块、多个数据存储区块和一个方向指示区块分别被虚拟的行 列线分割成3X3个子区块,每个所述坐标校正区块的中心子区块填充一个码点;每个所述 数据存储区块中有且仅有一个子区块中填充有码点,所述数据存储区块通过将码点填充在 不同的子区块以存储不同的数据;所述方向指示区块中至少有两个子区块填充有码点。 [0019]所述点方向指示区块中填充的码点绕其几何中心旋转±90°或180°后与旋转前不 重合。
[0020]本发明还提出了一种点阵二维码识读方法,用于识别上述任一项所述的方法获得 的点阵二维码,包括以下步骤:
[0021] 获取不小于一个所述点阵二维码大小的码图灰度图像,所述灰度图像中包括至少 一个方向指示区块和多个坐标校正区块;
[0022] 根据所述至少一个方向指示区块和多个坐标校正区块的灰度图像,获取所述坐标 校正区块和所述方向指示区块在所述点阵二维码中的行列位置;
[0023] 根据所述灰度图像、所述坐标校正区块和所述方向指示区块的行列位置,读取所 述点阵二维码存储的数据。
[0024] 根据实施例,该识读方法还可包括如下技术特征:
[0025] 根据所述灰度图像、所述坐标校正区块和所述方向指示区块的行列位置,读取所 述点阵二维码存储的数据包括以下步骤:
[0026] S1:对所述灰度图像进行二值化处理,得到二值图像,并在所述二值图像中标记码 点,确定码点重心坐标(x,y);
[0027] S2:确定码点的行方向和列方向以及行分割点和列分割点:以所述二值图像的几 何中心为旋转中心,通过计算所述二值图像的每个旋转角度下所述码点重心坐标向预定方 向的投影波形的均方差来确定码点的行方向和列方向,然后分别在行方向、列方向上对码 点重心坐标(x,y)进行投影,并对投影波形运用自相关法计算行分割点和列分割点;
[0028] S3:将码点重心坐标(x,y)按步骤S2得到的行方向、列方向进行旋转转正,并计算 出旋转后的所述转正码点坐标(X1,y〇,用所述步骤S2得到的行分割点和列分割点形成矩形 网格,用于对码点进行分割;
[0029] S4:构建与所述步骤S3得到的矩形网格相对应的二维矩阵,并根据所述转正码点 坐标(X1,yi)判断其在所述矩形网格中所属的区块,再将所述转正码点坐标(X1, yi)加入该 区块对应的二维矩阵的单元中;
[0030] S5:根据二维矩阵与所述方向指示区块特征匹配的单元,识别二维矩阵的旋转方 向和偏移量;
[0031] S6:根据所述旋转方向和偏移量重构一个完整的所述点阵二维码,并读取其存储 的数据。
[0032] 所述二维矩阵的旋转方向根据与所述方向指示区块相邻的所述坐标校正区块和 所述转正码点坐标(X1, yi),以及所述方向指示区块内的多个码点之间的相对位置计算得 到。
[0033] 所述根据坐标校正区块读取数据存储区块的存储的数值,具体为:首先,根据所述 坐标校正区块的转正码点坐标(X1, yi)计算所述数据存储区块的中心坐标;然后,根据所述 数据存储区块中的转正码点坐标(X1, yi)相对该中心坐标的偏移读取存储的数据。
[0034]所述根据所述坐标校正区块的转正码点坐标(X1,yi)计算所述数据存储区块的中 心坐标,采用插值法。
[0035]所述重构一个完整的所述点阵二维码包括如下子步骤:
[0036] S601:分别获取所述方向指示区块、所述坐标校正区块和所述数据存储区块的正 确参考位置;
[0037] S602:分别识别所述二维矩阵中分别与所述方向指示区块、所述坐标校正区块和 所述数据存储区块特征相匹配的单元,以与所述方向指示区块特征相匹配的单元为位置原 点,确定所述坐标校正区块和所述数据存储区块特征相匹配的单元的相对位置;
[0038] S603:使所述位置原点与所述方向指示区块的正确参考位置重合使与所述二维矩 阵的坐标校正区块特征相匹配的单元相对位置与所述坐标校正区块的正确参考位置重合; [0039] S604:参照所述正确参考位置,将所述二维矩阵中的所述虚拟码点存储区块分解 并移动到正确的位置,从而重构形成与所述点阵二维码行列数及排布均相同的二维矩阵。
[0040] 本发明与现有技术对比的有益效果包括:本发明中,所述坐标校正区块和方向指 示区块均匀的分布在所述数据存储区块之间,在解决印刷及视觉干扰的问题的同时提高了 抵抗光学成像形变的能力。
[0041] -个优选方案中,所述方向指示区块中填充的码点因具有绕方向指示区块几何中 心旋转±90°和180°不重合的特点,因而能够准确地确定图像的旋转方向,从而具有识别速 度快准确率高的进一步技术效果。
【附图说明】
[0042]图1是点阵码应用示意图。
[0043]图2是第一种已知点阵码示意图。
[0044]图3是第二种已知点阵码示意图。
[0045] 图4是本发明实施例一、二的虚拟码点存储区块与子区块划分示意图。
[0046] 图5是本发明实施例一、二的码点填充示意图。
[0047] 图6是本发明实施例一、二的子区块可填充码点的子区块位置示意图。
[0048]图7是本发明实施例一的4X4的点阵二维码示意图。
[0049] 图8是本发明实施例一的包括4个图7所示的点阵二维码的平铺拼接码图示意图。
[0050] 图9是本发明实施例二的6X6的点阵二维码示意图。
[0051] 图10是本发明实施例二的包括4个图9所示的点阵二维码的平铺拼接码图示意图。 [0052]图11是本发明实施例三的流程图一。
[0053]图12是本发明实施例三的点阵二维码图。
[0054]图13是本发明实施例三的灰度图像。
[0055]图14是本发明实施例三的二值化图像。
[0056]图15是本发明实施例三的投影波形均方差图。
[0057]图16是本发明实施例三的行方向和列方向示意图。
[0058]图17A、17B分别是本发明实施例三的沿行方向和列方向的投影波形图。
[0059]图18是本发明实施例三的旋转操作后的结果示意图。
[0060]图19是本发明实施例三的旋转方向确定示意图。
[0061]图20是本发明实施例三将相邻的坐标校正矩形块中的码点连接后的示意效果图。 [0062]图21是本发明实施例三数据存储区块中心坐标确定示意图一。
[0063]图22是本发明实施例三数据存储区块中心坐标确定示意图二。
[0064]图23是本发明实施例三数据存储区块中心坐标确定示意图三。
[0065]图24是本发明实施例三数据存储区块中心坐标确定示意图四。
[0066]图25是本发明实施例三数据存储区块中心坐标确定示意图五。
[0067]图26是本发明实施例三数据存储区块中心坐标确定示意图六。
[0068]图27是本发明实施例三数据存储区块中心坐标确定示意图七。
[0069]图28是本发明实施例三数据存储区块中心坐标确定示意图八。
[0070]图29是本发明实施例三数据存储区块中心坐标示意图。
[0071]图30是本发明实施例三的流程图二。
[0072]图31是本发明实施例三点阵二维码重构示意图。
【具体实施方式】
[0073] 下面结合【具体实施方式】并对照附图对本发明作进一步详细说明。应该强调的是, 下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
[0074] 参照以下附图1-31,将描述非限制性和非排他性的实施例,其中相同的附图标记 表示相同的部件,除非另外特别说明。
[0075] 实施例一:
[0076] 如图4-8所示,一种点阵二维码的编码方法,所述点阵二维码701由4X4个虚拟码 点存储区块400组成,通过在所述虚拟码点存储区块400内所填充码点500分别形成3个坐标 校正区块720、12个数据存储区块730和1个方向指示区块710。
[0077] 所述坐标校正区块内所填充的码点均位于所述虚拟码点存储区块的中心位置。
[0078] 所述方向指示区块内填充有两个码点,其中有且只有一个码点位于所述虚拟码点 存储区块的中心位置。
[0079]所述坐标校正区块和所述方向指示区块均相互隔开均匀分布于所述多个数据存 储区块之间。
[0080] 所述数据存储区块内填充的码点用于存储数据信息。
[0081] 所述坐标校正区块和多个数据存储区块内均有且仅有一个码点。
[0082] 本实施例中,如图7所示,所述点阵二维码701中,以位于左上方的所述虚拟码点存 储区块中心为(1,1),行坐标和列坐标均为奇数的虚拟存储区块为所述方向指示区块和所 述坐标校正区块,其余的所述虚拟存储区块为所述数据存储区块。
[0083]如图7所示,从上往下数,所述点阵二维码701的第4行上的所述虚拟码点存储区块 400均为所述数据存储区块730,从左往右数,所述点阵二维码701的第4列上的所述虚拟码 点存储区块400均为所述数据存储区块730,所述点阵二维码701第1行与第1列的所述虚拟 码点存储区块400为所述方向指示区块710,所述点阵二维码701除前述的第4行上所有的所 述虚拟码点存储区块400、第4列上所有的所述虚拟码点存储区块400和前述的第1行与第1 列的所述虚拟码点存储区块400以外,在坐标为奇数行奇数列的所述虚拟码点存储区块400 为坐标校正区块720,其余为数据存储区块730,在坐标为奇数行偶数列上的所述虚拟码点 存储区块400为数据存储区块730,在坐标为奇数行偶数列上的所述数据存储区块730的左 右相邻处分别设有所述坐标校正区块720,在坐标为偶数行奇数列上的所述虚拟码点存储 区块400为数据存储区块730,在坐标为偶数行奇数列上的所述数据存储区块730的上下相 邻处分别设有所述坐标校正区块720,在坐标为偶数行偶数列上的所述虚拟码点存储区块 400为数据存储区块730,在坐标为偶数行偶数列上的所述数据存储区块730的左上、左下、 右上和右下相邻处分别设有所述坐标校正区块720。
[0084]所述坐标校正区块720、数据存储区块730和方向指示区块710分别被虚拟的行列 线分割成3X3个子区块(410-490),每个所述坐标校正区块720的中心子区块450填充一个 码点500,起坐标校正的作用,每个所述数据存储区块730中有且仅有一个子区块(410-490) 中填充有码点500,起存储数据的作用,所述方向指示区块710中有两个子区块填充有码点 500,其中有且只有一个码点500位于所述虚拟码点存储区块400的中心位置的子区块450, 所述坐标校正区块720内所填充的码点500均位于所述虚拟码点存储区块400的中心位置的 子区块450中,所述方向指示区块710的设于中心位置的子区块450中的码点500与所述坐标 校正区块720中的码点500-样具有坐标校正的作用,同时所述方向指示区块710中间位置 的码点500配合其另一个设于其它子区块(410-440、460-490)的码点500便具有方向指示的 作用,所述数据存储区块730通过将码点500填充在不同的子区块(410-490)以存储不同的 数据,根据所述子区块(410-490)的个数和位置,共具9种存储位置600。
[0085]所述方向指示区块710的2个所述码点500绕其几何中心旋转±90°或180°不重合。 [0086] 4行4列的点阵二维码701每个数据存储区块730最大可以存储一个9进制数,12个 数据存储区块730的最大存储容量为l〇g2(912)>2 38,即38个bit,可存储32bit ID,剩余6bit 用于数据的校验。
[0087]如图8所示,点阵二维码701按行列方式平铺拼接时,左上角点阵二维码701的所有 数据存储区块730均被坐标校正区块720均匀包围。由于每个数据存储区块730总伴随一对 左右或上下相邻的坐标校正区块720,或者伴随两对对角线相邻的坐标校正区块720,其中 心坐标总能被相邻的坐标校正区块720所快速插值计算得出,降低了识别难度的同时还保 证了精度。假设印刷分辨率为600DPI,每个所述虚拟存储区块有7 X 7个pixel,则每个点阵 码的边长尺寸为(4 X 7/600 X 25.4= 1.185)毫米,一张A4纸的面积为297 X 210 = 62370平方 毫米,则无缝平铺满一张A4纸大约需要INT(297/(4 X 7/600 X 25.4)) X INT(210/(4 X 7/600 X 25.4)) =44250个本实施例的点阵二维码701 (INT为取整运算)。
[0088] 实施例二:
[0089] 如图4-6和9-10所示,一种点阵二维码的编码方法,所述点阵二维码801由6X6个 虚拟码点存储区块400组成,通过在所述虚拟码点存储区块400内所填充码点500分别形成8 个坐标校正区块820、27个数据存储区块830和1个方向指示区块810。
[0090] 所述坐标校正区块内所填充的码点均位于所述虚拟码点存储区块的中心位置。
[0091] 所述方向指示区块内填充有两个码点,其中有且只有一个码点位于所述虚拟码点 存储区块的中心位置。
[0092]所述坐标校正区块和所述方向指示区块均相互隔开,分布于所述多个数据存储区 块之间。
[0093]所述数据存储区块内填充的码点用于存储数据信息。
[0094]所述坐标校正区块和多个数据存储区块内均有且仅有一个码点。
[0095]本实施例中,如图9所示,所述点阵二维码801中,以位于左上方的所述虚拟码点存 储区块中心为(1,1),行坐标和列坐标均为奇数的虚拟存储区块为所述方向指示区块和所 述坐标校正区块,其余的所述虚拟存储区块为所述数据存储区块。
[0096]具体的为,如图9所示,从上往下数,所述点阵二维码801的第6行上的所述虚拟码 点存储区块400均为所述数据存储区块830,从左往右数,所述点阵二维码801的第6列上的 所述虚拟码点存储区块400均为所述数据存储区块830,所述点阵二维码801第3行与第3列 的所述虚拟码点存储区块400为所述方向指示区块810,所述点阵二维码801除前述的第6行 上所有的所述虚拟码点存储区块400、第6列上所有的所述虚拟码点存储区块400和前述的 第3行与第3列的所述虚拟码点存储区块400以外,在坐标为奇数行奇数列的所述虚拟码点 存储区块400为坐标校正区块820,其余为数据存储区块830,在坐标为奇数行偶数列上的所 述虚拟码点存储区块400为数据存储区块830,在坐标为奇数行偶数列上的所述数据存储区 块830的左右相邻处分别设有所述坐标校正区块820,在坐标为偶数行奇数列上的所述虚拟 码点存储区块400为数据存储区块830,在坐标为偶数行奇数列上的所述数据存储区块830 的上下相邻处分别设有所述坐标校正区块820,在坐标为偶数行偶数列上的所述虚拟码点 存储区块400为数据存储区块830,在坐标为偶数行偶数列上的所述数据存储区块830的左 上、左下、右上和右下相邻处分别设有所述坐标校正区块820。
[0097]所述坐标校正区块820、数据存储区块830和方向指示区块810分别被虚拟的行列 线分割成3X3个子区块(410-490),每个所述坐标校正区块820的中心子区块450填充一个 码点500,起坐标校正的作用,每个所述数据存储区块830中有且仅有一个子区块(410-490) 中填充有码点500,起存储数据的作用,所述方向指示区块810中有两个子区块填充有码点 500,其中有且只有一个码点500位于所述虚拟码点存储区块400的中心位置的子区块450, 所述坐标校正区块820内所填充的码点500均位于所述虚拟码点存储区块400的中心位置的 子区块450中,所述方向指示区块810的设于中心位置的子区块450中的码点500与所述坐标 校正区块820中的码点500-样具有坐标校正的作用,同时所述方向指示区块810中间位置 的码点500配合其另一个设于其它子区块(410-440、460-490)的码点500便具有方向指示的 作用,所述数据存储区块830通过将码点500填充在不同的子区块(410-490)以存储不同的 数据,根据所述子区块(410-490)的个数和位置,共具9种存储位置600。
[0098]所述方向指示区块810的2个所述码点500绕其几何中心旋转±90°或180°不重合。 [0099] 6行、6列的点阵二维码801每个数据存储区块830最大可以存以为9进制数,27个数 据存储区块830的最大存储容量为l〇g2(927)>2 85,即85个bit,可存储64bit ID,剩余21bit用 于数据的校验。
[0100] 如图1〇所示,点阵二维码801按行列方式平铺拼接时,左上角点阵二维码801的所 有数据存储区块830均被坐标校正区块820均匀包围。由于每个数据存储区块830总伴随一 对左右或上下相邻的坐标校正区块820,或者伴随两对对角线相邻的坐标校正区块820,其 中心坐标总能被相邻的坐标校正区块820所快速插值计算得出,降低了识别难度的同时还 保证了精度。
[0101] 实施例三:
[0102]本实施例用于识别上述实施例二所述的点阵二维码801,如图12所示,是一个存储 了3组9进制数0至8的点阵二维码801,图中的网格线仅用于辅助人眼观察。在600DPI印刷条 件下,一个图12所示点阵二维码801所占面积约为2mmX2mm,电子装置103可点读的目标区 域通常要远大于单个图12所示的点阵二维码面积,印刷时每个独立可点读目标区域使用相 同的点阵二维码无缝平铺填充满。
[0103]解码流程:如图13所示,获取大于等于点阵二维码的灰度图像,所述灰度图像包括 至少一个方向指示区块和多个坐标校正区块,获取所述灰度图像中所述坐标校正区块和所 述方向指示区块的坐标位置,电子装置103的光学系统通常采集到是8bit灰度图像,每个像 素(pixel)的取值范围为0至255,图13所包含的矩阵码是电子装置103相对点阵二维码102 旋转和倾斜状态下所成的像,并且图12的中心位置与图13的中心位置不重合,倾斜还导致 了灰度图像有3个暗角。
[0104] 如图11所示,本实施例中,识别所述点阵二维码,包括以下步骤:
[0105] S1:对所述灰度图像进行二值化处理,如图14所示,得到二值图像,并在所述二值 图像中标记码点500,确定码点重心坐标(x,y)。
[0106] 如图14的二值图像所示,背景是黑色像素,码点500和噪声点是白色像素,对白色 且相联通的像素用相同的数值标记,分别对有相同标记数值的像素计算x坐标平均值和y坐 标平均值,即得到每个码点重心坐标(x,y),并统计每个码点500的像素个数,计算所有码点 500的平均像素个数,丢弃像素个数小于平均值一半或大于平均值1.5倍的码点500,它们通 常是噪声点。
[0107] S2:确定码点500的行方向和列方向。以所述二值图像的几何中心为旋转中心,通 过计算所述二值图像的每个旋转角度下所述码点重心坐标向预定方向的投影波形的均方 差来确定码点500的行方向和列方向,然后分别在行方向、列方向上对码点重心坐标(x,y) 进行投影,并对投影波形运用自相关法计算行分割点和列分割点。
[0108]本实施例中,确定码点500的行方向和列方向具体如下:
[0109]由于每个码点500的坐标都是相对于一个在行列上对齐的码点500阵列中的一个 参考码点500的偏移,可理解为对一个周期的二维基波信号进行了调制,调制之后引入了高 频谐波,但信号的基波频率不变,因此码点重心点在平行于点阵码的行方向和列方向上的 投影呈现出最强的周期性,因此可以通过计算每个旋转角度下码点重心坐标向某个固定方 向(例如垂直于图像的列方向)的投影波形的均方差来确定码点500的行列方向,如图15所 示,横轴是码点重心坐标(x,y)相对于图14中心点的旋转角度,纵轴是码点重心坐标投影的 均方差,定义最大峰值对应的旋转角度a代表的是点阵二维码的行方向,定义偏移90°附近 的峰值对应的旋转角度b代表的是点阵二维码的列方向。如图16所示,在黑白图像上画出了 代表行方向和列方向的指示线。需要说明的是此步骤得到的行方向、列方向可能与图12的 行方向、列方向相比发生了90°或180°或270°的旋转,但不影响后续解码过程,因为可通过 所述方向指示区块的方向指示功能把旋转修正过来。
[0110] 本实施例中,分别在行方向、列方向上对码点重心坐标(x,y)进行投影,并分别对 行方向、列方向投影结果运用自相关法计算行分割点和列分割点,具体如下:
[0111] 如图17A和图17B所示,分别是在行方向和列方向上的投影,可以以直观看到行方 向的投影呈现出与行间距相同的周期性,列方向的投影呈现出于列间距相同的周期性。分 别对两个投影波形运用自相关算法求出各自的周期Tr和Tc,Tr即为行间距,Tc即为列间距。 以行方向投影波形的最大值为参考,以Tr为步长生成行分割点,以列方向投影波形的最大 值为参考,以Tc为步长生成列分割点,图17中横轴上有"x"标记的地方即分割点。
[0112] S3:将码点重心坐标(x,y)按步骤S2得到的行方向、列方向进行旋转转正,并计算 出旋转后的所述转正码点坐标( X1,yO,用所述步骤S2得到的行分割点和列分割点形成矩形 网格,用于对码点500进行分割。
[0113] 本实施例中,将步骤S1得到的码点重心坐标(x,y)按步骤S2得到的行方向、列方向 进行旋转转正,根据码点重心坐标(x,y)计算旋转后的所述转正码点坐标( X1,yi),用步骤S2 得到的行分割点、列分割点形成对码点500进行分割的矩形网格,具体如下:
[0114] 对码点重心坐标转正,坐标变换公式为:
[0115] xi = x*cos(a)-y*sin(a);
[0116] yi = x*cos(0)-y*sin(0);
[0117] a为图14中行方向点阵码的旋转角度,0为图14中列方向点阵码的旋转角度,旋转 的原点是图14的中心。
[0118] 图18是旋转操作后的结果示意图,图中的每个圆圈的圆心对应一个码点重心坐 标,图中的网格线依据步骤S2计算的行分割点和列分割点所绘制,其中垂直方向的网格线 根据所述行分割点绘制,水平方向的网格线根据所述列分割点绘制。从图18中可以直观的 看出,每个码点500均落在一个矩形块网格中,含有2个码点500的网格显然对应所述方向指 示区块。需要说明的是组成网格线的平行线没有精确的均匀分布,这不会影响后续解码过 程,因为后续计算数据码点500的偏移量是以坐标校正区块中的码点坐标为参考计算出来 的,而不是以网格线为参考计算的。
[0119] S4:构建与所述步骤S3得到的矩形网格相对应的二维矩阵,并根据所述转正码点 坐标(X1,yi)判断其在所述矩形网格中所属的区块,再将所述转正码点坐标(X1, yi)加入该 区块对应的二维矩阵的单元中。
[0120] 本实施例中,构建与步骤S3的码点500分割形成的矩形网格相对应的二维矩阵R, 矩阵的每个单元对应图18中的矩形块,后续解码过程全部基于二维矩阵R进行。
[0121] 需要说明的是二维矩阵R的单元最多可以存储两个码点500的坐标,因为所述方向 指示区块含有两个码点500,如图18中第7行8列的网格就包含两个码点500。
[0122] S5:根据二维矩阵与所述方向指示区块特征匹配的单元,识别二维矩阵的旋转方 向,同时根据坐标校正区块读取数据存储区块的存储的数值。
[0123] 本实施例中,根据二维矩阵R与所述方向指示区块特征匹配的单元,识别二维矩阵 R的旋转方向,同时根据坐标校正区块读取数据存储区块的存储的数值,具体如下:
[0124] 在二维矩阵R中找到有2个码点坐标的单元,其对应所述方向指示区块,根据码点 坐标计算方向指示区块的旋转方向。一般情况下,为了保证用户操作的流畅性,电子装置 103的取像口的面积确保其可覆盖大于一个图12点阵二维码,相应的电子装置103抓取到的 每帧数字图像所包含的码点500至少可以重构一个完整的图12点阵码,构造的二维矩阵R中 至少含有一个所述方向指示区块。如图19所示,码点T0和T1所在的矩形块为方向指示区块, 相应的码点A、B、C、D所在的矩形块为坐标校正区块,根据T0和T1计算点阵二维码的旋转方 向的方法如下:
[0125] 计算坐标校正区块的中心点E的转正码点坐标E(Xe,ye):如果码点A( Xa,ya)和码点 8^,715)同时存在,£为线段]^113的中点,即£(1 (5,7(5) = ((1£^1))/2,(7£1+7£1)/2) ;否则判断码点 <^。,7。)和码点0(1〇1,7(〇是否同时存在,如果码点(^。,7。)和码点0(1〇1,7(〇同时存在,£为线 段Led的中点,即E(x e,ye) = ((Xc;+xd)/2,(yc;+yd)/2);否则丢弃T0和T1两个坐标点,并重新查 找有2个码点坐标的单元。
[0126] 计算T0到E的距离D0,计算T1到E的距离D1,如果D0〈D1,则T0为方向指示区块的中 心点,兼具坐标校正功能,否则交换T0和T1的坐标值。
[0127] 已知T1和T0的坐标,运用反三角函数计算角度0,巾为预设的误差允许值。
[0128] 如果0已[135°-巾,135° +巾],则认为二维矩阵R相对于原始点阵二维码旋转了0°。
[0129] 如果0已[45°-巾,45° +巾],则认为二维矩阵R相对于原始点阵二维码旋转了90°。
[0130] 如果0已[315°-巾,315° +巾],则认为二维矩阵R相对于原始点阵二维码旋转了 180°。
[0131] 如果9£[225°-巾,225° +巾],则认为二维矩阵R相对于原始点阵二维码旋转了 270。。
[0132] 否则丢弃T0和T1两个坐标点,并重新查找有2个码点坐标的单元。
[0133] 根据坐标校正区块的码点坐标通过插值算法计算数据存储区块的中心坐标,根据 码点相对中心坐标的偏移读取存储的数据:当方向指示区块被定为后,坐标校正区块也就 被确定下来了,如图20所示是将相邻的坐标校正区块中的码点连接起来的效果,可以直观 的看出坐标校正区块中的码点组成了近似正方形的网格,因而它们能很好的发挥坐标校正 的功能。确定了坐标校正区块后,数据存储区块的中心坐标即可由相邻的坐标校正区块中 的码点坐标通过简单的线性插值方法计算出来。
[0134] 首先判断左右相邻的坐标校正码点是否存在,如图21所示,如果G和H存在,数据存 储区块的中心坐标F = (G+H) /2。
[0135] 否则判断上下相邻的坐标校正码点是否存在,如图22所示,如果G和H存在,数据存 储区块的中心坐标F = (G+H) /2。
[0136] 否则判断左下和右上相邻的坐标校正码点是否存在,如图23所示,如果G和H存在, 数据存储区块的中心坐标F= (G+H)/2。
[0137] 否则判断右上和左下相邻的坐标校正码点是否存在,如图24所示,如果G和H存在, 数据存储区块的中心坐标F= (G+H)/2。
[0138] 否则判断同行左边最相邻两坐标校正码点是否存在,如图25所示,如果G和H存在, 数据存储区块的中心坐标F=G+(G-H)/2。
[0139] 否则判断同行右边最相邻两坐标校正码点是否存在,如图26所示,如果G和H存在, 数据存储区块的中心坐标F=G+(G-H)/2。
[0140] 否则判断同行上边最相邻两坐标校正码点是否存在,如图27所示,如果G和H存在, 数据存储区块的中心坐标F=G+(G-H)/2。
[0141] 否则判断同行下边最相邻两坐标校正码点是否存在,如图28所示,如果G和H存在, 数据存储区块的中心坐标F=G+(G-H)/2。
[0142] 如果以上条件均不满足,则丢弃该码点500。
[0143] 图29中,每个"十"字符号是依据上述插值法计算的数据存储区块中心坐标绘制而 成的,从此图可以直观的看出数据码点相对数据存储区块中心坐标的偏移方式。
[0144] 对于图29中的每个数据码点I(Xi,yi),定义其偏移参考点为F(xf,yf),即图28中的 "+"号,设容忍的坐标计算最大误差为e,计算归一化水平偏移量HS = INT( (Xi-Xf )/e),INT为 取整运算,如果HS〈-1令HS = -1,如果HS>1,令HS= 1;计算归一化垂直偏移量VS= INT( (yi-7£)/6),如果¥3〈-1令¥3 = -1,如果¥3>1,令¥3=1;这样(批,¥3)的取值有9种组合,对应存储 九进制数0至8,详细对应关系如下表一所列:
[0145] 表一

1〇147]~需要说明的是如果图29中的码点矩阵相对于图12发生了旋转,则需要根据旋转方 向对上表的9进制数进行修正。
[0148] S6:根据所述旋转方向和偏移量重构一个完整的所述点阵二维码,并读取其存储 的数据。
[0149] 本实施例中,如图31所示,所述重构一个完整的所述点阵二维码包括如下子步骤:
[0150] S601:分别获取所述方向指示区块、所述坐标校正区块和所述数据存储区块的正 确参考位置。
[0151] S602:分别识别所述二维矩阵中分别与所述方向指示区块、所述坐标校正区块和 所述数据存储区块特征相匹配的单元,以与所述方向指示区块特征相匹配的单元为位置原 点,确定所述坐标校正区块和所述数据存储区块特征相匹配的单元的相对位置。
[0152] S603:使所述位置原点与所述方向指示区块的正确参考位置重合使与所述二维矩 阵的坐标校正区块特征相匹配的单元相对位置与所述坐标校正区块的正确参考位置重合。
[0153] S604:参照所述正确参考位置,将所述二维矩阵中的所述虚拟码点存储区块400分 解并移动到正确的位置,从而重构形成与所述点阵二维码行列数及排布均相同的二维矩阵 FR〇
[0154] 如图29所示,它没有直接包含一个完整的点阵二维码,但用其全部包含的码点500 可以重构一个完整的点阵二维码,为了直观说明重构的方法,请看图31。如图31所示,1001、 1002、1003、1004各代表一个完整的有相同内容的点阵二维码,并且它们无缝拼接,区域 1010是电子装置103的有效图像采集区域,虽然区域1010本并没有完整的覆盖点阵二维码 1001至1004中的任何一个,但从图中可以直观的看到,如果将J区块移到y处,K区块移到f 处,P区块移到K区域,则CKf、y四个区块重构了一个完整的1002区块。
[0155] 需要说明的是在生成所述点阵二维码前会对原始数据运用校验或向前纠错算法 生成校验数据,校验数据被一同存储到点阵二维码(本实施例为了方便阅读理解,没有使用 校验数据)。如果点阵二维码1001至31004存储的数据不相同,则重构出来的点阵码将不会 是一个有效的点阵码,电子装置103将会因为数据校验失败而拒绝识别。此情况发生在电子 装置103点读在两个可点读目标区域的连接处,不同目标的连接处面积所占整个可点读区 域面积的比例很小,实际操作情况下点读到的概率较低,因此不影响用户的使用。
[0156] 构造一个6X6用于存放目标结果的二维矩阵FR,将图29中的第U行V列的码点存储 的值填入二维矩阵FR中的第W行Z列,(W,Z)与(U,V)的运算关系如下:
[0157] 如果图29相对于图12没有旋转,则有:
[0158] ff=(V-〇rigin_col+18)mod 6;
[0159] Z= (U-〇rigin_row+18)mod 6〇
[0160] 如果图29相对于图12旋转了90°,则有
[0161] ff=(U-〇rigin_row+18)mod 6;
[0162] Z= (6-(V-〇rigin_col)+18)mod 6〇
[0163] 如果图29相对于图12旋转了180°,则有:
[0164] ff=(6-(V-〇rigin_col)+18)mod 6;
[0165] Z= (6-(U-〇rigin_row)+18)mod 6〇
[0166] 如果图29相对于图12旋转了270°,则有:
[0167] ff=(6-(V-〇rigin_row)+18)mod 6;
[0168] Z= (V-〇rigin_col+18)mod 6〇
[0169]上列四组公式中,mod是取模运算,+18确保被取模的数是一个正数,(origin_row, origin_col)是点阵码的原点行列坐标,即方向指示区块行列坐标分别减2,在图29中,方向 指示区块位于第7行8列(定义最左上角的网格为第1行1列),图29相对图12的旋转角度为0, 因此〇1^8;[11_1'0¥ = 5,01^8;[11_(301 = 6。需要说明的是图29中存在多个矩形块与?1?中同一个 单元对应的情况,解决的办法是保留最可信的码点500。由于数据存储区块的中心坐标是根 据相邻坐标校正码点的坐标插值计算得到,不同的插值方式由于数据存储区块与坐标校正 区块的相对位置不同而具有不同的可信度。可信度定义如下:
[0170]按图21或图22方式插值可信度记15分;
[0171]按图23或图24方式插值可信度记10分;
[0172]按图25至图28中的任何一种方式插值可信度记7分。
[0173]表二
[0175]表二是根据上述方法得到的FR矩阵,每个单元是一个8比特16进制数,低4bit的值 是数据存储区块所存储的数值,高4bit的值是可信度,特别的,数值ff对应点阵码中的坐标 校正区块和方向指示区块。至此,完整的解码还原了图12所存储的数据,即3组9进制数0至 8〇
[0176] 本领域技术人员将认识到,对以上描述做出众多变通是可能的,所有实施例仅是 用来描述一个或多个特定实施方式。比如,所述点阵二维码由MXN个虚拟码点存储区块组 成,且M2 4,N2 4,M与N均取偶数,按照以下方式进行编码,均能够实现本发明的技术效果:
[0177] 通过在所述虚拟码点存储区块内填充码点分别形成多个坐标校正区块、多个数据 存储区块和一个方向指示区块;所述多个坐标校正区块内所填充的码点均位于所述虚拟码 点存储区块的中心位置;所述方向指示区块内填充有至少两个码点,其中仅有一个码点位 于所述虚拟码点存储区块的中心位置;所述多个坐标校正区块和所述方向指示区块均相互 隔开,分布于所述多个数据存储区块之间;所述多个数据存储区块内填充的码点用于存储 数据信息;所述多个坐标校正区块和多个数据存储区块内均有且仅有一个码点。
[0178]尽管已经描述和叙述了被看作本发明的示范实施例,本领域技术人员将会明白, 可以对其作出各种改变和替换,而不会脱离本发明的精神。另外,可以做出许多修改以将特 定情况适配到本发明的教义,而不会脱离在此描述的本发明中心概念。所以,本发明不受限 于在此披露的特定实施例,但本发明可能还包括属于本发明范围的所有实施例及其等同 物。
【主权项】
1. 一种点阵二维码编码方法,其特征在于:所述点阵二维码由MXN个虚拟码点存储区 块组成,通过在所述虚拟码点存储区块内填充码点分别形成多个坐标校正区块、多个数据 存储区块和一个方向指示区块; 所述多个坐标校正区块内所填充的码点均位于所述虚拟码点存储区块的中心位置; 所述方向指示区块内填充有至少两个码点,其中仅有一个码点位于所述虚拟码点存储 区块的中心位置; 所述多个坐标校正区块和所述方向指示区块均相互隔开,分布于所述多个数据存储区 块之间; 所述多个数据存储区块内填充的码点用于存储数据信息; 所述多个坐标校正区块和多个数据存储区块内均有且仅有一个码点; 其中,12 4,^4肩与~均取偶数。2. 如权利要求1所述的点阵二维码编码方法,其特征在于:所述点阵二维码中,行坐标 和列坐标均为奇数或均为偶数的所述虚拟码点存储区块为坐标校正区块和所述方向指示 区块,其余的所述虚拟码点存储区块为所述数据存储区块。3. 如权利要求1所述的点阵二维码编码方法,其特征在于:所述多个坐标校正区块、多 个数据存储区块和一个方向指示区块分别被虚拟的行列线分割成3X3个子区块,每个所述 坐标校正区块的中心子区块填充一个码点;每个所述数据存储区块中有且仅有一个子区块 中填充有码点,所述数据存储区块通过将码点填充在不同的子区块以存储不同的数据;所 述方向指示区块中至少有两个子区块填充有码点。4. 如权利要求1所述的点阵二维码编码方法,其特征在于:所述方向指示区块中填充的 码点绕其几何中心旋转±90°或180°后不重合。5. -种点阵二维码的识读方法,用于识别权利要求1-4任一项所述的点阵二维码编码 方法获得的点阵二维码,其特征在于包括如下步骤: 获取不小于一个所述点阵二维码大小的码图灰度图像,所述灰度图像中包括至少一个 方向指示区块和多个坐标校正区块; 根据所述至少一个方向指示区块和所述多个坐标校正区块的灰度图像,获取所述坐标 校正区块和所述方向指示区块在所述点阵二维码中的行列位置; 根据所述灰度图像、所述坐标校正区块和所述方向指示区块的行列位置,读取所述点 阵二维码存储的数据。6. 如权利要求5所述的点阵二维码的识别方法,其特征在于:根据所述灰度图像、所述 坐标校正区块和所述方向指示区块的行列位置,读取所述点阵二维码存储的数据包括以下 步骤: Si:对所述灰度图像进行二值化处理,得到二值图像,并在所述二值图像中标记码点, 确定码点重心坐标(x,y); S2:确定码点的行方向和列方向以及行分割点和列分割点:以所述二值图像的几何中 心为旋转中心,通过计算所述二值图像的每个旋转角度下所述码点重心坐标向预定方向的 投影波形的均方差来确定码点的行方向和列方向,然后分别在行方向、列方向上对码点重 心坐标(x,y)进行投影,并对投影波形运用自相关法计算行分割点和列分割点; S3 :将码点重心坐标(X,y)按步骤S2得到的行方向、列方向进行旋转转正,并计算出旋 转后的所述转正码点坐标(X1,yi),用所述步骤S2得到的行分割点和列分割点形成矩形网 格,用于对码点进行分割; S4:构建与所述步骤S3得到的矩形网格相对应的二维矩阵,并根据所述转正码点坐标 (X1,yi)判断其在所述矩形网格中所属的区块,再将所述转正码点坐标(X1, yi)加入该区块 对应的二维矩阵的单元中; S5:根据二维矩阵与所述方向指示区块特征匹配的单元,识别二维矩阵的旋转方向和 偏移量; S6:根据所述旋转方向和偏移量重构一个完整的所述点阵二维码,并读取其存储的数 据。7. 如权利要求6所述的点阵二维码识别方法,其特征在于:所述二维矩阵的旋转方向根 据与所述方向指示区块相邻的所述坐标校正区块以及所述方向指示区块内的多个码点之 间的相对位置计算得到。8. 如权利要求6所述的点阵二维码识别方法,其特征在于:所述根据坐标校正区块读取 数据存储区块的存储的数值,具体为:首先,根据所述坐标校正区块的转正码点坐标( X1,yO 计算所述数据存储区块的中心坐标;然后,根据所述数据存储区块中的转正码点坐标(X1, yi)相对该中心坐标的偏移读取存储的数据。9. 如权利要求8所述的点阵二维码识别方法,其特征在于:所述根据所述坐标校正区块 的转正码点坐标(X1, yi)计算所述数据存储区块的中心坐标,采用插值法。10. 如权利要求6所述的点阵二维码识别方法,其特征在于,所述重构一个完整的所述 点阵二维码包括如下子步骤: S601:分别获取所述方向指示区块、所述坐标校正区块和所述数据存储区块的正确参 考位置; S602:分别识别所述二维矩阵中分别与所述方向指示区块、所述坐标校正区块和所述 数据存储区块特征相匹配的单元,以与所述方向指示区块特征相匹配的单元为位置原点, 确定所述坐标校正区块和所述数据存储区块特征相匹配的单元的相对位置; S603:使所述位置原点与所述方向指示区块的正确参考位置重合,使与所述二维矩阵 的坐标校正区块特征相匹配的单元相对位置与所述坐标校正区块的正确参考位置重合; S604:参照所述正确参考位置,将所述二维矩阵中的所述虚拟码点存储区块分解并移 动到正确的位置,从而重构形成与所述点阵二维码行列数及排布均相同的二维矩阵。
【文档编号】G06K19/06GK105894067SQ201610083921
【公开日】2016年8月24日
【申请日】2016年2月6日
【发明人】李政放, 常治国
【申请人】深圳市天朗时代科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1