发明名称 一种二维码抗损坏解码方法
摘要 本发明公开了一种二维码抗损坏解码方法,包括如下步骤:开始;获取图像,判断图像中是否存在二维码,若存在二维码,假设第一二维码区域,若不存在二维码,则重新获取图像;假设第一二维码区域,进行解码,若解码成功,则输出结果,若解码失败,则假设第二二维码区域;假设第二二维码区域,进行解码,若解码成功,则输出结果,若解码失败,则结束;二维码为真知码或Data Matrix码。该二维码抗损坏解码方法具有识别能力强,能够对寻像图形污损的二维码图像进行解码的优点。
申请公布号 CN104657700A 申请公布日期 2015.05.27
申请号 CN201510131513.0 申请日期 2015.03.25
申请人 广州宽度信息技术有限公司 发明人 吴秋蓉
分类号 G06K7/10(2006.01)I 主分类号 G06K7/10(2006.01)I
代理机构 广州市一新专利商标事务所有限公司 44220 代理人 王德祥
主权项 一种二维码抗损坏解码方法,其特征在于:包括如下步骤:S101:开始;S102:获取图像,判断图像中是否存在二维码,若存在二维码,跳转到步骤S103,若不存在二维码,则重新获取图像;S103:假设第一二维码区域,进行解码,若解码成功,则跳转到步骤S106,若解码失败,则跳转到步骤S107;S104:假设第二二维码区域,进行解码,若解码成功,则跳转到步骤S106,若解码失败,则跳转到步骤S107;S106:输出解码结果;S107:结束;其中步骤S102包括如下步骤:S1021:获取图像,并对图像进行灰度化、二值化;S1022:以二值化图像的左下角为坐标原点,水平方向为x轴,竖直方向为y轴,建立平面直角坐标系;S1023:找出与可能的二维码区域颜色相同的区域,在该区域逐行扫描图像,找到第一个边缘点,以此点为起始点,进行边界跟踪,找出边界点,若连通的边界点的个数≥168,则假设这些连通的边界点围成一个可能的二维码区域,跳转到步骤S103,否则跳转到S1021;其中,逐行扫描图像时,能够确定可能的二维码区域的颜色表示:如果扫描线上扫描到起始点时,颜色由白变黑,则可能的二维码区域为正常二维码颜色表示,即黑色对应1,白色对应0,设定可能的二维码区域颜色为黑色;否则为反转颜色表示,即白色对应1,黑色对应0,设定可能的二维码区域颜色为白色;步骤S103包括如下步骤:S1031:根据步骤S1023找出的边界点,拟合边界直线,并将拟合的边界直线按边界追踪的顺序进行排序,相邻边界直线相交的点连接成的首尾相接线段为边界线段;S1032:找出最长的4段边界线段,该4段最长的边界线段对应的4条边界直线为第一边界线,假设4条第一边界线围成的区域为第一二维码区域;S1033:对第一二维码区域进行解码,若解码成功,则跳转到步骤S106,若解码失败,则跳转到步骤S104;步骤S104包括如下步骤:S1041:假设第二二维码区域位置:找出S1031拟合的边界直线中,对应的连通的边界点个数最多的3条边界直线,该3条边界直线为第二边界线,将该3条第二边界直线按边界追踪的顺序进行排序,假设存在真正的第4条第二边界直线,使得4条第二边界直线围成的区域为第二二维码区域,真正的第4条第二边界直线记为L4′;S1042:确定假设的第4条第二边界直线,假设的第4条第二边界直线记为L4;S1043:确定真正的第4条第二边界直线;S1044:对第二二维码区域进行解码,若解码成功,则跳转到步骤S106,若解码失败,则跳转到步骤S107;其中步骤S1042,包括如下步骤:S10421:计算步骤S1041排序的3条第二边界直线中的任意两条相邻直线的交点,如果有一对相邻直线的交点在与寻像图形颜色相同的区域之外或者不存在交点,这对相邻直线按照已经排序的顺序记为L1和L2,3条第二边界直线中余下的那一条直线记为L3,则L4分别与L1和L2相交,且L4与L3平行;S10422:找出L1上、L2上以及L1和L2之间的距离L3最远的边界点,在过该最远边界点且平行于L1或L2的直线上,以该最远边界点为开始点,沿远离L3的方向进行扫描,若连续扫描到的与寻像图形颜色不同的点的个数≥5,则假设这一最远边界点为L4上的点,确定L4;步骤S1043包括如下步骤:S10431:计算L4与L1、L2的交点,分别记为P1、P2;S10432:计算P1和P2的纵坐标之差的绝对值│Δy│和横坐标之差的绝对值│Δx│,并且比较大小,比较结果记为F,若│Δy│≤│Δx│,则F=1,否则,F=0;S10433:在L4上,以P1为起始点、P2为终点,隔1‑6个点取一个点作为扫描起始点,将这些点按其到P1的距离由近及远,依次记为M1、M2、…至M n;按M1、M2、…至M n的顺序进行扫描;S10434:当F=1时,在过一个扫描起始点且平行于y轴的直线上,从该扫描起始点朝向靠近L3的方向上进行扫描,找到一个与寻像图形颜色相同的点时或扫描的点到L4的距离≥第一阀值时,终止这条直线上的扫描,将此与寻像图形颜色相同的点记录为真正边界点,当F=0时,在过一个扫描起始点且平行于x轴的直线上,从该扫描起始点朝向靠近L3的方向上进行扫描,找到一个与寻像图形颜色相同的点时或扫描的点到L4的距离≥第一阀值时,终止这条直线上的扫描,将此与寻像图形颜色相同的点记录为真正边界点,找出以M1、M2、…和M n为扫描起始点的所有真正边界点,拟合出一条直线,该直线即为L4′;其中第一阀值为4‑12个像素;二维码为真知码或Data Matrix码。
地址 510663 广东省广州市高新技术开发区科学城科学大道162号B2区5层502