本发明涉及条码解码,具体涉及一种用于一维分布的多条码的解码方法。
背景技术:
1、条码技术是一种在计算机技术与信息技术基础上发展起来的一门集编码、印刷、识别、数据采集和处理于一身的新兴技术。条码技术由于其识别快速、准确、可靠以及成本低等优点,被广泛应用于商业、图书管理、仓储、邮电、交通和工业控制等领域。
2、对于实际应用的条码,其可以分为一维条码和连续多条码。其中,一维条码又称线形条码,只是在一个方向(一般是水平方向)表达信息,该方向是条码方向,在垂直方向则不表达任何信息。参照图1,一维条码包括两侧的静止区、起始符、数据符、校验符、终止符,由平行排列的多个“条”和“空”单元组成,条形码信息靠条和空的不同宽度和位置来表达。连续多条码,具有多个条码且条码之间距离很近,通常是沿着条码方向的垂直方向进行排布,且条码之间互不重叠。
3、一维条码是的解码步骤如下:首先利用摄影设备对条码进行拍摄,以获取条码图像,然后对条码图像进行去燥、灰度提取、二值化、码字提取、译码等处理。然而上述处理过程只适合单个一维条码译码,无法译码出连续多条码,并且一般在灰度提取和二值化过程中,连续多条码被误认为是单个条码,导致出现无法译码成功、误译码、漏译码等问题。
4、公布号为cn110795955a的专利文献公开了一种快速识别多条码的系统及其方法,其具体步骤如下:
5、1、对采集的条码图像进行预处理(灰度化、对比度增强);
6、2、条形码图像边缘检测;
7、3、条形码图像平滑;
8、4、条码图像形态学处理;
9、5、基于区域描述的条形码定位。
10、50、从图像的第一个像素开始,将当前标签设置为1;
11、51、若像素是一个前景像素,并且他还没有标签,那么给它当前的标签,并添加它为集合中的第一个元素,然后进行步骤3),若它是背景元素或已被标记,那么对图像的下一个元素进行步骤2);
12、52、从序列中弹出一个元素,并查看它的相邻元素,若相邻元素是一个前景元素,并还没有被标记,那么给他当前的标签,并添加到队列中,重复步骤2),知道集合中没有更多的元素;
13、53、转到步骤2),图像中的下一个元素,并将当前标签增加1;
14、54、计算每个区域的面积,即像素个数;
15、55、设置阈值,清除掉低于阈值的区域,得出x个条码的区域,记为{x1,x2,...}。
16、但是该专利文献在实际使用时仍然存在以下问题:首先虽然步骤2通过图像边缘检测能够检测储条码的边缘线和内部条空单元的边缘线,但是不能识别出条码区域;另外对于步骤5,由于前面的步骤3和步骤4分布进行的图像平滑和形态学处理等操作会将连续的多条码合并在一起,将多条码识别为单个码,而这会导致多条码解码失败、错解或者漏接。
技术实现思路
1、鉴于背景技术的不足,本发明是提供了一种用于一维分布的多条码的解码方法,通过计算每个条码的边缘线以及每个条码的采样斜率来确保多条码解码成功。
2、为解决以上技术问题,本发明提供了如下技术方案:一种用于一维分布的多条码的解码方法,包括如下步骤:
3、s1:获取多条码的灰度图图像,将多条码的灰度图图像作为第一图像;
4、s2:通过计算第一图像的图像梯度来确定多条码的分布区域和多条码中的每个单条码的条码方向,以及生成第一图像的灰度梯度图,其中多条码中的每个单条码的灰度图图像都在分布区域中;
5、s3:对分布区域内的每个条码沿其条码方向进行滤波,以此减小单个条码条空间的像素差和增大条码之间的像素差;
6、s4:沿着多条码的条码分布方向进行像素梯度计算来获取每个单条码的边缘线,所述边缘线为单条码沿其条码方向的两个边缘线,并同时依据所述第一图像和边缘线生成掩膜图像,所述掩膜图像上只显示所述边缘线;
7、s5:在掩膜图像上计算出每个边缘线的斜率;
8、s6:基于每个条码的起始位置和每个条型码的边缘线的斜率在所述灰度梯度图上进行采样,获取每个条码的采样线;
9、s7:对获取的采样线进行解码。
10、在某种实施方式中,步骤s2中在确定多条码中的每个单条码的条码方向时先设置好基准方向,然后基于基准方向计算每个单条码的条码方向。
11、作为进一步的技术方案,所述基准方向包括横向方向、45°倾斜方向、纵向和135°倾斜方向中的至少一个方向。
12、在某种实施方式中,步骤s3中对分布区域内的每个条码沿其条码方向进行滤波的步骤如下:
13、沿着条码的条码方向选取i行j列的像素点组成阵列式,将阵列式中的像素值最小的像素点过滤掉,i大于0且为正整数,j大于0且为正整数。
14、作为进一步的技术方案,重复执行m次步骤s3后再进入步骤s3,m大于1且为正整数。
15、在某种实施方式中,步骤s5中计算每个条码的边缘线的步骤如下:
16、s50:在掩膜图像中去除掉单个像素点以及面积小于判断阈值的干扰区域;
17、s51:在掩膜图像中沿着条码的条码方向做图像形态学处理使得条码的边缘线连续;
18、s52:先通过计算像素连通域的方式计算出条码的边缘线包含的所有像素点,然后在所述所有像素点中找出边缘线的起始点和结束点,基于边缘线的起始点和结束点在掩膜图像上的位置信息计算边缘线的斜率。
19、在某种实施方式中,步骤s6获取每个条码的采样线的步骤如下:
20、s60:根据灰度梯度图的图像像素分布计算自适应阈值;
21、s61:基于自适应阈值对灰度梯度图进行二值化操作,生成第二图像;
22、s62:在第二图像上获取每个白色像素区域;
23、s63:在白色像素区域上选取至少一个起始像素点,从起始像素点开始,沿着该起始像素点对应的条码的边缘线的斜率进行采样,直至采样到结束像素点,从该起始像素点到结束像素点的采样路径为采样线。
24、本发明与现有技术相比所具有的有益效果是:本发明通过先让多条码的条码之间生成间隔,然后计算每个条码的边缘线斜率,最后根据每个条码的起始位置和边缘线斜率进行采样获取采样线,从而可以单独对多条码中的每个条码进行采样,由于每个条码都是单独采样的,没有出现误采样情况,从而可以保证多条码解码后的数据是正确的。
1.一种用于一维分布的多条码的解码方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种用于一维分布的多条码的解码方法,其特征在于,步骤s2中在确定多条码中的每个单条码的条码方向时先设置好基准方向,然后基于基准方向计算每个单条码的条码方向。
3.根据权利要求2所述的一种用于一维分布的多条码的解码方法,其特征在于,所述基准方向包括横向方向、45°倾斜方向、纵向和135°倾斜方向中的至少一个方向。
4.根据权利要求1所述的一种用于一维分布的多条码的解码方法,其特征在于,步骤s3中对分布区域内的每个条码沿其条码方向进行滤波的步骤如下:
5.根据权利要求1或4所述的一种用于一维分布的多条码的解码方法,其特征在于,重复执行m次步骤s3后再进入步骤s3,m大于1且为正整数。
6.根据权利要求1所述的一种用于一维分布的多条码的解码方法,其特征在于,步骤s5中计算每个条码的边缘线的步骤如下:
7.根据权利要求1所述的一种用于一维分布的多条码的解码方法,其特征在于,步骤s6获取每个条码的采样线的步骤如下: