具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
下面通过具体的实施例对本申请QR码自动识读方法进行详细阐述。
在本申请中,所述QR码包括标准QR码和微QR码,所述标准QR码进一步包括版本大于或者等于2的标准QR码和版本小于2的标准QR码,图1a示出版本大于或者等于2的标准QR码的示意图,图1b示出版本小于2的标准QR码示意图,图1c示出微QR码示意图。结合图1a至图1c,请参见图1a,所述标准QR码在二维码图像的三个顶点位置分别设置有一个位置探测图形999,并在两个相邻的位置探测图形之间设置有若干个定位图形998,并且,版本大于或者等于2的标准QR码在相邻两个位置探测图形之间还设置有校正图形997,而如图1b所示,版本小于2的标准QR码在相邻两个位置探测图形之间不设置校正图形;如图1c所示,所述微QR码仅在二维码图像的一个顶点位置上设置有位置探测图形,并且,在所述位置探测图形的两侧分别设置有若干个定位图形。无论是标准QR码还是微QR码,与所述位置探测图形相邻的定位图形,其灰度值与探测图形的灰度值相反。
如图1a至图1c所示,本实施例中所述位置探测图形和校正图形通常具有三个嵌套的同心连通域,三个嵌套的同心连通域形成四边长相等的“回”字型图形,其中,校正图形的边长一般小于位置探测图形的边长。而定位图形一般为一组黑白相间的正方形模块,而且,与位置探测图形相邻的模块与位置探测图形最外层的灰度相反,例如,位置探测图形的三层连通域由外到内分别为黑-白-黑,则与位置探测图形相邻的定位图形的模块为白。
在本实施例中,还可以对所述待处理图像中点阵模式非一致性进行光照补偿,从而补充模块内部的缺失,使待处理图像中灰度值大于预设校正阈值的像素点灰度统一为一个相等的值,而灰度值小于或者等于预设校正阈值的像素点灰度统一为另一个相等的值,以便后续处理。
本实施例通过QR码的位置探测图形、定位图形、校正图形的位置信息,绘制出采样网格,并根据所述采样网格选取采样点,再对各个采样点进行灰度采样,并确定图像的二值化阈值将灰度转换为0或1,从而形成二值矩阵。
在本实施例中,所述二值化阈值是一个能够将图像灰度值变为黑白二值图像的阈值。例如,在条码极性为DarkOnLight下,若采样点灰度值大于二值化阈值,则当前采样点取为0,若采样点灰度值小于二值化阈值则当前采样点取为1;在条码极性为LightOnDark的情况下,若采样点灰度值大于二值化阈值,则当前采样点取为1,若采样点灰度值小于二值化阈值,则当前采样点取为0。
在本实施例中,对于光照均匀的图像,二值化阈值可以是整张图像的大津阈值;对于对比度变化的图像,二值化阈值可以是一定大小窗口范围内图像的大津阈值,其中,窗口的大小可以由用户指定,但需确保窗口内同时包含黑白模块,例如,可将QR码区域划分成3×3的图像块,再对每一图像块确定一个二值化阈值。
在本实施例中,如无特别说明,以图1a所示的QR码为例说明本申请的方法。
图2示出本实施例QR码自动识读方法的流程图,结合图2,本实施例提供的QR码自动识读方法包括步骤S100至步骤S700,具体地:
S100,获取待处理图像。
在本申请的实施例中,所述待处理图像为经过二维码定位后的图像,即,所述待处理图像上仅有二维码图像,而其它干扰图像已经在前序步骤中除去,并且,具有畸变的图像已经由前序步骤校正成规则的矩形或者正方形。由于本实施例需要待处理图像为标准的正方形图像,因此,如果所述待处理图像为矩形,则需要将待处理图像调整为正方形图像。即,可选地,在所述待处理图像上确定位置探测图形的位置之后,还包括:
S001,调整所述待处理图像的长宽比。
在本实施例中,如果所述QR码图像的长宽比在预设范围内,则,即使该图像并非正方形也可以直接进行处理,但是,如果所述QR码图像的长宽比小于0.8或大于1.2,则会对位置探测图形的搜定位成影响,因此,如果所述QR码图像的长宽比0.8或大于1.2则将该QR码图像的长宽比调整为1:1。
S200,在所述待处理图像上确定位置探测图形的位置。
在本步骤中,所述待处理图像是指长宽比已经调整至可处理的图像。
在本实施例中,可用于定位并且用于绘制采样网格的图形包括位置探测图形、定位图形和校正图形等,其中,位置探测图形的结构特征最为明显,而且,在确定位置探测图形位置的过程中还会确定出位置探测图形的数量,进而能够根据位置探测图形的数量来确定QR码的类型,因此,本实施例首先确定位置探测图形的位置。
图3示出确定位置探测图形位置的流程示意图,如图3所示,为在本实施例中,所述确定位置探测图形的位置可以具体包括:
S201,确定所述待处理图像上的所有连通域。
在本实施例中,可以使用blob分析来确定连通域。本实施例中所述blob分析是指是对图像中相同像素的连通域进行分析,同时,blob分析还能够提供各连通域的拓扑关系。在本实施例中,所述拓扑关系是指各个连通域之间的父子关系,例如,位置探测图形中三个嵌套的连通域即为父-子-孙的关系。
进一步地,本实施例使用blob分析时确定的是四邻域连通域。
在本实施例中,所述连通域是指灰度值相等或者近似相等,并且,至少有一条边相邻的像素点形成的区域。
如图1a所示,在所述QR码图像除位置探测图形、定位图形以及校正图形具有规则的连通域外,由于QR码的模块是随机分布的,因此,在所述QR码图像上可能存在多个由QR码模块随机形成的连通域,这些随机形成的连通域可能与位置探测图形、定位图形以及校正图形等相似,是规则的,也可能是不规则的。本实施例首先将QR码图像中所有连通域均确定出来,以便从中筛选出位置探测图形等。
S202,获取每个所述连通域的尺寸信息以及各连通域之间的拓扑关系。
由于有些连通域是由于二维码模块随机分布而形成的,这些连通域可能会对确定位置探测图形的位置造成干扰,因此,本实施例根据位置探测图形的结构特征来剔除这些可能造成干扰的连通域。
由前述可知,位置探测图形具有三个嵌套的连通域,在这三个嵌套的连通域中,相邻两个连通域的灰度值是相反的,并且,这三个连通域的尺寸由外至内依次减小,因此,本实施例根据位置探测图形上述结构特征来确定位置探测的位置。
在本实施例中,首先获取各连通域的尺寸信息,所述尺寸信息即为连通域的面积以及该连通域的形状,特别是指所述连通域的长宽比。
其中,所述连通域的面积是指该连通域最外侧边缘点围成的封闭图形中所有像素点的个数之和。例如,如图1a所示,位置探测图形中最外层连通域的面积为该连通域最外侧边缘点所围成正方形的面积,该正方形面积以该正方形内像素点的个数计,例如,该正方形每条边均包括20个像素点,则该连通域的面积记为20×20=400像素。
在本实施例中,可以用所述连通域的长宽比初步判断所述连通域的形状,例如,一般情况下,连通域的长宽比为1,在本实施例中,为避免由于畸变等原因造成的偏差,可以将长宽比为0.8-1.2的连通域认为是目标连通域,而长宽比超出该范围的连通域则被剔除。
在本实施例中,所述各个连通域之间的拓扑关系可以根据前述步骤blob分析的结果直接获取。
S203,选取候选连通域,所述候选连通域为尺寸信息以及拓扑关系均满足预设条件的连通域。
由QR码的国际标准可知,所述位置探测图形中三个嵌套的连通域的大小分别为3(模块)×3(模块)、5(模块)×5(模块)和7(模块)×7(模块)的连通域,因此,本实施例可以利用它们的形状、大小以及相互之间的拓扑关系特征来搜索确定所述位置探测图形。
在本实施例中,可以使用Blob分析在待检测图像确定位置探测图形。Blob分析不仅能够提供各连通域的形状,还能够提供各连通域之间的拓扑关系。
在本实施例中,可以首先对Blob分析结果进行分析筛选,确定出大小分别为5×5和3×3且具有特定拓扑关系的连通域,则候选连通域的中心是该两个连通域的中心。
由于位置探测图形中三个相互嵌套的连通域的面积明显大于码区中其余随机生成的连通域的面积,并且,所述连通域内可能包含一部分分隔符,因此可首先根据连通域的面积对所有连通域按照降序进行排序,并取前k个连通域,例如,k可取4,然后对这k个连通域中每一个连通域的Blob结果进行后续的筛选和分析。
在一种可实现的方式中,利用Blob分析筛选确定候选连通域过程可以包括如下步骤:
S231,筛选长宽比满足预设长宽比阈值的连通域。
在本实施例中,所述预设长宽比阈值可以为(0.8,1.2)。
S232,在步骤S231的结果中筛选满足预设拓扑关系的连通域。
在本实施例中,所述预设拓扑关系可以为子连通域的个数不为0,并且,孙连通域的个数为0的连通域。
本申请人发现,使用该预设拓扑关系能够筛选出大小为5×5的环形连通域。
S233,在步骤232的结果中筛选面积比满足预设面积比的连通域。
在本实施例中,所述预设面积比为当前连通域面积与子连通域面积比近似为25:9。
S234,在步骤S233的结果中筛选中心坐标条件满足预设中心坐标条件的连通域。
在本申请中,所述预设中心坐标条件为当前连通域与其子连通域的中心坐标,在X、Y方向上均近似重合。
本申请人发现,按照上述步骤筛选得到的连通域极有可能为位置探测图形中3(模块)×3(模块)连通域和5(模块)×5(模块)连通域,具体地,当前连通域为5(模块)×5(模块)连通域,其子连通域为3(模块)×3(模块)连通域。
S204,确定位置探测图形的位置,所述位置探测图形的位置根据所述候选连通域的尺寸信息以及位置确定的。
在本实施例中,由于位置探测图形中三个嵌套的连通域同心,因此,所述位置探测图形的位置可以以位置探测图形中心点的坐标记。
在本实施例中,进一步地,在确定所有位置探测图形的位置之后还包括:
S205,根据所述位置探测图形的数量确定所述QR码的子类型。
如本实施例中所述,不同QR码类型的结构特征略有区别,在后续步骤中,需要根据QR码类型来确定采样线,而QR码的类型可以根据位置探测图形的数量来确定,这是一种比较简便的方法。因此,在本实施例中,可以在确定出所有位置探测图形后确定位置探测图形的数量,从而根据位置探测图形的数量来确定所述QR码的类型。例如,只有一个位置探测图形,则该QR码为微QR码,如果存在三个位置探测图形,则该QR码为标准QR码。
在本实施例中,本步骤只需要在确定采样线之前进行即可,优选在确定出所有位置探测图形的位置之后进行。
S206,根据位置探测图形中最小连通域中所有像素点的灰度值确定二维码极性。
在本实施例中,所述二维码极性包括白色背景黑色图纹(dark on light)和黑色背景白色图纹(light on dark),由不同的二维码极性会导致后续解码处理过程采集的数据完全相反,而二维码极性可以根据位置探测图形的三个嵌套连通域的灰度值来确定,因此,本实施例在确定出位置探测图形后,可以随之确定该QR码的极性。
在一种可实现的方式中,如果所述位置探测图形中最小连通域的灰度值大于大津阈值,则该QR码的极性为dark on light,如果所述位置探测图形中最小连通域的灰度值小于大津阈值,则该QR码的极性为light on dark,其中,所述位置探测图形中最小连通域的灰度值为该连通域中所述像素点灰度值的平均值。
进一步地,如果所述QR码的极性为dark on light,则设置黑色模块采样点灰度值为1,白色模块采样点灰度值为0;如果所述QR码的极性为light on dark,则设置白色模块采样点灰度值为1,黑色模块采样点灰度值为0。
在本实施例中,本步骤只需要在确定采样线之前进行即可,优选在确定出所有位置探测图形的位置之后进行。
S300,获取所述待处理图像上QR码的版本。
在本实施例中,图4示出确定QR码版的流程示意图,如图4所示,确定版本具体包括:
S301,获取所述QR码的模块尺寸。
在本实施例中,对于标准QR码,所述定位图形为相邻两个位置探测图形之间黑白相间模块行,其中,所有白色模块以及黑色模块的边长均相等,并且,所述模块均为正方形。对于微QR码,所述定位图形为位置探测图形旁侧设置的黑白相间模块行,其中,所有白色模块以及黑色模块的边长也均相等,并且,所述模块也均为正方形。
在本实施例中,考虑到算法效率,可以仅依据左上方位置探测图形来计算模块尺寸。由于blob分析仅确定出中层连通域的内外两侧边界,因此,可以以中层连通域的外侧边界为依据来计算模块尺寸。
具体地,利用找线工具分别搜索左上方位置探测图形中5×5连通域的四条外侧边界线,根据找线结果,确定左右两条外侧边界线之间像素列的数量DH,根据下列式I计算水平方向模块尺寸XH;根据找线结果,确定上下两条外侧边界线之间像素行的数量DV,根据下列式II计算竖直方向模块尺寸XV;并利用水平方向模块尺寸以及竖直方向模块尺寸根据下列式III来计算该QR码的模块尺寸m。
XH=DH/5 式I
XV=DV/5 式II
m=(XH+XV)/2 式III
S302,确定定位图形区域。
在本实施例中,所述定位图形区域可以根据所述模块尺寸利用卡尺工具在所述QR码图像上确定出来。
在一种可实现的方式中,所述确定定位图形区域可以包括:
S321,确定相邻两个位置探测图形两个底端端点。
在本实施例中,所述位置探测图形的底端端点为所述位置探测图形最外层连通域靠近所述QR码中心的顶点。具体地,所述位置探测图形共包括四个顶点,其中,三个顶点位于所述QR码的外边界线上,剩余的一个顶点即为所述该位置探测图形的底端端点。
在本实施例中,所述位置探测图形最外层连通域的外侧边界线可以通过包括以下步骤的方法确定:
S3211,获取所述位置探测图形的中心像素点。
S3212,根据所述中心像素点的位置确定上边界像素点、下边界像素点、左边界像素点以及右边界像素点。
在本实施例中,所述上边界像素点为在所述中心像素点的像素列中,位于所述中心像素点上方,距离所述中心像素点3.5个模块尺寸的像素点。
在本实施例中,所述下边界像素点为在所述中心像素点的像素列中,位于所述中心像素点下方,距离所述中心像素点3.5个模块尺寸的像素点。
在本实施例中,所述左边界像素点为在所述中心像素点的像素行中,位于所述中心像素点左侧,距离所述中心像素点3.5个模块尺寸的像素点。
在本实施例中,所述右边界像素点为在所述中心像素点的像素行中,位于所述中心像素点右侧,距离所述中心像素点3.5个模块尺寸的像素点。
S3213,根据所述上边界像素点、下边界像素点、左边界像素点以及右边界像素点利用找线工具确定所述位置探测图形的四条外侧边界线。
在本实施例中,所述位置探测图形外侧边界线中上边界线为上边界像素点所在的像素行,同理地,下边界线为下边界点所在的像素行,左边界线为左边界像素点所在的像素列,右边界线为右边界像素点所在的像素列。
进一步地,任意两条外侧边界线的交点即为所述位置探测图形的顶点。
S322,连接步骤S321确定的两个端点。
在本实施例中,连接所述两个端点从而确定所述定位图形区域的下边界线。
S323,在所述两个位置探测图形相对的内侧边界线上确定定位图形区域的顶端端点,所述顶端端点与所述底端端点之间的距离为一个模块尺寸。
在本实施例中,所述位置探测图形的内侧边界线是指两个位置探测图形中靠近QR码中心的边界线,每个位置探测图形具有两条内侧边界线。进一步地,所述两个位置探测图形相对的内侧边界线是指分别在两个位置探测图形上,并且相互平行的两条内侧边界线。
根据本实施例前述可知,所述定位图形区域中包括多个定位图形,一个定位图形的形状与一个模块的形状相同,即,每个定位图形均为正方形,因此,所述定位图形区域的高度为一个模块尺寸。
在本实施中,可以利用卡尺工具在所述位置探测图形相对的内侧边界线上确定定位图形的顶端端点。本申请人发现,利用卡尺工具确定定位图形区域的顶端端点操作简单,易于处理,而且,获得的顶端端点准确。
S324,依次连接四个端点,生成定位图形区域。
在本实施例中,所述四个端点为两个顶端端点和两个底端端点,将这四个端点顺次连接,得到一个矩形,该矩形即为定位图形区域。
S303,确定定位图形区域内所有定位图形的边缘点。
在本实施例中,可以根据所述定位图形区域的边缘梯度幅值来确定所述定位图形区域中各个定位图形的边缘,也可以利用卡尺工具来确定所述定位图形区域中各个定位图形的边缘。
在本实施例中,利用卡尺工具来确定定位图形区域中各定位图形边缘,可以按照以一个模块尺寸为步长切割所述定位图形区域,每条切割线即为定位图形的边界线。
在本实施例中,计算定位图形区域边缘梯度幅值的方法可以使用现有技术中任意一种用于计算图像中边缘梯度幅值的方法。
例如,本实施例可以采用包括以下步骤的方法来确定所述定位图形区域中定位图形的边缘点:
S332,计算所述定位图形区域中各像素点的边缘梯度幅值。
在本实施例中,可以使用现有技术中任意一种计算图形中像素点边缘梯度幅值的方法来计算所述定位图形区域中各像素点的边缘梯度幅值。
S331,根据所述边缘梯度幅值确定备选边缘点。
在本实施例中,所述备选边缘点是指边缘梯度幅值大于预设备选阈值的边缘点。所述预设备选阈值可以根据需要而设定,例如,所述预设备选阈值可以为10。
S334,根据所述边缘梯度幅值确定候选边缘点,所述候选边缘点为边缘梯度幅值大于预设梯度幅值的候选边缘点。
在本实施例中,所述预设梯度幅值可以为当前定位图形区域中最大边缘梯度幅值的1/5。
S333,确定定位图形边缘点,所述定位图形边缘点为极性交替分布的候选边缘点。
本实施例中,可以依次判断相邻两个候选边缘点的极性是否相同,如果不同,则保留第一个候选边缘点,如果相同,则删除这两个候选边缘点中幅值较低的候选边缘点。
S304,根据定位图形的边缘数量确定所述定位图形的数量。
在本实施例中,所述定位图形的数量为步骤S333确定的边缘点个数+1,例如,步骤333中确定该定位图形区域中边缘点为5个,则该定位图形区域中定位图形的个数为5+1=6个。
S305,根据定位图形的数量确定QR码的版本。
在本实施例中,可以根据QR码版本特征来确定QR码的版本。所述QR码版本特征为,QR码至少包括40种规格的矩阵,这种矩阵一般由黑色模块与白色模块组成,矩阵的规格从21x21(版本1),到177x177(版本40),每一版本比前一版本每边增加4个模块。
在本实施例中,每个位置探测图形的每个边长为7个模块,因此,所述QR码矩阵的边长M可以根据以下公式IV计算。例如,如果所述QR码共包含定位图形7个,再加上两个位置探测图形共14个模块,则所述QR码的边长为7+14=21个模块,即,所述QR码矩阵的规格为21×21,因此,确定该规格对应QR码的版本为1。
M=14+n 式IV
其中,
M表示QR码矩阵的边长;
n表示该QR码单个定位图形区域中定位图形的数量。
在本实施例中,由于版本小于2的QR码没有校正图形,因此,如果所述待处理图像上QR码的版本大于或者等于2,则在获取所述待处理图像上QR码的版本之后还包括:
S306,根据二维码国际标准,由二维码的版本预估所述校正图形的中心位置。
在本实施例中,所述二维码国际标准,即为前述QR码矩阵规格的简要说明,具体为:矩阵的规格从21x21(版本1),到177x177(版本40),每一版本比前一版本每边增加4个模块。
如图1a所示,QR码中校正图形一般设置有6个,其中,有2个校正图形的中心分别与一个定位图形区域中间位置的定位图形重合,另1个校正图形的中心与所述QR码的中心重合,另外2个校正图形与最初两个校正图形关于中心校正图形中心对称,最后一个校正图形的中心设置于最右侧校正图形中心像素列与最底端校正图形中心像素行的交点上。
因此,本实施例可以根据上述标准初步确定各个校正图形的位置。
S307,在所述校正图形的中心位置附近进行连通域搜索。
由于采集到的QR码图形有可能存在畸变而导致校正图形不能准确地呈现于前述位置上,因此,本实施例在初步确定的校正图形的位置附近进行连通域搜索,以准确地确定各个校正图形的位置。
在本实施例中,进行连通域搜索的方法可以使用blob分析进行,具体的方法可以参见前述步骤201和步骤202,在此不再赘述。
S308,根据连通域面积以及校正图形各连通域的拓扑关系确定校正图形位置。
在本实施例中,所述校正图形也包含三个相互嵌套的连通域,即,三个连通域之间也存在父-子-孙的拓扑关系,并且,最外层连通域的尺寸小于位置探测图形最外层连通域的尺寸,经过最小连通域的像素行或者像素列被三个嵌套连通域按照比例1:1:1:1:1分成五个部分,因此,可以通过对嵌套连通域中心位置附近逐行或逐列像素进行扫描,确定各像素行或者像素列按照灰度而划分的比例。
根据上述条件,本步骤可以参照步骤S203的方法确定校正图形的位置,在此不再赘述。
S400,根据所述位置探测图形的位置以及QR码的版本确定采样点。
在本实施例中,确定采样点的总体思路为,首先确定水平方向以及竖直方向的采样线,再采集两个方向的采样线的交点作为采样点,其中,采样线可以以定位点为基础向水平方向或者竖直方向延伸得到,而定位点包括一级定位点和二级定位点,其中,一级定位点是根据定位图形直接确定的定位点,而二级定位点是根据其它方法在QR码图形上确定的定位点。
由于不同版本QR内部结构有所区别,因此,在本实施例中,对于不同版本的QR码采用不同的方式确定采样点。
图5示出本实施例提供的一种确定采样点的流程示意图,如图5所示,在一种可实现的方式中,如果所述待处理图像上QR码为微QR码或者为版本小于2的标准QR码,则根据所述位置探测图形的位置以及QR码的版本确定采样点包括:
S401,根据所述定位图形的中心位置确定一级定位点。
在本实施例中,所述一级定位点为各个定位图形的中心像素点,从而,在同一个定位图形区域中的任意相邻两个一级定位点的间隔为一个模块尺寸。
S402,根据所述一级定位点绘制一级采样网格。
如图1b至图1c所示,任意一个QR码均有两个定位图形区域,而且,这两个定位图形区域互相垂直,因此,由水平设置的定位图形区域中一级定位点做出的采样线为经过该定位点的像素列,即,一级竖直采样线,由竖直设置的定位图形区域中一级定位点做出的采样线为经过定位点的像素行,即,一级水平采样线,多个像素列与多个像素行相交,形成一级采样网格。
S403,根据位置探测图形的中心位置和采样间隔位置在探测图形外边界上确定二级定位点。
在本实施例中,所述采样间隔可以为一个模块尺寸,从而使得由二级定位点获得的采样间隔与由一级定位点获得的采样间隔相等。
在本实施例中,可以通过在所述位置探测图形的内侧边界线上,以底端端点为起点,以采样间隔为步长,获取多个二级定位点。
S404,根据所述二级定位点绘制二级采样网格。
由本实施例前述步骤可知,每个位置探测图形均有两条内侧边界线,并且,这两条内侧边界相互垂直,因此,由水平方向内侧边界线上二级定位点做出的二级采样线为经过该定位点的像素列,即二级竖直采样线,由竖直方向内侧边界线上二级定位点做出的二级采样线为经过该定位点的像素行,即,二级水平采样线,多个二级水平采样线与一级竖直采样线相交,多个二级竖直采样线与一级水平采样线相交,形成二级采样网格。
在本实施例中,可以分别确定一级采样网格和二级采样网格,也可以在一级采样线和二级采样线全部确定完毕后,一次性确定采样网格。
S405,获取采样点,所述采样点为所述一级采样网格以及所述二级采样网格中各交点对应的像素点。
图6示出本实施例提供的另一种确定采样点的流程示意图,如图6所示,在另一种可实现的方式中,如果所述QR码为版本大于或者等于2的标准QR码,则根据所述位置探测图形的位置以及QR码的版本确定采样点包括:
S406,根据校正图形位置将所述QR二维码划为多个采样区域。
对于版本大于2的标准QR码,随着版本的增加,标准QR码的规格也不断增加,因此,如果以版本低于2或者微QR码的处理方式来获取版本大于2的标准QR码的采样点,可能会导致实际采样点的位置与目标采样点的位置产生偏差,因此,本实施例利用校正图形,将所述QR码分割成多个采样区域,并且,针对每个采样区域分别独立地确定采样点,从而减小采样偏差。
如图1a所示,可以根据QR码底端端点与相邻的两个校正图形以及相对的校正图形划分出三个正方形采样区域,再根据右下角四个校正图形划分出一个正方形采样区域,即,在所述QR码图形的中部划分出四个对称的正方形采样区域。
再根据QR码中相邻两个位置探测图形的内侧顶端端点与相应定位图形区域顶端端点分别确定出两个矩形采样区域。其中,所述位置探测图形的顶端端点为位置探测图形远离QR码中心的顶点,每个位置探测图形具有三个顶端端点,所述内侧顶端端点为内侧边界上的顶端端点。
最后根据位置探测图形同一内侧边界上的内侧顶端端点与底端采样端点划分出两个矩形采样区域。其中,所述底端采样端点为设置于所述位置探测图形上,并且,与所述位置探测图形的底端端点距离一个模块尺寸的像素点。
综上,如图1a所示,在该QR码的中部划分出四个对称的正方形采样区域,在所述QR码剩余部分划分出四个矩形采样区域。
S407,在每个所述区域中,根据所述定位图形的位置确定一级定位点。
为便于说明,本实施例中,对步骤S406划分得到的八个采区域进行编号,具体为:左上角的正方形采样区域称为1号采样区,右上角的正方形采样区域称为2号采样区,左下角的正方形采样区域称为3号采样区,右下角的正方形采样区域称为4号采样区,顶端的矩形采样区域称为5号采样区,底端的矩形采样区域称为6号采样区,左侧的矩形采样区域称为7号采样区,右侧的矩形采样区域称为8号采样区。
对于1号采样区,其结构与微QR码的结构相似,因此,可以在1号采样区确定一级定位点。本步骤确定一级定位点的方法可以参见步骤S401,在此不再赘述。
S408,根据校正图形的位置和采样间隔,以及,根据位置探测图形的位置和采样间隔确定二级定位点。
对于2号采样区和3号采样区,只有一侧具有定位图形,因此,可以根据相邻两个校正图形中心点间距及模块个数,重新计算采样间隔,即,模块尺寸,并且,以校正图形的中心为基准,以采样间隔为步长,在所述采样区水平和竖直两个方向的边界确定二级定位点。
对于4号采样区,该采样区并不包含定位图形,其四个顶点均为校正图形,则,4号采样区水平和竖直两个方向分别利用相邻校正图形中心点间距及模块个数,重新计算采样间隔,即,模块尺寸,并且,以校正图形中心点为基准,以采样间隔为步长,在所述采样区水平和竖直两个方向的边界确定二级定位点。
对于5号采样区和7号采样区,该采样区只包含一个定位图形区域,并且,只包含一个校正图形,因此,可以根据相邻两个位置探测图形中心点间距及模块个数,重新计算采样间隔,即,模块尺寸,并且,以位置探测图形中心点为基准,以采样间隔为步长,在所述采样区水平和竖直两个方向的边界确定二级定位点。
对于6号采样区和8号采样区,该采样区并不包含定位图形,顶点为一个位置探测图形和校正图形,可以利用位置探测图形中心与校正图形中心之间的距离及二者之间的模块个数,重新计算采样间隔,并且,以位置探测图形中心为基准,以采样间隔为步长,在所述采样区水平和竖直两个方向的边界确定二级定位点。
S409,根据所述一级定位点和所述二级定位点绘制采样网格。
本实施例中,在每个采样区域中分别以各自的定位点绘制采样网格。
本步骤的实现方式具体可以参见步骤S402以及步骤S404,在此不再赘述。
S410,获取采样点,所述采样点为所述采样网格中各交点对应的像素点。
S500,获取所述采样点的灰度值。
在本实施例中,所述采样点的灰度值是指包含该采样点的采样点区域的灰度值的平均值,从而增加所述采样点灰度值的置信度。
在一种可实现的方式中,所述获取所述采样点的灰度值包括:
S501,采集所述采样点区域中每个像素点的灰度值,所述采样点区域为以所述采样点为中心,边长为预设长度的正方形区域;
在本实施例中,所述预设长度为根据精度的需求而设定的,例如,所述预设长度可以为一个模块尺寸。
S502,获取所述采样点的灰度值,所述采样点的灰度值为所述采样点区域中所有像素点灰度值的均值。
S600,根据所述采样点的灰度值生成二值化矩阵。
在本实施例中,由所述采样点灰度值生成二值化矩阵的方法可以使用现有技术中任意一种利用灰度值生成二值化矩阵的方法。
S700,根据所述二值化矩阵读取所述QR码信息。
本步骤中,可以使用现有技术中任意一种利用二值化矩阵读取所述QR码信息的方法。
若初次解码失败,则可以对所述QR码图形进行水平、垂直或者水平垂直镜像翻转,并在翻转后的图像中再进行解码处理,如果所有翻转处理后图像上均解码失败,则认为解码失败。
本申请提供的QR码自动识读方法能够支持标准QR码和微QR码的识读,对QR码进行360度全方位识读,在对比度变化不超过10%、模块尺寸变化幅度不能超过模块尺寸的20%的情况下,能够自动识读含投影畸变、对比度变化以及模块尺寸变化的QR码,并且能够对光照、材质、形成方式等原因造成的点阵非一致性进行补偿支持ROI。
图7至图10示出4种不同实际情形,采用本申请提供的方法对该4个图像中的二维码进行识读,结果分别如下:
图7示出光照不均匀且背景较复杂的QR码图像,采用本申请提供的方法自动识读二维码的结果为:Never be afraid to laugh at yourself.After all,you could bemissing out on the joke of the century.(Dame Edna Everage)
图8示出出多个极性不同的微QR码图像,采用本申请提供的方法自动识读二维码的结果按照从左至右的顺序依次为:(1)012ABC,(2)01234-ABCDE!#$%&,(3)01234,(4)01234-ABCDE
图9示出需光照补偿的点阵QR码图像,采用本申请提供的方法自动识读二维码的结果为:DENSO WAVE 12345
图10示出有畸变且带有校正图形的QR码图像,采用本申请提供的方法自动识读二维码的结果为:
http://ucmp.sf-express.com/service/weixin/activity/wx_b2sf_order?p1=964578017308
从以上结果可以看出,本发明方法能够准确定位并识读图像中的QR码和微QR码,包括点阵模式,对于含投影畸变、含镜像、背景复杂、对比度变化、需光照补偿等场景下的QR码图像具有良好的适应性。
本申请还提供一种QR码自动识读装置,所述装置包括:
图像获取单元,用于获取待处理图像;
图形定位单元,用于在所述待处理图像上确定位置探测图形的位置;
版本确定单元,用于获取所述待处理图像上QR码的版本;
采样点确定单元,用于根据所述位置探测图形的位置以及QR码的版本确定采样点;
灰度值计算单元,用于获取所述采样点的灰度值;
二值化转化单元,用于根据所述采样点的灰度值生成二值化矩阵;
QR码信息生成单元,用于根据所述二值化矩阵读取所述QR码信息。
以上结合具体实施方式和范例性实例对本申请进行了详细说明,不过这些说明并不能理解为对本申请的限制。本领域技术人员理解,在不偏离本申请精神和范围的情况下,可以对本申请技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本申请的范围内。本申请的保护范围以所附权利要求为准。