CN111339797B - 一种能够准确识别受损一维条码的解码方法及终端 - Google Patents
一种能够准确识别受损一维条码的解码方法及终端 Download PDFInfo
- Publication number
- CN111339797B CN111339797B CN202010117160.XA CN202010117160A CN111339797B CN 111339797 B CN111339797 B CN 111339797B CN 202010117160 A CN202010117160 A CN 202010117160A CN 111339797 B CN111339797 B CN 111339797B
- Authority
- CN
- China
- Prior art keywords
- array
- gray values
- bar code
- pixel points
- area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1443—Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
- G06K7/1413—1D bar codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/146—Methods for optical code recognition the method including quality enhancement steps
- G06K7/1473—Methods for optical code recognition the method including quality enhancement steps error correction
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Electromagnetism (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Image Analysis (AREA)
Abstract
本发明涉及一种能够准确识别受损一维条码的解码方法,包括如下步骤:获取到包含一维条码的图像,从图像中计算并识别出一维条码所在的区域以及该区域的上下、左右边界线;创建用于存储该区域内各列像素点灰度值的数组;以条码方向为像素点提取方向,提取该区域内多行像素点的灰度值且根据该行中像素点所在的列,将该灰度值存储至对应的数组中;分别对各数组中存储记载的灰度值进行归一化处理,得到各数组的归一化灰度值;将各数组的归一化灰度值与该阈值进行比较,确定条空边界,计算出一维条码中条和空的宽度,对一维条码进行解码尝试。本发明可以有效解决条空污损、打印不全以及部分区域扭曲或畸变而导致的无法解码,提高了条码解码的准确度。
Description
技术领域
本发明涉及一种能够准确识别受损一维条码的解码方法及终端,属于条码解码领域。
背景技术
一维条码是指条和空按照一定的编码规则组合起来的符号,用以表达信息。一维条码的应用大大提高了信息的录入速度,并且减少了差错率,在当今的自动识别技术中占有重要的地位。目前,对于一维条码的识别技术中,为了获取一维条码的相关信息,一般都是通过扫描线扫描该一维条码的所有条和空,获得条码图像,然后根据扫描线方向上各点的灰度值来确定条、空边界点,进而计算各条、空的宽度,最后按照相应的编码规则进行解码。因此在识别一维条码的过程中,根据条码方向设置的扫描线获取各点的灰度值是解码的前提条件。
但是,在利用扫描线对一维条码图像进行扫描获取灰度值的过程中,如果一维条码受损,存在划痕、斑点、污点或者是条空边界并非一条直线,即条空打印不全的情况下,现有的根据扫描线上各点的灰度值直接将灰度值较小的认为是条的点或者是直接将灰度值较大的认为是空的点,造成条、空的误判,在此基础上计算条、空宽度就会使结果误差变大,会直接影响一维条码识别的准确率。
发明内容
为了解决上述技术问题,本发明提供一种能够准确识别受损一维条码的解码方法,可以有效解决条空污损、条空打印不全以及部分区域扭曲或畸变而导致的无法解码或解码出错等问题,提高了条码解码的准确度。
本发明技术方案如下:
一种能够准确识别受损一维条码的解码方法,包括如下步骤:获取到包含一维条码的图像,所述图像上的各条和各空不完全缺失,从图像中计算并识别出一维条码所在的区域以及该区域的上下、左右边界线;创建用于存储该区域内各列像素点灰度值的数组,所述该区域内任意一列像素点的灰度值对应存储在该列数组中;以条码方向为像素点提取方向,提取该区域内多行像素点的灰度值且根据该行中像素点所在的列将该灰度值存储至对应的数组中;提取的各行均与条码方向平行且行的首尾分别位于该区域的左右边界线上;分别对各数组中存储记载的灰度值进行归一化处理,得到各数组的归一化灰度值;预设用于判定条像素点和空像素点的阈值,将各数组的归一化灰度值与该阈值进行比较,若灰度值小于该阈值,判定该像素点是条的像素点;若灰度值大于该阈值,判定该像素点是空的像素点,从而确定条空边界,计算出一维条码中条和空的宽度,基于条空宽度比例判断条码类型,然后根据条码类型选择对应的编码表进行查询和解码尝试。
更优地,所述归一化处理具体为:对各数组内的灰度值进行累加,得到各数组的累加值,将累加值与提取的行总数作商求得均值,该均值为该数组的归一化灰度值。
更优地,所述归一化处理具体为:根据数组内灰度值出现的频率设置权重值,计算加权后的各灰度值,再进行累加,得到该数组的归一化灰度值。
更优地,所述提取该区域内多行像素点的灰度值,具体为:以该区域的上下边界线为首行和尾行,逐行提取各行的像素点灰度值。
更优地,所述提取该区域内多行像素点的灰度值,具体为:以该区域的上下边界线为首行和尾行,提取该区域内的奇数行或偶数行上的像素点的灰度值。
本发明还提供一种能够准确识别受损一维条码的解码终端。
一种能够准确识别受损一维条码的解码终端,包括处理器和存储器,所述存储器存储有指令,所述指令适于由处理器加载并执行以下步骤:获取到包含一维条码的图像,所述图像上的各条和各空不完全缺失,从图像中计算并识别出图像中一维条码所在的区域以及该区域的上下、左右边界线;创建用于存储该区域内各列像素点灰度值的数组,所述该区域内任意一列像素点的灰度值对应存储在该列数组中;以条码方向为像素点提取方向,提取该区域内多行像素点的灰度值且根据该行中像素点所在的列将该灰度值存储至对应的数组中;提取的各行均与条码方向平行且行的首尾分别位于该区域的左右边界线上;分别对各数组中存储记载的灰度值进行归一化处理,得到各数组的归一化灰度值;预设用于判定条像素点和空像素点的阈值,将各数组的归一化灰度值与该阈值进行比较,若灰度值小于该阈值,判定该像素点是条的像素点;若灰度值大于该阈值,判定该像素点是空的像素点,从而确定条空边界,计算出一维条码中条和空的宽度,基于条空宽度比例判断条码类型,然后根据条码类型选择对应的编码表进行查询和解码尝试。
更优地,所述归一化处理具体为:对各数组内的灰度值进行累加,得到各数组的累加值,将累加值与提取的行总数作商求得均值,该均值为该数组的归一化灰度值。
更优地,所述归一化处理具体为:根据数组内灰度值出现的频率设置权重值,计算加权后的各灰度值,再进行累加,得到该数组的归一化灰度值。
更优地,所述提取该区域内多行像素点的灰度值,具体为:以该区域的上下边界线为首行和尾行,逐行提取各行的像素点灰度值。
更优地,所述提取该区域内多行像素点的灰度值,具体为:以该区域的上下边界线为首行和尾行,提取该区域内的奇数行或偶数行上的像素点的灰度值。
本发明具有如下有益效果:
1、本发明一种能够准确识别受损一维条码的解码方法及终端,在根据条码方向提取像素点灰度值的同时对各像素点沿条或空方向进行投影,将各行中相同列的像素点灰度值进行同数组存储,再对各数组中的灰度值进行归一化处理,有效对抗了条码中受损部分像素点灰度值对条空识别造成的影响,实现对受损条码的准确识别。
2、本发明一种能够准确识别受损一维条码的解码方法及终端,采用平均值法或加权算法均能对数组内的数据归一化处理,有效应对条空部分污损、部分打印不全、部分区域扭曲或畸变的情况,提高受损条码的识别准确率。
3、本发明一种能够准确识别受损一维条码的解码方法及终端,在进行投影时,既可以采用逐行提取,也可以采用奇数行提取或偶数行提取,提取方式灵活且任意提取方式均能实现受损条码进行正确解码。
附图说明
图1为本发明一种能够准确识别受损一维条码的解码方法的流程图;
图2为本发明的一维条码区域及条码方向示意图;
图3为本发明的一维条码区域及投影方向示意图;
图4为本发明的条空打印不全的一维条码示意图;
图5为图4的投影示意图;
图6为图4的还原图;
图7本发明的畸变、污损的一维条码示意图;
图8为图7的投影示意图;
图9为图7的还原图;
图10为本发明的部分条空存在部分缺失的一维条码示意图。
具体实施方式
下面结合附图和具体实施例来对本发明进行详细的说明。
实施例一
如图1所示,一种能够准确识别受损一维条码的解码方法,包括如下步骤:获取到包含一维条码的图像,所述图像上的各条和各空不完全缺失,如图4、图7和图10所示。从图像中计算并识别出图像中一维条码所在的区域以及该区域的上下、左右边界线,如图2、图3、图4、图7以及图10中所示的条码外围边界线;创建用于存储该区域内各列像素点灰度值的数组,所述该区域内任意一列像素点的灰度值对应存储在该列数组中;以条码方向为像素点提取方向,如图2中箭头所示,一维条码的起始符往终止符的方向作为条码方向,提取该区域内多行像素点的灰度值且根据该行中像素点所在的列将该灰度值存储至对应的数组中;提取的各行均与条码方向平行且行的首尾分别位于该区域的左右边界线上;分别对各数组中存储记载的灰度值进行归一化处理,得到各数组的归一化灰度值;预设用于判定条像素点和空像素点的阈值,将各数组的归一化灰度值与该阈值进行比较,若灰度值小于该阈值,判定该像素点是条的像素点;若灰度值大于该阈值,判定该像素点是空的像素点,从而确定条空边界,计算出一维条码中条和空的宽度,基于条空宽度比例判断条码类型,然后根据条码类型选择对应的编码表进行查询和解码尝试。例如,基于得到的条空比例,将条编为1,空编为0,对应转换成,0二进制数据流,根据条码起始符、终止符以及条空序列的排列特点判断条码类型进行尝试解码。比如,得到的0、1二进制数据流的起始3位以及终止3位皆为101,并且条的数量为22的情况下可以按照EAN—8的编码方式进行查询解码。
所述阈值的设置可采用如下方法:1)对归一化灰度值取最大灰度值与最小灰度值的均值作为判定条空的阈值;2)根据投影图(如图5和图8所示)中的波峰与波谷处对应的灰度值,求均值,将该均值作为判定条空的阈值。
本发明在根据条码方向提取像素点灰度值的同时对各像素点进行沿条或空方向(如图3中箭头方向)进行投影,将各行中相同列的像素点灰度值进行同数组存储,再对各数组中的灰度值进行归一化处理,有效对抗了条码中受损部分像素点灰度值对条空识别造成的影响。采用本发明解码方法能够对污损的条码、条空打印不全的条码、部分扭曲或畸变引起的条码进行准确识别。
所述归一化处理方式有多种,包括:一、对各数组内的灰度值进行累加,得到各数组的累加值,将累加值与提取的行总数作商求得均值,该均值为该数组的归一化灰度值;二、根据数组内灰度值出现的频率设置权重值,计算加权后的各灰度值,再进行累加,得到该数组的归一化灰度值。
以逐行提取该区域内各行像素点的灰度值为例,说明本实施例的解码步骤。
步骤1、获取到包含一维条码的图像,从图像中计算并识别出图像中一维条码所在的区域以及该区域的上下、左右边界线;
步骤2、创建用于存储该区域内各列像素点灰度值的数组Am(m=1,2,.......),将该区域的上边界和左边界的角点设定为提取像素点灰度值的起始点(x0,y0),取点方向与条码方向一致,并且取点方向为x轴正向,从该起始点开始向下换行取点方向为y轴正向;
步骤3、从图像中提取起始点(x0,y0)像素点,将该点的灰度值T(x0,y0)存到内存数组A0中,依次将该提取行上的各个像素点Pm(x0+m,y0)对应的灰度值T(x0+m,y0)存到内存数组Am(m=1,2,.......)中;如,像素点P2(x0+2,y0)对应的灰度值T(x0+2,y0)存到对应的内存数组A2中;
步骤4、沿y方向向下移动一行,将(x0,y0+1)作为该提取行的起始点,将图像该行的各像素点Pm(x0+m,y0+1)对应的灰度值T(x0+m,y0+1)存到对应的内存数组Am(m=0,1,2,.......)中;如,像素点P2(x0+2,y0+1)对应的灰度值T(x0+2,y0+1)存到对应的内存数组A2中;
重复步骤4,直至该区域的左边界与下边界的交点(x0,y0+N)作为提取行的起始点,对该行的各像素Pm(x0+m,y0+N)对应的灰度值T(x0+m,y0+N)存到对应的内存数组Am(m=0,1,2,.......)中,像素点灰度值提取完毕;
步骤5、以采用求均值方式对各数组内的灰度值进行0~255的归一化处理,
具体如下:将各个数组中的灰度值进行累加,得到各数组A0~Am的累加值,即
将各数组的累加值Sum Am与总共取得的行数N作商,计算出各数组的归一化灰度值;
步骤6、预设用于判定条像素点和空像素点的阈值,将各数组的归一化灰度值与该阈值进行比较,若灰度值小于该阈值,判定该像素点是条的像素点;若灰度值大于该阈值,判定该像素点是空的像素点,从而确定条空边界,计算出一维条码中条和空的宽度,基于条空宽度比例对一维条码进行解码尝试。
如图4所示,其为存在条空打印不全情况的39一维码。采用本发明解码方法对图像进行处理后,得到如图5所示的归一化灰度值投影图,其中横坐标为条码方向上各像素点对应的数组,纵坐标为该数组对应的归一化灰度值。根据阈值判定条像素点和空像素点后,得到如图6所示的一维条码还原图。
如图7所示,其为存在畸变、污损的128一维条码。采用本发明解码方法对区域内的像素点进行投影以及归一化处理后,得到如图8所示的归一化灰度值投影图,其中横坐标为条码方向上各像素点对应的数组,纵坐标为该数组对应的归一化灰度值。根据阈值判定条像素点和空像素点后,得到如图9所示的一维条码还原图。
如图10所示的受损一维条码,采用隔行提取并计算该行像素点的灰度值,能够得到更高的解码准确率,例如,提取奇数行或偶数行上各行像素点灰度值,又或是每隔N行提取并计算该行像素点的灰度值,N为自然数,具体地,可以是每隔2行提取一次,或每隔3行提取一次等。
以从上到下提取该区域内偶数行的各行像素点的灰度值为例,说明本实施例的解码步骤。
步骤1、获取到包含一维条码的图像,从图像中计算并识别出图像中一维条码所在的区域以及该区域的上下、左右边界线;
步骤2、创建用于存储该区域内各列像素点灰度值的数组Am(m=1,2,.......),将该区域的上边界和左边界的角点设定为提取像素点灰度值的起始点(x0,y0),取点方向与条码方向一致,并且取点方向为x轴正向,从该起始点开始向下换行取点方向为y轴正向;
步骤3、从图像中提取起始点(x0,y0)像素点的灰度值,将该点的灰度值T(x0,y0)存到内存数组A0中,依次将该提取行上的各个像素点Pm(x0+m,y0)对应的灰度值T(x0+m,y0)存到内存数组Am(m=1,2,.......)中;如,像素点P2(x0+2,y0)对应的灰度值T(x0+2,y0)存到对应的内存数组A2中;
步骤4、沿y方向向下移动两行,将(x0,y0+2)作为该提取行的起始点,将图像上该行的各像素点Pm(x0+m,y0+2)对应的灰度值T(x0+m,y0+2)存到对应的内存数组Am(m=0,1,2,.......)中;如,像素点P2(x0+2,y0+2)对应的灰度值T(x0+2,y0+2)存到对应的内存数组A2中;
重复步骤4,直至提取至区域下边界(该区域内总行数为偶数),或该下边界的上一行(该区域内总行数为奇数),将该行的各像素对应的灰度值存到对应的内存数组Am(m=0,1,2,.......)中,该区域像素点灰度值提取完毕;
步骤5、以采用求均值方式对各数组内的灰度值进行0~255的归一化处理,
具体如下:将各个数组中的灰度值进行累加,得到各数组A0~Am的累加值,即
将各数组的累加值Sum Am与提取的总行数作商,计算出各数组的归一化灰度值;
步骤6、预设用于判定条像素点和空像素点的阈值,将各数组的归一化灰度值与该阈值进行比较,若灰度值小于该阈值,判定该像素点是条的像素点;若灰度值大于该阈值,判定该像素点是空的像素点,从而确定条空边界,计算出一维条码中条和空的宽度,基于条空宽度比例对一维条码进行解码尝试。
以从上到下提取该区域内奇数行的各行像素点的灰度值为例,说明本实施例的解码步骤。
步骤1、获取到包含一维条码的图像,从图像中计算并识别出图像中一维条码所在的区域以及该区域的上下、左右边界线;
步骤2、创建用于存储该区域内各列像素点灰度值的数组Am(m=1,2,.......),将该区域的上边界和左边界的角点设定为提取像素点灰度值的起始点(x0,y0),取点方向与条码方向一致,并且取点方向为x轴正向,从该起始点开始向下换行取点方向为y轴正向;
步骤3、由起始点(x0,y0)的y方向的下一像素点(x0,y0+1)开始,按照条码方向提取各像素点的灰度值,依次将该提取行上的各个像素点Pm(x0+m,y0+1)对应的灰度值T(x0+m,y0+1)存到内存数组Am(m=1,2,.......)中;如,像素点P2(x0+2,y0+1)对应的灰度值T(x0+2,y0+1)存到对应的内存数组A2中;
步骤4、沿y方向向下移动两行,将(x0,y0+3)作为该提取行的起始点,将图像上该行的各像素点Pm(x0+m,y0+3)对应的灰度值T(x0+m,y0+3)存到对应的内存数组Am(m=0,1,2,.......)中;如,像素点P2(x0+2,y0+3)对应的灰度值T(x0+2,y0+3)存到对应的内存数组A2中;
重复步骤4,直至提取至区域下边界(该区域内总行数为奇数),或该下边界的上一行(该区域内总行数为偶数),将该行的各像素对应的灰度值存到对应的内存数组Am(m=0,1,2,.......)中,该区域内像素点灰度值提取完毕;
步骤5、以采用求均值方式对各数组内的灰度值进行0~255的归一化处理,
具体如下:将各个数组中的灰度值进行累加,得到各数组A0~Am的累加值,即
将各数组的累加值Sum Am与总共提取的总行数作商,计算出各数组的归一化灰度值;
步骤6、预设用于判定条像素点和空像素点的阈值,将各数组的归一化灰度值与该阈值进行比较,若灰度值小于该阈值,判定该像素点是条的像素点;若灰度值大于该阈值,判定该像素点是空的像素点,从而确定条空边界,计算出一维条码中条和空的宽度,基于条空宽度比例对一维条码进行解码尝试。
实施例二
一种能够准确识别受损一维条码的解码终端,包括处理器和存储器,所述存储器存储有指令,所述指令适于由处理器加载并执行以下步骤:获取到包含一维条码的图像,所述图像上的各条和各空不完全缺失,如图4、图7和图10所示。从图像中计算并识别出图像中一维条码所在的区域以及该区域的上下、左右边界线,如图2、图3、图4、图7以及图10所示。创建用于存储该区域内各列像素点灰度值的数组,所述该区域内任意一列像素点的灰度值对应存储在该列数组中;以条码方向为像素点提取方向,如图2中箭头所示,一维条码的起始符往终止符的方向作为条码方向,提取该区域内多行像素点的灰度值且根据该行中像素点所在的列将该灰度值存储至对应的数组中;提取的各行均与条码方向平行且行的首尾分别位于该区域的左右边界线上;分别对各数组中存储记载的灰度值进行归一化处理,得到各数组的归一化灰度值;预设用于判定条像素点和空像素点的阈值,将各数组的归一化灰度值与该阈值进行比较,若灰度值小于该阈值,判定该像素点是条的像素点;若灰度值大于该阈值,判定该像素点是空的像素点,从而确定条空边界,计算出一维条码中条和空的宽度,基于条空宽度比例判断条码类型,然后根据条码类型选择对应的编码表进行查询和解码尝试。例如,基于得到的条空比例,将条编为1,空编为0,对应转换成,0二进制数据流,根据条码起始符、终止符以及条空序列的排列特点判断条码类型进行尝试解码。比如,得到的0、1二进制数据流的起始3位以及终止3位皆为101,并且条的数量为22的情况下可以按照EAN—8的编码方式进行查询解码。
所述阈值的设置可采用如下方法:1)对归一化灰度值取最大灰度值与最小灰度值的均值作为判定条空的阈值;2)根据投影图(如图5和图8所示)中的波峰与波谷处对应的灰度值,求均值,将该均值作为判定条空的阈值。
本发明在根据条码方向提取像素点灰度值的同时对各像素点进行沿条或空方向(如图3中箭头方向)进行投影,将各行中相同列的像素点灰度值进行同数组存储,再对各数组中的灰度值进行归一化处理,有效对抗了条码中受损部分像素点灰度值对条空识别造成的影响。采用本发明解码方法能够对污损的条码、条空打印不全的条码、部分扭曲或畸变引起的条码进行准确识别。
所述归一化处理方式有多种,包括:一、对各数组内的灰度值进行累加,得到各数组的累加值,将累加值与提取的行总数作商求得均值,该均值为该数组的归一化灰度值;二、根据数组内灰度值出现的频率设置权重值,计算加权后的各灰度值,再进行累加,得到该数组的归一化灰度值。
以逐行提取该区域内各行像素点的灰度值为例,说明本实施例的解码步骤。
步骤1、获取到包含一维条码的图像,从图像中计算并识别出图像中一维条码所在的区域以及该区域的上下、左右边界线;
步骤2、创建用于存储该区域内各列像素点灰度值的数组Am(m=1,2,.......),将该区域的上边界和左边界的角点设定为提取像素点灰度值的起始点(x0,y0),取点方向与条码方向一致,并且取点方向为x轴正向,从该起始点开始向下换行取点方向为y轴正向;
步骤3、从图像中提取起始点(x0,y0)像素点,将该点的灰度值T(x0,y0)存到内存数组A0中,依次将该提取行上的各个像素点Pm(x0+m,y0)对应的灰度值T(x0+m,y0)存到内存数组Am(m=1,2,.......)中;如,像素点P2(x0+2,y0)对应的灰度值T(x0+2,y0)存到对应的内存数组A2中;
步骤4、沿y方向向下移动一行,将(x0,y0+1)作为该提取行的起始点,将图像该行的各像素点Pm(x0+m,y0+1)对应的灰度值T(x0+m,y0+1)存到对应的内存数组Am(m=0,1,2,.......)中;如,像素点P2(x0+2,y0+1)对应的灰度值T(x0+2,y0+1)存到对应的内存数组A2中;
重复步骤4,直至该区域的左边界与下边界的交点(x0,y0+N)作为提取行的起始点,对该行的各像素Pm(x0+m,y0+N)对应的灰度值T(x0+m,y0+N)存到对应的内存数组Am(m=0,1,2,.......)中,像素点灰度值提取完毕;
步骤5、以采用求均值方式对各数组内的灰度值进行0~255的归一化处理,
具体如下:将各个数组中的灰度值进行累加,得到各数组A0~Am的累加值,即
将各数组的累加值Sum Am与总共取得的行数N作商,计算出各数组的归一化灰度值;
步骤6、预设用于判定条像素点和空像素点的阈值,将各数组的归一化灰度值与该阈值进行比较,若灰度值小于该阈值,判定该像素点是条的像素点;若灰度值大于该阈值,判定该像素点是空的像素点,从而确定条空边界,计算出一维条码中条和空的宽度,基于条空宽度比例对一维条码进行解码尝试。
如图4所示,其为存在条空打印不全情况的39一维码。采用本发明解码方法对图像进行处理后,得到如图5所示的归一化灰度值投影图,其中横坐标为条码方向上各像素点对应的数组,纵坐标为该数组对应的归一化灰度值。根据阈值判定条像素点和空像素点后,得到如图6所示的一维条码还原图。
如图7所示,其为存在畸变、污损的128一维条码。采用本发明解码方法对区域内的像素点进行投影以及归一化处理后,得到如图8所示的归一化灰度值投影图,其中横坐标为条码方向上各像素点对应的数组,纵坐标为该数组对应的归一化灰度值。根据阈值判定条像素点和空像素点后,得到如图9所示的一维条码还原图。
如图10所示的受损一维条码,采用隔行提取并计算该行像素点的灰度值,能够得到更高的解码准确率,例如,提取奇数行或偶数行上各行像素点灰度值,又或是每隔N行提取并计算该行像素点的灰度值,N为自然数,具体地,可以是每隔2行提取一次,或每隔3行提取一次等。
以从上到下提取该区域内偶数行的各行像素点的灰度值为例,说明本实施例的解码步骤。
步骤1、获取到包含一维条码的图像,从图像中计算并识别出图像中一维条码所在的区域以及该区域的上下、左右边界线;
步骤2、创建用于存储该区域内各列像素点灰度值的数组Am(m=1,2,.......),将该区域的上边界和左边界的角点设定为提取像素点灰度值的起始点(x0,y0),取点方向与条码方向一致,并且取点方向为x轴正向,从该起始点开始向下换行取点方向为y轴正向;
步骤3、从图像中提取起始点(x0,y0)像素点的灰度值,将该点的灰度值T(x0,y0)存到内存数组A0中,依次将该提取行上的各个像素点Pm(x0+m,y0)对应的灰度值T(x0+m,y0)存到内存数组Am(m=1,2,.......)中;如,像素点P2(x0+2,y0)对应的灰度值T(x0+2,y0)存到对应的内存数组A2中;
步骤4、沿y方向向下移动两行,将(x0,y0+2)作为该提取行的起始点,将图像上该行的各像素点Pm(x0+m,y0+2)对应的灰度值T(x0+m,y0+2)存到对应的内存数组Am(m=0,1,2,.......)中;如,像素点P2(x0+2,y0+2)对应的灰度值T(x0+2,y0+2)存到对应的内存数组A2中;
重复步骤4,直至提取至区域下边界(该区域内总行数为偶数),或该下边界的上一行(该区域内总行数为奇数),将该行的各像素对应的灰度值存到对应的内存数组Am(m=0,1,2,.......)中,该区域像素点灰度值提取完毕;
步骤5、以采用求均值方式对各数组内的灰度值进行0~255的归一化处理,
具体如下:将各个数组中的灰度值进行累加,得到各数组A0~Am的累加值,即
将各数组的累加值Sum Am与提取的总行数作商,计算出各数组的归一化灰度值;
步骤6、预设用于判定条像素点和空像素点的阈值,将各数组的归一化灰度值与该阈值进行比较,若灰度值小于该阈值,判定该像素点是条的像素点;若灰度值大于该阈值,判定该像素点是空的像素点,从而确定条空边界,计算出一维条码中条和空的宽度,基于条空宽度比例对一维条码进行解码尝试。
以从上到下提取该区域内奇数行的各行像素点的灰度值为例,说明本实施例的解码步骤。
步骤1、获取到包含一维条码的图像,从图像中计算并识别出图像中一维条码所在的区域以及该区域的上下、左右边界线;
步骤2、创建用于存储该区域内各列像素点灰度值的数组Am(m=1,2,.......),将该区域的上边界和左边界的角点设定为提取像素点灰度值的起始点(x0,y0),取点方向与条码方向一致,并且取点方向为x轴正向,从该起始点开始向下换行取点方向为y轴正向;
步骤3、由起始点(x0,y0)的y方向的下一像素点(x0,y0+1)开始,按照条码方向提取各像素点的灰度值,依次将该提取行上的各个像素点Pm(x0+m,y0+1)对应的灰度值T(x0+m,y0+1)存到内存数组Am(m=1,2,.......)中;如,像素点P2(x0+2,y0+1)对应的灰度值T(x0+2,y0+1)存到对应的内存数组A2中;
步骤4、沿y方向向下移动两行,将(x0,y0+3)作为该提取行的起始点,将图像上该行的各像素点Pm(x0+m,y0+3)对应的灰度值T(x0+m,y0+3)存到对应的内存数组Am(m=0,1,2,.......)中;如,像素点P2(x0+2,y0+3)对应的灰度值T(x0+2,y0+3)存到对应的内存数组A2中;
重复步骤4,直至提取至区域下边界(该区域内总行数为奇数),或该下边界的上一行(该区域内总行数为偶数),将该行的各像素对应的灰度值存到对应的内存数组Am(m=0,1,2,.......)中,该区域内像素点灰度值提取完毕;
步骤5、以采用求均值方式对各数组内的灰度值进行0~255的归一化处理,
具体如下:将各个数组中的灰度值进行累加,得到各数组A0~Am的累加值,即
将各数组的累加值Sum Am与总共提取的总行数作商,计算出各数组的归一化灰度值;
步骤6、预设用于判定条像素点和空像素点的阈值,将各数组的归一化灰度值与该阈值进行比较,若灰度值小于该阈值,判定该像素点是条的像素点;若灰度值大于该阈值,判定该像素点是空的像素点,从而确定条空边界,计算出一维条码中条和空的宽度,基于条空宽度比例对一维条码进行解码尝试。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种能够准确识别受损一维条码的解码方法,其特征在于,包括如下步骤:
获取到包含一维条码的图像,所述图像上的各条和各空不完全缺失,从图像中计算并识别出一维条码所在的区域以及该区域的上下、左右边界线;
创建用于存储该区域内各列像素点灰度值的数组,所述该区域内任意一列像素点的灰度值对应存储在该列数组中;以条码方向为像素点提取方向,提取该区域内多行像素点的灰度值且根据该行中像素点所在的列将该灰度值存储至对应的数组中;提取的各行均与条码方向平行且行的首尾分别位于该区域的左右边界线上;
分别对各数组中存储记载的灰度值进行归一化处理,得到各数组的归一化灰度值;
预设用于判定条像素点和空像素点的阈值,将各数组的归一化灰度值与该阈值进行比较,若灰度值小于该阈值,判定该像素点是条的像素点;若灰度值大于该阈值,判定该像素点是空的像素点,从而确定条空边界,计算出一维条码中条和空的宽度,基于条空宽度比例判断条码类型,然后根据条码类型选择对应的编码表进行查询和解码尝试。
2.根据权利要求1所述的一种能够准确识别受损一维条码的解码方法,其特征在于,所述归一化处理具体为:对各数组内的灰度值进行累加,得到各数组的累加值,将累加值与提取的行总数作商求得均值,该均值为该数组的归一化灰度值。
3.根据权利要求1所述的一种能够准确识别受损一维条码的解码方法,其特征在于,所述归一化处理具体为:根据数组内灰度值出现的频率设置权重值,计算加权后的各灰度值,再进行累加,得到该数组的归一化灰度值。
4.根据权利要求1所述的一种能够准确识别受损一维条码的解码方法,其特征在于,所述提取该区域内多行像素点的灰度值,具体为:以该区域的上下边界线为首行和尾行,逐行提取各行的像素点灰度值。
5.根据权利要求1所述的一种能够准确识别受损一维条码的解码方法,其特征在于,所述提取该区域内多行像素点的灰度值,具体为:以该区域的上下边界线为首行和尾行,提取该区域内的奇数行或偶数行上的像素点的灰度值。
6.一种能够准确识别受损一维条码的解码终端,其特征在于:包括处理器和存储器,所述存储器存储有指令,所述指令适于由处理器加载并执行以下步骤:
获取到包含一维条码的图像,所述图像上的各条和各空不完全缺失,从图像中计算并识别出图像中一维条码所在的区域以及该区域的上下、左右边界线;
创建用于存储该区域内各列像素点灰度值的数组,所述该区域内任意一列像素点的灰度值对应存储在该列数组中;以条码方向为像素点提取方向,提取该区域内多行像素点的灰度值且根据该行中像素点所在的列将该灰度值存储至对应的数组中;提取的各行均与条码方向平行且行的首尾分别位于该区域的左右边界线上;
分别对各数组中存储记载的灰度值进行归一化处理,得到各数组的归一化灰度值;
预设用于判定条像素点和空像素点的阈值,将各数组的归一化灰度值与该阈值进行比较,若灰度值小于该阈值,判定该像素点是条的像素点;若灰度值大于该阈值,判定该像素点是空的像素点,从而确定条空边界,计算出一维条码中条和空的宽度,基于条空宽度比例判断条码类型,然后根据条码类型选择对应的编码表进行查询和解码尝试。
7.根据权利要求6所述的一种能够准确识别受损一维条码的解码终端,其特征在于:所述归一化处理具体为:对各数组内的灰度值进行累加,得到各数组的累加值,将累加值与提取的行总数作商求得均值,该均值为该数组的归一化灰度值。
8.根据权利要求6所述的一种能够准确识别受损一维条码的解码终端,其特征在于:所述归一化处理具体为:根据数组内灰度值出现的频率设置权重值,计算加权后的各灰度值,再进行累加,得到该数组的归一化灰度值。
9.根据权利要求6所述的一种能够准确识别受损一维条码的解码终端,其特征在于:所述提取该区域内多行像素点的灰度值,具体为:以该区域的上下边界线为首行和尾行,逐行提取各行的像素点灰度值。
10.根据权利要求6所述的一种能够准确识别受损一维条码的解码终端,其特征在于:所述提取该区域内多行像素点的灰度值,具体为:以该区域的上下边界线为首行和尾行,提取该区域内的奇数行或偶数行上的像素点的灰度值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010117160.XA CN111339797B (zh) | 2020-02-25 | 2020-02-25 | 一种能够准确识别受损一维条码的解码方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010117160.XA CN111339797B (zh) | 2020-02-25 | 2020-02-25 | 一种能够准确识别受损一维条码的解码方法及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111339797A CN111339797A (zh) | 2020-06-26 |
CN111339797B true CN111339797B (zh) | 2023-05-02 |
Family
ID=71183616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010117160.XA Active CN111339797B (zh) | 2020-02-25 | 2020-02-25 | 一种能够准确识别受损一维条码的解码方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111339797B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113487543B (zh) * | 2021-06-16 | 2023-08-04 | 成都唐源电气股份有限公司 | 接触网燃弧灼烧检测方法、装置、计算机设备和存储介质 |
CN113449536B (zh) * | 2021-07-16 | 2023-02-14 | 深圳思谋信息科技有限公司 | 条码图像修复方法、装置、计算机设备和存储介质 |
CN114611540A (zh) * | 2021-12-10 | 2022-06-10 | 厦门码灵半导体技术有限公司 | 基于数字图像处理的一维码图像区域识别方法、电子设备 |
CN114298078B (zh) * | 2021-12-29 | 2023-10-24 | 杭州晟元数据安全技术股份有限公司 | 一种污损一维条码的解码方法 |
CN116629291B (zh) * | 2023-07-24 | 2024-02-06 | 深圳市驿格科技有限公司 | 基于计算机视觉的快递条码图像智能增强方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093547A (zh) * | 2007-05-18 | 2007-12-26 | 上海邮政科学研究院 | 基于高度参数的条码和数字协同识别物品的方法 |
CN101840496A (zh) * | 2010-06-01 | 2010-09-22 | 福建新大陆电脑股份有限公司 | 一维条码解码芯片 |
CN104732183A (zh) * | 2015-03-20 | 2015-06-24 | 杭州晟元芯片技术有限公司 | 一种基于图像采样线灰度信息分析的一维条码识别方法 |
CN110348264A (zh) * | 2019-07-04 | 2019-10-18 | 北京电子工程总体研究所 | 一种qr二维码图像校正方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378405B2 (en) * | 2013-06-28 | 2016-06-28 | Kodak Alaris Inc. | Determining barcode locations in documents |
-
2020
- 2020-02-25 CN CN202010117160.XA patent/CN111339797B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093547A (zh) * | 2007-05-18 | 2007-12-26 | 上海邮政科学研究院 | 基于高度参数的条码和数字协同识别物品的方法 |
CN101840496A (zh) * | 2010-06-01 | 2010-09-22 | 福建新大陆电脑股份有限公司 | 一维条码解码芯片 |
CN104732183A (zh) * | 2015-03-20 | 2015-06-24 | 杭州晟元芯片技术有限公司 | 一种基于图像采样线灰度信息分析的一维条码识别方法 |
CN110348264A (zh) * | 2019-07-04 | 2019-10-18 | 北京电子工程总体研究所 | 一种qr二维码图像校正方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111339797A (zh) | 2020-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111339797B (zh) | 一种能够准确识别受损一维条码的解码方法及终端 | |
US8326037B1 (en) | Methods and apparatus for locating an object in an image | |
US5319181A (en) | Method and apparatus for decoding two-dimensional bar code using CCD/CMD camera | |
US5367578A (en) | System and method for optical recognition of bar-coded characters using template matching | |
US6371373B1 (en) | Method for reading a two-dimensional barcode | |
EP0999519B1 (en) | Distortion correction method in optical code reading | |
US5553084A (en) | Error correction enhancement for code one and other machine-readable symbologies | |
US9430726B2 (en) | High capacity 2D color barcode and method for decoding the same | |
US7949187B2 (en) | Character string recognition method and device | |
CA2267892C (en) | Method and apparatus for decoding bar code symbols using ratio analysis of module size | |
US8333326B2 (en) | Stacked barcode reader and stacked barcode reading method | |
CN109543692B (zh) | 一种专用于含qr码图像的二值化方法 | |
JP3640573B2 (ja) | バーコード読取り方法及びバーコード読取りシステム | |
CN109902530B (zh) | 一种二维码解码方法及终端 | |
US5563958A (en) | System and method for optical character recognition bar-coded characters | |
US5949053A (en) | Optimized technique for decoding a bar code from an image of an array of pixels | |
JP2012058776A (ja) | バーコード読取装置およびバーコード読取方法 | |
JP5630689B2 (ja) | 文字認識方法及び文字認識装置 | |
CN112069852B (zh) | 一种基于游程编码的低质量二维码信息提取方法及装置 | |
JP5379626B2 (ja) | スタック型バーコード情報読取方法及びスタック型バーコード情報読取装置 | |
CN114298078B (zh) | 一种污损一维条码的解码方法 | |
JP2644041B2 (ja) | 文字認識装置 | |
CN116842977B (zh) | 条形码识别方法 | |
JP5683891B2 (ja) | スタック型バーコード読取装置およびスタック型バーコード読取方法 | |
JP6393226B2 (ja) | スタック型バーコード読取装置およびスタック型バーコード読取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |