CN113487001A - 二维码生成方法及装置、二维码识别方法及装置 - Google Patents
二维码生成方法及装置、二维码识别方法及装置 Download PDFInfo
- Publication number
- CN113487001A CN113487001A CN202111046487.3A CN202111046487A CN113487001A CN 113487001 A CN113487001 A CN 113487001A CN 202111046487 A CN202111046487 A CN 202111046487A CN 113487001 A CN113487001 A CN 113487001A
- Authority
- CN
- China
- Prior art keywords
- positioning point
- code
- dimensional code
- track
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
- G06K19/06009—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
- G06K19/06037—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking multi-dimensional coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
- G06K7/1417—2D bar codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1443—Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Electromagnetism (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Analysis (AREA)
Abstract
本发明提供了一种二维码生成方法及装置、二维码识别方法及装置,二维码生成方法包括:获取资源地址生成对应的二进制的信息流;基于二维码版本确定二维码直径和圆心坐标,计算待生成的二维码的信息流轨道的轨道半径、各个定位点的定位点圆心坐标、定位点的定位点半径,每个信息流轨道的弧度度数、最大码位和有效码位,再结合二维码直径、圆心坐标、轨道个数、轨道宽度、定位点圆心坐标、定位点半径以及每个信息流轨道的轨道半径、弧度度数、有效码位以及最大码位,生成所述资源地址对应的二维码。应用该本发明的二维码生成方法,精确计算待生成二维码中每个参数的具体信息,通过多层圆形的信息流轨道承载数据信息,使得信息流在分布上比较清晰。
Description
技术领域
本发明涉及二维码技术领域,特别是涉及一种二维码生成方法及装置、二维码识别方法及装置。
背景技术
二维码是通过一些几何图案按照一定的规律组合成的,能够承载数据信息的平面图形,二维码具有编码范围广,信息容量大,容错能力强等特点。
现有技术的二维码普遍都是标准方形的二维码,其用黑、白色块表示二进制的1和0,将黑、白色块按一定组合方式堆叠形成二维码,但现有的这种矩阵二维码的因其色块比较密集不均,在识别二维码时,需要消耗较长的识别时间,且容易识别错误。
发明内容
有鉴于此,本发明提供一种二维码生成方法及装置、二维码识别方法及装置,通过该方法,生成圆形二维码,通过多层信息流轨道承载数据信息,通过识别定位点实现对二维码的识别,缩短二维码的识别时间、提高二维码识别的成功率。
一种二维码生成方法,包括:
获取资源地址,生成所述资源地址对应的二进制的信息流;
基于所述信息流,确定待生成的二维码的二维码版本;
基于所述二维码版本,确定所述待生成的二维码的二维码直径和圆心坐标;
确定预先设置的待生成的二维码的信息流轨道的轨道个数和轨道宽度,以及每个定位点的定位点半径和定位点度数;
基于所述二维码直径及所述轨道宽度,计算每个所述信息流轨道的轨道半径;
基于所述圆心坐标及各个所述定位点度数,确定所述待生成的二维码中每个定位点的定位点圆心坐标,各个所述定位点包括符号定位点和多个基础定位点;
基于每个所述信息流轨道的轨道半径及轨道宽度,计算每个所述信息流轨道的弧度度数和最大码位,所述最大码位为信息流轨道所能够装载的最大信息量;
基于每个所述定位点的定位点半径及定位点圆心坐标,确定各个所述定位点在各个所述信息流轨道上占用的码位,及每个所述信息流轨道中的有效码位;
基于所述信息流、二维码直径、圆心坐标、轨道个数、轨道宽度、定位点圆心坐标、定位点半径以及每个信息流轨道的轨道半径、弧度度数、有效码位以及最大码位,生成所述资源地址对应的二维码。
上述的方法,可选的,所述生成所述资源地址对应的二进制的信息流,包括:
生成所述资源地址对应的二进制码流;
采用预先设置的纠错算法,生成所述二进制码流对应的各个纠错码;
将各个所述纠错码按照预设的排列规则嵌入所述二进制码流,获得所述资源地址对应的信息流。
上述的方法,可选的,所述将各个所述纠错码按照预设的排列规则嵌入所述二进制码流,获得所述资源地址对应的信息流,包括:
应用预先设置的交织编码技术对已嵌入纠错码的二进制码流进行交织编码处理;
对已处理的二进制码流进行异或处理,获得所述资源地址对应的信息流。
上述的方法,可选的,所述基于所述圆心坐标及各个所述定位点度数,确定所述待生成的二维码中每个定位点的定位点圆心坐标,包括:
确定预先设置的定位点的设置范围,及所述设置范围至所述圆心坐标的定点距离,所述设置范围为任意两个相邻信息流轨道之间的圆形轨道;
基于所述定点距离及各个所述定位点度数,确定各个定位点在所述设置范围中的定位点位置;
基于所述定点距离,计算每个所述定位点在X轴和Y轴上的投影长度;
基于每个所述定位点在所述X轴和Y轴上的投影长度及所述圆心坐标,确定每个所述定位点的定位点圆心坐标。
一种二维码生成装置,包括:
获取单元,用于获取资源地址,生成所述资源地址对应的二进制的信息流;
第一确定单元,用于基于所述信息流,确定待生成的二维码的二维码版本;
第二确定单元,用于基于所述二维码版本,确定所述待生成的二维码的二维码直径和圆心坐标;
第三确定单元,用于确定预先设置的待生成的二维码的信息流轨道的轨道个数和轨道宽度,以及每个定位点的定位点半径和定位点度数;
第一计算单元,用于基于所述二维码直径及所述轨道宽度,计算每个所述信息流轨道的轨道半径;
第四确定单元,用于基于所述圆心坐标及各个所述定位点度数,确定所述待生成的二维码中每个定位点的定位点圆心坐标,各个所述定位点包括符号定位点和多个基础定位点;
第二计算单元,用于基于每个所述信息流轨道的轨道半径及轨道宽度,计算每个所述信息流轨道的弧度度数和最大码位,所述最大码位为信息流轨道所能够装载的最大信息量;
第五确定单元,用于基于每个所述定位点的定位点半径及定位点圆心坐标,确定各个所述定位点在各个所述信息流轨道上占用的码位,及每个所述信息流轨道中的有效码位;
生成单元,用于基于所述信息流、二维码直径、圆心坐标、轨道个数、轨道宽度、定位点圆心坐标、定位点半径以及每个信息流轨道的轨道半径、弧度度数、有效码位以及最大码位,生成所述资源地址对应的二维码。
一种二维码识别方法,所述方法用于识别应用上述二维码生成方法生成的二维码,所述方法包括:
采集待识别的二维码;
对所述二维码进行二值化处理,获得二值化的二维码;
应用预先设置的第一识别规则,识别所述二值化的二维码中各个基础定位点的定位点位置;
应用预先设置的第二识别规则,识别所述二值化的二维码中符号定位点的定位点位置;
基于各个所述基础定位点的定位点位置及符号定位点的定位点位置,确定所述二值化的二维码中每个信息流轨道上的有效码位;
读取每个所述有效码位上的字符,并按照每个所述有效码位上的字符合成二进制的信息流,并基于所述二进制的信息流推导出所述二维码对应的资源地址。
上述的方法,可选的,所述应用预先设置的第一识别规则,识别所述二值化的二维码中各个基础定位点的定位点位置,包括:
确定预先设置的定位点轮廓;
应用预先设置的蚁行线工具按照所述定位点轮廓,描绘出所述二值化的二维码中的各个基础定位点;
基于所述蚁行线工具描绘定位点的位置,确定各个所述基础定位点的定位点位置。
上述的方法,可选的,所述应用预先设置的第一识别规则,识别所述二值化的二维码中各个基础定位点的定位点位置,包括:
应用预先设置的扫描射线,按照预设的扫描间隔和扫描方向对所述二值化的二维码进行扫描;
确定所述扫描射线每次扫描的扫描区域,并基于每次扫描的扫描区域,检验所述扫描射线当前扫描的扫描区域是否包含任意的基础定位点的定位点圆心;
若所述扫描射线当前扫描的扫描区域包含任意的基础定位点的定位点圆心,则基于所述扫描间隔、扫描方向及所述扫描射线的当前扫描次数,确定所述基础定位点的位置。
上述的方法,可选的,所述检验所述扫描射线当前扫描的扫描区域是否包含任意的定位点的定位点圆心,包括:
将所述扫描射线经过的扫描区域划分成多个子区域,两个相邻子区域分别为深色像素点组成的线段和浅色像素点组成的线段;
确定每个所述子区域对应的区域宽度,并获取预先设置的定位点宽度比值;
检验所述扫描区域中是否存在多个相邻的子区域之间区域宽度的宽度比值与所述定位点宽度比值一致;
若所述扫描区域中存在多个相邻的子区域之间区域宽度的宽度比值与所述定位点宽度比值一致,则确定所述扫描射线当前扫描的扫描区域包含至少一个定位点的定位点圆心。
上述的方法,可选的,所述应用预先设置的第二识别规则,识别所述二值化的二维码中符号定位点的定位点位置,包括:
基于各个所述基础定位点的定位点位置,预估所述符号定位点的预估点;
以所述预估点为原点,向多个方向绘制预设长度的探测线;
检测每个所述探测线上连续出现深色像素点个数;
判断是否存在任一探测线上连续出现深色像素点个数超出预估值;
若存在任一探测线上连续出现深色像素点个数超出所述预估值,则将所述预估点向所述探测线所指向的方向移动,直至所有的探测线上连续出现深色像素点个数未超出预估值时,确定所述预估点当前所在位置为符号定位点的定位点位置。
上述的方法,可选的,所述读取每个所述有效码位上的字符,包括:
基于各个所述基础定位点的定位点位置确定码位读取顺序,并按照所述码位读取顺序,依次读取各个所述有效码位上的字符;
其中,在读取各个所述有效码位上的字符时,应用预先设置的读取框识别所述有效码位中深色像素点的占用所述读取框的比例;若当前读取的有效码位中深色像素点占用所述读取框的比例超出预设的占用阈值,则确定当前读取的有效码位的字符为1;若当前读取的有效码位中深色像素点占用所述读取框的比例未超出预设的占用阈值,则确定当前读取的有效码位的字符为0。
上述的方法,可选的,所述基于所述二进制的信息流推导出所述二维码对应的资源地址,包括:
基于各个所述有效码位,确定所述二维码的二维码版本;
将所述信息流进行异或还原运算,获得已运算的信息流;
对所述已运算的信息流进行解码,获得已解码的信息流;
基于所述二维码版本,确定所述已解码的信息流中所采用的纠错等级,并依据所述纠错等级,确定所述已解码的信息流中的各个纠错码;
剔除所述已解码的信息流中的各个纠错码,获得二进制码流,并将所述二进制码流转换成所述二维码对应的资源地址。
一种二维码识别装置,包括:
采集单元,用于采集待识别的二维码;
处理单元,用于对所述二维码进行二值化处理,获得二值化的二维码;
第一识别单元,用于应用预先设置的第一识别规则,识别所述二值化的二维码中各个基础定位点的定位点位置;
第二识别单元,用于应用预先设置的第二识别规则,识别所述二值化的二维码中符号定位点的定位点位置;
第六确定单元,用于基于各个所述基础定位点的定位点位置及符号定位点的定位点位置,确定所述二值化的二维码中每个信息流轨道上的有效码位;
推导单元,用于读取每个所述有效码位上的字符,并按照每个所述有效码位上的字符合成二进制的信息流,并基于所述二进制的信息流推导出所述二维码对应的资源地址。
与现有技术相比,本发明包括以下优点:
本发明提供了一种二维码生成方法,包括:获取资源地址生成对应的二进制的信息流;基于二维码版本确定二维码直径和圆心坐标,计算待生成的二维码的信息流轨道的轨道半径、各个定位点的定位点圆心坐标、定位点的定位点半径,每个信息流轨道的弧度度数、最大码位和有效码位,再结合二维码直径、圆心坐标、轨道个数、轨道宽度、定位点圆心坐标、定位点半径以及每个信息流轨道的轨道半径、弧度度数、有效码位以及最大码位,生成所述资源地址对应的二维码。应用该本发明的二维码生成方法,精确计算待生成二维码中每个参数的具体信息,通过多层圆形的信息流轨道承载数据信息,使得信息流在分布上比较清晰。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种二维码生成方法的方法流程图;
图2为本发明实施例提供的一种二维码信息流头部的结构示意图;
图3为本发明实施例提供的一种信息流轨道间间隔示意图;
图4为本发明实施例提供的一种定位点位置分布的结构示意图;
图5为本发明实施例提供的一种定位点圆心坐标的确定示意图;
图6为本发明实施例提供的一种二维码的结构示意图;
图7为本发明实施例提供的一种二维码生成装置的装置结构图;
图8为本发明实施例提供的一种二维码识别方法的方法流程图;
图9为本发明实施例提供的一种扫描二维码的示例图;
图10为本发明实施例提供的一种扫描二维码的另一示例图;
图11为本发明实施例提供的一种预估点调整的示例图;
图12为本发明实施例提供的一种预估点调整的另一示例图;
图13为本发明实施例提供的一种二维码识别装置的装置结构图;
图14为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
本发明实施例提供了一种二维码生成方法,该方法可以应用在多种***平台,其执行主体可以为计算机终端或各种移动设备的处理器,所述方法的方法流程图如图1所示,具体包括:
S101:获取资源地址,生成所述资源地址对应的二进制的信息流。
需要说明的是,该资源地址可以是视频地址。资源地址对应的信息流由多个0和1的数字构成。如图2所示,图2为信息流中的头部信息,其中包括版本version、掩码mask、纠错码级别level、数据类型dtype、填充padding、二进制流长度。
如表1所示,表1中为头部信息中各个码位的描述。
表1
S102:基于所述信息流,确定待生成二维码的二维码版本。
可选的,本发明实施例的二维码生成方法中,预先设置有三种二维码版本,分别为版本0、版本1和版本2。每个版本的二维码对应不同的二维码直径,并分别包含四个纠错等级、每个纠错等级对应的纠错码字节和汉字UTF8字节。
在生成信息流的过程中,选择任意的二维码版本,并按照该二维码对应的纠错等级,将该资源地址转换成二进制的信息流。
具体的,表2为各个二维码版本的相关信息列表。
表2
S103:基于所述二维码版本,确定所述待生成的二维码的二维码直径和圆心坐标。
基于上述表2可知,当二维码版本为版本0,则二维码直径为170,则在二维坐标系中,圆心坐标为(85,85);同理,版本1的二维码的直径为224,则圆心坐标为(112,112),版本2的二维码直径为556,则圆心坐标为(278,278)。
S104:确定预先设置的待生成的二维码的信息流轨道的轨道个数和轨道宽度,以及每个定位点的定位点半径和定位点度数。
其中,每个所述信息流轨道为以所述圆心坐标为圆心的圆圈,信息流轨道由多个码位构成,每个码位可以用字符0或1代替,若码位上的字符为1,则用深色表示,码位上的字符为0,则用白色或者浅色表示,一个码位占用多个像素点。
可以理解的是,待生成的二维码由多个圆形的信息流轨道组成,信息流轨道用于装载二维码的信息流,各个信息流轨道的圆心坐标均为上述S103中的圆心坐标,每个信息流轨道的直径均不相同,最***的圆的直径为二维码的直径。二维码中的定位点用于为后续二维码识别过程中对二维码的读取方向和顺序进行定位。
S105:基于所述二维码直径及所述轨道宽度,计算每个所述信息流轨道的轨道半径。
本发明中待生成的二维码有多个信息流轨道,每个信息流轨道对应的轨道半径不同。
具体的,计算信息流轨道的轨道半径公式为:
Radian = self.width/2 - (kTrack - i)*kPenceilWidth*2
其中,self.width为二维码直径;KTrack为最大轨道数;i为轨道的号码,轨道的号码由内至外分别为0,1,2,3……,因此,i=0,1,2……;kPenceilWidth为预设的轨道宽度。
例如,二维码版本为版本1时,二维码直径self.widht = 224、kPenceilWidth轨道宽度为4、轨道个数为5个,则每个信息流轨道的轨道半径分别为:
第一个轨道的半径:112 - kPenceilWidth*2 = 104;
第二个轨道的半径:112 – 2*kPenceilWidth*2 = 96;
第三个轨道的半径:112 – 3*kPenceilWidth*2 = 88;
第四个轨道的半径:112 – 4*kPenceilWidth*2 = 80;
第五个轨道的半径:112 – 5*kPenceilWidth*2 = 72。
其中,第一个轨道半径为距离圆心最远的信息流轨道的轨道半径,第五个轨道的轨道半径为距离圆心最近的信息流轨道的轨道半径。
需要说明的是,轨道宽度与信息流轨道之间的间隙宽度一致,如图3所示,一个信息流轨道的宽度为kPenceilWidth,则相邻两个信息流轨道之间的宽度也为kPenceilWidth。
S106:基于所述圆心坐标及各个所述定位点度数,确定所述待生成的二维码中每个定位点的定位点圆心坐标。
其中,各个所述定位点包括符号定位点和多个基础定位点。
在本发明中,符号定位点用于显示资源地址对应的内容的关联符号,例如,资源地址为某视频链接,则该符号定位点显示播放符号。基础定位点则用于对二维码进行定位,通过基础定位点可以明确对各个信息流轨道中信息流的读取方向和顺序。
具体的,如图4所示,二维码中的基础定位点有三个,分别位于二维码的左上角、左下角和右上角;二维码的符号定位点则位于右下角。定位点的定位点圆心坐标设置于任意两个信息流轨道之间;若信息流轨道的个数为5个,则定位点圆心坐标可以在第二个信息流轨道与第三个信息流轨道之间。
进一步地,本发明实施例基于基于所述圆心坐标及各个所述定位点度数,确定所述待生成的二维码中每个定位点的定位点圆心坐标,包括:
确定预先设置的定位点的设置范围,及所述设置范围至所述圆心坐标的定点距离,所述设置范围为任意两个相邻信息流轨道之间的圆形轨道;
基于所述定点距离及各个所述定位点度数,确定各个定位点在所述设置范围中的定位点位置;
基于所述定点距离,计算每个所述定位点在X轴和Y轴上的投影长度;
基于每个所述定位点在所述X轴和Y轴上的投影长度及所述圆心坐标,确定每个所述定位点的定位点圆心坐标。
可以理解的是,根据信息流轨道的个数,确定定位点的设置范围,即,当信息流轨道的个数为5个时,定位点的设置范围为第二轨道和第三轨道之间的间隙。当定位点圆心的设置范围为第二信息流轨道和第三信息流轨道之间的间隙,则计算第二信息流轨道和第三信息流轨道之间的中心点至圆心坐标的距离,该中心点至圆心坐标的距离为定点距离,定点距离实际为定位点圆心到二维码圆心的距离。结合距离和角度计算每个定位点在平面坐标系的X轴和Y轴上的投影,从而确定定位点圆心在平面坐标系上的坐标,获得定位点圆心坐标。
本发明提供一种定位点圆心坐标的确定方式,基于上述S105计算出第二个轨道的
半径为112 – 2*kPenceilWidth*2 = 96和第三个轨道的半径:112 – 3*kPenceilWidth*2
= 88,则定点距离为(96+88)/2=92;若设置四个定位点的定位点度数分别为45°、135°、225°
及315°,在确定各个信息流轨道半径,且确定设置定位点的定位点圆心在第二和第三轨道
的中间后,可以确定各个定位点圆心在X轴和Y轴上投影的阴影的长度为,因此四个定位点的定位点圆心坐标计算过程分别为:
第一个定位点的定位点圆心坐标:
x = self.centerCircle.x - distance=112-65.05
y = self.centerCircle.y + distance=112+65.05
第二个定位点的定位点圆心坐标:
x = self.centerCircle.x + distance=112+65.05
y = self.centerCircle.y + distance=112+65.05
第三个定位点的定位点圆心坐标:
x = self.centerCircle.x+distance=112+65.05
y = self.centerCircle.y-distance=112-65.05
第四个定位点的定位点圆心坐标:
x = self.centerCircle.x-distance=112-65.05
y = self.centerCircle.y-distance=112-65.05
其中, self.centerCircle.x为二维码圆心的X轴坐标, self.centerCircle.y为二维码圆心的y轴坐标,distance为投影长度。如图5所示,点Q为第一个定位点的定位点圆心,其圆心坐标为(46.95,177.05)。
若定位点度数分别为0°、90°、180°及270°,则四个定位点圆心的坐标分别为(0,112),(112,224),(224,112)和(112,0)。
S107:基于每个所述信息流轨道的轨道半径及轨道宽度,计算每个所述信息流轨道的弧度度数和最大码位。
其中,所述最大码位为信息流轨道所能够装载的最大信息量。
计算每个信息流轨道的最大码位的计算公式为:
计算每个信息流轨道的弧度度数的计算公式为:
S108:基于每个所述定位点的定位点半径及定位点圆心坐标,确定各个所述定位点在各个所述信息流轨道上占用的码位,及每个所述信息流轨道中的有效码位。
本发明中,对于一个二维码,二维码中的定位点用于确定读取信息流的起始位置和顺序。在生成二维码过程中,需要将信息流中的各个字符按照顺序依次排到各个信息流轨道的各个码位中。但由于信息流轨道部分码位被定位点占用,因此,根据定位点在各个信息流轨道上占用的码位,确定每个信息流轨道中的有效码位。
其中,基础定位点的定位点半径小于符号定位点的定位点半径,确定每个定位点在各个信息流轨道上占用的码位,确定每个信息流轨道上的有效码位和无效码位,无效码位是各个定位点半径+1的范围内的所***位,有效码位是除无效码位之外的所***位。
S109:基于所述信息流、二维码直径、圆心坐标、轨道个数、轨道宽度、定位点圆心坐标、定位点半径以及每个信息流轨道的轨道半径、弧度度数、有效码位以及最大码位,生成所述资源地址对应的二维码。
本发明中,基于二维码直径、圆心坐标、轨道个数、轨道宽度、定位点圆心坐标、定位点半径,每个信息流轨道的轨道半径、弧度度数以及有效码位和最小码位,生成一个基础的二维码,再将信息流中的各个字符按照设定的顺序和方向依次覆盖在各个信息流轨道的各个有效码位上,生成该资源地址对应的二维码。
需要说明的是,在生成二维码的过程中,字符为1的码位用深颜色的点表示,若存在多个相邻码位上的字符均为1,则相邻的各个码位用深颜色的圆弧表示。
本发明实施例提供的二维码生成方法中,获取资源地址,生成该资源地址对应的二进制的信息流。确定待生成的二维码的二维码版本。基于上述表2中的各个信息,确定表中所包含的各个二维码版本,及每个二维码版本对应的待生成的二维码的二维码直径和圆心坐标。根据业务需求预先设置的待生成的二维码的信息流轨道的轨道个数和轨道宽度,以及每个定位点的定位点半径和定位点度数。根据二维码直径和轨道宽度,计算待生成的二维码中每个信息流轨道的轨道半径,根据二维码的圆心坐标及各个定位点度数,确定待生成的二维码中各个定位点的定位点圆心坐标。其中各个定位点包括一个符号定位点和多个基础定位点。符号定位点用于个性化展示与资源地址相符的标识符号,例如,资源地址为视频地址,则该符号定位点中的标识符号为视频播放符号。基础符号用于确定各个信息流轨道中各个码位的起始读取点、读取顺序和方向。根据每个信息流轨道的轨道半径及预设的轨道宽度,计算每个信息流轨道的弧度度数和最大码位,同时计算出各个定位点所需要占用的各个码位,从而区分出每个信息流轨道上的有效码位和无效码位。根据二维码直径、待生成的二维码的圆心坐标、轨道个数、轨道宽度、定位点圆心坐标、定位点半径、每个信息流轨道的轨道半径、弧度度数、有效码位以及最大码位等,生成二维码,并将信息流中的各个字符按照设定的排列方式排列到各个信息流轨道的各个有效码位上。
如表3所示,表3为各个二维码版本中每个信息流轨道的无效码位的序号,每个版本的信息流轨道的轨道个数均为5个,各个定位点的定位点圆心在第二个信息流轨道和第三个信息流轨道的中间:
表3
需要说明的是,本发明生成的二维码为由多个信息流轨道构成的圆形二维码。
应用本发明实施例提供的方法,通过多层圆形的信息流轨道承载数据信息,使得信息流在分布上比较清晰。
本发明实施例提供的方法中,所述生成所述资源地址对应的二进制的信息流,包括:
生成所述资源地址对应的二进制码流;
采用预先设置的纠错算法,生成所述二进制码流对应的各个纠错码;
将各个所述纠错码按照预设的排列规则嵌入所述二进制码流,获得所述资源地址对应的信息流。
可以理解的是,将资源地址转换成二进制码流,确定待生成的二维码的二维码版本,确定该二维码版本对应的各个纠错等级。从各个纠错等级中选择任意的纠错等级,获取预设的已选择的纠错等级的纠错算法,并应用该纠错算法生成该二进制码流对应的各个纠错码。将各个纠错码按照预设的排列规则嵌入二进制码流中,获得资源地址对应的信息流。
需要说明的是,二维码的纠错码主要是通过里德-所罗门纠错算法Reed-Solomonerror correction来实现的,在信息流轨道中,纠错码会占用一些码位,比如直径为224的二维码的L级别55字节个源数据,对应生成15个字节的纠错码。
进一步地,在二进制流中嵌入纠错码之外,为防止相邻的各个码位所构成的图案与定位点的图案相似,可以对已嵌入纠错码的二进制码流进行进一步操作。
具体的,所述将各个所述纠错码按照预设的排列规则嵌入所述二进制码流,获得所述资源地址对应的信息流,包括:
应用预先设置的交织编码技术对已嵌入纠错码的二进制码流进行交织编码处理;
对已处理的二进制码流进行异或处理,获得所述资源地址对应的信息流。
可以理解的是,应用交织编码技术对已嵌入纠错码的二进制码进行角质编码处理,并将已处理的二进制码流进行异或(XOR)处理,获得该资源地址对应的二进制的信息流。
应用本发明实施例提供的方法,在二进制码流中加入纠错码并进行异或处理,加入纠错码可以防止二维码在残缺的时候能够进行识别,而对二进制码流进行异或处理可以防止出现与定位点一样的图案。
可选的,在生成资源地址对应的二维码的过程中,具体还包括:
确定各个信息流轨道中最小的轨道半径;
获取所述资源地址对应的信息图片;
基于所述最小轨道半径,调整所述信息图片的图片大小;
将已调整的信息图片嵌入所述二维码。
可以理解的是,参考图6可以在二维码中嵌入与资源地址相关的信息图片。如,资源地址为视频地址,则该信息图片可以视频地址对应的视频海报图或资源地址所属平台的平台图片等。在二维码中嵌入信息图片,可以使用户掌握二维码的基本信息,选择识别该二维码的识别工具。
上述各个实施例的具体实施过程及其衍生方式,均在本发明的保护范围之内。
与图1所述的方法相对应,本发明实施例还提供了一种二维码生成装置,用于对图1中方法的具体实现,本发明实施例提供的二维码生成装置可以应用计算机终端或各种移动设备中,其结构示意图如图7所示,具体包括:
获取单元201,用于获取资源地址,生成所述资源地址对应的二进制的信息流;
第一确定单元202,用于基于所述信息流,确定待生成的二维码的二维码版本;
第二确定单元203,用于基于所述二维码版本,确定所述待生成的二维码的二维码直径和圆心坐标;
第三确定单元204,用于确定预先设置的待生成的二维码的信息流轨道的轨道个数和轨道宽度,以及每个定位点的定位点半径和定位点度数;
第一计算单元205,用于基于所述二维码直径及所述轨道宽度,计算每个所述信息流轨道的轨道半径;
第四确定单元206,用于基于所述圆心坐标及各个所述定位点度数,确定所述待生成的二维码中每个定位点的定位点圆心坐标,各个所述定位点包括符号定位点和多个基础定位点;
第二计算单元207,用于基于每个所述信息流轨道的轨道半径及轨道宽度,计算每个所述信息流轨道的弧度度数和最大码位,所述最大码位为信息流轨道所能够装载的最大信息量;
第五确定单元208,用于基于每个所述定位点的定位点半径及定位点圆心坐标,确定各个所述定位点在各个所述信息流轨道上占用的码位,及每个所述信息流轨道中的有效码位;
生成单元209,用于基于所述信息流、二维码直径、圆心坐标、轨道个数、轨道宽度、定位点圆心坐标、定位点半径以及每个信息流轨道的轨道半径、弧度度数、有效码位以及最大码位,生成所述资源地址对应的二维码。
本发明实施例提供的二维码生成装置中,获取资源地址,生成该资源地址对应的二进制的信息流。确定待生成的二维码的二维码版本。基于上述表2中的各个信息,确定表中所包含的各个二维码版本,及每个二维码版本对应的待生成的二维码的二维码直径和圆心坐标。根据业务需求预先设置的待生成的二维码的信息流轨道的轨道个数和轨道宽度,以及每个定位点的定位点半径和定位点度数。根据二维码直径和轨道宽度,计算待生成的二维码中每个信息流轨道的轨道半径,根据二维码的圆心坐标及各个定位点度数,确定待生成的二维码中各个定位点的定位点圆心坐标。其中各个定位点包括一个符号定位点和多个基础定位点。符号定位点用于个性化展示与资源地址相符的标识符号,例如,资源地址为视频地址,则该符号定位点中的标识符号为视频播放符号。基础符号用于确定各个信息流轨道中各个码位的起始读取点、读取顺序和方向。根据每个信息流轨道的轨道半径及预设的轨道宽度,计算每个信息流轨道的弧度度数和最大码位,同时计算出各个定位点所需要占用的各个码位,从而区分出每个信息流轨道上的有效码位和无效码位。根据二维码直径、待生成的二维码的圆心坐标、轨道个数、轨道宽度、定位点圆心坐标、定位点半径、每个信息流轨道的轨道半径、弧度度数、有效码位以及最大码位等,生成二维码,并将信息流中的各个字符按照设定的排列方式排列到各个信息流轨道的各个有效码位上。
应用本发明实施例提供的装置,通过多层圆形的信息流轨道承载数据信息,使得信息流在分布上比较清晰。
本发明提供了一种二维码识别方法,该方法应用于识别上述实施例所述二维码生成方法生成的二维码,所述方法的方法流程图如图8所示,所述方法包括:
S301:采集待识别的二维码。
本发明中,应用分辨率为1920x1080及以上的摄像设备采集二维码,采集到的二维码。
在扫描二维码过程中,根据扫描设备的屏幕宽度计算该屏幕宽度与预设宽度的比例,并在扫描二维码后根据该比例调整扫描到的二维码的大小,进一步对该二维码进行识别。
S302:对所述二维码进行二值化处理,获得二值化的二维码。
在本发明中,二值化处理是将图片转换成只有两种颜色的二值图。将二值化的二维码为由0和1构成的二维矩阵,0表示浅颜色,1表示深颜色。
S303:应用预先设置的第一识别规则,识别所述二值化的二维码中各个基础定位点的定位点位置。
具体的,第一识别规则可以是横切法或蚁行线法。所述横切法指的是应用一条射线按照设定方向和间隔扫描二维码,对每次扫描区域进行识别,确定射线当前经过的扫描区域是否经过定位点圆心,从而确定定位点位置。蚁行线法是通过蚁行线工具勾勒出与定位点轮廓相同的形状,根据蚁行线工具勾勒的位置确定定位点位置。
S304:应用预先设置的第二识别规则,识别所述二值化的二维码中符号定位点的定位点位置。
具体的,第二识别规则是在已识别到各个基础定位点的定位点位置的情况下,根据各个基础定位点的定位点位置识别出的符号定位点的定位点位置。
S305:基于各个所述基础定位点的定位点位置及符号定位点的定位点位置,确定所述二值化的二维码中每个信息流轨道上的有效码位。
本发明中,在确定各个定位点的定位点位置并区分出基础定位点和符号定位点后,根据各个定位点位置确定二维码的信息流轨道中读取各个码位上字符的起始位置、读取顺序以及可以进行读取的有效码位等。
S306:读取每个所述有效码位上的字符,并按照每个所述有效码位上的字符合成二进制的信息流,并基于所述二进制的信息流推导出所述二维码对应的资源地址。
本发明中,按照设定的起始点和顺序,读取各个有效码位上的字符,有效码位上的字符为0或1。将读取完成的各个字符合成二进制的信息流,并方向推导出二维码对应的资源地址。
具体的,本发明实施例提供的方法中,所述读取每个所述有效码位上的字符,包括:
基于各个所述基础定位点的定位点位置确定码位读取顺序,并按照所述码位读取顺序,依次读取各个所述有效码位上的字符;
其中,在读取各个所述有效码位上的字符时,应用预先设置的读取框识别所述有效码位中深色像素点的占用所述读取框的比例;若当前读取的有效码位中深色像素点占用所述读取框的比例超出预设的占用阈值,则确定当前读取的有效码位的字符为1;若当前读取的有效码位中深色像素点占用所述读取框的比例未超出预设的占用阈值,则确定当前读取的有效码位的字符为0。
可以理解的是,读取有效码位的起始点一般设置为两个基础定位点之间的中点,从外向内圈以及信息流轨道的顺时针方向读取各个有效码位,或者从内向外圈以及信息流轨道的顺时针方向读取各个有效码位。在每读取一个码位时,按照每个像素点占用空间的大小划出读取码位的读取框,在读取框内包含该码位的所有的像素点。判断读取框内深色像素点的占比,深色像素点占比越大,该码位上字符为1的概率就越大,因此,若读取框内深色像素点的占比超出预设的占用阈值,则该码位表示的字符为1,反之则为0。
再进一步地,本发明实施例提供的方法中,所述基于所述二进制的信息流推导出所述二维码对应的资源地址,包括:
基于各个所述有效码位,确定所述二维码的二维码版本;
将所述信息流进行异或还原运算,获得已运算的信息流;
对所述已运算的信息流进行解码,获得已解码的信息流;
基于所述二维码版本,确定所述已解码的信息流中所采用的纠错等级,并依据所述纠错等级,确定所述已解码的信息流中的各个纠错码;
剔除所述已解码的信息流中的各个纠错码,获得二进制码流,并将所述二进制码流转换成所述二维码对应的资源地址。
可以理解的是,按照生成信息流的方法进行逆运算,先将读取的各个有效码位合成一个信息流,根据该二维码的二维码版本,确定纠错码等级,通过异或还原运算将该信息流进行异或还原运算,再根据交织编码的反向运算对已还原的信息流进行解码,最终再根据纠错等级确定该信息流中的各个纠错码,最终剔除各个纠错码获得最终的二进制码流,并由二进制码流生成最后的资源地址。
本发明实施例提供的二维码识别方法中,采集待识别的二维码,并对该二维码进行二值化处理获得二值化的二维码。应用第一识别规则识别出二值化的二维码中的各个基础定位点的定位点位置;结合各个基础定位点的定位点位置,进一步识别出符号定位点的定位点位置。通过各个基础定位点的定位点位置及符号定位点的定位点位置,确定二值化的二维码中每个信息流轨道上有效码位,并按照设定的顺序和起始点依次读取各个有效码位上的字符,将各个字符合成二进制的信息流,从而推导出该二维码对应的资源地址。
应用本发明提供的方法,可以精准确定二维码中定位点的位置,从而识别二维码对应的资源地址。
进一步地,在识别二位码的过程中,所采集到的二维码可能会存在变形的情况,因此,在采集到二维码后,具体还可以包括:
识别所述二维码的二维码外形;基于所述二维码外形,判断所述二维码是否变形;若所述二维码变形,则调整所述二维码的二维码外形。
在一个实施例中,所述应用预先设置的第一识别规则,识别所述二值化的二维码中各个基础定位点的定位点位置,包括:
确定预先设置的定位点轮廓;
应用预先设置的蚁行线工具按照所述定位点轮廓,描绘出所述二值化的二维码中的各个基础定位点;
基于所述蚁行线工具描绘的位置,确定每个所述基础定位点的定位点位置。
需要说明的是,基础定位点由一个深色的圆圈和一个定位点圆心构成,在识别基础定位点时,确定该基础定位点的定位点轮廓,并应用蚁行线工具按照该定位点轮廓,在二值化的二维码中查找出与该定位点轮廓相符的形状,并将该形状描绘出来,即,描绘出二值化的二维码中的各个基础定位点。确定该蚁行线工具进行描绘的位置,进一步确定每个定位点的定位点位置。
在另一个实施例中,所述应用预先设置的第一识别规则,识别所述二值化的二维码中各个基础定位点的定位点位置,包括:
应用预先设置的扫描射线,按照预设的扫描间隔和扫描方向对所述二值化的二维码进行扫描;
确定所述扫描射线每次扫描的扫描区域,并基于每次扫描的扫描区域,检验所述扫描射线当前扫描的扫描区域是否包含任意的基础定位点的定位点圆心;
若所述扫描射线当前扫描的扫描区域包含任意的基础定位点的定位点圆心,则基于所述扫描间隔、扫描方向及所述扫描射线的当前扫描次数,确定所述基础定位点的位置。
需要说明的是,以多个像素点的宽度作为扫描射线的扫描间隔,按照该扫描间隔对每行像素点进行扫描。对二值化的二维码的扫描方向可以是由上至下依次进行扫描或者是由左至右等。
具体的,扫描射线每次扫描时,检验该扫描射线是否经过定位点圆心,如图9所示,图9中当扫描射线在p1位置时,其未穿过定位点圆心;当扫描射线扫描到p2位置时,穿过两个基础定位点定位点圆心。若扫描射线当前扫描的扫描区域经过基础定位点的定位点圆心,则基于扫描距离、扫描方向和当前扫描次数确定定位点的位置。
可选的,在应用扫描射线扫描二维码时,可以自动跳过前N行像素点,其中N为信息流轨道的轨道宽度。在生成二维码的过程中,定位点圆心设置于两个相邻的信息流轨道中间,因此,在从最***信息流轨道逐渐向内进行扫描时,最***信息流轨道占用的像素点宽度不存在定位点圆心。同样的,在确定所有基础定位点的定位点位置后,无需继续进行扫描。
进一步地,所述检验所述扫描射线当前扫描的扫描区域是否包含任意的定位点的定位点圆心,包括:
将所述扫描射线经过的扫描区域划分成多个子区域,两个相邻子区域分别为深色像素点组成的线段和浅色像素点组成的线段;
确定每个所述子区域对应的区域宽度,并获取预先设置的定位点宽度比值;
检验所述扫描区域中是否存在多个相邻的子区域之间区域宽度的宽度比值与所述定位点宽度比值一致;
若所述扫描区域中存在多个相邻的子区域之间区域宽度的宽度比值与所述定位点宽度比值一致,则确定所述扫描射线当前扫描的扫描区域包含至少一个定位点的定位点圆心。
其中,在当前的扫描区域中,若第一个子区域为深色像素点组成的线段,则第二个子区域为浅色像素点组成的线段,第三个子区域为深色像素点组成的线段……第2n-1个子区域为深色像素点组成的线段,第2n个子区域为浅色像素点组成的线段;若第一个子区域为浅色像素点组成的线段,则第二个子区域为深色像素点组成的线段,第三个子区域为浅色像素点组成的线段……第2n-1个子区域为浅色像素点组成的线段,第2n个子区域为深色像素点组成的线段。
具体的,将扫描区域按照像素点的深浅划分成多个子区域后,确定每个子区域的区域宽度,每个子区域的区域宽度可以根据其中包含的像素点的个数确定,如,子区域A包含6个像素点,则区域宽度为6。获取预先设置的定位点宽度比值,该定位点宽度比值具体为3:4:5:4:3,如图10所示,图10为扫描射线经过的一个定位点,其中,该扫描射线经过定位点的深色像素点区域—浅色像素点区域—深色像素点区域—浅色像素点区域—深色像素点区域,五个区域的宽度比值分别为3:4:5:4:3。
在当前的扫描区域中,检验是否存在相邻的五个子区域之间的区域宽度的宽度比值与该定位点宽度比值一致。若是,则表征该扫描区域中包含某个定位点的定位点圆心。例如,各个子区域对应的区域宽度的宽度比值为:7:1:6:3:4:5:4:3:6:3:6:1:36:1:2:2:4:5:4:3:4:5:4:3:5:1,其中有两组宽度比值为3:4:5:4:3,则可以获知该扫描射线当前扫描的扫描区域中包含两个定位点的定位点圆心。
具体的,在确定存在相邻的五个子区域之间的区域宽度的宽度比值为3:4:5:4:3后,再次确定五个相邻的子区域之间像素点的深浅变换规律是否为深色像素点区域—浅色像素点区域—深色像素点区域—浅色像素点区域—深色像素点区域。若是,则确定宽度比例为3:4:5:4:3的五个相邻的子区域属于同一个定位点,且区域宽度为5的子区域属于定位点圆心。
可选的,在应用扫描射线扫描二维码的过程中,若扫描射线当前所扫描的扫描区域中前31个像素点均为浅色像素点,则可以直接确认该扫描区域不包含定位点圆心。
本发明实施例中,在确定扫描射线当前扫描经过定位点圆心后,根据定位点圆心各个子区域对应的区域宽度、当前扫描次数以及扫描间隔,确定当前的基础定位点的定位点位置。
应用本发明实施例提供的方法,通过蚁形线或扫描射线确定二维码的各个基础定位点,以通过基础定位点确定二维码中各个有效码位和各个有效码位对应的读取方式。
本发明实施例提供的方法中,所述应用预先设置的第二识别规则,识别所述二值化的二维码中符号定位点的定位点位置,包括:
基于各个所述基础定位点的定位点位置,预估所述符号定位点的预估点;
以所述预估点为原点,向多个方向绘制预设长度的探测线;
检测每个所述探测线上连续出现深色像素点个数;
判断是否存在任一探测线上连续出现深色像素点个数超出预估值;
若存在任一探测线上连续出现深色像素点个数超出所述预估值,则将所述预估点向所述探测线所指向的方向移动,直至所有的探测线上连续出现深色像素点个数未超出预估值时,确定所述预估点当前所在位置为符号定位点的定位点位置。
需要说明的是,三个基础定位点与符号定位点连接后会形成一个平行四边形,当在采集二维码的过程中,二维码可能会发生变形。因此,通过三个基础定位点的定位点位置,预估符号定位点的预估点,该预估点为预估的符号定位点的定位点圆心。如图11所示,在确定预估点后,以预估点为原点向预设的方向发散预设长度的探测线,计算每个探测线上连续出现深色像素点的个数,若深色像素点的个数超出预估值,如图11中经过三角符号的,两根探测线,则表征该预估点并非符号定位点的定位点圆心,按照探测线的方向移动预估点,当移动到三角符号的中点后,各个方向的探测线上连续出现的深色像素点的个数符合预估值,则表征该预估点当前在符号定位点的定位点圆心。基于该预估点当前所在位置,确定符号定位点的定位给点位置。
可选的,除了应用三个基础定位点确定预估点的位置之外,也可以通过两个相隔最远的基础定位点确定符号定位点的定位点位置。如,右上角的基础定位点和左下角的基础定位点的定位点距离最远,通过两个基础定位点获取其内切直角等腰三角形的定点。如图12所示:有两个点right,bottom,有两个内切等腰直角三角形。这时候这个左上角的基础定位点的预估位置,根据预估位置和左上角基础定位点的实际位置,确定两个位置之间的偏移量,按照平行四边形法则,通过该预估位置预估出符号定位点的预估位置,再结合偏移量确定符号定位点的最终位置。
与图8所述的方法相对应,本发明实施例还提供了一种二维码生成装置,用于对图8中方法的具体实现,本发明实施例提供的二维码生成装置可以应用计算机终端或各种移动设备中,其结构示意图如图13所示,具体包括:
采集单元401,用于采集待识别的二维码;
处理单元402,用于对所述二维码进行二值化处理,获得二值化的二维码;
第一识别单元403,用于应用预先设置的第一识别规则,识别所述二值化的二维码中各个基础定位点的定位点位置;
第二识别单元404,用于应用预先设置的第二识别规则,识别所述二值化的二维码中符号定位点的定位点位置;
第六确定单元405,用于基于各个所述基础定位点的定位点位置及符号定位点的定位点位置,确定所述二值化的二维码中每个信息流轨道上的有效码位;
推导单元406,用于读取每个所述有效码位上的字符,并按照每个所述有效码位上的字符合成二进制的信息流,并基于所述二进制的信息流推导出所述二维码对应的资源地址。
本发明实施例提供的二维码识别装置中,采集待识别的二维码,并对该二维码进行二值化处理获得二值化的二维码。应用第一识别规则识别出二值化的二维码中的各个基础定位点的定位点位置;结合各个基础定位点的定位点位置,进一步识别出符号定位点的定位点位置。通过各个基础定位点的定位点位置及符号定位点的定位点位置,确定二值化的二维码中每个信息流轨道上有效码位,并按照设定的顺序和起始点依次读取各个有效码位上的字符,将各个字符合成二进制的信息流,从而推导出该二维码对应的资源地址。
应用本发明提供的装置,可以精准确定二维码中定位点的位置,从而识别二维码对应的资源地址。
本发明实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述实施例所提及的二维码生成方法及上述实施例所提及的二维码识别方法。
本发明实施例还提供了一种电子设备,其结构示意图如图14所示,具体包括存储器501,以及一个或者一个以上的指令502,其中一个或者一个以上指令502存储于存储器501中;
对于上述实施例所提及的二维码生成方法,经配置以由一个或者一个以上处理器503执行所述一个或者一个以上指令502进行以下操作:
获取资源地址,生成所述资源地址对应的二进制的信息流;
基于所述信息流,确定待生成的二维码的二维码版本;
基于所述二维码版本,确定所述待生成的二维码的二维码直径和圆心坐标;
确定预先设置的待生成的二维码的信息流轨道的轨道个数和轨道宽度,以及每个定位点的定位点半径和定位点度数;
基于所述二维码直径及所述轨道宽度,计算每个所述信息流轨道的轨道半径;
基于所述圆心坐标及各个所述定位点度数,确定所述待生成的二维码中每个定位点的定位点圆心坐标,各个所述定位点包括符号定位点和多个基础定位点;
基于每个所述信息流轨道的轨道半径及轨道宽度,计算每个所述信息流轨道的弧度度数和最大码位,所述最大码位为信息流轨道所能够装载的最大信息量;
基于每个所述定位点的定位点半径及定位点圆心坐标,确定各个所述定位点在各个所述信息流轨道上占用的码位,及每个所述信息流轨道中的有效码位;
基于所述信息流、二维码直径、圆心坐标、轨道个数、轨道宽度、定位点圆心坐标、定位点半径以及每个信息流轨道的轨道半径、弧度度数、有效码位以及最大码位,生成所述资源地址对应的二维码。
对于上述实施例提及的二维码识别方法,经配置以由一个或者一个以上处理器503执行所述一个或者一个以上指令502进行以下操作:
采集待识别的二维码;
对所述二维码进行二值化处理,获得二值化的二维码;
应用预先设置的第一识别规则,识别所述二值化的二维码中各个基础定位点的定位点位置;
应用预先设置的第二识别规则,识别所述二值化的二维码中符号定位点的定位点位置;
基于各个所述基础定位点的定位点位置及符号定位点的定位点位置,确定所述二值化的二维码中每个信息流轨道上的有效码位;
读取每个所述有效码位上的字符,并按照每个所述有效码位上的字符合成二进制的信息流,并基于所述二进制的信息流推导出所述二维码对应的资源地址。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***或***实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的***及***实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现。
为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (13)
1.一种二维码生成方法,其特征在于,包括:
获取资源地址,生成所述资源地址对应的二进制的信息流;
基于所述信息流,确定待生成的二维码的二维码版本;
基于所述二维码版本,确定所述待生成的二维码的二维码直径和圆心坐标;
确定预先设置的待生成的二维码的信息流轨道的轨道个数和轨道宽度,以及每个定位点的定位点半径和定位点度数;
基于所述二维码直径及所述轨道宽度,计算每个所述信息流轨道的轨道半径;
基于所述圆心坐标及各个所述定位点度数,确定所述待生成的二维码中每个定位点的定位点圆心坐标,各个所述定位点包括符号定位点和多个基础定位点;
基于每个所述信息流轨道的轨道半径及轨道宽度,计算每个所述信息流轨道的弧度度数和最大码位,所述最大码位为信息流轨道所能够装载的最大信息量;
基于每个所述定位点的定位点半径及定位点圆心坐标,确定各个所述定位点在各个所述信息流轨道上占用的码位,及每个所述信息流轨道中的有效码位;
基于所述信息流、二维码直径、圆心坐标、轨道个数、轨道宽度、定位点圆心坐标、定位点半径以及每个信息流轨道的轨道半径、弧度度数、有效码位以及最大码位,生成所述资源地址对应的二维码。
2.根据权利要求1所述的方法,其特征在于,所述生成所述资源地址对应的二进制的信息流,包括:
生成所述资源地址对应的二进制码流;
采用预先设置的纠错算法,生成所述二进制码流对应的各个纠错码;
将各个所述纠错码按照预设的排列规则嵌入所述二进制码流,获得所述资源地址对应的信息流。
3.根据权利要求2所述的方法,其特征在于,所述将各个所述纠错码按照预设的排列规则嵌入所述二进制码流,获得所述资源地址对应的信息流,包括:
应用预先设置的交织编码技术对已嵌入纠错码的二进制码流进行交织编码处理;
对已处理的二进制码流进行异或处理,获得所述资源地址对应的信息流。
4.根据权利要求1所述的方法,其特征在于,所述基于所述圆心坐标及各个所述定位点度数,确定所述待生成的二维码中每个定位点的定位点圆心坐标,包括:
确定预先设置的定位点的设置范围,及所述设置范围至所述圆心坐标的定点距离,所述设置范围为任意两个相邻信息流轨道之间的圆形轨道;
基于所述定点距离及各个所述定位点度数,确定各个定位点在所述设置范围中的定位点位置;
基于所述定点距离,计算每个所述定位点在X轴和Y轴上的投影长度;
基于每个所述定位点在所述X轴和Y轴上的投影长度及所述圆心坐标,确定每个所述定位点的定位点圆心坐标。
5.一种二维码生成装置,其特征在于,包括:
获取单元,用于获取资源地址,生成所述资源地址对应的二进制的信息流;
第一确定单元,用于基于所述信息流,确定待生成的二维码的二维码版本;
第二确定单元,用于基于所述二维码版本,确定所述待生成的二维码的二维码直径和圆心坐标;
第三确定单元,用于确定预先设置的待生成的二维码的信息流轨道的轨道个数和轨道宽度,以及每个定位点的定位点半径和定位点度数;
第一计算单元,用于基于所述二维码直径及所述轨道宽度,计算每个所述信息流轨道的轨道半径;
第四确定单元,用于基于所述圆心坐标及各个所述定位点度数,确定所述待生成的二维码中每个定位点的定位点圆心坐标,各个所述定位点包括符号定位点和多个基础定位点;
第二计算单元,用于基于每个所述信息流轨道的轨道半径及轨道宽度,计算每个所述信息流轨道的弧度度数和最大码位,所述最大码位为信息流轨道所能够装载的最大信息量;
第五确定单元,用于基于每个所述定位点的定位点半径及定位点圆心坐标,确定各个所述定位点在各个所述信息流轨道上占用的码位,及每个所述信息流轨道中的有效码位;
生成单元,用于基于所述信息流、二维码直径、圆心坐标、轨道个数、轨道宽度、定位点圆心坐标、定位点半径以及每个信息流轨道的轨道半径、弧度度数、有效码位以及最大码位,生成所述资源地址对应的二维码。
6.一种二维码识别方法,其特征在于,所述方法用于识别应用上述权利要求1至4中任一所述二维码生成方法生成的二维码,所述方法包括:
采集待识别的二维码;
对所述二维码进行二值化处理,获得二值化的二维码;
应用预先设置的第一识别规则,识别所述二值化的二维码中各个基础定位点的定位点位置;
应用预先设置的第二识别规则,识别所述二值化的二维码中符号定位点的定位点位置;
基于各个所述基础定位点的定位点位置及符号定位点的定位点位置,确定所述二值化的二维码中每个信息流轨道上的有效码位;
读取每个所述有效码位上的字符,并按照每个所述有效码位上的字符合成二进制的信息流,并基于所述二进制的信息流推导出所述二维码对应的资源地址。
7.根据权利要求6所述的方法,其特征在于,所述应用预先设置的第一识别规则,识别所述二值化的二维码中各个基础定位点的定位点位置,包括:
确定预先设置的定位点轮廓;
应用预先设置的蚁行线工具按照所述定位点轮廓,描绘出所述二值化的二维码中的各个基础定位点;
基于所述蚁行线工具描绘定位点的位置,确定各个所述基础定位点的定位点位置。
8.根据权利要求6所述的方法,其特征在于,所述应用预先设置的第一识别规则,识别所述二值化的二维码中各个基础定位点的定位点位置,包括:
应用预先设置的扫描射线,按照预设的扫描间隔和扫描方向对所述二值化的二维码进行扫描;
确定所述扫描射线每次扫描的扫描区域,并基于每次扫描的扫描区域,检验所述扫描射线当前扫描的扫描区域是否包含任意的基础定位点的定位点圆心;
若所述扫描射线当前扫描的扫描区域包含任意的基础定位点的定位点圆心,则基于所述扫描间隔、扫描方向及所述扫描射线的当前扫描次数,确定所述基础定位点的位置。
9.根据权利要求8所述的方法,其特征在于,所述检验所述扫描射线当前扫描的扫描区域是否包含任意的定位点的定位点圆心,包括:
将所述扫描射线经过的扫描区域划分成多个子区域,两个相邻子区域分别为深色像素点组成的线段和浅色像素点组成的线段;
确定每个所述子区域对应的区域宽度,并获取预先设置的定位点宽度比值;
检验所述扫描区域中是否存在多个相邻的子区域之间区域宽度的宽度比值与所述定位点宽度比值一致;
若所述扫描区域中存在多个相邻的子区域之间区域宽度的宽度比值与所述定位点宽度比值一致,则确定所述扫描射线当前扫描的扫描区域包含至少一个定位点的定位点圆心。
10.根据权利要求6所述的方法,其特征在于,所述应用预先设置的第二识别规则,识别所述二值化的二维码中符号定位点的定位点位置,包括:
基于各个所述基础定位点的定位点位置,预估所述符号定位点的预估点;
以所述预估点为原点,向多个方向绘制预设长度的探测线;
检测每个所述探测线上连续出现深色像素点个数;
判断是否存在任一探测线上连续出现深色像素点个数超出预估值;
若存在任一探测线上连续出现深色像素点个数超出所述预估值,则将所述预估点向所述探测线所指向的方向移动,直至所有的探测线上连续出现深色像素点个数未超出预估值时,确定所述预估点当前所在位置为符号定位点的定位点位置。
11.根据权利要求6所述的方法,其特征在于,所述读取每个所述有效码位上的字符,包括:
基于各个所述基础定位点的定位点位置确定码位读取顺序,并按照所述码位读取顺序,依次读取各个所述有效码位上的字符;
其中,在读取各个所述有效码位上的字符时,应用预先设置的读取框识别所述有效码位中深色像素点的占用所述读取框的比例;若当前读取的有效码位中深色像素点占用所述读取框的比例超出预设的占用阈值,则确定当前读取的有效码位的字符为1;若当前读取的有效码位中深色像素点占用所述读取框的比例未超出预设的占用阈值,则确定当前读取的有效码位的字符为0。
12.根据权利要求11所述的方法,其特征在于,所述基于所述二进制的信息流推导出所述二维码对应的资源地址,包括:
基于各个所述有效码位,确定所述二维码的二维码版本;
将所述信息流进行异或还原运算,获得已运算的信息流;
对所述已运算的信息流进行解码,获得已解码的信息流;
基于所述二维码版本,确定所述已解码的信息流中所采用的纠错等级,并依据所述纠错等级,确定所述已解码的信息流中的各个纠错码;
剔除所述已解码的信息流中的各个纠错码,获得二进制码流,并将所述二进制码流转换成所述二维码对应的资源地址。
13.一种二维码识别装置,其特征在于,包括:
采集单元,用于采集待识别的二维码;
处理单元,用于对所述二维码进行二值化处理,获得二值化的二维码;
第一识别单元,用于应用预先设置的第一识别规则,识别所述二值化的二维码中各个基础定位点的定位点位置;
第二识别单元,用于应用预先设置的第二识别规则,识别所述二值化的二维码中符号定位点的定位点位置;
第六确定单元,用于基于各个所述基础定位点的定位点位置及符号定位点的定位点位置,确定所述二值化的二维码中每个信息流轨道上的有效码位;
推导单元,用于读取每个所述有效码位上的字符,并按照每个所述有效码位上的字符合成二进制的信息流,并基于所述二进制的信息流推导出所述二维码对应的资源地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111046487.3A CN113487001B (zh) | 2021-09-08 | 2021-09-08 | 二维码生成方法及装置、二维码识别方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111046487.3A CN113487001B (zh) | 2021-09-08 | 2021-09-08 | 二维码生成方法及装置、二维码识别方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113487001A true CN113487001A (zh) | 2021-10-08 |
CN113487001B CN113487001B (zh) | 2021-12-24 |
Family
ID=77947313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111046487.3A Active CN113487001B (zh) | 2021-09-08 | 2021-09-08 | 二维码生成方法及装置、二维码识别方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113487001B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022199471A1 (zh) * | 2021-03-23 | 2022-09-29 | 支付宝(杭州)信息技术有限公司 | 一种二维码生成、解码方法、装置及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040026510A1 (en) * | 2002-08-07 | 2004-02-12 | Shenzhen Syscan Technology Co., Limited. | Methods and systems for encoding and decoding data in 2D symbology |
CN106951812A (zh) * | 2017-03-31 | 2017-07-14 | 腾讯科技(深圳)有限公司 | 识别二维码的方法、装置和终端 |
CN107590522A (zh) * | 2017-08-23 | 2018-01-16 | 阿里巴巴集团控股有限公司 | 一种识别码生成及识别的方法及装置 |
CN110659709A (zh) * | 2019-09-18 | 2020-01-07 | 颐保医疗科技(上海)有限公司 | 一种防伪二维码及其生成和检测识别的方法 |
CN111639734A (zh) * | 2020-05-21 | 2020-09-08 | 北京矩石科技有限公司 | 一种嵌入qr码的新型二维码编码及防伪应用方法 |
CN112926715A (zh) * | 2021-03-23 | 2021-06-08 | 支付宝(杭州)信息技术有限公司 | 一种二维码生成、解码方法、装置及设备 |
-
2021
- 2021-09-08 CN CN202111046487.3A patent/CN113487001B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040026510A1 (en) * | 2002-08-07 | 2004-02-12 | Shenzhen Syscan Technology Co., Limited. | Methods and systems for encoding and decoding data in 2D symbology |
CN106951812A (zh) * | 2017-03-31 | 2017-07-14 | 腾讯科技(深圳)有限公司 | 识别二维码的方法、装置和终端 |
CN107590522A (zh) * | 2017-08-23 | 2018-01-16 | 阿里巴巴集团控股有限公司 | 一种识别码生成及识别的方法及装置 |
CN110659709A (zh) * | 2019-09-18 | 2020-01-07 | 颐保医疗科技(上海)有限公司 | 一种防伪二维码及其生成和检测识别的方法 |
CN111639734A (zh) * | 2020-05-21 | 2020-09-08 | 北京矩石科技有限公司 | 一种嵌入qr码的新型二维码编码及防伪应用方法 |
CN112926715A (zh) * | 2021-03-23 | 2021-06-08 | 支付宝(杭州)信息技术有限公司 | 一种二维码生成、解码方法、装置及设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022199471A1 (zh) * | 2021-03-23 | 2022-09-29 | 支付宝(杭州)信息技术有限公司 | 一种二维码生成、解码方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113487001B (zh) | 2021-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106778996B (zh) | 嵌入有视觉图像的二维码的生成***和方法以及读取*** | |
JP5908113B2 (ja) | 二次元コード | |
US6935562B2 (en) | Operations on images having glyph carpets | |
JP5848464B2 (ja) | 二次元コード、二次元コードの作成システムおよび解析プログラム | |
US8553284B2 (en) | Information input/output method using dot pattern | |
US6678425B1 (en) | Method and apparatus for decoding angular orientation of lattice codes | |
US6880755B2 (en) | Method and apparatus for display of spatially registered information using embedded data | |
US7942340B2 (en) | Two-dimensional code, and method and apparatus for detecting two-dimensional code | |
JP5791826B2 (ja) | 二次元コード | |
US20130020386A1 (en) | Information input output method using dot pattern | |
CN110765795B (zh) | 二维码识别方法、装置及电子设备 | |
CN113487001B (zh) | 二维码生成方法及装置、二维码识别方法及装置 | |
CN109101855B (zh) | 一种基于opencv的缺失定位框二维码识别方法 | |
JP2004536392A5 (zh) | ||
CN110490157B (zh) | 文字评估方法、文字学习方法、装置、设备及存储介质 | |
US20110178761A1 (en) | Pattern For Identifying A Location On A Surface | |
CN110926370B (zh) | 测量方法和*** | |
CN110796136A (zh) | 标志与图像处理方法及相关装置 | |
EP1557793B1 (en) | Method and apparatus for registering, displaying and decoding of information for spatial registration | |
JP5876343B2 (ja) | コードパターン重畳画像生成装置、情報読取装置、及び印刷物 | |
CN114463426B (zh) | 基于三角切分的平行四边形点云码设计与识别方法及*** | |
JPH06259531A (ja) | ドットパターンの傾き補正方法 | |
CN117197829A (zh) | 图片文字识别方法及装置、电子设备、存储介质 | |
CN118429396A (zh) | 一种图像几何配准方法、***、装置及存储介质 | |
CN118038464A (zh) | 一种基于分割网络的任意倾斜角度车牌检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |