本发明涉及通信领域,具体而言,涉及一种畸变二维码的识别方法和装置、存储介质及电子装置。
背景技术:
二维码的应用越来越广泛,通过对二维码进行识别可以得到该二维码对应的原始数据。然而,在相关技术中,对二维码尤其是发生了形变的二维码的识别准确率较低,例如,对于由于用于拍摄二维码的镜头产生的镜头畸变或是由于二维码图片被粘贴在曲面物体上,所导致的获取到的获取到的二维码发生了非线性形变,通常对于这类二维码无法进行准确识别。
针对相关技术中,对于不定形式的畸变二维码的识别准确率较低的技术问题,尚未提出有效的技术方案。
技术实现要素:
本发明实施例提供了一种畸变二维码的识别方法和装置、存储介质及电子装置,以至少解决相关技术中不定形式的畸变二维码的识别准确率较低的技术问题。
根据本发明的一个实施例,提供了一种畸变二维码的识别方法,包括:将目标模版图案中的第一组关键点确定为薄板样条拟合操作的一组控制点,其中,所述第一组关键点中的关键点与二维码图像中的第二组关键点中的关键点一一对应,所述目标模版图案为所述二维码图像的二维码版本下的模版图案,所述二维码图像为包括不定形式的畸变二维码的图像;根据所述一组控制点在所述二维码图像中的位置坐标,得到所述薄板样条拟合操作的一组目标值,其中,所述一组目标值中的目标值与所述一组控制点中的控制点一一对应;根据所述一组控制点和所述一组目标值进行所述薄板样条拟合操作,得到薄板样条插值函数中的目标参数的目标取值;根据所述薄板样条插值函数,确定所述目标模版图案中的编码区域中模块的中心点在所述二维码图像中的映射坐标,得到一组映射坐标;根据所述一组映射坐标对所述二维码图像进行识别。
可选地,所述根据所述一组控制点在所述二维码图像中的位置坐标,得到所述薄板样条拟合操作的一组目标值,包括:将所述第二组关键点中的与所述一组控制点中的每个控制点一一对应的关键点在所述二维码图像中的位置坐标,确定为所述一组目标值中的一个目标值。
可选地,所述根据所述一组控制点和所述一组目标值进行所述薄板样条拟合操作,得到薄板样条插值函数中的目标参数的目标取值,包括:根据所述一组目标值(x′i,y′i)以及所述一组控制点在所述模版图案中的位置坐标(xi,yi),得到ci1、ci2,其中,所述ci1=xi,ci2=yi,所述i∈[1,n],所述n为所述一组控制点的控制点数量;根据所述ci1、ci2、x′i,以及所述ci1、ci2、y′i分别得到三维点集
矩阵k=(kij)=u(|ci1,ci2)-(cj1,cj2)|),j∈[1,n],
可选地,所述根据所述薄板样条插值函数,确定所述目标模版图案中的编码区域的模块的中心点在所述二维码图像中的映射坐标,得到一组映射坐标,包括:将所述编码区域中模块的中心点在所述目标模版图案中的位置坐标(xk,yk),输入到由根据所述第一组参数的目标取值确定的所述薄板样条插值函数中,得到根据所述第一组参数的目标取值确定的所述薄板样条插值函数的第一函数值x′k;将所述编码区域中模块的中心点在所述目标模版图案中的位置坐标(xk,yk),输入到由根据所述第二组参数的目标取值确定的所述薄板样条插值函数中,得到根据所述第二组参数的目标取值确定的所述薄板样条插值函数的第二函数值y′k;根据所述第一函数值x′k和所述第二函数值y′k得到所述一组映射坐标中的一个映射坐标(x′k,y′k),其中,所述k∈[1,t],t为所述编码区域中模块的中心点的数量;其中,所述薄板样条插值函数为:
可选地,所述根据所述一组控制点在所述二维码图像中的位置坐标,得到所述薄板样条拟合操作的一组目标值,包括:将所述二维码图像中的第二位置坐标相对于第一位置坐标之间的位移,确定为所述一组目标值中的一个目标值,其中,所述第一位置坐标为所述一组控制点中的每个控制点在所述目标模版图案中的坐标,所述第二位置坐标为所述第二组关键点中与所述每个控制点一一对应的关键点在所述二维码图像中的坐标。
可选地,所述根据所述一组控制点和所述一组目标值进行所述薄板样条拟合操作,得到薄板样条插值函数中的目标参数的目标取值,包括:根据所述一组目标值(x′i,y′i)以及所述一组控制点在所述模版图案中的位置坐标(xi,yi),得到ci1、ci2,其中,所述ci1=xi,ci2=yi,所述i∈[1,n],所述n为所述一组控制点的控制点数量;根据所述ci1、ci2、xi、x′i,以及所述ci1、ci2、yi、y′i分别得到三维点集
可选地,所述根据所述薄板样条插值函数,确定所述目标模版图案中的编码区域中模块的中心点在所述二维码图像中的映射坐标,得到一组映射坐标,包括:将所述编码区域中模块的中心点在所述目标模版图案中的位置坐标(xk,yk),输入到由根据所述第三组参数的目标取值确定的所述薄板样条插值函数中,得到根据所述第三组参数的目标取值确定的所述薄板样条插值函数的第三函数值dxk;将所述编码区域中模块的中心点在所述目标模版图案中的位置坐标(xk,yk),输入到由根据所述第四组参数的目标取值确定的所述薄板样条插值函数中,得到根据所述第四组参数的目标取值确定的所述薄板样条插值函数的第四函数值dyk;根据所述第三函数值dxk和所述第四函数值dyk得到所述一组映射坐标中的一个映射坐标(x′k,y′k),其中,所述x′k=dxk+xk,所述y′k=dyk+yk,所述k∈[1,t],其中,t为所述编码区域中模块的中心点的数量,所述薄板样条插值函数为:
可选地,所述根据所述一组映射坐标对所述二维码图像进行识别,包括:根据所述一组映射坐标对所述二值化图像进行采样,得到采样结果,其中,所述二值化图像是对所述二维码图像进行滤波后得到的;根据所述采样结果得到所述二维码图像对应的识别结果。
根据本发明的一个实施例,提供了一种畸变二维码的识别装置,包括:第一确定模块,用于将目标模版图案中的第一组关键点确定为薄板样条拟合操作的一组控制点,其中,所述第一组关键点中的关键点与二维码图像中的第二组关键点中的关键点一一对应,所述目标模版图案为所述二维码图像的二维码版本下的模版图案,所述二维码图像为包括不定形式的畸变二维码的图像;第二确定模块,用于根据所述一组控制点在所述二维码图像中的位置坐标,得到所述薄板样条拟合操作的一组目标值,其中,所述一组目标值中的目标值与所述一组控制点中的控制点一一对应;拟合模块,用于根据所述一组控制点和所述一组目标值进行所述薄板样条拟合操作,得到薄板样条插值函数中的目标参数的目标取值;插值模块,用于根据所述薄板样条插值函数,确定所述目标模版图案中的编码区域中模块的中心点在所述二维码图像中的映射坐标,得到一组映射坐标;识别模块,还用于根据所述一组映射坐标对所述二维码图像进行识别。
可选地,根据本发明的另一个实施例,提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述方法。
可选地,根据本发明的另一个实施例,提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述方法。
通过本发明,将目标模版图案中的第一组关键点确定为薄板样条拟合操作的一组控制点,其中,所述第一组关键点中的关键点与二维码图像中的第二组关键点中的关键点一一对应,所述目标模版图案为所述二维码图像的二维码版本下的模版图案,所述二维码图像为包括不定形式的畸变二维码的图像;根据所述一组控制点在所述二维码图像中的位置坐标,得到所述薄板样条拟合操作的一组目标值,其中,所述一组目标值中的目标值与所述一组控制点中的控制点一一对应;根据所述一组控制点和所述一组目标值进行所述薄板样条拟合操作,得到薄板样条插值函数中的目标参数的目标取值;根据所述薄板样条插值函数,确定所述目标模版图案中的编码区域中模块的中心点在所述二维码图像中的映射坐标,得到一组映射坐标;根据所述一组映射坐标对所述二维码图像进行识别。因此,可以解决相关技术中不定形式的畸变二维码的识别准确率较低的技术问题,提高了不定形式的畸变二维码的识别准确率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为根据本发明实施例的畸变二维码的识别方法的流程图;
图2为相关技术中的模版图案的示意图(一);
图3为相关技术中的模版图案的示意图(二);
图4为本发明实施例中的二维码图像中示意图;
图5为本发明实施例中的二维码图像中的关键点的示意图;
图6为本发明实施例中的二值化图像的示意图;
图7为本发明实施例中的二值化图像中的映射点的示意图;
图8为根据本发明另一实施例的畸变二维码的识别方法的流程图;
图9是根据本发明实施例的畸变二维码的识别装置的结构框图;
图10是根据本发明实施例的一种可选的电子装置的结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本发明实施例提供了一种畸变二维码的识别方法,图1为根据本发明实施例的畸变二维码的识别方法的流程图,如图1所示,包括:
步骤s102,将目标模版图案中的第一组关键点确定为薄板样条拟合操作的一组控制点,其中,所述第一组关键点中的关键点与二维码图像中的第二组关键点中的关键点一一对应,所述目标模版图案为所述二维码图像的二维码版本下的模版图案,所述二维码图像为包括不定形式的畸变二维码的图像;
步骤s104,根据所述一组控制点在所述二维码图像中的位置坐标,得到所述薄板样条拟合操作的一组目标值,其中,所述一组目标值中的目标值与所述一组控制点中的控制点一一对应;
步骤s106,根据所述一组控制点和所述一组目标值进行所述薄板样条拟合操作,得到薄板样条插值函数中的目标参数的目标取值;
步骤s108,根据所述薄板样条插值函数,确定所述目标模版图案中的编码区域中模块的中心点在所述二维码图像中的映射坐标,得到一组映射坐标;
步骤s1010,根据所述一组映射坐标对所述二维码图像进行识别。
通过本发明,将目标模版图案中的第一组关键点确定为薄板样条拟合操作的一组控制点,其中,所述第一组关键点中的关键点与二维码图像中的第二组关键点中的关键点一一对应,所述目标模版图案为所述二维码图像的二维码版本下的模版图案,所述二维码图像为包括不定形式的畸变二维码的图像;根据所述一组控制点在所述二维码图像中的位置坐标,得到所述薄板样条拟合操作的一组目标值,其中,所述一组目标值中的目标值与所述一组控制点中的控制点一一对应;根据所述一组控制点和所述一组目标值进行所述薄板样条拟合操作,得到薄板样条插值函数中的目标参数的目标取值;根据所述薄板样条插值函数,确定所述目标模版图案中的编码区域中模块的中心点在所述二维码图像中的映射坐标,得到一组映射坐标;根据所述一组映射坐标对所述二维码图像进行识别。因此,可以解决相关技术中不定形式的畸变二维码的识别准确率较低的技术问题,提高了不定形式的畸变二维码的识别准确率。
需要说明的是,在上述实施例中,目标模版图案为二维码模版图案。模版图案为二维码标准中定义的模版图案(即快速响应(quickresponse,简称为qr)qr二维码标准中定义的qrcodesymbol),并且二维码图像为通过拍摄设备或图像采集设备摄(即实拍)得到的包含二维码的照片。图2显示了二维码标准iso/iec18004中定义的版本1(version1)模版图案(version1symbol),二维码标准iso/iec18004中定义的版本2(version2)模版图案(version2symbol)如图3所示。
其中,目标模版图案中的编码区域包括了数据和纠错码字区域(dataanderrorcorrectioncodewords),还可以包括版本信息以及格式信息所在的区域。
在上述实施例中,二维码图像中的第二组关键点中的每个关键点与目标模版图案中的第一组关键点中的每个关键点是一一对应的。在一个示例性实施例中,二维码图像中的第二组关键点包括3个位置探测图形(positiondetectionpatterns)所包含的s个顶点(即上述实施例中的一组控制点中的控制点的数量n=s)。可选地,二维码图像中的第二组关键点包括3个位置探测图形所包含的s个顶点以及校准图形(alignmentpattern)中的r个顶点或中心点(即上述实施例中的一组控制点中的控制点的关键点数量n=s+r),其中,所述s可以为12,当所述第二组关键点包括所述r个顶点时,所述r为4,当所述第二组关键点包括所述r个中心点时,所述r为1。
在一个示例性实施例中,不定形式的畸变二维码可以包括产生了无法预知的非线性形变的二维码,即无法预先得知二维码产生的是何种形式的非线性形变,例如,由于用于对二维码进行拍摄的镜头产生的镜头畸变,或是由于二维码被显示在了曲面对象上所导致的获取到的二维码(即二维码图像)产生了非线性形变,如图4中显示的照片(即实拍图片)为产生了不定形式的畸变的二维码。
可选地,所述根据所述一组控制点在所述二维码图像中的位置坐标,得到所述薄板样条拟合操作的一组目标值,包括:将所述第二组关键点中的与所述一组控制点中的每个控制点一一对应的关键点在所述二维码图像中的位置坐标,确定为所述一组目标值中的一个目标值。
需要说明的是,在上述实施例中,二维码图像中的第二组关键点中的每个关键点与目标模版图案中的第一组关键点中的每个关键点是一一对应的,即第二组关键点中的每个关键点在所述二维码图像中所位于的模块,与在目标模版图案中的第一组关键中的对应关键点在该目标模版图案中所位于的模块相同。例如,当二维码图像中的第二组关键点包括3个位置探测图形(positiondetectionpatterns)所包含的s个顶点时,目标模版图案中的第一组关键点为二维码图像中的s个顶点所分别对应的该目标模版图案中的3个位置探测图形所包含的s个顶点;或者,二维码图像中的第二组关键点包括3个位置探测图形所包含的s个顶点以及校准图形中的r个顶点时,目标模版图案中的第一组关键点为二维码图像中的s个顶点所分别对应的该目标模版图案中的3个位置探测图形所包含的s个顶点,以及二维码图像中的r个顶点所分别对应的该目标模版图案中的校准图形中的r个顶点;或者,二维码图像中的第二组关键点包括3个位置探测图形所包含的s个顶点以及校准图形中的r个中心点时,目标模版图案中的第一组关键点为二维码图像中的s个顶点所分别对应的该目标模版图案中的3个位置探测图形所包含的s个顶点,以及二维码图像中的r个中心点对应的该目标模版图案中的校准图形中的r个中心点。
可选地,所述根据所述一组控制点和所述一组目标值进行所述薄板样条拟合操作,得到薄板样条插值函数中的目标参数的目标取值,包括:根据所述一组目标值(x′i,y′i)以及所述一组控制点在所述模版图案中的位置坐标(xi,yi),得到ci1、ci2,其中,所述ci1=xi,ci2=yi,所述i∈[1,n],所述n为所述一组控制点的控制点数量;根据所述ci1、ci2、x′i,以及所述ci1、ci2、y′i分别得到三维点集
矩阵k=(kij)=u(|(ci1,ci2)-(cj1,cj2)|),所述j∈[1,n],
在上述实施例中,根据所述一组控制点以及所述一组目标值进行薄板样条拟合操作,即确定出薄板样条插值(thinplatespline)函数的参数,该薄板样条插值函数用于表示模版图案与二维码图像之间的映射关系,并且基于该薄板样条插值函数能够确定出模版图案中的模块的中心点在二维码图像中的映射点的坐标。
可选地,所述根据所述薄板样条插值函数,确定所述目标模版图案中的编码区域中模块的中心点在所述二维码图像中的映射坐标,得到一组映射坐标,包括:将所述目标模版图案中的编码区域的模块的中心点在所述目标模版图案中的位置坐标(xk,yk),输入到由根据所述第一组参数的目标取值确定的所述薄板样条插值函数中,得到根据所述第一组参数的目标取值确定的所述薄板样条插值函数的第一函数值x′k;将所述目标模版图案中的编码区域的模块的中心点在所述目标模版图案中的位置坐标(xk,yk),输入到由根据所述第二组参数的目标取值确定的所述薄板样条插值函数中,得到根据所述第二组参数的目标取值确定的所述薄板样条插值函数的第二函数值y′k;根据所述第一函数值x′k和所述第二函数值y′k得到所述一组映射坐标中的一个映射坐标(x′k,y′k),其中,所述k∈[1,t],t为所述编码区域的模块的中心点的数量;其中,所述薄板样条插值函数为:
图5中显示了二维码图像中的16的关键点,即图4中的二维码图像的16个关键点(即上述实施例中的第二组关键点);图6中显示了对图4中的二维码图像进行滤波后得到的二值化图像;
模版图案中的模块(也可称为数据模块),即二维码标准中定义的模版图案中的module。例如,图2中所示的模版图案中,共有21×21个模块(即模版图案的版本信息为21modules×21modules)。
在上述实施例中,(ci1,ci2)用于表示第i个控制点的坐标,(cj1,cj2)用于表示第j个控制点的坐标,|(ci1,ci2)-(cj1,cj2)|表示控制点(ci1,ci2)与控制点(cj1,cj2)之间的距离。可选地,控制点(ci1,ci2)与控制点(cj1,cj2)之间的距离可以为欧氏距离,即
基于上述实施例,二维码图像、二值化图像以及模版图案均采用笛卡尔坐标系,并且二维码图像和二值化图像采用同一坐标系。在上述实施例中,将所述ci3确定为所述x′i(即将二维码图像中的关键点的横坐标作为薄板样条拟合的目标值),即进行x方向拟合处理;以及将将所述ci3确定为所述y′i(即将二维码图像中的关键点的纵坐标作为薄板样条拟合的目标值),即进行y方向拟合处理,因此上述薄板样条插值函数用于表示模版图案到二维码图像的映射关系,从而基于该映射关系能够确定出即模版图案中的模块的中心点对应于二维码图像中的映射点的坐标。
其中,在进行x方向的拟合处理后,得到了第一组参数的目标取值,即第一组
图7中显示了二值化图像中的各个映射坐标所表示的各个映射点(即图7中的各个灰点),其中,图7中显示了目标模图案中的所有模块的中心点在二值化图像中的对应映射点,即上述实施例中的目标模版图案中的编码区域的模块的中心点在二值化图像中的映射点是图7所示的所有的灰色点的一个子集。
可选地,所述根据所述一组控制点在所述二维码图像中的位置坐标,得到所述薄板样条拟合操作的一组目标值,包括:将所述第二组关键点中的每个关键点在所述二维码图像中的第二位置坐标相对于第一位置坐标之间的位移,确定为所述一组目标值中的一个目标值,其中,所述第一位置坐标为所述一组控制点中与所述第二组关键中的所述每个关键点一一对应的一个控制点在所述目标模版图案中的坐标。
可选地,所述根据所述一组控制点和所述一组目标值进行所述薄板样条拟合操作,得到薄板样条插值函数中的目标参数的目标取值,包括:根据所述一组目标值(x′i,y′i)以及所述一组控制点在所述模版图案中的位置坐标(xi,yi),得到ci1、ci2,其中,所述ci1=xi,ci2=yi,所述i∈[1,n],所述n为所述一组控制点的控制点数量;根据所述ci1、ci2、xi、x′i,以及所述ci1、ci2、yi、y′i分别得到三维点集
需要说明的是,在上述实施例中,分别将二维码图像中的关键点(即上述实施例中的第二组关键中的每个关键点)在该二维码图像中的横坐标与对应的控制点在目标模版图案中的横坐标之间的差值(即第二位置坐标中的横坐标与第一位置坐标的横坐标之间的位移;同时也是第二位置坐标对应的二维码图像中的关键点,相对于与该关键点所对应的控制点在x轴方向产生的位移)作为薄板样条拟合的目标值;以及将二维码图像中的关键点的在该二维码图像中的纵坐标与对应的控制点在目标模版图案中的纵坐标之间的差值(即第二位置坐标中的纵坐标与第一位置坐标的纵坐标之间的位移;同时也是第二位置坐标对应的二维码图像中的关键点,相对于与该关键点所对应的控制点在y轴方向产生的位移)作为薄板样条拟合的目标值。即上述实施例中,分别进行x方向和y方向的薄板样条拟合操作。其中,上述薄板样条插值函数用于表示模版图案到二维码图像的映射关系。
可选地,所述根据所述薄板样条插值函数,确定所述目标模版图案中的编码区域的模块的中心点在所述二维码图像中的映射坐标,得到一组映射坐标,包括:将所述编码区域的模块的中心点在所述目标模版图案中的位置坐标(xk,yk),输入到由根据所述第三组参数的目标取值确定的所述薄板样条插值函数中,得到根据所述第三组参数的目标取值确定的所述薄板样条插值函数的第三函数值dxk;将所述所述编码区域的模块的中心点在所述目标模版图案中的位置坐标(xk,yk),输入到由根据所述第四组参数的目标取值确定的所述薄板样条插值函数中,得到根据所述第四组参数的目标取值确定的所述薄板样条插值函数的第四函数值dyk;根据所述第三函数值dxk和所述第四函数值dyk得到所述一组映射坐标中的一个映射坐标(x′k,y′k),其中,所述x′k=dxk+xk,所述y′k=dyk+yk,所述k∈[1,t],其中,t为所述编码区域的模块的中心点的数量,所述薄板样条插值函数为:
在上述实施例中,进行x方向的拟合处理后,得到了第三组参数的目标取值,即第三组
可选地,所述根据所述一组映射坐标对所述二维码图像进行识别,包括:根据所述一组映射坐标对所述二值化图像进行采样,得到采样结果,其中,所述二值化图像是对所述二维码图像进行滤波后得到的;根据所述采样结果得到所述二维码图像对应的识别结果。
其中,采样结果即根据上述一组映射坐标对二值化图像进行采样得到的比特流,进而可以对比特流进行解码得到对二维码图像进行识别的识别结果,即根据映射坐标(或映射点)对二值化图像进行采样和识别。
在一个示例性实施例中,所述根据所述一组映射坐标对所述二值化图像进行采样,得到采样结果,以及根据所述采样结果得到所述二维码图像对应的识别结果,可以包括:根据所述二值化图像中与所述映射坐标对应的点,对所述二值化图像进行采样,并根据采样结果得到比特流;对所述比特流进行解码得到所述二维码图像对应的识别结果。
在一个示例性实施例中,在所述将目标模版图案中的第一组关键点确定为薄板样条拟合操作的一组控制点之前,所述方法还包括:获取所述二维码图像中的所述第二组关键点中的每个关键点在所述二维码图像中的坐标,以及所述二维码图像的二维码版本信息;根据所述二维码版本信息,将所述版本信息表示的二维码版本下的模版图案确定为所述目标模版图案;以及获取所述目标模版图案中与所述二维码图像中的第二组关键点中的每个关键点对应的关键点的位置坐标(即上述实施例中的一组控制点中的每个控制点在目标模版图案中的位置坐标,也即上述实施例中的第一位置坐标)。
在一个示例性实施例中,所述根据所述一组映射坐标对所述二值化图像进行采样,得到采样结果,以及根据所述采样结果得到所述二维码图像对应的识别结果,包括:根据所述一组映射坐标中的所有映射坐标,对所述二值化图像进行全采样,即获取所述二值化图像中与所述一组映射坐标对应的所有模块的中心点的比特值,得到与所述二维码图像对应的比特流,对所述比特流进行识别得到所述二维码图像对应的识别结果(即解码结果)。
其中,所述二维码图像可以是通过手机、平板电脑、相机等终端设备拍摄得到的具有二维码的照片。
需要说明的是,在上述实施例中,基于薄板样条插值算法对畸变二维码进行处理(即进行畸变校正),得到各个映射坐标,从而实现了提高对畸变二维码的识别准确率。
以下结合一示例对上述实施例中的畸变二维码的识别方法进行解释说明,但不用于限定本发明实施例的技术方案。本发明实施例中的二维码图像可以是图4中显示的照片(即实拍图片),即通过本发明实施例中的方法可以实现对畸变二维码的识别,图5中显示获取到了图4中的二维码图像的关键点(即上述实施例中的第二组关键点,其中图5中显示了16个关键点)。
图8为根据本发明另一实施例的畸变二维码的识别方法的流程图,如图8所示,该方法包括以下步骤:
步骤1、对实拍图片中的二维码进行扫描并提取关键点。
在畸变二维码识别流程中,通过对实拍图片中的二维码进行扫描,提取出二维码版本(即上述实施例中的版本信息)等基本信息,并对二维码中的关键点进行定位得到各个关键点的位置坐标。
其中,在上述实施例中,二维码中的关键点可以是二维码中用于对二维码进行定位的模块的中心点,即关键点包括二维码中的位置探测图形中的模块的中心点。可选地,二维码中的关键点包括用于对二维码进行定位的模块的中心点,以及二维码的校正图形中的模块的中心点。位置探测图形中的模块的中心点可以是位于位置探测图形的顶点处的模块的中心点,校正图形中的模块的中心点可以是位于校正图形的顶点处的模块的中心点。如图5所示,获取到了16个关键点,其中包括三个位置探测图形中的每个位置探测图形的4个顶点(即位置探测图形中白色区域的4个转角处的模块的中心点),以及校正图形中的4个顶点(即校正图形中白色区域的4个转角处的模块的中心点),其中,位置探测图形的4个顶点分别为:位置探测图形的左上角的顶点,左下角的顶点,右上角的顶点以及右下角的顶点。
步骤2、对二维码进行透视变换校正。在一个可选实施例中,可以在步骤2中通过对二维码进行透视变换从而对二维码进行校正,其中,通过透视变换可以对二维码中的线性形变进行校正。
需要说明的是,在上述实施例中,由于目标图中二维码存在明显畸变,通过透视变换等线性函数建立从源图到目标图的映射关系,仅能够对二维码中的线性形变进行校正,因此需要通过后续的处理步骤对二维码中的不定形式的畸变(例如,不定形式的非线性形变)进行校正。
步骤3、基于薄板样条插值进行二维码的畸变校正。
根据二维码版本选择与二维码对应的标准参考图案(即上述实施例中的目标模版图案),将标准参考图案作为薄板样条拟合操作的源图,实拍图片作为薄板样条拟合的目标图,进行薄板样条拟合操作,拟合的目标是确定源图各个模块的中心点到目标图的映射关系,从而确定出源图中的各个中心点的坐标到目标图对应的二值化图像中对应映射点的坐标的映射关系,其中,映射点的坐标即上述实施例中的映射坐标,因此根据该映射关系能够准确地获取用于对二维码图像进行解码的采样点(即二值化图像中的各个映射坐标对应的映射点)。
在本发明实施例中,通过采用薄板样条插值方法建立从源图到目标图的映射关系,该映射关系为非线性映射。
可选地,将二维码图像中的关键点的横坐标x′i和纵坐标y′i相对于源图中的控制点的横坐标xi和纵坐标yi的位移分别作为拟合的目标值z(即上述实施例中的ci3),分别在3d空间中进行以下的薄板样条插值流程。最后将源图中的各个模块的中心点对应的z值组合形成源图2d平面到目标图2d平面的映射。
其中,薄板样条插值的具体流程为:
控制点的数量为n,定义以下3d点集:
薄板样条拟合方程为:
其中,
矩阵k=(kij)=u(|(ci1,ci2)-(cj1,cj2)|),i、j∈[1,n],
使用三角分解(ludecomposition,简称为lu分解)等方法解以上矩阵方程,即可获得薄板样条插值函数中的目标参数的目标取值,即:权重向量
对两个坐标方向(即x方向和y方向)分别重复以上计算过程即可得到源图到目标图的2d平面间的坐标映射关系。具体的,在上述实施例中,进行两次运算。即在第一次运算中,将zi确定为二维码图像中的关键点的横坐标x′i相对于源图中的控制点的横坐标xi的位移,并对薄板样条拟合方程进行求解,从而得到薄板样条插值函数中的参数的值,即:权重向量
可选地,目标模版图案中的模块的中心点(xk,yk)为目标模版图案中的编码区域中的各个模块的中心点,即模块的中心点的位置坐标(xk,yk)为模版图案中的编码区域中的各个模块的中心点的坐标,从而得到的各个映射坐标(x′k,y′k)可以用于二值化图像的编码区域的各个模块的中心点位置,从而实现了对二值化图像的中心采样点的坐标的准确确定。
其中,映射计算公式中已包含了线性项和非线性项,从而通过该映射计算公式可以同时校正仿射变换和畸变带来的图像(即二维码)形变。
基于上述实施例,由于薄板样条模拟的是一块无缺陷均匀的无限大金属薄板在强制其通过设定的控制点时的弯曲行为,其总是倾向于最小化为了实现这一弯曲在整个平面上所需的能量,即薄板样条反映了在任意数量控制点的引导下从一个形状到另一形状的最小弯曲能量变形,即整个平面基于控制点进行自然延展。
通过上述实施例,可以对具有不定形式的非线性形变(例如,镜头畸变、二维码粘贴于曲面等因素带来的非线性形变)的二维码进行准确识别,并且不需要预先获知畸变的形式和拍摄参数(即镜头参数)、预先假定曲面形式。本发明实施例,对于任意畸变(未知的镜头畸变、粘贴面弯曲等情形)导致的二维码存在弯曲,基于二维码的主要特征点(即关键点)位置,都能准确计算解码(即二维码识别)过程中各采样点的位置(即映射点对应的映射坐标);同时对于能提供更多特征点的场合(例如较大版本的二维码,或者实现中通过添加其他算法定位得到更多特征点),能以增量的形式得到更精确的局部畸变描述,从而提高采样点的精度;以及能够应用于各种不定参数的畸变形式,解决了相关技术中的二维码的畸变校正流程都存在的场景限制问题;在本发明实施例中,无需在解码之前对图像(即二维码图像)进行预先的线性和非线性校正,这在实际应用中对实时性提供了良好的保证;并且控制点的数量是动态可调节的,新增的控制点相当于对曲面形状的更具体描述,可用于改善曲面的局部精度使其更符合实际,从而可以大大增加获取二维码特征点的灵活性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
根据本发明的另一个实施例,提供了一种二维码的识别装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图9是根据本发明实施例的畸变二维码的识别装置的结构框图,该装置包括:
第一确定模块92,用于将目标模版图案中的第一组关键点确定为薄板样条拟合操作的一组控制点,其中,所述第一组关键点中的关键点与二维码图像中的第二组关键点中的关键点一一对应,所述目标模版图案为所述二维码图像的二维码版本下的模版图案,所述二维码图像为包括不定形式的畸变二维码的图像;
第二确定模块94,用于根据所述一组控制点在所述二维码图像中的位置坐标,得到所述薄板样条拟合操作的一组目标值,其中,所述一组目标值中的目标值与所述一组控制点中的控制点一一对应;
拟合模块96,用于根据所述一组控制点和所述一组目标值进行所述薄板样条拟合操作,得到薄板样条插值函数中的目标参数的目标取值;
插值模块98,用于根据所述薄板样条插值函数,确定所述目标模版图案中的编码区域的模块的中心点在所述二维码图像中的映射坐标,得到一组映射坐标;
识别模块9010,用于根据所述一组映射坐标对所述二维码图像进行识别。
通过本发明,将目标模版图案中的第一组关键点确定为薄板样条拟合操作的一组控制点,其中,所述第一组关键点中的关键点与二维码图像中的第二组关键点中的关键点一一对应,所述目标模版图案为所述二维码图像的二维码版本下的模版图案,所述二维码图像为包括不定形式的畸变二维码的图像;根据所述一组控制点在所述二维码图像中的位置坐标,得到所述薄板样条拟合操作的一组目标值,其中,所述一组目标值中的目标值与所述一组控制点中的控制点一一对应;根据所述一组控制点和所述一组目标值进行所述薄板样条拟合操作,得到薄板样条插值函数中的目标参数的目标取值;根据所述薄板样条插值函数,确定所述目标模版图案中的编码区域的模块的中心点在所述二维码图像中的映射坐标,得到一组映射坐标;根据所述一组映射坐标对所述二维码图像进行识别。因此,可以解决相关技术中不定形式的畸变二维码的识别准确率较低的技术问题,提高了不定形式的畸变二维码的识别准确率。
可选地,所述第二确定模块94,还用于:将所述第二组关键点中的与所述一组控制点中的每个控制点一一对应的关键点在所述二维码图像中的位置坐标,确定为所述一组目标值中的一个目标值。
可选地,所述拟合模块96,还用于:根据所述一组目标值(x′i,y′i)以及所述一组控制点在所述模版图案中的位置坐标(xi,yi),得到ci1、ci2,其中,所述ci1=xi,ci2=yi,所述i∈[1,n],所述n为所述一组控制点的控制点数量;根据所述ci1、ci2、x′i,以及所述ci1、ci2、y′i分别得到三维点集
矩阵k=(kij)=u(|(ci1,ci2)-(cj1,cj2)|),j∈[1,n],
可选地,所述插值模块98,还用于:将所述编码区域的模块的中心点在所述目标模版图案中的位置坐标(xk,yk),输入到由根据所述第一组参数的目标取值确定的所述薄板样条插值函数中,得到根据所述第一组参数的目标取值确定的所述薄板样条插值函数的第一函数值x′k;将所述编码区域的模块的中心点在所述目标模版图案中的位置坐标(xk,yk),输入到由根据所述第二组参数的目标取值确定的所述薄板样条插值函数中,得到根据所述第二组参数的目标取值确定的所述薄板样条插值函数的第二函数值y′k;根据所述第一函数值x′k和所述第二函数值y′k得到所述一组映射坐标中的一个映射坐标(x′k,y′k),其中,所述k∈[1,t],t为所述编码区域的模块的中心点的数量;其中,所述薄板样条插值函数为:
可选地,所述第二确定模块94,还用于:将所述二维码图像中的第二位置坐标相对于第一位置坐标之间的位移,确定为所述一组目标值中的一个目标值,其中,所述第一位置坐标为所述一组控制点中的每个控制点在所述目标模版图案中的坐标,所述第二位置坐标为所述第二组关键点中与所述每个控制点一一对应的关键点在所述二维码图像中的坐标。
可选地,所述拟合模块96,还用于:根据所述一组目标值(x′i,y′i)以及所述一组控制点在所述模版图案中的位置坐标(xi,yi),得到ci1、ci2,其中,所述ci1=xi,ci2=yi,所述i∈[1,n],所述n为所述一组控制点的控制点数量;根据所述ci1、ci2、xi、x′i,以及所述ci1、ci2、yi、y′i分别得到三维点集
可选地,所述插值模块98,还用于:将所述编码区域的模块的中心点在所述目标模版图案中的位置坐标(xk,yk),输入到由根据所述第三组参数的目标取值确定的所述薄板样条插值函数中,得到根据所述第三组参数的目标取值确定的所述薄板样条插值函数的第三函数值dxk;将所述编码区域的模块的中心点在所述目标模版图案中的位置坐标(xk,yk),输入到由根据所述第四组参数的目标取值确定的所述薄板样条插值函数中,得到根据所述第四组参数的目标取值确定的所述薄板样条插值函数的第四函数值dyk;根据所述第三函数值dxk和所述第四函数值dyk得到所述一组映射坐标中的一个映射坐标(x′k,y′k),其中,所述x′k=dxk+xk,所述y′k=dyk+yk,所述k∈[1,t],其中,t为所述编码区域的模块的中心点的数量,所述薄板样条插值函数为:
可选地,所述识别模块9010,还用于:根据所述一组映射坐标对所述二值化图像进行采样,得到采样结果,其中,所述二值化图像是对所述二维码图像进行滤波后得到的;根据所述采样结果得到所述二维码图像对应的识别结果。
本发明的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项的方法。
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
图10是根据本发明实施例的一种可选的电子装置的结构示意图。可选地,本领域普通技术人员可以理解,图10所示的结构仅为示意,电子装置也可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图10其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图10中所示更多或者更少的组件(如网络接口等),或者具有与图10所示不同的配置。
其中,存储器1002可用于存储软件程序以及模块,如本发明实施例中的畸变二维码的识别方法和畸变二维码的识别装置对应的程序指令/模块,处理器1004通过运行存储在存储器1002内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的文件的上传方法。存储器1002可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1002可进一步包括相对于处理器1004远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。作为一种示例,上述存储器1002中可以但不限于包括上述畸变二维码的识别装置的确定模块72,拟合模块74,以及识别模块76。此外,还可以包括但不限于上述畸变二维码的识别装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输设备1006用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输设备1006包括一个网络适配器(networkinterfacecontroller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输设备1006为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器1008,用于显示画面;和连接总线1010,用于连接上述电子装置中的各个模块部件。
在其他实施例中,上述终端或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(p2p,peertopeer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。