一种二维码抗损坏解码方法

文档序号:8339947阅读:689来源:国知局
一种二维码抗损坏解码方法
【技术领域】
[0001]本发明涉及数据识别领域,具体说是一种二维码抗损坏解码方法。
【背景技术】
[0002]目前,二维码解码的方法一般为:先获取一个连通的方形区域,然后顺序估计出方形区域的4条边,以此4条边作为二维码的边界,进行解码;或者采用多边形近似来估计出二维码的4条边界,进行解码。前一种方法存在识别能力差,有一条边损坏便不能解码的缺点,后一种方法同样存在识别能力差的缺点,存在边界损坏时,多边形近似容易出错,造成不能解码。

【发明内容】

[0003]本发明的任务就是要针对上述技术问题,提供一种识别能力强,能够对污损、破损的二维码进行解码的二维码抗损坏解码方法。
[0004]本发明通过下述技术方案来实现:
一种二维码抗损坏解码方法,其特征在于:包括如下步骤:
5101:开始;
5102:获取图像,判断图像中是否存在二维码,若存在二维码,跳转到步骤S103,若不存在二维码,则重新获取图像;
5103:假设第一二维码区域,进行解码,若解码成功,则跳转到步骤S106,若解码失败,则跳转到步骤S107 ;
5104:假设第二二维码区域,进行解码,若解码成功,则跳转到步骤S106,若解码失败,则跳转到步骤S107 ;
5106:输出解码结果;
5107:结束;
其中步骤S102包括如下步骤:
51021:获取图像,并对图像进行灰度化、二值化;
51022:以二值化图像的左下角为坐标原点,水平方向为X轴,竖直方向为y轴,建立平面直角坐标系;
51023:找出与可能的二维码区域颜色相同的区域,在该区域逐行扫描图像,找到第一个边缘点,以此点为起始点,进行边界跟踪,找出边界点,若连通的边界点的个数多168,则假设这些连通的边界点围成一个可能的二维码区域,跳转到步骤S103,否则跳转到S1021 ;其中,逐行扫描图像时,能够确定可能的二维码区域的颜色表示:如果扫描线上扫描到起始点时,颜色由白变黑,则可能的二维码区域为正常二维码颜色表示,即黑色对应1,白色对应0,设定可能的二维码区域颜色为黑色;否则为反转颜色表示,即白色对应1,黑色对应0,设定可能的二维码区域颜色为白色;
步骤S103包括如下步骤: 51031:根据步骤S1023找出的边界点,拟合边界直线,并将拟合的边界直线按边界追踪的顺序进行排序,相邻边界直线相交的点连接成的首尾相接线段为边界线段;
51032:找出最长的4段边界线段,该4段最长的边界线段对应的4条边界直线为第一边界线,假设4条第一边界线围成的区域为第一二维码区域;
51033:对第一二维码区域进行解码,若解码成功,则跳转到步骤S106,若解码失败,则跳转到步骤S104 ;
步骤S104包括如下步骤:
51041:假设第二二维码区域位置:找出S1031拟合的边界直线中,对应的连通的边界点个数最多的3条边界直线,该3条边界直线为第二边界线,将该3条第二边界直线按边界追踪的顺序进行排序,假设存在真正的第4条第二边界直线,使得4条第二边界直线围成的区域为第二二维码区域,真正的第4条第二边界直线记为Lf ;
51042:确定假设的第4条第二边界直线,假设的第4条第二边界直线记为L4 ;
51043:确定真正的第4条第二边界直线;
51044:对第二二维码区域进行解码,若解码成功,则跳转到步骤S106,若解码失败,则跳转到步骤S107 ;
其中步骤S1042,包括如下步骤:
510421:计算步骤S1041排序的3条第二边界直线中的任意两条相邻直线的交点,如果有一对相邻直线的交点在与寻像图形颜色相同的区域之外或者不存在交点,这对相邻直线按照已经排序的顺序记为LI和L2,3条第二边界直线中余下的那一条直线记为L3,则L4分别与LI和L2相交,且L4与L3平行;
510422:找出LI上、L2上以及LI和L2之间的距离L3最远的边界点,在过该最远边界点且平行于LI或L2的直线上,以该最远边界点为开始点,沿远离L3的方向进行扫描,若连续扫描到的与寻像图形颜色不同的点的个数多5,则假设这一最远边界点为L4上的点,确定L4 ;
步骤S1043包括如下步骤:
510431:计算L4与L1、L2的交点,分别记为Pl、P2 ;
510432:计算Pl和P2的纵坐标之差的绝对值I Ay |和横坐标之差的绝对值I Δχ I,并且比较大小,比较结果记为F,若I Ay I彡I Δχ I,则F=I,否则,F=O ;
510433:在L4上,以Pl为起始点、Ρ2为终点,隔1_6个点取一个点作为扫描起始点,将这些点按其到Pl的距离由近及远,依次记为Ml、Μ2、…至M η^Μ1、Μ2、…至M η的顺序进行扫描;
510434:当F=I时,在过一个扫描起始点且平行于y轴的直线上,从该扫描起始点朝向靠近L3的方向上进行扫描,找到一个与寻像图形颜色相同的点时或扫描的点到L4的距离多第一阀值时,终止这条直线上的扫描,将此与寻像图形颜色相同的点记录为真正边界点,
当F=O时,在过一个扫描起始点且平行于X轴的直线上,从该扫描起始点朝向靠近L3的方向上进行扫描,找到一个与寻像图形颜色相同的点时或扫描的点到L4的距离多第一阀值时,终止这条直线上的扫描,将此与寻像图形颜色相同的点记录为真正边界点,
找出以M1、M2、…和M η为扫描起始点的所有真正边界点,拟合出一条直线,该直线即为 L4'; 其中第一阀值为4-12个像素;
二维码为真知码或Data Matrix码。
[0005]其中,根据真正边界点,拟合所述L4'的方法可采用霍夫变换法或者最小二乘法。
[0006]本发明进一步的改进方案包括:
所述二维码抗损坏解码方法还包括:在所述步骤S1044解码失败时进行步骤S105 ;
S105:假设第三二维码区域,进行解码,若解码成功,则跳转到所述步骤S106,若解码失败,则跳转到所述步骤S107 ;
其中,步骤S105包括如下步骤:
51051:找出所述步骤S1031拟合的边界直线中,对应的连通的边界点最多的2条边界直线,并将该2条边界直线按边界追踪的顺序进行排序,记为Wl和W2,该2条边界直线为第三边界线,假设存在真正的第3、4条第三边界直线,使得4条第三边界直线围成的区域为第三二维码区域,真正的第3、4条第三边界直线记为W3'、W4';
51052:确定假设的第3、4条第三边界直线与Wl和W2之间的关系,假设的第3、4条第三边界直线记为W3、W4:
计算出Wl和W2的交点,并判断交点位置:如果此交点在与寻像图形颜色相同的区域之上,则W3与Wl平行,且W3与W2相交,W4与W2平行,且W4与Wl相交,跳转到步骤S1053 ;如果此交点在与寻像图形颜色相同的区域之外或者不存在交点,则W3和W4平行,且W3分别与Wl和W2相交,W4分别与Wl和W2相交,跳转到步骤S1054 ;
51053:W3与Wl平行,且W3与W2相交,W4与W2平行,且W4与Wl相交时,确定W3 ^、W4r,进行解码;
51054:W3和W4平行,且W3分别与Wl和W2相交,W4分别与Wl和W2相交时,确定W3丨、W4r,进行解码;
其中,步骤S1053包括如下步骤:
S10531:确定 W3 和 W4:
找出与Wl对应的边界点中,距离W2最远的边界点,在过该最远边界点且平行于Wl的直线上,以该最远边界点为开始点,沿远离W2的方向进行扫描,若连续扫描到的与寻像图形颜色不同的点的个数彡5,则假设这一最远边界点为W4上的点,确定W4,W4与Wl的交点记为Ql ;
找出与W2对应的边界点中,距离Wl最远的边界点,在过该最远边界点且平行于W2的直线上,以该最远边界点为开始点,沿远离Wl的方向进行扫描,若连续扫描到的与寻像图形颜色不同的点的个数彡5,则假设这一最远边界点为W3上的点,确定W3,W3与W2的交点记为Q2 ;
计算W3和W4的交点,记为Q3 ;
S10532:确定 W3':
计算Q2和Q3的纵坐标之差的绝对值I Ay I和横坐标之差的绝对值I Δχ I,并且比较大小,比较结果记为F,若丨Ay丨彡丨Δχ I,则F=l,否则,F=O ;
在W3上,以Q2为起始点、Q3为终点,隔1-6个点取一个点作为扫描起始点,将这些点按其到W2的距离由近及远,依次记为T1、T2、…至T η;按Τ1、Τ2、…至T η的顺序进行扫描; 当F=I时,在过一个扫描起始点且平行于Y轴的直线上,从该扫描起始点朝向靠近Wl的方向上进行扫描,找到一个与寻像图形颜色相同的点时或扫描的点到W3的距离多第一阀值时,终止这条直线上的扫描,将此与寻像图形颜色相同的点记录为真正边界点;
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1