发明内容
本发明的任务是要针对上述技术问题,提供一种QR码抗污损识别方法,其特征在于,包括如下步骤:
S102:获取图像中所有可能的寻像图形;图像为灰度图像或彩色图像,获取彩色图像中寻像图形的步骤包括先对其进行灰度化处理,得到灰度图像;
S104:QR码的解码识别,包括如下步骤:
S1041:对灰度图像进行二值化处理,每三个寻像图形一组,解码:将所有可能的寻像图形每三个一组进行组合,并假设每一组寻像图形组合均相应的对应一个QR码,其为假设QR码,再对假设的QR码进行解码,解码成功的,返回QR码码值,未解码成功的,记录相应的寻像图形组合;
S1042:每两个二类寻像图形一组,解码:对步骤S1041记录的未解码成功的寻像图形组合进行筛选,找出与其它寻像图形构成的所有组合均未解码成功的寻像图形,将其归类为二类寻像图形,将所有二类寻像图形每两个一组进行组合,并假设每一组寻像图形组合均相应的对应一个QR码,其为假设QR码,再利用QR码的三个寻像图形的位置关系假设第三个寻像图形的位置,然后进行解码,解码成功的,返回QR码码值;
S105:结束解码。
所述S1041中每三个寻像图形一组,解码,包括如下步骤:
S201:每三个寻像图形一组进行组合,假设每个组合均对应一个QR码;
S202:对第一个寻像图形组合对应的QR码进行解码,判断解码是否成功,
如果S202判断的结果为是,进行S203:返回QR码码值,
并进行S206:判断已进行解码的组合的个数是否为总的组合个数,
如果S206判断的结果为是,进行所述步骤S1042,
如果S206判断的结果为否,进行S207,对下一个寻像图形组合对应的QR码进行解码,判断解码是否成功,
如果S207判断的结果为是,进行前述S203,
如果S207判断的结果为否,进行S205:记录未解码成功的组合,
并进行前述步骤S206,
如果S202判断的结果为否,进行前述步骤S205。
所述S1041中每三个寻像图形一组,解码,对假设的QR码进行解码前设置要求成功解码的QR码个数,为要求的解码个数,解码包括如下步骤:
S201:每三个寻像图形一组进行组合,假设每个组合均对应一个QR码;
S202:对第一个寻像图形组合对应的QR码进行解码,判断解码是否成功,
如果S202判断的结果为是,进行S203: 返回QR码码值,
并进行S204:判断成功解码的QR码码值的个数是否为要求的解码个数,
如果S204判断的结果为是,进行S105:结束解码,
如果S204判断的结果为否,进行S206:判断已进行解码的组合的个数是否为总的组合个数,
如果S206判断的结果为是,进行所述步骤S1042,
如果S206判断的结果为否,进行S207,对下一个寻像图形组合对应的QR码进行解码,判断解码是否成功,
如果S207判断的结果为是,进行前述S203,
如果S207判断的结果为否,进行S205,记录未解码成功的组合,
并进行前述步骤S206,
如果S202判断的结果为否,进行前述步骤S205。
所述S1042中每两个二类寻像图形一组,解码,包括如下步骤:
S301:对未解码成功的三个寻像图形构成的组合进行筛选,筛选出二类寻像图形;
S303:每两个二类寻像图形一组进行组合,假设每个组合均对应一个QR码;
S304:假设每个QR码的第三个寻像图形的位置;
S305:对第一个寻像图形组合对应的QR码进行解码,判断解码是否成功,
如果S305判断的结果为是,进行S306:返回QR码码值,
并进行S309:判断已进行解码的组合的个数是否为总的组合个数,
如果S309判断的结果为是,进行所述步骤S105,
如果S309判断的结果为否,进行S310:对下一个寻像图形组合对应的QR码进行解码,判断解码是否成功,
如果S310判断的结果为是,进行前述S306,
如果S310判断的结果为否,进行前述S309,
如果S305判断的结果为否,进行前述S309。
所述S1042中每两个二类寻像图形一组,解码,对假设的QR码进行解码前设置要求成功解码的QR码个数,为要求的解码个数,解码包括如下步骤:
S301:对未解码成功的三个寻像图形构成的组合进行筛选,筛选出二类寻像图形;
S303:每两个二类寻像图形一组进行组合,假设每个组合均对应一个QR码;
S304:假设每个QR码的第三个寻像图形的位置;
S305:对第一个寻像图形组合对应的QR码进行解码,判断解码是否成功,
如果S305判断的结果为是,进行S306:返回QR码码值,
并进行S307:判断成功解码的QR码码值的个数是否为要求的解码个数,
如果S307判断的结果为是,进行S105:结束解码,
如果S307判断的结果为否,进行S309:判断已进行解码的组合的个数是否为总的组合个数,
如果S309判断的结果为是,进行所述步骤S1043,
如果S309判断的结果为否,进行S310:对下一个寻像图形组合对应的QR码进行解码,判断解码是否成功,
如果S310判断的结果为是,进行前述S306,
如果S310判断的结果为否,进行S308:记录未解码成功的组合,
并进行前述S309,
如果S305判断的结果为否,进行前述S308。
所述步骤S1042还包括记录未解码成功的寻像图形组合;所述QR码抗污损识别方法的步骤还包括,在进行步骤S1042后进行S1043;
S1043:每个寻像图形,分别解码:对步骤S1042记录的未解码成功的寻像图形组合进行筛选,找出与其它寻像图形构成的所有组合均未解码成功的寻像图形,将其归类为三类寻像图形,假设所有三类寻像图形均相应的对应一个QR码,其为假设QR码,再利用QR码的三个寻像图形的位置关系假设第二个寻像图形、第三个寻像图形的位置,然后进行解码,解码成功的,返回QR码码值。
所述图像为灰度图像,所述步骤S102中获取图像中所有可能的寻像图形的过程包括如下步骤:
S1021:通过边缘检测获取寻像图形的水平边缘点群:横向扫描灰度图像的每一行,对每一行进行移动均值滤波去噪,再进行二阶差分运算,得到可能的边缘点,并记录边缘点和边缘点之间的灰度变化情况;记录满足宽度比黑:白:黑:白:黑为1:1:3:1:1的边缘点作为可能的寻像图形的内边框和外边框的边缘点,再对边缘点进行分类组合得到水平边缘点群;
S1022:通过边缘检测获取寻像图形的垂直边缘点群:纵向扫描灰度图像的每一列,对每一列进行移动均值滤波去噪,再进行二阶差分运算,得到可能的边缘点,并记录边缘点和边缘点之间的灰度变化情况;记录满足宽度比黑:白:黑:白:黑为1:1:3:1:1的边缘点作为可能的寻像图形的内边框和外边框的边缘点,再对边缘点进行分类组合得到垂直边缘点群;
S1023:对水平边缘点群中心连接的线段和垂直边缘点群中心连接的线段相交的所有点群进行合并,并重新计算每个合并后的边缘点群的中心点,作为可能的寻像图形的中心,外边缘点围成的图形为寻像图形。
在所述步骤S1042中,利用QR码的三个寻像图形的位置关系假设第三个寻像图形的位置的方法为拟合直线,找交点的方法,包括如下步骤:
S10421,计算一组的两个所述二类寻像图形的中心之间的距离l,在其中一个二类寻像图形外边框上任取一点,计算这个点到另外一个二类寻像图形外边框四条直线的距离,这四个距离中只要有一个距离小于0.5l,则假设两个二类寻像图形位于QR码的同一侧,否则假设两个二类寻像图形位于QR码的对角线上的两个角上;
S10422,两个二类寻像图形位于假设QR码的同一侧时,假设第三个寻像图形的位置的方法包括如下步骤:
1)、先对每个寻像图形内边缘点和外边缘点分别拟合出4条直线,组成一个四边形内边框和一个四边形外边框;
2)、分别合并步骤1)中两个寻像图形拟合出的外边框直线和内边框直线:如果满足两条直线之间的距离小于5个像素且它们的夹角小于5°,则将两条直线上的点合并并重新拟合出一条新的直线;得到重新拟合的2条外边框线和2条内边框线。
3)、对一个寻像图形中没有合并的外边框直线和内边框直线之间黑色模块的中心线分别进行拟合,并向两个方向延伸扫描,判定QR码区域位于两个寻像图形中心连线的哪一侧,同时判断边界扫描终点位置,如果满足直线向外边框平移1个模块的位置,直线的外侧是白色边框,直线向内边框平移1个模块的位置,直线的外侧存在黑色模块,并且黑色模块数与白色模块数相差不超过25%,则这条直线为QR码的一条边界黑色模块中心线,将其向外边框平移0.5个模块构成QR码的一条边界E1;根据两个寻像图形的边缘点信息,确定模块尺寸、QR码的版本信息,进一步确定边界扫描终止位置D1;对另一个寻像图形中没有合并的外边框直线与内边框直线做同样的处理,找到另一条边界E2,并找到另一条边界E2的边界扫描终止位置D2;
4)、根据两条边界的扫描终止位置确定一条边界搜索直线L1,以一个边界扫描终止位置D2为起点,如果此点为污损点,沿此条边界搜索直线L1进行搜索,直到找到一个白色模块,以此白色模块为新的起点,将边界搜索直线L1向QR码内侧区域旋转5度,旋转后的边界搜索直线作为新的边界搜索直线L1,沿这条新的边界搜索直线L1继续向另一个边界扫描终止位置D1所在的方向搜索,直到找到一个黑色模块,然后对其进行边界追踪,如果边界点与边界搜索直线L1的距离为3个模块宽度以下,记录边界追踪得到的黑色点,如果边界点与边界搜索直线L1的距离大于3个模块宽度,终止追踪,作此终止点到边界搜索直线L1的垂线,找到此垂线与边界搜索直线L1的交点,并以此作为新的搜索起点,按前述方法搜索直到另一个边界扫描终止位置D1;根据边界追踪得到的黑色点,拟合出一条直线,作为QR码的第3条边界;第3条边界与另外两条边界的交点为QR码的两个角点,第三个寻像图形的位置在两个角点中的一个所在的位置;
S10423,两个二类寻像图形位于假设QR码的对角线上的两个角上时,假设第三个寻像图形的位置的方法包括如下步骤:
1)、先对每个寻像图形内边缘点和外边缘点分别拟合出4条直线,组成一个四边形内边框和一个四边形外边框;
2)、对每个寻像图形的外边框直线和内边框直线之间黑色模块的中心线分别进行拟合,将其向外边框平移0.5个模块构成QR码的一条边界,并进行延伸,两个二类寻像图形的前述边界相交,交点为可能的第三个寻像图形的角点,假设出第三个寻像图形的位置在假设QR码的另外两个角中的一个上,如果这个假设的第三个寻像图形的组合不能解码,则假设第三个寻像图形位于假设QR码的另一个角上;
对所述三个寻像图形一组进行组合前和/或两个二类寻像图形一组进行组合前,首先判断寻像图形的个数:
当寻像图形的个数为三个以上时,进行步骤S1041;
当寻像图形个数为两个时,直接进行步骤S1042;
当寻像图形个数为一个时,直接进行步骤S1043;
当寻像图形个数小于一个时,进行步骤S105;
当二类寻像图形为两个以上时,每两个寻像图形一组进行组合,再解码;
当二类寻像图形个数为一个时,进行步骤S1043;
当二类寻像图形个数小于一个时,进行步骤S105;
所述S1043中每个寻像图形,分别解码,包括如下步骤:
S401:对未解码成功的两个寻像图形构成的组合进行筛选,筛选出三类寻像图形;
S403:假设每个三类寻像图形均对应一个QR码,假设每个QR码的第二寻像图形、第三个寻像图形的位置;
S404:对第一个寻像图形对应的假设QR码进行解码,判断解码是否成功,
如果S404判断的结果为是,进行S405:返回QR码码值,
并进行S406:判断成功解码的QR码码值的个数是否为要求的解码个数,
如果S406判断的结果为是,进行S105:结束解码,
如果S406判断的结果为否,进行S408:判断已进行解码的三类寻像图形个数是否为总的三类寻像图形的个数,
如果S408判断的结果为是,进行所述步骤S105:结束解码,
如果S408判断的结果为否,进行S409,对下一个三类寻像图形对应的QR码进行解码,判断解码是否成功,
如果S409判断的结果为是,进行前述S05,
如果S409判断的结果为否,进行S407,记录未解码成功的三类寻像图形,
如果S404判断的结果为否,进行S407。
所述步骤S1043中利用QR码的三个寻像图形的位置关系假设第二个寻像图形、第三个寻像图形的位置的方法包括如下步骤:
1)、先对当前寻像图形内边缘点和外边缘点分别拟合出4条直线,组成一个四边形内边框和一个四边形外边框;
2)、根据寻像图形的边缘点信息确定模块尺寸信息;
3)、对外边框直线和内边框直线之间黑色模块的中心线分别拟合成一条直线,并沿着一条直线两个方向进行扫描,扫描长度最大为40模块宽度,最小长度14个模块宽度;如果满足该直线向一侧平移一个模块宽度位置是白色外边框,向相对的另一侧平移一个负的模块宽度是黑色模块,黑色模块数与白色模块数相差不到25%,则可以确定为QR码的一条边界,同时终止扫描。对其它拟合的直线进行同样处理,如果可以找到两条可能的边界,则认为是一个可能的QR码区域,并根据直线扫描的方向确定QR码位于两条边界围成的四个象限的哪一个象限;
4)、以一条边界为起始直线,这条边界长度为21个模块宽度,并以一个模块宽度向QR码区域内侧平移、扫描这条直线直到这条直线是一条白色外边框为止;如果能够找到白色外边框,按照S10422中的方法得到第三条边界,同样的方法通过另一条边界得到第4条边界;
5)、分别假设未知的两个寻像图形在QR码的另外3个角上,构成三种寻像图形组合。
具体实施方式
实施例1:
如图6所示,本发明公开了一种QR码抗污损识别方法,包括如下步骤:
S102:获取图像中所有可能的寻像图形;图像为灰度图像或彩色图像,获取彩色图像中寻像图形的步骤包括先对其进行灰度化处理,得到灰度图像;
S104:QR码的解码识别,包括如下步骤:
S1041:对灰度图像进行二值化处理,每三个寻像图形一组,解码:将所有可能的寻像图形每三个一组进行组合,并假设每一组寻像图形组合均相应的对应一个QR码,其为假设QR码,再对假设的QR码进行解码,解码成功的,返回QR码码值,未解码成功的,记录相应的寻像图形组合;
S1042:每两个二类寻像图形一组,解码:对步骤S1041记录的未解码成功的寻像图形组合进行筛选,找出与其它寻像图形构成的所有组合均未解码成功的寻像图形,将其归类为二类寻像图形,将所有二类寻像图形每两个一组进行组合,并假设每一组寻像图形组合均相应的对应一个QR码,其为假设QR码,再利用QR码的三个寻像图形的位置关系假设第三个寻像图形的位置,然后进行解码,解码成功的,返回QR码码值;
S105:结束解码。
其中步骤S102中获取图像中所有可能的寻像图形的过程可包括如下步骤:
S1021:通过边缘检测获取寻像图形的水平边缘点群;
S1022:通过边缘检测获取寻像图形的垂直边缘点群;
S1023:对水平边缘点群中心连接的线段和垂直边缘点群中心连接的线段相交的所有点群进行合并,并重新计算每个合并后的边缘点群的中心点,作为可能的寻像图形的中心,外边缘点围成的图形为寻像图形;
其中步骤S1021中获取水平边缘点群的方法可包括步骤:横向扫描灰度图像的每一行,对每一行进行移动均值滤波去噪,再进行二阶差分运算,得到可能的边缘点,并记录边缘点和边缘点之间的灰度变化情况;记录满足宽度比黑:白:黑:白:黑为1:1:3:1:1的边缘点作为可能的寻像图形的内边框和外边框的边缘点,再对边缘点进行分类组合得到水平边缘点群;类似的,步骤S1022中获取垂直边缘点群的步骤包括:纵向扫描灰度图像的每一列,对每一列进行移动均值滤波去噪,再进行二阶差分运算,得到可能的边缘点,并记录边缘点和边缘点之间的灰度变化情况;记录满足宽度比黑:白:黑:白:黑为1:1:3:1:1的边缘点作为可能的寻像图形的内边框和外边框的边缘点,再对边缘点进行分类组合得到垂直边缘点群。
其中步骤S1042中,利用QR码的三个寻像图形的位置关系假设第三个寻像图形的位置的方法可为拟合直线,找交点的方法,可为如下方法:
方法A:
在步骤S1042中,利用QR码的三个寻像图形的位置关系假设第三个寻像图形的位置的方法为拟合直线,找交点的方法,包括如下步骤:
S10421,计算一组的两个二类寻像图形的中心之间的距离l,在其中一个二类寻像图形外边框上任取一点,计算这个点到另外一个二类寻像图形外边框四条直线的距离,这四个距离中只要有一个距离小于0.5l,则假设两个二类寻像图形位于QR码的同一侧,否则假设两个二类寻像图形位于QR码的对角线上的两个角上;
如图9所示,S10422,两个二类寻像图形位于假设QR码的同一侧时,假设第三个寻像图形的位置的方法包括如下步骤:
1)、先对每个寻像图形内边缘点和外边缘点分别拟合出4条直线,组成一个四边形内边框和一个四边形外边框;
2)、分别合并步骤1)中两个寻像图形拟合出的外边框直线和内边框直线:如果满足两条直线之间的距离小于5个像素且它们的夹角小于5°,则将两条直线上的点合并并重新拟合出一条新的直线;得到重新拟合的2条外边框线和2条内边框线。
根据QR码中两个寻像图形的边缘点信息,可以确定:(1)、模块尺寸;(2)QR码的版本信息,也即是当前QR码宽、高方向模块数。
3)、对一个寻像图形中没有合并的外边框直线和内边框直线之间黑色模块的中心线分别进行拟合,并向两个方向延伸扫描,判定QR码区域位于两个寻像图形中心连线的哪一侧,同时判断边界扫描终点位置,如果满足直线向外边框平移1个模块的位置,直线的外侧是白色边框,直线向内边框平移1个模块的位置,直线的外侧存在黑色模块,并且黑色模块数与白色模块数相差不超过25%,则这条直线为QR码的一条边界黑色模块中心线,将其向外边框平移0.5个模块构成QR码的一条边界E3;根据两个寻像图形的边缘点信息,确定模块尺寸、QR码的版本信息,进一步确定边界扫描终止位置D1;对另一个寻像图形中没有合并的外边框直线与内边框直线做同样的处理,找到另一条边界E4,并找到另一条边界扫描的终止位置D2;
4)、根据D1、D2确定一条直线L1,以D2为起点,如果此点为污损点,沿此条直线搜索,直到找到一个白色模块,以此白色模块为新的起点,将直线向QR码内侧区域旋转5度,沿这条新的直线继续向D1所在的方向搜索,直到找到一个黑色模块,然后对其进行边界追踪,如果边界点与L1的距离为3个模块宽度以下,记录边界追踪得到的黑色点,如果边界点与L1的距离大于3个模块宽度,终止追踪,作此终止点到L1的垂线,找到此垂线与L1的交点,并以此作为新的搜索起点,按前述方法搜索直到另一个终止位置D1;根据边界追踪得到的黑色点,拟合出一条直线,作为QR码的第3条边界;第3条边界与另外两条边界的交点为QR码的两个角点,第三个寻像图形的位置在两个角点中的一个所在的位置;
S10423,两个二类寻像图形位于假设QR码的对角线上的两个角上时,假设第三个寻像图形的位置的方法包括如下步骤:
1)、先对每个寻像图形内边缘点和外边缘点分别拟合出4条直线,组成一个四边形内边框和一个四边形外边框;
2)、对每个寻像图形的外边框直线和内边框直线之间黑色模块的中心线分别进行拟合,将其向外边框平移0.5个模块构成QR码的一条边界,并进行延伸,两个二类寻像图形的前述边界相交,交点为可能的第三个寻像图形的角点,假设出第三个寻像图形的位置在假设QR码的另外两个角中的一个上,如果这个假设的第三个寻像图形的组合不能解码,则假设第三个寻像图形位于假设QR码的另一个角上;
后面述及的根据一个三类寻像图形假设QR码中另外两个寻像图形的位置时,也可以通过这种方法先找出两条边界。
实施例2:
本实施例在实施例1的基础上进行了改进,改进了S1041中每三个寻像图形一组,解码的过程。
三个寻像图形组合解码的过程包括如下步骤:
S201:每三个寻像图形一组进行组合,假设每个组合均对应一个QR码;
S202:对第一个寻像图形组合对应的QR码进行解码,判断解码是否成功,
如果S202判断的结果为是,进行S203:返回QR码码值,
并进行S206:判断已进行解码的组合的个数是否为总的组合个数,
如果S206判断的结果为是,进行步骤S1042,
如果S206判断的结果为否,进行S207,对下一个寻像图形组合对应的QR码进行解码,判断解码是否成功,
如果S207判断的结果为是,进行前述S203,
如果S207判断的结果为否,进行S205:记录未解码的组合,
并进行前述步骤S206,
如果S202判断的结果为否,进行前述步骤S205;
各步骤之间的流程可以参考图2。
实施例3:
如图2所示,本实施例在实施例2的基础上增加了成功解码个数是否为要求的解码个数的判断过程,三个寻像图形组合解码的过程包括如下步骤:
对假设的QR码进行解码前设置要求成功解码的QR码个数,为要求的解码个数,解码过程与实施例2的区别如下:
如果S202判断的结果为是,进行S203: 返回QR码码值,并进行S204:判断成功解码的QR码码值的个数是否为要求的解码个数,
如果S204判断的结果为是,进行S105:结束解码,
如果S204判断的结果为否,才进行S206:判断已进行解码的组合的个数是否为总的组合个数。
实施例4:
本实施例在实施例1的基础上进行了改进,改进了S1042中每两个二类寻像图形一组,解码的过程。
两个二类寻像图形组合解码的过程包括如下步骤:
S301:对未解码成功的三个寻像图形构成的组合进行筛选,筛选出二类寻像图形;
S303:每两个二类寻像图形一组进行组合,假设每个组合均对应一个QR码;
S304:假设每个QR码的第三个寻像图形的位置;
S305:对第一个寻像图形组合对应的QR码进行解码,判断解码是否成功,
如果S305判断的结果为是,进行S306:返回QR码码值,
并进行S309:判断已进行解码的组合的个数是否为总的组合个数,
如果S309判断的结果为是,进行步骤S105,
如果S309判断的结果为否,进行S310:对下一个寻像图形组合对应的QR码进行解码,判断解码是否成功,
如果S310判断的结果为是,进行前述S306,
如果S310判断的结果为否,进行前述S309,
如果S305判断的结果为否,进行前述S309;
各步骤之间的流程可以参考图5。
实施例5:
本实施例在实施例4的基础上增加了成功解码个数是否为要求的解码个数的判断过程,两个二类寻像图形组合解码的过程包括如下步骤:
对假设的QR码进行解码前设置要求成功解码的QR码个数,为要求的解码个数,解码过程与实施例4的区别如下:
如果S305判断的结果为是,进行S306:返回QR码码值,并进行S307:判断成功解码的QR码码值的个数是否为要求的解码个数,
如果S307判断的结果为是,进行S105:结束解码,
如果S307判断的结果为否,才进行S309:判断已进行解码的组合的个数是否为总的组合个数;
各步骤之间的流程可以参考图5。
实施例6:
如图7所示,本实施例与实施例1-5的区别在于:在步骤S1042中增加了记录未解码成功的寻像图形组合的步骤,在步骤S1042后增加进行步骤S1043,执行步骤S1042后不跳转到结束,而是跳转到步骤S1043;
S1043包括如下步骤:每个寻像图形,分别解码:对步骤S1042记录的未解码成功的寻像图形组合进行筛选,找出与其它寻像图形构成的所有组合均未解码成功的寻像图形,将其归类为三类寻像图形,假设所有三类寻像图形均相应的对应一个QR码,其为假设QR码,再利用QR码的三个寻像图形的位置关系假设第二个寻像图形、第三个寻像图形的位置,然后进行解码,解码成功的,返回QR码码值。
其中步骤S1043中,利用QR码的三个寻像图形的位置关系假设第二个寻像图形、第三个寻像图形的位置的方法包括如下步骤:
S401:对未解码成功的两个寻像图形构成的组合进行筛选,筛选出三类寻像图形;
S403:假设每个三类寻像图形均对应一个QR码,假设每个QR码的第二寻像图形、第三个寻像图形的位置;
步骤S403的方法可包括如下步骤:
1)、先对当前寻像图形内边缘点和外边缘点分别拟合出4条直线,组成一个四边形内边框和一个四边形外边框;
2)、根据寻像图形的边缘点信息确定模块尺寸信息;
3)、对外边框直线和内边框直线之间黑色模块的中心线分别进行拟合成一条直线,并沿着这条直线两个方向进行扫描,扫描长度最大为40模块宽度,最小长度14个模块宽度;如果满足该直线一侧平移一个模块宽度位置是白色外边框,另一侧平移一个负的模块宽度黑色模块数与白色模块数相差不到25%,则可以确定为QR码的一条边界,同时终止扫描。如果可以找到两条可能的边界,分别为边界E1、边界E2,则认为是一个可能的QR码区域,并根据直线扫描的方向确定QR码位于边界E1、边界E2围成的四个象限的哪一个象限;
4)、以边界E1为起始直线,边界E1长度为21个模块宽度,并以一个模块宽度向QR码区域内侧平移、扫描这条直线直到这条直线是一条白色外边框为止;如果能够找到白色外边框,按照S10422中的方法得到第三条边界。同样的办法得到第4条边界;
5)、分别假设未知两个寻像图形在QR码的另外3个角上,有三种组合,寻找可能的成功解码组合。
S404:对第一个寻像图形对应的假设QR码进行解码,判断解码是否成功,
如果S404判断的结果为是,进行S405:返回QR码码值,
并进行S406:判断成功解码的QR码码值的个数是否为要求的解码个数,
如果S406判断的结果为是,进行S105:结束解码,
如果S406判断的结果为否,进行S408:判断已进行解码的三类寻像图形个数是否为总的三类寻像图形的个数,
如果S408判断的结果为是,进行步骤S105:结束解码,
如果S408判断的结果为否,进行S409,对下一个三类寻像图形对应的QR码进行解码,判断解码是否成功,
如果S409判断的结果为是,进行前述S05,
如果S409判断的结果为否,进行S407,记录未解码成功的三类寻像图形,
如果S404判断的结果为否,进行S407;
各步骤之间的流程可以参考图4。
实施例7:
本实施例与实施例1-7的区别在于:为提高解码效率,对三个寻像图形一组进行组合前和/或两个二类寻像图形一组进行组合前,首先判断寻像图形的个数是否为不小于一个组合需要的寻像图形的个数,在对第三类寻像图形进行解码时,在假设第二寻像图形、第三寻像图形的位置前,也对其个数是否不小于1进行判断:
三个寻像图形一组进行组合前进行如下判断:
当寻像图形的个数为三个以上时,进行步骤S1041;
当寻像图形个数为两个时,直接进行步骤S1042,此时的两个寻像图形也归类为二类寻像图形;
当寻像图形个数为一个时,直接进行步骤S1043,此时的两个寻像图形也归类为三类寻像图形;如果为提高准确度和效率,不进行步骤S1043,则在寻像图形个数为一个以下时,跳转到步骤S105结束解码;
当寻像图形个数小于1个时,进行步骤S105,结束解码;
两个二类寻像图形一组进行组合前进行如下判断:
当二类寻像图形个数为两个以上时,每两个寻像图形一组进行组合,再解码;
当二类寻像图形个数为一个时,进行步骤S1043;如果为提高准确度和效率,不进行步骤S1043,则在二类寻像图形个数为一个以下时,跳转到步骤S105结束解码;
当二类寻像图形个数小于一个时,进行步骤S105,结束解码;
第三类寻像图形进行解码时,在假设第二寻像图形、第三寻像图形的位置前进行如下判断:
当三类寻像图形个数为一个以上时,假设第二寻像图形、第三寻像图形的位置,再解码;
当三类寻像图形个数小于一个时,进行步骤S105,结束解码。
对应附图进行说明:
如图1所示,其是在图7的基础上增加了进行步骤S1041前判断寻像图形个数的过程,即在进行步骤S102后,先进行S103:判断寻像图形的个数是否为3个以上,
如果判断的结果为是才进行步骤S1041,
如果判断的结果为否,则判断寻像图形的个数是否为2个以上,
如果判断结果为是,两个寻像图形组合解码,
如果判断结果为否,进行步骤S1043;
步骤S1042中每两个寻像图形进行组合前,也进行前述寻像图形的个数是否为2个以上的判断。
如图3所示,其是在实施例6的基础上增加了进行步骤S303前判断二类寻像图形个数的过程,即在进行步骤S301后,先进行S302:判断寻像图形的个数是否为2个以上,
如果判断的结果为是才进行步骤S303,
如果判断的结果为否,到图1的步骤S1043。
如图4所示,其是在实施例7的基础上增加了进行步骤S403前判断三类寻像图形个数的过程,即在进行步骤S401后,先进行S402:判断寻像图形的个数是否为1个以上,
如果判断的结果为是才进行步骤S403,
如果判断的结果为否,到图1的步骤S105,结束解码。
如图5所示,其是在实施例4、实施例5的基础上增加了进行步骤S303前判断二类寻像图形个数的过程,即在进行步骤S301后,先进行S302:判断寻像图形的个数是否为2个以上,
如果判断的结果为是才进行步骤S303,
如果判断的结果为否,到图1的步骤S105,结束解码。
实施例8:
本实施例在实施例1的基础上,以一个含有一个以上的QR码的灰度图像为例说明其解码过程:
首先获取图像中所有可能的寻像图形,如图8所示,平面内有A、B、C、D四枚QR码图案,并识别找到7寻像图形,分别为寻像图形1、寻像图形2、寻像图形3、寻像图形4、寻像图形5、寻像图形6、寻像图形7,为了便于表示其组合,分别用(1)、(2)、(3)、(4)、(5)、(6)、(7)来表示这7个寻像图形,对该三枚QR码的解码方式按照下列时序步骤进行:
步骤a:将6个寻像图形每三个一组进行组合,例如(1)(2)(3)、(1)(2)(4)、(1)(2)(5)、(1)(2)(6)、(1)(2)(7)……,并假设每一组均对应一个QR码,然后对每一个假设的QR码进行解码,解码成功的返回QR码码值,未解码成功的,记录该寻像图形组合,如图8,筛选出哪些寻像图形在其构成的QR码均解码失败,归类为二类寻像图形,所有组合中只有组合(1)(2)(5)构成的码图A解码成功,而包含有(3)、(4)、(6)或(7)的QR码图案均没有解码成功。
步骤b:将寻像图形(3)、(4)、(6)、(7)每两个一组进行排列组合,例如(3)(4)、(3)(6)、(3)(7)……,并假设每一组均构成QR码图案,再利用QR码的三个寻像图形的位置关系找到第三个寻像图形的位置,确定QR码的位置;
然后将上述假设的QR码进行解码,返回解码成功的QR码码值,同时记录未解码成功的组合,筛选出哪些寻像图形在其构成的所有假设的QR码中均解码失败,归类为三类寻像图形,由图8可知,此时只有当寻像图形(3)、(4)组合,并且(3)为左上角、(4)为右上角时,码图B才可被成功解码,而寻像图形(6)、(7)构成的QR码仍没有解码成功。
步骤c:解码过程结束;此种只解码到两个二类寻像图形组合的情况,可以不记录两个寻像图形构成的未解码成功的组合;
或者进行三类寻像图形的解码(对应码图C、D),返回解码成功的QR码码值,完成三类寻像图形的解码后结束解码。
而为提高检测效率,优选在步骤a之前首先判断寻像图形的个数:1)当寻像图形的个数为三个以上时,进行步骤a;2)当寻像图形个数为两个时,直接进行步骤b;3)当寻像图形个数为一个时,进行C;4)当寻像图形个数小于1个时,结束解码;因为寻像图形为7个【(1)、(2)、(3)、(4)、(5)、(6)、(7)】,大于3,所以进行步骤a。
优选在步骤b之前首先判断二类寻像图形的个数:1)当二类寻像图形的个数为两个以上时,进行步骤b;2)当寻像图形个数为一个时,直接进行步骤c;3)当寻像图形个数为小于1个时,结束解码;因为二类寻像图形为4个【(3)、(4)、(6)、(7)】,大于2,所以进行步骤b。
优选在步骤c之前首先判断三类寻像图形的个数:1)当二类寻像图形的个数为一个以上时,进行步骤c;2)当寻像图形个数小于一个时,结束解码。因为三类寻像图形为2个【(6)、(7)】,大于1,所以进行步骤c。
也可优选有一个成功解码的组合时,对包含这个组合中的至少一个寻像图形对应的其它组合,不进行解码。如进行三个寻像图形组合解码时,如果(1)(2)(5)已经成功解码,则包括(1)、(2)或(5)中任意一个或者多个的其它组合,如(1)(2)(6)、(1)(2)(7)、(5)(6)(7)等,如果还没有进行解码,则不必进行解码。