一种快速准确的QR码校正方法及系统与流程

文档序号:18741658发布日期:2019-09-21 01:50阅读:303来源:国知局
一种快速准确的QR码校正方法及系统与流程

本发明涉及图像处理、计算机视觉技术领域,尤其涉及一种快速准确的QR码校正方法及系统。



背景技术:

随着信息化时代的来临,计算机科学的进步以及手机的智能化,条码技术应运而生。条码技术是信息自动化获取的一种重要方法。条码根据其信息存储维度的不同,通常有一维条码和二维条码之分。相比于一维条码而言,二维条码不仅存储容量大,保密能力强而且成本低廉,可靠性好。

我国对于二维条码技术的探索始于上个世纪90年代,起步较晚。可是由于我国科学技术的飞速发展,物流行业的快速兴起以及智能手机的普及,二维条码技术在我国的应用愈加广泛。目前,在我国占据主要市场的二维条码是QR码。QR码是矩阵式二维条码之一,QR即“Quick Response”,具有快速反应的含义。QR码是第一个直接对非英文字符进行编码的条码,因此该条码主要应用在我国,日本,韩国等许多亚洲国家。

QR码识别的主要任务是对采集到的QR码图像进行一系列的运算处理,从而获取其中所包含的信息。整个识别系统主要包括3个部分:图像预处理算法,定位算法及校正算法这三个方面。其中校正算法是必不可少的关键部分。这是因为QR码在图像采集的过程中由于采集设备本身的误差以及环境因素和人为因素所造成的误差,使得采集到的QR码图像往往存在各种线性与非线性的失真。这些失真会对图像的精度产生巨大的影响。

目前校正算法大都采用Hough变换获取图像的边缘信息和倾斜角度,效果一般,准确度不高,直接影响后续解码过程。



技术实现要素:

针对现有技术中的不足,本发明的目的是提供一种快速准确的QR码校正方法及系统。

其采用的技术方案是:

一种快速准确的QR码校正方法,包括以下步骤:

步骤101,对QR码的二值化图像A(x,y)进行扫描聚类,获得图像A(x,y)中三个顶点的像素坐标,即QR码图像中三个位置探测图形的中心像素坐标;

步骤102,根据图像A(x,y)中三个顶点的像素坐标以及平行四边形法则,求取图像A(x,y)中第四个顶点的第一类像素坐标;

步骤103,根据图像A(x,y)中三个顶点的像素坐标求取图像A(x,y)的外围直线,根据图像A(x,y)中三个顶点的像素坐标以及外围直线的斜率求取图像A(x,y)中第四个顶点的第二类像素坐标;

步骤104,对图像A(x,y)中第四个顶点的第一类像素坐标与第二类像素坐标进行加权平均,获得图像A(x,y)中第四个顶点的像素坐标;

步骤105,对图像A(x,y)中的四个顶点进行反透视变换,获得四个顶点的标准像素坐标;

步骤106,根据图像A(x,y)中四个顶点的原像素坐标与标准像素坐标求取透视变换矩阵,并根据透视变换矩阵获得校正后的标准图像。

进一步优选的,步骤101中,所述对QR码的二值化图像A(x,y)进行扫描聚类,获得图像A(x,y)中三个顶点的像素坐标,具体为:

步骤201,对图像A(x,y)逐行进行扫描,将同一行中相邻且颜色相同的像素连接起来,在每一行中形成若干黑色与白色的线段;

步骤202,筛选出每一行中连续的且长度比例为1:1:3:1:1的五个线段作为一个行线段组,筛选出每一个行线段组中长度比例为3的线段的起始像素坐标作为行聚类坐标,对所有的行聚类坐标以相互之间的距离为条件进行行聚类,取包含行聚类坐标数量在前三的三个类别作为行扫描结果;

步骤203,对图像A(x,y)逐列进行扫描,将同一列中相邻且颜色相同的像素连接起来,在每一列中形成若干黑色与白色的线段;

步骤204,筛选出每一列中连续的且长度比例为1:1:3:1:1的五个线段作为一个列线段组,筛选出每一个列线段组中长度比例为3的线段的起始像素坐标作为列聚类坐标,对所有的列聚类坐标以相互之间的距离为条件进行列聚类,取包含列聚类坐标数量在前三的三个类别作为列扫描结果;

步骤205,求取行扫描结果与列扫描结果的交集,获得三个聚类的二值图像,计算出三个聚类的二值图像的中心像素坐标即图像A(x,y)中三个顶点的像素坐标。

进一步优选的,步骤202中,行聚类坐标以相互之间的距离小于4为条件进行行聚类;步骤204中,列聚类坐标以相互之间的距离小于4为条件进行列聚类。

进一步优选的,步骤102中,所述图像A(x,y)中第四个顶点的第一类像素坐标为:

dot4_1=(x04_1,y04_1)=(x02+x03-x01,y02+y03-y01)

式中,(x04_1,y04_1)是图像A(x,y)中第四个顶点的第一类像素坐标;(x01,y01)是图像A(x,y)中第一个顶点dot1的像素坐标;(x02,y02)是图像A(x,y)中第二个顶点dot2的像素坐标;(x03,y03)是图像A(x,y)中第三个顶点dot3的像素坐标,其中,点dot2与点dot3位于QR码图像中的一条对角线上。

进一步优选的,所述步骤103具体包括:

步骤301,对点dot1所在的列从下至上进行扫描,记录第二次黑线段的起始像素坐标(x011,y01),对点dot2所在的列从下至上进行扫描,记录第二次黑线段的起始像素坐标(x022,y02),并求取点dot1与点dot2之间连线的斜率角度θ12;

步骤302,以θ12为中心,波动步长0.1度,整体不超过1度,获得包含有21个角度值的斜率角集合;

步骤303,以点(x011,y01)为直线上的一点、分别以斜率角集合的21个角度值为斜率角度,获得21条直线;

步骤304,以点(x022,y02)为直线上的一点、分别以斜率角集合的21个角度值为斜率角度,获得21条直线,结合步骤303中获得的直线共42条直线;

步骤305,筛选出42条直线中与图像A(x,y)交集最多的直线作为点dot1与点dot2之间的外围直线,并记录其斜率nθ12;

步骤306,采用步骤301-步骤305同样的方法获得点dot1与点dot3之间的外围直线,并记录其斜率nθ13;

步骤307,根据三个顶点dot1、dot2和dot3的像素坐标,和两个外围直线的斜率记为nθ12和nθ13,可以求得一个四边形的最后一个顶点坐标,即图像A(x,y)中第四个顶点的第二类像素坐标dot4_2(x04_2,y04_2)。

进一步优选的,步骤104中,图像A(x,y)中第四个顶点的像素坐标为:

ndot4=t×dot4_1+(1-t)×dot4_2

式中,t为加权因子。

进一步优选的,步骤105中,四个顶点的标准像素坐标为dot1′=(4,4)、dot2′=(4,LTH-3)、dot3′=(LTH-3,4)、dot4′=(LTH-3,LTH-3),其中,LTH为标准图像的边长。

进一步优选的,所述标准图像的边长LTH的求取过程为:

步骤401,求取图像A(x,y)的边长lth:

式中,表示同一行或列中所有线段的总长,v(i)表示该行或列中行线段组或列线段组中第一个线段的长度;

步骤402,对lth在以4递增的数组中,找到最接近的整数作为LTH。

一种快速准确的QR码校正系统,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。

本发明的有益技术效果:

本发明分别通过基于平行四边形法则的方法与基于QR码图像外围直线信息的方法求取QR码图像中第四个顶点的像素坐标,随后将第四个顶点的两种像素坐标进行加权处理,得到最终的坐标,并通过四个顶点的像素坐标获得透视变换矩阵,最终根据透视变换矩阵即可对QR码原图像进行校正,其计算过程简单且更加准确,能够有效的弥补现有QR码校正方法的不足,具有很高的实用价值。

附图说明

图1是本实施例中QR码符号结构示意图;

图2是本实施例中QR码位置探测图形的结构示意图;

图3是快速准确的QR码校正方法的流程示意图;

图4是三个顶点的像素坐标的求取过程流程示意图;

图5是本实施例中三种聚类中心的关系示意图;

图6是第四个顶点的第二类像素坐标的求取过程流程示意图。

具体实施方式

为了使本公开的目的、技术方案和优点更加清楚明白,下结合具体实施例,并根据附图,对本发明进一步详细说明。需要说明的是,在附图或说明书描述中,未描述的内容以及部分英文简写为所属技术领域中普通技术人员所熟知的内容。本实施例中给定的一些特定参数仅作为示范,在不同的实施方式中该值可以相应地改变为合适的值。

读入经过初步定位的包含QR码的二值化图像A(x,y),在QR码图像的采集过程中,经过定位后的图像顶点一般都有一定程度的毛刺和少量的噪声。因此,若是直接通过扫描整幅图像,并将获取的最外围的顶点直接作为QR码区域的识别过程中的最外围点,会产生极大的误差。

如图1-2所示,QR码符号是由一系列的正方形模块构成的一个二维条码阵列,其中位置探测图形依次以1:1:3:1:1深浅交替变换,且这种性质在图像变形不是太严重和任意旋转的情况下稳定存在。

本实施例通过对整幅图像进行逐行逐列的扫描,并根据QR码图像的特点找到3个顶点,然后通过两个不同的方法获得第4个顶点的坐标,对两次结果进行加权平均,提高计算结果的精度,最后通过这4个顶点的坐标计算变换矩阵,并根据变换矩阵对QR码图像完成校正,参考图3,具体包括以下步骤:

步骤101,对QR码的二值化图像A(x,y)进行扫描聚类,获得图像A(x,y)中三个顶点的像素坐标,即QR码图像中三个位置探测图形的中心像素坐标;

步骤102,根据图像A(x,y)中三个顶点的像素坐标以及平行四边形法则,求取图像A(x,y)中第四个顶点的第一类像素坐标;

步骤103,根据图像A(x,y)中三个顶点的像素坐标求取图像A(x,y)的外围直线,根据图像A(x,y)中三个顶点的像素坐标以及外围直线的斜率求取图像A(x,y)中第四个顶点的第二类像素坐标,其中,图像A(x,y)的外围直线指的图像A(x,y)在去除周围空白区域后的轮廓线;

步骤104,对图像A(x,y)中第四个顶点的第一类像素坐标与第二类像素坐标进行加权平均,获得图像A(x,y)中第四个顶点的像素坐标;

步骤105,对图像A(x,y)中的四个顶点进行反透视变换,获得四个顶点的标准像素坐标;

步骤106,根据图像A(x,y)中四个顶点的原像素坐标与标准像素坐标求取透视变换矩阵,并根据透视变换矩阵获得校正后的标准图像。

参考图4,在步骤101中,对QR码的二值化图像A(x,y)进行扫描聚类,获得图像A(x,y)中三个顶点的像素坐标,具体为:

步骤201,对图像A(x,y)逐行进行扫描,将同一行中相邻且颜色相同的像素连接起来,由于二值化图像A(x,y)的像素点非黑即白,因此在每一行中形成若干黑色与白色的线段;

步骤202,筛选出每一行中连续的且长度比例为1:1:3:1:1的五个线段作为一个行线段组,筛选出每一个行线段组中长度比例为3的线段的起始像素坐标作为行聚类坐标,对所有的行聚类坐标以相互之间的距离为条件进行行聚类,取包含行聚类坐标数量在前三的三个类别作为行扫描结果;

以第一行为例,假设第一行共分成m个线段,用一维向量表示每个线段的像素数目v=(v1,v2,...,vm),如果发现某个线段和其后的4个线段的像素个数之比满足1:1:3:1:1时,也即存在某个序号i,使得

v(i):v(i+1):v(i+2):v(i+3):v(i+4)=1:1:3:1:1

即筛选出序号为i+2的线段的起始像素坐标作为行聚类坐标,将每一行中的行聚类坐标进行汇总并聚类,取包含行聚类坐标数量在前三的三个类别作为行扫描结果,其中,行聚类坐标以相互之间的距离小于4为条件进行行聚类,因此,得到的三个行扫描结果即在逐行扫描的情况下得到的三个位置探测图形的像素坐标的聚类。

步骤203,对图像A(x,y)逐列进行扫描,将同一列中相邻且颜色相同的像素连接起来,在每一列中形成若干黑色与白色的线段;

步骤204,筛选出每一列中连续的且长度比例为1:1:3:1:1的五个线段作为一个列线段组,筛选出每一个列线段组中长度比例为3的线段的起始像素坐标作为列聚类坐标,对所有的列聚类坐标以相互之间的距离小于4为条件进行列聚类,取包含列聚类坐标数量在前三的三个类别作为列扫描结果;与步骤201-202相同的原理,这里得到的三个列扫描结果即在逐列扫描的情况下得到的三个位置探测图形的像素坐标的聚类。

步骤205,求取行扫描结果与列扫描结果的交集,获得三个聚类的二值图像,计算出三个聚类的二值图像的中心像素坐标即图像A(x,y)中三个顶点的像素坐标,即QR码图形中三个位置探测图形的中心像素的坐标;参考图5,本实施例中,以dot1、dot2与dot3表示三个位置探测图形的中心像素点,其中,点dot2与dot3位于QR码图像中的一条对角线上,具体的求取过程为:

式中,N1是第一个聚类交集中所有像素点的总个数;x′1和y′1分别是第一个聚类交集中每一个像素点的横纵坐标,记dot1=(x01,y01)为第一个聚类交集的中心像素,即第一个顶点;同样的方法可以求得第二个聚类交集的中心像素dot2=(x02,y02),即第二个顶点;和第三个聚类交集的中心像素dot3=(x03,y03),即第三个顶点。

在步骤102中,图像A(x,y)中第四个顶点的第一类像素坐标为:

dot4_1=(x04_1,y04_1)=(x02+x03-x01,y02+y03-y01)

式中,(x04_1,y04_1)是图像A(x,y)中第四个顶点的第一类像素坐标;(x01,y01)是图像A(x,y)中第一个顶点dot1的像素坐标;(x02,y02)是图像A(x,y)中第二个顶点dot2的像素坐标;(x03,y03)是图像A(x,y)中第三个顶点dot3的像素坐标,其中,点dot2与点dot3位于QR码图像中的一条对角线上。

参考图6,在步骤103中,根据QR条码的外围信息,计算外围斜率,然后根据3个顶dot1、dot2与dot3的坐标信息、外围斜率信息,计算第四个顶点的第二类像素坐标,其过程包括:

步骤301,将两点dot1和dot2组成一条直线,对点dot1所在的列从下至上进行扫描,会依次经过黑线段、白线段、黑线段,记录第二次黑线段的起始像素坐标(x011,y01);同理对第点dot2所在的列从下至上进行扫描,也会依次经过黑线段、白线段、黑线段,记录第二次黑线段的起始像素坐标(x022,y02),同时求取点dot1与点dot2之间连线的斜率角度θ12

步骤302,以θ12为中心,波动步长0.1度,整体不超过1度,获得包含有21个角度值的斜率角集合,具体为{θ12-1,θ12-0.9,θ12-0.8,...,θ12-0.1,θ12,θ12+0.1,...,θ12+0.8,θ12+0.9,θ12+1};

步骤303,以点(x011,y01)为直线上的一点、分别以斜率角集合的21个角度值为斜率角度,获得21条直线;

步骤304,以点(x022,y02)为直线上的一点、分别以斜率角集合的21个角度值为斜率角度,获得21条直线,结合步骤303中获得的直线共42条直线;

步骤305,筛选出42条直线中与图像A(x,y)交集最多的直线作为点dot1与点dot2之间的外围直线,并记录其斜率nθ12;

步骤306,采用步骤301-步骤305同样的方法获得点dot1与点dot3之间的外围直线,并记录其斜率nθ13;

步骤307,根据三个顶点dot1、dot2和dot3的像素坐标,和两个外围直线的斜率记为nθ12和nθ13,可以求得一个平行四边形的最后一个顶点坐标,即图像A(x,y)中第四个顶点的第二类像素坐标dot4_2(x04_2,y04_2)。

在步骤104中,图像A(x,y)中第四个顶点的像素坐标为:

ndot4=t×dot4_1+(1-t)×dot4_2。

在步骤105中,在已知的四个顶点dot1、dot2、dot3与dot4的前提下,可以得到四个顶点的标准像素坐标为dot1′=(4,4)、dot2′=(4,LTH-3)、dot3′=(LTH-3,4)、dot4′=(LTH-3,LTH-3),其中,LTH为标准图像的边长,标准图像为LTH×LTH的正方形,其中,标准图像的边长LTH的求取过程为:

步骤401,求取图像A(x,y)的边长lth:

式中,表示同一行或列中所有线段的总长,v(i)表示该行或列中行线段组或列线段组中第一个线段的长度;

步骤402,对lth在以4递增的数组中,找到最接近的整数作为LTH。其中,以4递增的数组为{1,5,9,13,17,21,25,29,...,177},例如当lth为24.1时,那么LTH为最接近的整数就是25。

在步骤106中,原始图像、透视变换矩阵与校正后的标准图像的关系为:

式中,原始图像的坐标为(x,y),标准图像的坐标为(p,q),H为透视变换矩阵,ω为比例因子;

其中,根据四个顶点的原像素坐标与标准像素坐标即能计算出透视变换矩阵。

以上包含了本发明优选实施例的说明,这是为了详细说明本发明的技术特征,并不是想要将发明内容限制在实施例所描述的具体形式中,依据本发明内容主旨进行的其他修改和变型也受本专利保护。本发明内容的主旨是由权利要求书所界定,而非由实施例的具体描述所界定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1