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

文档序号:8339947阅读:来源:国知局
边界线; S1033:对第一二维码区域进行解码,若解码成功,则跳转到步骤S106,若解码失败,则跳转到步骤S104 ;
步骤S104包括如下步骤:
S1041:假设第二二维码区域位置:找出S1031拟合的边界直线中,对应的连通的边界点个数最多的3条边界直线,该3条边界直线为第二边界线,将该3条第二边界直线按边界追踪的顺序进行排序,假设存在真正的第4条第二边界直线,使得4条第二边界直线围成的区域为第二二维码区域,真正的第4条第二边界直线记为L4';图4示出了步骤S104方法。
[0011]S1042:确定假设的第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的距离由近及远,依次记为Μ1、Μ2、Μ3、…至M η;按Μ1、Μ2、Μ3、…至M η的顺序进彳丁扫描;
510434:当F=I时,在过一个扫描起始点且平行于y轴的直线上,从该扫描起始点朝向靠近L3的方向上进行扫描,找到一个与寻像图形颜色相同的点时或扫描的点到L4的距离多第一阀值时,终止这条直线上的扫描,将此与寻像图形颜色相同的点记录为真正边界点,
当F=O时,在过一个扫描起始点且平行于X轴的直线上,从该扫描起始点朝向靠近L3的方向上进行扫描,找到一个与寻像图形颜色相同的点时或扫描的点到L4的距离多第一阀值时,终止这条直线上的扫描,将此与寻像图形颜色相同的点记录为真正边界点,
找出以Ml、M2、M3、…和M η为扫描起始点的所有真正边界点,拟合出一条直线,该直线即为L4';根据真正边界点,拟合L4'的方法可采用霍夫变换或者最小二乘法。
[0012]二维码为真知码或Data Matrix码。
[0013]实施例2
如图2所示,本实施例在实施例1的基础上进行了如下改进:
在实施例1的步骤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 ;图5示出了步骤S1053找出第三二维码区域的方法;
找出与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的距离由近及远,依次记为Tl、T2、T3、…至T η ;按Tl、T2、T3、…至T η的顺序进彳T扫描;
当F=I时,在过一个扫描起始点且平行于y轴的直线上,从该扫描起始点朝向靠近Wl的方向上进行扫描,找到一个与寻像图形颜色相同的点时或扫描的点到W3的距离多第一阀值时,终止这条直线上的扫描,将此与寻像图形颜色相同的点记录为真正边界点;
当F=O时,在过一个扫描起始点且平行于X轴的直线上,从该扫描起始点朝向靠近Wl的方向上进行扫描,找到一个与寻像图形颜色相同的点时或扫描的点到W3的距离多第一阀值时,终止这条直线上的扫描,将此与寻像图形颜色相同的点记录为真正边界点;
找出以Tl、T2、T3、…和T η为扫描起始点的所有真正边界点,拟合出一条直线,该直线即为W3';
S10533:确定 W4':
计算Ql和Q3的纵坐标之差的绝对值I Ay I和横坐标之差的绝对值I Δχ I,并且比较大小,比较结果记为F,若丨Ay丨彡丨Δχ I,则F=l,否则,F=O ;
在W4上,以Ql为起始点、Q3为终点,隔1-6个点取一个点作为扫描起始点,将这些点按其到Wl的距离由近及远,依次记为Jl、J2、J3、…至Jn ;按Jl、J2、J3、…至Jn的顺序进行扫描;
当F=I时,在过一个扫描起始点且平行于y轴的直线上,从该扫描起始点朝向靠近W2的方向上进行扫描,找到一个与寻像图形颜色相同的点时或扫描的点到W4的距离多第一阀值时,终止这条直线上的扫描,将此与寻像图形颜色相同的点记录为真正边界点;
当F=O时,在过一个扫描起始点且平行于X轴的直线上,从该扫描起始点朝向靠近W2的方向上进行扫描,找到一个与寻像图形颜色相同的点时或扫描的点到W4的距离多第一阀值时,终止这条直线上的扫描,将此与寻像图形颜色相同的点记录为真正边界点;
找出以J1、J2、J3、…和Jn为扫描起始点的所有真正边界点,拟合出一条直线,该直线即为W4';
S10534:对第三二维码区域进行解码,若解码成功,则跳转到步骤S106,若解码失败,则跳转到步骤S107 ;
其中,步骤S1054包括如下步骤:
510541:找出与Wl对应的边界点中,位于Wl延伸方向两端的两个边界点,找出与W2对应的边界点中,位于W2延伸方向两端的两个边界点,并将四个边界点按边界追踪的顺序记为G1、G2、G3至G4,G1和G2为Wl上的点,G3和G4为W2上的点;图6示出了步骤S1054找出第三二维码区域的方法;
510542:假设G2和G3,Gl和G4两组点中的任意一组点为直线W3上的点,进行解码,若解码成功,则跳转到步骤S106,若解码失败,则假设两组点中余下的那一组点为直线W3上的点,进行解码,若解码成功,跳转到步骤S106,若解码失败,跳转到步骤S107 ;
其中,步骤S10542中,假设G2和G3为直线上的点和假设Gl和G4为直线W3上的点,这两种情况的解码步骤相同;以G2和G3为直线W3上的点,进行解码,包括如下步骤:
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1