CN103034831B - 线性条码识别方法和系统 - Google Patents
线性条码识别方法和系统 Download PDFInfo
- Publication number
- CN103034831B CN103034831B CN201110291479.5A CN201110291479A CN103034831B CN 103034831 B CN103034831 B CN 103034831B CN 201110291479 A CN201110291479 A CN 201110291479A CN 103034831 B CN103034831 B CN 103034831B
- Authority
- CN
- China
- Prior art keywords
- bar code
- pixel
- feature vector
- bar
- value
- 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.)
- Expired - Fee Related
Links
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/146—Methods for optical code recognition the method including quality enhancement steps
-
- 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/10544—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Electromagnetism (AREA)
- Health & Medical Sciences (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
【技术领域】
本发明涉及线性条码(linear barcode)识别领域,尤其涉及一种线性条码识别方法和系统。
【背景技术】
线性条码也常被称为一维条码(1D barcode),其是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。目前在工业和民用领域应用得非常广泛。常见的线性条码包括统一商品码(Universal Product Code,简称UPC码)、欧洲商品编码(European ArticleNumber,简称EAN码)、日本商品编码(Japanese Article Number,简称JAN码)、Code 25、Code 39,Code 128等等。
常用的条码扫描设备通常由光源(比如激光)、光学透镜、感光器件(例如CCD,CMOS等)、解码逻辑电路和I/O接口等组件构成。简单来讲,所述光源投射光至条码上,从条码处反射的光透过所述光学透镜进入感光器件表面,经过光电转换、模数转换等一系列处理后形成条码的数字图像,然后解码逻辑电路对摄取的图像进行分析和解码。
目前的条码扫描设备一般都是专用的条码扫描设备,比如商场内的与零售系统连接的条码扫描器、图书馆内的与图书管理系统连接的条码扫描器或医院内的与电脑系统连接的条码扫描器,其可以采集到高质量的条码图像,这样可以较为容易的实现条码的解码。
目前很多便携式电子设备比如手机、PDA(个人数字助理)等都配置有摄像头装置,利用所述摄像头装置用户可以进行拍摄照片和视频等应用。对于较低配置的摄像头模组,比如存在于大量中低端手机中的摄像头模组,由于是采用定焦镜头(fixed-focus lens),导致拍摄的图像经常由于对焦不准而处于模糊状态。该类条码图像难以用通常的条码侦测技术进行侦测,另外也难以确认条码在图像中的位置,而且传统的条码解码技术也会由于图像模糊而失效。
因此,有必要开发出一种可以从视频图像中识别线性条码的新方案来克服上述问题。
【发明内容】
本发明要解决的技术问题之一在于提供一种线性条码识别方法,其可以识别模糊图像中的条码。
本发明要解决的技术问题之二在于提供一种线性条码识别装置,其可以识别模糊图像中的条码。
为了解决上述问题,根据本发明的一个方面,本发明提供了一种线性条码识别方法,其包括:获取图像;在所述图像中进行条码检测;在所述图像中进行条码定位以确定条码的边界;估计所述图像的模糊度;根据所述模糊度从若干标准特征矢量集中选择对应的一个标准特征矢量集,每一个标准特征矢量集对应一个模糊度范围并包括若干标准特征矢量;基于所述条码的边界从图像中提取所述条码的所有条码数据符对应的测试特征矢量;和利用所述条码的所有条码数据符对应的测试特征矢量和选择的标准特征矢量集解码得到所述条码的条码值。
进一步的,在所述图像中进行条码检测包括:在图像中搜索至少两个条形区域,并确定每个条形区域的端点;和基于搜索到的各个条形区域的端点确定搜索到的各个条形区域是否属于一个条码,如果搜索到的各个条形区域属于一个条码,则判定所述图像中包含有条码。
更进一步的,所述在图像中搜索至少两个条形区域,并确定每个条形区域的端点包括:选定一行像素点;在选定的一行像素点中选定一个黑色像素点作为初始像素点;从初始像素点开始依次向下或/和向上搜索临近最低灰度值的像素点,并判断搜索到的像素点是否为黑色像素点,如果是黑色像素点,则依次记录其坐标,如果不是黑色像素点,则确定前一个黑色像素点为所述黑色区域的端点;将所记录的黑色像素点的坐标进行曲线拟合得到一曲线;和基于该曲线确定所述黑色区域是否为条形区域。
进一步的,在所述图像中进行条码定位以确定所述条码的边界包括:在图像中搜索至少两个左边界点和至少两个右边界点;和分别基于搜索到的左右边界点确定条码的左右边界。
更进一步的,所述在图像中搜索至少两个左边界点和至少两个右边界点包括:选取一行像素点,取预定像素宽度的滑动窗口,该滑动窗口从该行像素点的第一端开始朝向第二端逐像素进行移动;每移动到一个新的位置,比较所述滑动窗口左右两侧像素点灰度值的差异,当该差异超过预定灰度值差异门限值时,即认为边界点已经位于所述滑动窗口之内;在所述滑动窗口中每一像素点的靠近第二端的一侧选取预定数量的像素点,统计选取的这些像素点的左端点和右端点的灰度值差异,当所述灰度值差异达到最大值时,记录所述滑动窗口中对应的像素点位置,将选取的这些像素点在图像中的横坐标作为横坐标,将选取的这些像素点的灰度值作为纵坐标,进行线性拟合得到第一直线;在记录的像素点的靠近第一端的一侧选取预定数量的像素点,找到选取的这些像素点中的属于背景区域的像素点,将确定是背景区域的像素点在图像中的横坐标作为横坐标,将确定是背景区域的像素点的灰度值作为纵坐标,进行线性拟合得到第二直线;和计算第一直线和第二直线的交点,该交点的横坐标就是该行像素点中的边界点的横坐标,该行像素点的纵坐标为该行像素点中的边界点的纵坐标。
进一步的,估计所述图像的模糊度包括:统计条形区域和背景区域之间的过度区域附近的像素点的灰度值;利用统计到的像素点的灰度值统计相邻像素点的灰度值差异;将统计的相邻像素点的灰度值差异与预定灰度值差异门限值进行对比来判定所述过渡区域和所述背景区域的第一过度边界以及所述过渡区域与所述条形区域的第二过度边界;计算所述过度区域的两个过度边界之间的宽度;和基于所述过度区域的宽度确定所述模糊度。
进一步的,基于条码类型所定义的一个或若干个标准条码数据符生成对应模糊度范围的一个标准特征矢量。
进一步的,基于所述条码的边界从图像中提取所述条码的条码数据符的测试特征矢量包括:根据所述条码的边界确定所述条码的每个条码数据符的位置;根据所述条码的每个条码数据符的位置从图像中提取灰度信息,并基于提取的灰度信息生成该条码数据符对应的测试特征矢量。
进一步的,根据所述条码的边界确定所述条码的每个条码数据符的位置还包括:根据所述模糊度和所述条码的边界确定测试范围;在测试范围内依次确定所述条码的合法位置;和基于确定的所述条码的合法位置确定所述条码的每个条码数据符的位置。
进一步的,利用所述条码的所有条码数据符对应的测试特征矢量和选择的标准特征矢量集解码得到所述条码的条码值包括:将测试特征矢量组和其在选择的标准特征矢量集中对应的若干标准特征矢量组进行相似度比较,所述测试特征矢量组为所述条码的所有条码数据符对应的测试特征矢量的组合,所述标准特征矢量组是选定的标准特征矢量集中的若干标准特征矢量的组合;确定和所述测试特征矢量组总相似度最高的标准特征矢量组,基于所述测试特征矢量组中的测试特征矢量和所述标准特征矢量组中的标准特征矢量的单相似度来确定所述测试特征矢量组和所述标准特征矢量组的总相似度;根据总相似度最高的标准特征矢量组确定所述条码的条码值。
根据本发明的另一方面,本发明提出一种线性条码识别系统,其包括:摄像模块,用于获取图像;条码检测模块,用于在所述图像中进行条码检测;条码定位模块,用于在所述图像中进行条码定位以确定所述条码的边界;模糊度估计模块,用于估计所述图像的模糊度;条码解码模块,用于根据所述模糊度从若干标准特征矢量集中选择对应的一个标准特征矢量集,基于所述条码的边界从图像中提取所述条码的所有条码数据符对应的测试特征矢量,以及利用所述条码的所有条码数据符对应的测试特征矢量和选择的标准特征矢量集解码得到所述条码的条码值,其中每一个标准特征矢量集对应一个模糊度范围并包括若干标准特征矢量。
与现有技术相比,在本发明中针对不同的模糊度范围设定了不同的标准特征矢量集,根据图像的模糊度来选定对应的标准特征矢量集,随后利用提取的所述条码的所有条码数据符对应的测试特征矢量和选择的标准特征矢量集进行解码以得到所述条码的条码值,这样可以在图像模糊的情况下仍能实现对条码的正确解码。
关于本发明的其他目的,特征以及优点,下面将结合附图在具体实施方式中详细描述。
【附图说明】
结合参考附图及接下来的详细描述,本发明将更容易理解,其中同样的附图标记对应同样的结构部件,其中:
图1为本发明中的线性条码识别方法在一个实施例中的流程示意图;
图2a和2b分别示出了两个条码的示例;
图3为本发明中的条码检测方法在一个实施例中的流程示意图;
图4为本发明中在进行条码检测时的条形区域搜索方法在一个实施例中的流程示意图;
图5示出了在条形区域搜索时图像中的查找区域和停止区域的相对位置关系;
图6为本发明中的条码定位方法在一个实施例中的流程示意图;
图7示出了在边界点搜索时图像中的搜索区域的位置的示例;
图8为本发明中在进行条码定位时的边界点搜索方法在一个实施例中的流程示意图;
图9示出了灰度图像中的一行像素点的灰度值曲线示例;
图10为本发明中的模糊度估计方法在一个实施例中的流程示意图;
图11如图2b所示的一列穿过一个条形区域的像素点的灰度值曲线示例;
图12为本发明中的条码解码方法在一个实施例中的流程示意图;
图13为本发明中在进行条码解码时的测试特征矢量提取方法在一个实施例中的流程示意图;
图14示出了EAN-13条码的结构示例;
图15为本发明中在进行条码解码时的条码值获取方法在一个实施例中的流程示意图;
图16为本发明中的解码验证方法在一个实施例中的流程示意图;
图17为本发明中的线性条码识别系统在一个实施例中的结构示意图;
图18为本发明中的条码检测模块在一个实施例中的结构示意图;
图19为本发明中的条码定位模块在一个实施例中的结构示意图;和
图20为本发明中的条码解码模块在一个实施例中的结构示意图。
【具体实施方式】
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明的详细描述主要通过程序、步骤、逻辑块、过程或其他象征性的描述来呈现,其直接或间接地模拟本发明中的技术方案的运作。所属领域内的技术人员使用此处的这些描述和陈述向所属领域内的其他技术人员有效的介绍他们的工作本质。
此处所称的“一个实施例”或“实施例”是指与所述实施例相关的特定特征、结构或特性至少可包含于本发明至少一个实现方式中。在本说明书中不同地方出现的“在一个实施例中”并非必须都指同一个实施例,也不必须是与其他实施例互相排斥的单独或选择实施例。此外,表示一个或多个实施例的方法、流程图或功能框图中的模块顺序并非固定的指代任何特定顺序,也不构成对本发明的限制。
本发明提出利用图像分析和模式识别(pattern recognition)理论对视频图像中的线性条形码(linear barcodes)进行自动识别的方法及系统。该方法及系统能够有效解决模糊图像中条码的侦测、定位和识别的问题,从而使得采用定焦镜头的摄像头模组作为视频图像采集设备的计算机系统也能具备条码识别能力,降低了对距离控制的要求和对摄像头模组硬件配置的要求。
图1为本发明中的线性条码识别方法1在一个实施例中的流程示意图。如图1所示,所述线性条码识别方法1包括如下步骤。
步骤100,摄像头获取连续的视频图像。
所述摄像头可以是采用定焦镜头(fixed-focus lens),当然也可以采用变焦镜头。
步骤200,对所述视频图像进行预处理得到固定尺寸的灰度图像。
所述预处理可以包括裁剪、尺寸变换以及彩色图像转灰度图图像等操作。
步骤300,在灰度图像中进行条码检测,如果检测到条码,则进入下一步骤,否则,返回步骤200继续条码识别。
步骤400,在灰度图像中定位条码的左右边界,如果定位到左右边界,则进入下一步骤,否则返回步骤200继续条码识别。
步骤500,估计灰度图像的模糊度,如果估计成功,则进入下一步骤,否则返回步骤200继续条码识别。
步骤600,根据所述模糊度和所述条码的左右边界对灰度图像中的条码进行解码得到所述条码的条码值,如果解码成功,则进入下一步骤,否则返回步骤200继续条码识别。
步骤700,确定所述条码的条码值是否可信,如果可信,则输出所述条码的条码值并结束本流程,否则返回步骤200继续条码识别。
步骤500和步骤400的顺寻是可以互换的。在一个实施例中,所述线性条码识别方法1也可以不包括如步骤700的解码验证的步骤,而是在步骤600解码成功后直接结束本流程。
下面将结合具体实例分别对条码检测(步骤300)、条码定位(步骤400)、模糊度估计(步骤500)、条码解码(步骤600)以及解码验证(步骤700)详细介绍。
条码检测
图3为本发明中的条码检测方法300(对应于所述线性条码识别方法1的步骤300)在一个实施例中的流程示意图。如图3所示,所述条码检测方法300包括以下步骤。
步骤310,在图像中搜索至少两个条形区域,并确定每个条形区域的端点。如果未搜索到至少两个条形区域,则判定所述图像中不包含有条码,如果搜索到了至少两个条形区域,则进入下一个步骤。
如图2a所示,其示出了一个条码示例,其包括有多个大致平行的条形区域,每个条形区域包括有位于两端的端点,条码区域外是背景区域。
图4为一种条形区域搜索方法在一个实施例中的流程示意图。下面结合图4来示例性的详细介绍如何在图像中搜索条形区域并确定所述条形区域的端点。
步骤311,在图像中设定查找区域和停止区域。
如图5所示,所述查找区域(查找区域边界所围绕的区域)的范围小于等于所述停止区域(停止区域边界所围绕的区域),所述停止区域的范围大于等于所述查找区域而小于等于图像(图像边界所围绕的区域)。所述查找区域可以是整个图像,也可以是在图像中事先选定的一定宽和高的矩形区域。所述图像边界可以为预处理后的灰度图像的边界。
在一个特别的示例中,所述查找区域等于所述停止区域,也等于所述图像,这样就相当于未设置查找区域和停止区域,直接在整个图像上进行查找或搜索。换句话说,在此种情况下,相当于未设置查找区域和停止区域。类似的,在所述停止区域等于所述图像时,相当于未设置停止区域。
查找区域和停止区域可以根据具体条码识别应用的背景或者系统硬件的处理能力等因素来确定。比如在一些应用中,条码所在的大致位置是确定的,则查找区域只需要将该大致位置包含在内即可。再比如在一些应用中,由于硬件设备处理能力有限,无法对整幅图像进行全图像搜索,则可以设定在图像的一个固定区域作为查找区域。
步骤312,在所述查找区域内选定一行像素点。
在一个实施例中,可以选定所述查找区域的任意一行像素点,比如所述查找区域的中间一个像素点或第一行像素点。
步骤313,在选定的一行像素点中选定一个黑色像素点作为初始像素点。
在一个实施例中,黑色像素点的判定可以是比较选定的像素点和临近像素点的灰度差异,当灰度差异达到预先设定的一个灰度差异门限值的时候即可认定该像素点是一个黑色像素点,否则认为是背景像素点(或称为白色像素点),继续选定另一个像素点,记录选定的黑色像素点的坐标。
在另一个实施例中,也可以直接将像素点的灰度值与一个灰度阈值进行比较,在其灰度值小于所述灰度阈值时被确定为黑色像素点。
如果在选定的一行像素点中没有找到黑色像素点,则在查找区域内另选一行像素点重复步骤313,直到找到一个黑色像素点或在查找区域内查找完所有行像素。
步骤314,从初始搜索像素点开始搜索所述初始像素点所在的黑色区域的端点。
将所述初始像素点所在的黑色区域作为一个条形区域的候选,所在的黑色区域的端点作为候选条形区域的条形方向的端点。所述条形区域的端点可以是在该条形区域的条形方向的最后一个黑色像素点,超出其外的则是背景像素点。
在一个实施例中,从初始像素点开始依次向上和/或向下搜索临近最低灰度值的像素点,并判断搜索到的像素点是否为黑色像素点,如果是黑色像素点,则依次记录其坐标,如果不是黑色像素点,则确定前一个黑色像素点为所述黑色区域的端点。如果搜索到的黑色像素点在停止区域之内,则可以继续搜索,如果在停止区域之外,则停止搜索,这样可以节省计算量。
所述向上或向下是指整体向上或向下,比如可以是倾斜向上或向下,也可以是垂直向上或向下。由于搜索的是临近最低灰度值的像素点,因此即使所述条码发生很大的倾斜,利用本发明中的条码检测方法仍能对其条形区域检测,进而可以实现条码的检测,这样使得条码检测可以不受拍摄方向或角度的影响。
在搜索条形区域的端点过程中,由于是从黑色像素点开搜索另外的黑色像素点,因此可以是比较搜索到的像素点和上一像素点的灰度差异,当灰度差异小于预先设定的一个灰度差异门限值的时候即可认定该像素点是一个黑色像素点,否则可以认为是背景像素点(或称为白色像素点)。在条形区域的端点的搜索过程中,一直是在灰度图像上进行搜索的,这样做比较合适在模糊图像中搜索条形区域的端点。
如果在步骤314中查找端点失败,则在查找区域内另选一行像素点重复上述步骤313和314,直到找到端点或者在查找区域内查找完毕而未找到端点。
步骤315,根据初始像素点和其所在的黑色区域的端点的位置确定所述黑色区域是否为条形区域。
在一个实施例中,将所记录的黑色像素点(包括初始像素点、所述黑色区域的端点以及其他记录的黑色像素点)的坐标进行曲线拟合(curve fitting)得到一第一曲线,之后基于该第一曲线确定所述黑色区域是否为条形区域。
具体的,统计该第一曲线在各黑色像素点附近的曲率(curvature)以及各黑色像素点到该第一曲线的距离。如果所述第一曲率小于事先规定的第一曲率门限值而且所有的距离不超过事先规定的第一距离门限值,则认为该黑色区域是一个条形区域;否则认为该黑色区域不是一个条形区域。
在利用上述方法在图像中搜索一个条形区域,之后可以采用相同的方法在搜索到的条形区域的临近区域中再搜索一定数量的其它条形区域,并确定它们的端点。
步骤320,基于搜索到的各个条形区域的端点确定各个条形区域是否属于一个条码,如果搜索到的各个条形区域属于同一个条码,则可以判定所述图像中包含有条码,否则判定所述图像中不包含条码。需要指明的是,所述图像中不包括条码包括两种情况,一种是真的不包括条码,另一种是包括两个或多个条码。对于包括两个或多个条码的情况,在本发明中被视为不包括条码。
在一个实施例子中,计算搜索到的各条形区域的方向的差异;将搜索到的各条形区域的同侧的端点的坐标进行曲线拟合得到一第二曲线;基于各条形区域的方向的差异和/或所述第二曲线确定各个条形区域是否属于一个条码。
具体的,统计该第二曲线在这些同侧端点附近的曲率以及这些同侧端点到该第二曲线的距离;如果该曲率小于事先规定的第二曲率门限值,各条形区域方向上的差异不超过事先规定的第二角度门限值,各条形区域的同侧的端点和利用该侧端点拟合的第二曲线之间的距离不超过事先规定的第二距离门限值。
如果在图像中未检测到条码,则认为条码检测失败。
需要说明的是,图3只是示出了所述线性条码识别方法1中的条码检测步骤300的一个实施例,在其他实施例中,还可以采用其他条码检测方法。此外,所述条码检测方法300也并不局限于所述线性条码识别方法10,其还可以应用于其他条码识别的应用中。
条码定位
图6为本发明中的条码定位方法400(对应于所述线性条码识别方法1的步骤400)在一个实施例中的流程示意图。如图6所示,所述条码定位方法400包括以下步骤。
步骤410,在图像中搜索至少两个左边界点和至少两个右边界点。
在一个实施例中,为降低计算量,可以在图像中设定搜索区域,该搜索区域可以根据需要设定,在默认的情况下可以等于整个图像区域,条码的定位是在搜索区域内进行的搜索的。所述图像可以为预处理后的灰度图像。
在条码检测方法400中,已经在图像中检测到了条码并且可以在图像中检测到了至少两个条形区域及其端点。如图7所示,其示出了进行条码定位的图像(图像边界围绕的区域)、检测出的一个条形区域的条形端点11和12、检测出的另一个条形区域的条形端点21和22,根据条形区域的同侧端点11和21拟合而成的拟合直线1(可以看作是条码的上边界),根据条形区域的同侧端点12和22拟合而成的拟合直线2(可以看作是条码的下边界)。可以看出,条码的左右边界应该是位于拟合直线1和2之间的。
在一个优选的实施例中,可以将搜索区域设定在拟合直线1和2之间,比如搜索区域是一个横向放置的矩形区域,其顶部不超过位于上端的拟合直线1的最低值,其底部不低于位于下端的拟合直线2的最高值,其左右两端则是在图像的左右边界附近。
图8为一种条码的边界点搜索方法在一个实施例中的流程示意图。下面参照图8示例性的详细介绍如何在图像中搜索一个边界点。
步骤411,从搜索区域中选取一行像素点,取一个预定像素宽度的滑动窗口,该滑动窗口从该行像素点的第一端(左端或右端中的一个)开始朝向第二端(左端和右端的另一个)逐像素进行移动。所述预定像素宽度可以是指所述滑动窗口包括预定个像素点,所述第一端可以是左端和右端中的一个,第二端是左端和右端中的另一个。
步骤412,每移动到一个新的位置,就会比较滑动窗口左右两侧像素点灰度值的差异,当该差异超过预定灰度值差异门限值时,即认为边界点已经位于滑动窗口之内。
请参图9所示,其示出了搜索区域内单行像素点的灰度值曲线、虚线框表示的滑动窗口和条码的一个左边界点,纵坐标轴表示像素点的灰度值,横坐标轴表示像素点在该行像素点中的位置。
步骤411和412可以统称为边界点的粗略查找。
步骤413,在所述滑动窗口中每一像素点的靠近第二端的一侧选取预定数量的像素点,统计选取的这些像素点的左端点和右端点的灰度值差异,当所述灰度值差异达到最大值时,记录所述滑动窗口中对应的像素点位置,将选取的这些像素点在图像中的横坐标作为横坐标,将它们的灰度值作为纵坐标,进行线性拟合(Linear regression)得到第一直线。
步骤414,在记录的像素点的靠近第一端的一侧选取预定数量的像素点,找到选取的这些像素点中的属于背景区域的像素点,将确定是背景区域的像素点在灰度图像中的横坐标作为横坐标,将它们的灰度值作为纵坐标,进行线性拟合得到第二直线。
在一个实施例中,可以根据下述方法来判断一个像素点是否属于背景区域:计算该像素点与相邻像素点的灰度值差异,当灰度值差异小于预定灰度值差异门限值的时候即认为该像素点与相邻像素点同属于背景区域。
步骤415,计算第一直线和第二直线的交点,该交点的横坐标就是在搜索区域中对应该行像素点的第一边界点的横坐标,该行像素点的纵坐标为第一边界点的纵坐标。
如图9所示,所述第一直线类似于左边界点的右侧的像素灰度线,所述第二直线类似于左边界点的左侧的像素灰度线,两条像素灰度线交汇处即为边界像素点。
这样就找到了一个第一边界点。步骤413、414和415可以统称为边界点的精确定位查找。同样的,在搜索区域内另选一行像素点,之后从使该滑动窗口从该行像素点的第一端开始朝向第二端逐像素进行移动,进而找到另一个第一边界点。同理,可以将滑动窗口从第二端向第一端逐像素滑动就可以在搜索区域内搜索一定数量的第二边界点。
需要注意的是,如果选取的一行像素的第一端为左端,即从所述搜索区域的左边界开始搜索,则第一边界点为左边界点,第二边界点为右边界点,如果选取的一行像素的第一端为右端,即从所述搜索区域的右边界开始搜索,则第一边界点为右边界点,第二边界点为左边界。
步骤420,分别基于搜索到的左右边界点确定条码的左右边界。
在一个实施例中,将搜索到的左边界点(同侧边界点)拟合成一条曲线,该曲线在搜索到的左边界点附近的曲率需要小于一个预定曲率门限值;根据搜索到的左边界点到所述曲线的距离判断是否有非法左边界点,如果搜索到的一个左边界点到所述曲线的距离大于预定距离门限,则认为该边界点为非法边界点;如果有,则去除非法左边界点,并对剩余的左边界点再次拟合成一条曲线,并基于该曲线确定左边界。
同样的,可以采用同样的操作来实现基于搜索到的右边界点得到条码的右边界。
如果在图像中未确定到条码的左右边界,则认为条码定位失败。
需要说明的是,图6只是示出了所述线性条码识别方法1中的条码检测步骤400的一个实施例,在其他实施例中,还可以采用其他条码定位方法。此外,所述条码定位方法400也并不局限于所述线性条码识别方法1,其还可以应用于其他条码识别的应用中。
模糊度估计
图2a示出了一张清晰的条码图像,图2b示出了一张模糊的条码图像,图中示出了图像的边界,条码的左边界和右边界,条形区域及其端点、背景区域。为了对所述模糊图像中的条码进行解码,需要估计图像的模糊度。现有技术中有很多种模糊度估计的方法,也有很多种模糊度表示的方式,这些都可以用于本发明的条码解码方法中。
在一个实施例中,可以基于条码的条形区域与背景区域之间的过度区域的宽度来确定所述模糊度。如图2a所示,所述条形区域为黑色区域,所述背景区域为白色,在模糊前,所述条形区域和所述背景区域的边缘比较陡峭,在模糊之后,所述条形区域和所述背景区域的边缘变得比较平缓,形成一个过渡区域。如图11所示,其示出了如图2b所示的一列穿过一个条形区域的像素点的灰度值曲线,d1线的左侧为背景区域,d2线的右侧为条形区域,d1和d2之间形成过渡区域,过渡区域的宽度可以反映图像的模糊度,过渡区域的宽度越宽,图像的模糊度越高,过渡区的宽度越窄,图像的模糊度越低。
图10为本发明中的模糊度估计方法500(对应于所述线性条码识别方法1的步骤500)在一个实施例中的流程示意图。如图10所示,所述模糊度估计方法500包括以下步骤。
步骤510,统计条形区域和背景区域之间的过度区域附近的像素点的灰度值。
在一个实施例中,步骤300中已经进行的条码检测已经检测到了多个条形区域及其端点,如图2a所示,那么可以选定一个条形区域,在该条形区域的端点附近沿条形区域的方向统计条形区域和背景区域之间的过度区域附近的像素点的灰度值。
在另一个实施例中,步骤300中已经检测到了条码的左右边界,如图2b所示,那么可以选定一个边界点,在该边界点附近沿垂直于条形区域的方向统计条形区域和背景区域之间的过度区域附近的像素点的灰度值。
在其他实施里中,也可以在其他位置统计条形区域和背景区域的过度区域附近的像素点的灰度值。
步骤520,利用统计到的像素点的灰度值统计相邻像素点的灰度值差异。
步骤530,将统计的相邻像素点的灰度值差异与预定灰度值差异门限值进行对比来判定所述过渡区域和所述背景区域的第一过度边界以及所述过渡区域与所述条形区域的第二过度边界。如图11所示,d1线可以表示所述过渡区域和所述背景区域的第一过度边界,d2可以表示所述过渡区域与所述条形区域的第二过度边界。很明显,所述过渡区域中的相邻像素点的灰度值差异比较大,而所述背景区域和所述条形区域中的相邻像素点的灰度值差异比较小。
步骤540,计算所述过度区域的两个过度边界之间的宽度,并基于所述宽度确定所述图像的模糊度。
可以基于计算得到的一个位置的条形区域和背景区域之间的过渡区域的宽度确定所述图像的模糊度。然而,因为图像中存在的各种噪声等因素,通过一个位置的条形区域和背景区域之间的过渡区域的宽度确定所述图像的模糊度的可信度较低,因此可以多采集几个位置(多个左右边界点附近或多个条形区域的端点附近)的条形区域和背景区域之间的过渡区域的宽度以对图像模糊度进行综合判定。
在一个实施例中,可以根据多个位置的条形区域和背景区域之间的过渡区域的宽度来综合判定的图像的模糊度,具体包括如下步骤:
统计所有过渡区域的宽度的均值,统计所有过渡区域的宽度的方差;
如果方差值不超过预定方差门限值,则取均值为整幅图像的模糊度;
如果方差值超过预定方差门限值,则找出与均值差异最大的过渡区域的宽度并将其剔除;
如果所余下的过渡区域的宽度的数量仍然大于等于预定的数量门限值,则回到上面第一步重新处理,否则图像的模糊度估计失败。
条码解码
图12为本发明中的条码解码方法600(对应于所述线性条码识别方法1的步骤600)在一个实施例中的流程示意图。如图12所示,所述条码解码方法600包括以下步骤。
步骤610,根据估计得到的图像的模糊度从若干标准特征矢量集(standardfeature vector set)中选择对应的一个标准特征矢量集,每一个标准特征矢量集对应一个模糊度范围并包括若干标准特征矢量。
所述估计得到的图像的模糊度可以根据图10所示的模糊度估计方法获得,也可以根据其他模糊度估计方法获得。
由于图像的模糊会导致每一个像素点的灰度值向其四周发散,模糊度越高发散的范围越大。如图2b所示,在条码图像出现模糊时,相邻两个条码数据符的灰度信息就会产生互相影响,模糊度越高,影响越深。换句话说,模糊度不同,图像中的条码数据符的灰度信息就会发生变化。为了实现对不同模糊度图像的解码,有必要针对不同的模糊度建立对应的标准特征矢量集。
为每个模糊度范围预先建立一个标准特征矢量集,每个标准特征矢量集包括有若干个标准特征矢量。所述模糊度范围可以根据需要自定义,举例来说,以图10所示的模糊度为过度区域的宽度为例,所述模糊度范围的单位可以是单个条码数据符宽度s的1/m,m为正整数,也就是说,0-s*1/m为一个模糊度范围,s*1/m至s*2/m为下一个模糊度范围,s*2/m至s*3/m为下一个模糊度范围,以此类推。
在一个实施例中,基于条码类型所定义的一个标准条码数据符生成对应模糊度范围的一个标准特征矢量,这样形成的所有标准特征矢量可以组成了一个标准特征矢量集。通过同样的方式,还可以形成对应其它模糊度范围的标准特征矢量集。
在另一个实施例中,基于条码类型所定义的两个或更多个标准条码数据符生成对应模糊度范围的一个标准特征矢量,这样形成的所有标准特征矢量可以组成了一个标准特征矢量集。通过同样的方式,还可以形成对应其它模糊度范围的标准特征矢量集。
步骤620,基于条码的边界信息从图像中提取条码的条码数据符(symbolcharacter)对应的测试特征矢量(test feature vector)。
图13为一种基于条码的边界信息从图像中提取条码的条码数据符对应的测试特征矢量的方法在一个实施例中的流程示意图。下面结合图13示例性的介绍一下如何从图像中提取条码的条码数据符对应的测试特征矢量。
步骤621,根据估计得到的模糊度和条码的边界信息确定测试范围。
所述条码的边界信息可以是根据图6所示的条码定位方法定位得到条码的左右边界,也可以是其他条码定位方法得到的条码的左右边界。
在得到了图像的模糊度和条码的边界信息后,由于测定的误差以及条码在灰度图像中出现的旋转(rotation)、倾斜(tilt)等几何失真(geometric distortion)等因素的影响,解码的范围并不局限于当前测定的图像模糊度和条码边界,而是以测定的图像模糊度和条码边界为基础,预先设定一个测试范围,从而有效处理测定的误差,以及省去对图像几何失真的精确估计和补偿。
步骤622,在测试范围内依次确定所述条码的合法位置。
在测试范围内可以确定所述条码的多个合法位置,可以每次确定所述条码的一个合法位置,所述合法位置是指符合规则的可能的位置。如果在其中的一个合法位置提取的条码数据符的测试特征矢量组未完成最终的条码解码,那么会在测试范围内再次确定所述条码的一个合法位置,直到解码成功或测试范围内的没有剩余的合法位置。
步骤623,基于确定的所述条码的合法位置确定所述条码的每个条码数据符的位置。
步骤624,根据所述条码的每个条码数据符的位置从图像中提取灰度信息,并基于提取的灰度信息生成该条码数据符对应的测试特征矢量。所述条码的所有条码数据符的测试特征矢量的组合可以被称为测试特征矢量组。
图14示出了EAN-13条码(European Article Number-13barcode)的结构示例。如图14所示,EAN-13条码是由起始符(guard pattern on the left),6个左侧数据符(symbol characters on the left),中间分隔符(centre guardpattern),6个右侧数据符(symbol characters on the right),以及终止符(guardpattern on the right)构成。起始符由3个模块(module)构成,固定为“101”,表示“条空条”(bar,space,bar);6个左侧数据符由42个模块构成,由条码字符集A子集(number set A)或B子集定义,每个数据符各占7个模块;中间分隔符由5个模块构成,固定为“01010”,表示“空条空条空”;6个右侧数据符由42个模块构成,由条码字符集C子集定义,每个数据符各占7个模块;终止符由3个模块构成,固定为“101”,表示“条空条”,每个模块的宽度固定。
针对EAN-13条码的结构,需要提取6个左侧数据符和6个右侧数据符的灰度信息,然后利用提取的灰度信息生成测试用特征矢量。为此,如步骤530所述的,可以先基于确定的所述条码的合法位置确定所述条码的12个条码数据符的位置。随后,如步骤540所述的,可以根据所述条码的12个条码数据符的位置从图像中提取对应的灰度信息,并基于提取的灰度信息生成12个条码数据符对应的测试特征矢量,12个条码数据符对应的测试特征矢量组成了所述测试特征矢量组。
此处以EAN条码为例,但是其原则和处理方式可以适用于其他1维条码,比如Code 25,Code 39,Code 128等等。
在其他实施例中,也可以不设定测试范围,而是直接根据从图像中提取的条码的边界信息确定所述条码的每个条码数据符的位置,这样也可以实现最终的条码解码,只是可能对于较为模糊的图像成功率较低。
步骤630,利用所述条码的所有条码数据符对应的测试特征矢量和选择的标准特征矢量集解码得到所述条码的条码值。
图15示出了利用所述条码的所有条码数据符对应的测试特征矢量和选择的标准特征矢量集解码得到所述条码的条码值的方法在一个实施例中的流程示意图。如图15所示,所述方法包括如下操作。
步骤631,将所述测试特征矢量组和所述测试特征矢量组在选定的标准特征矢量集中对应的若干标准特征矢量组进行相似度比较,所述测试特征矢量组为所述条码的所有条码数据符对应的测试特征矢量的组合,所述标准特征矢量组是选定的标准特征矢量集中的部分标准特征矢量的组合。
事实上,所述测试特征矢量组必定是其对应的所述标准特征矢量集中的标准特征矢量的所有合法组合中的一种,所述合法是指符合条码类型所定义的规则。
步骤632,确定和所述测试特征矢量组总相似度最高的标准特征矢量组,基于所述测试特征矢量组中的测试特征矢量和所述标准特征矢量组中的标准特征矢量的单相似度来确定所述测试特征矢量组和所述标准特征矢量组的总相似度。比如,所述总相似度等于对应组内的测试特征矢量和标准特征矢量的单相似度的总和或平均相似度。
步骤633,根据总相似度最高的标准特征矢量组确定所述条码的条码值。这样就找到了条码的各个条码数据符表示的数值,实现了图像中的条码的解码。
一般各种线性条码制式都存在一定的验证机制,比如在数据符中引入校验数据,此时可以根据得到的所述条码的条码值进行校验,如果通过,则解码成功,否则解码失败。不失一般性,以EAN-13条码为例,其最后一位数据符是用于奇偶校验的。
解码验证
经过所述条码解码方法600后解码得到的所述条码的条码值,虽然通过了校验,但由于图像比较模糊,还是可能存在误解码,所以还可以对解码后的条码值进行进一步的验证,也就是,确定所述条码的条码值是否可信。
在一个实施例中,可以根据条码解码过程中产生的最高总相似度以及该最高总相似度对应的标准特征矢量组中的各标准特征矢量与各测试特征矢量的单相似度判定解码产生的条码值是否可信。如果可信则将解码得到的条码值作为所述线性条码识别方法1的最终输出,从而达到降低虚警率(false alarm ratio)的同时保证条码的检测率的目的。
图16为本发明中的解码验证方法700(对应于所述线性条码识别方法1的步骤700)在一个实施例中的流程示意图。如图16所示,所述解码验证方法700包括以下步骤。
步骤701,输入相似度记录,此处的相似度包括总相似度和单相似度。
在进行解码验证前,需要获得条码解码过程中获得最高总相似度以及该最高总相似度对应的标准特征矢量组中的各标准特征矢量与各测试特征矢量的单相似度。预先设定针对总相似度的三个门限值:第一相似度门限值(门限值1),第二相似度门限值(门限值2)和第三相似度门限值(门限值3),其中第一相似度门限值最高,第二相似度门限值次之,第三相似度门限值最小,预先设定针对单个相似度的两个门限值:第四相似度门限值(门限值4)和第五相似度门限值(门限值5),第四相似度门限大于第五相似度门限。
步骤702,判断获得的总相似度(即最高总相似度)是否大于门限值1,如果是,则进入步骤703认为解码得到的条码值可信,结束所述线性条码识别方法1的识别流程。否则,则进入步骤704。
步骤704,判断获得的总相似度是否大于门限值2,如果是,则进入步骤705,否则进入步骤706。
步骤705,判断最小单相似度是否大于门限值4,如果是,则进入步骤703认为解码得到的条码值可信,否则进入步骤707。
步骤706,判断总相似度是否大于门限值3,如果是,则进入步骤707,否则进入步骤708认为解码得到的条码值不可信。
步骤707,判断小最小单相似度是否大于门限值5,如果是,则进入步骤709,否则进入步骤708认为解码得到的条码值不可信。
步骤709,查找已有解码得到的相同的条码值,随后在步骤710判断解码为相同条码值的次数是否大于次数门限值6,如果是,则进入步骤703,否则进入步骤708。
在步骤708认为解码得到的条码值不可信后,在步骤711保留该条码值,返回步骤200继续进行条码识别,在解码得到所述条码的另一个条码值后,继续进行解码验证。
在经过上述条码验证后,降低虚警率(false alarm ratio),同时保证了条码的检测率。
需要注意的是,图16示出的解码验证方法700是一种较佳的实施方式,在其他实施方式中,还可以进行一些改动。比如,不设置步骤706,而直接将步骤704的否分支引导至步骤708。再比如,只设置两个总相似度门限值和一个单相似度门限值,也就是说,删除步骤706和707。
本发明中的线性条码识别方案也可以实现为一种系统,图17为本发明中的线性条码识别系统2在一个实施例中的结构示意图。如图17所示,所述线性条码识别系统2包括摄像模块10、图像预处理模块20、条码检测模块30、条码定位模块40、模糊度估计模块50、条码解码模块60和解码验证模块70。
所述摄像模块10获取连续的视频图像。所述图像预处理模块20对所述视频图像进行预处理得到固定尺寸的灰度图像。所述条码检测模块30用于在灰度图像中进行条码检测。所述条码定位模块40用于在灰度图像中定位条码的左右边界。所述模糊度估计模块50用于估计所述图像的模糊度。所述条码解码模块60用于根据所述模糊度从若干标准特征矢量集中选择对应的一个标准特征矢量集,基于所述条码的边界从图像中提取所述条码的所有条码数据符对应的测试特征矢量,以及利用所述条码的所有条码数据符对应的测试特征矢量和选择的标准特征矢量集解码得到所述条码的条码值,其中每一个标准特征矢量集对应一个模糊度范围并包括若干标准特征矢量。所述解码验证模块70确定所述解码模块60解码得到的所述条码的条码值是否可信,即进行进一步的解码验证。
图18为本发明中的条码检测模块30在一个实施例中的结构示意图。如图18所示,所述条码检测模块30包括条形区域探测单元31和条码探测单元32。
所述条形区域探测单元31在图像中搜索至少两个条形区域,并确定每个条形区域的端点。所述条码探测单元32基于搜索到的各个条形区域的端点确定搜索到的各个条形区域是否属于一个条码。
在一个实施例中,所述条形区域探测单元31在图像中搜索一个条形区域的过程包括:在图像中设定查找区域和停止区域,所述查找区域的范围小于等于所述停止区域,所述停止区域的范围大于等于所述查找区域而小于等于所述图像;在查找区域选定一行像素点;在选定的一行像素点中选定一个黑色像素点作为初始像素点,并记录其坐标;从初始像素点开始依次向下或/和向上搜索临近最低灰度值的像素点,并判断搜索到的像素点是否为黑色像素点,如果是黑色像素点,则依次记录其坐标,如果不是黑色像素点,则确定前一个黑色像素点为所述黑色区域的端点,如果搜索到的黑色像素点在所述停止区域之内,则继续搜索,如果在所述停止区域之外,则停止搜索;将所记录的黑色像素点(包括初始像素点、所述黑色区域的端点以及其他记录的黑色像素点)的坐标进行曲线拟合得到第一曲线;基于该第一曲线确定所述黑色区域是否为条形区域。优选的,所述条形区域探测单元31统计该第一曲线在各黑色像素点附近的曲率以及各黑色像素点到该第一曲线的距离;如果所述曲率小于第一曲率门限值且所有的距离不超过第一距离门限值,则认为该黑色区域是一个条形区域,否则认为该黑色区域不是一个条形区域。
所述条码探测单元32计算搜索到的各条形区域的方向的差异;将搜索到的各条形区域的同侧的端点的坐标进行曲线拟合得到第二曲线;基于各条形区域的方向的差异和/或所述第二曲线确定搜索到的各个条形区域是否属于一个条码。优选的,所述条码探测单元32统计该第二曲线在这些同侧端点附近的曲率,以及统计这些同侧端点到该第二曲线的距离;如果该曲率小于一个第二曲率门限值,各条形区域的方向的差异不超过一个第二角度门限值,各条形区域的同侧的端点和利用该侧端点拟合的第二曲线之间的距离不超过一个第二距离门限值,则认定各个条形区域属于一个条码,否则认定各个条形区域不属于一个条码。
图19为本发明中的条码定位模块40在一个实施例中的结构示意图。如图19所示,所述条码定位模块40包括边界点搜索单元41和边界确定单元42。所述边界点搜索单元41在图像中搜索至少两个左边界点和至少两个右边界点。所述边界确定单元42分别基于搜索到的左右边界点确定条码的左右边界。
在一个实施例中,在图像中设定搜索区域,所述边界点搜索单元41在所述搜索区域内进行搜索边界点。
所述边界点搜索单元41搜索到一个边界点的过程包括:
选取一行像素点,取预定像素宽度的滑动窗口,该滑动窗口从该行像素点的第一端开始朝向第二端逐像素进行移动;
每移动到一个新的位置,比较所述滑动窗口左右两侧像素点灰度值的差异,当该差异超过预定灰度值差异门限值时,即认为边界点已经位于所述滑动窗口之内;
在所述滑动窗口中每一像素点的靠近第二端的一侧选取预定数量的像素点,统计选取的这些像素点的左端点和右端点的灰度值差异,当所述灰度值差异达到最大值时,记录所述滑动窗口中对应的像素点位置,将选取的这些像素点在图像中的横坐标作为横坐标,将选取的这些像素点的灰度值作为纵坐标,进行线性拟合得到第一直线;
在记录的像素点的靠近第一端的一侧选取预定数量的像素点,找到选取的这些像素点中的属于背景区域的像素点,将确定是背景区域的像素点在图像中的横坐标作为横坐标,将确定是背景区域的像素点的灰度值作为纵坐标,进行线性拟合得到第二直线;
计算第一直线和第二直线的交点,该交点的横坐标就是该行像素点中的边界点的横坐标,该行像素点的纵坐标为该行像素点中的边界点的纵坐标。
所述边界确定单元42将搜索到的同侧边界点拟合成一条曲线;根据搜索到的同侧边界点到其拟合的曲线的距离判断是否有非法边界点,如果一个同侧边界点到其拟合的曲线的距离大于预定距离门限,则认为该同侧边界点为非法边界点;如果有,则去除非法边界点,并对剩余的同侧边界点再次拟合成一条曲线,并根据该曲线确定边界。
在一个实施例中,所述模糊度估计模块50统计条形区域和背景区域之间的过度区域附近的像素点的灰度值,利用统计到的像素点的灰度值统计相邻像素点的灰度值差异,将统计的相邻像素点的灰度值差异与预定灰度值差异门限值进行对比来判定所述过渡区域和所述背景区域的第一过度边界以及所述过渡区域与所述条形区域的第二过度边界,计算所述过度区域的两个过度边界之间的宽度,以及基于所述过度区域的宽度确定所述模糊度。
图20为本发明中的条码解码模块60在一个实施例中的结构示意图。如图20所示,所述条码解码装置60包括标准特征矢量集选定单元61、测试特征矢量提取单元62和解码单元63。
所述标准特征矢量集选定单元61根据所述模糊度从若干标准特征矢量集中选择对应的一个标准特征矢量集,每一个标准特征矢量集对应一个模糊度范围并包括若干标准特征矢量。所述测试特征矢量提取单元62从图像中提取条码的条码数据符对应的测试特征矢量。所述解码单元63利用所述条码的所有条码数据符对应的测试特征矢量和选择的标准特征矢量集解码得到所述条码的条码值。
在一个实施例中,基于条码类型所定义的一个或若干个标准条码数据符生成对应模糊度范围的一个标准特征矢量。
在一个实施例中,所述测试特征矢量提取单元62根据从图像中提取的条码的边界信息确定所述条码的每个条码数据符的位置,根据所述条码的每个条码数据符的位置从图像中提取灰度信息,并基于提取的灰度信息生成该条码数据符对应的测试特征矢量。
在一个实施例中,所述解码单元63将测试特征矢量组和其在选择的标准特征矢量集中对应的若干标准特征矢量组进行相似度比较,确定和所述测试特征矢量组总相似度最高的标准特征矢量组,以及根据总相似度最高的标准特征矢量组确定所述条码的条码值,其中所述测试特征矢量组为所述条码的所有条码数据符对应的测试特征矢量的组合,所述标准特征矢量组是所述标准特征矢量集中的若干标准特征矢量的组合,基于所述测试特征矢量组中的测试特征矢量和所述标准特征矢量组中的标准特征矢量的单相似度来确定所述测试特征矢量组和所述标准特征矢量组的总相似度。
所述解码验证模块70根据最高总相似度以及总相似度最高的标准特征矢量组中的各标准特征矢量与各测试特征矢量的单相似度判定解码得到的所述条码的条码值是否可信。
具体的,所述解码验证模块70在所述最高总相似度大于第一相似度门限值时,则认为解码得到的所述条码的条码值可信;在所述最高总相似度小于第一相似度门限值大于第二相似度门限值且最小单相似度大于第四相似度门限值时,则认为解码得到的所述条码的条码值可信;在所述最高总相似度小于第三相似度门限值时,则认为解码得到的所述条码的条码值不可信;在所述最高总相似度大于第三相似度门限值小于第二相似度门限值且最小单相似度小于第五相似度门限值时,则认为解码得到的所述条码的条码值不可信;在所述最高总相似度小于第一相似度门限值大于第二相似度门限值且最小单相似度小于第四相似度门限值大于第五相似度门限值时,或在所述最高总相似度小于第二相似度门限值大于第三相似度门限值且最小单相似度大于第五相似度门限值时,确定解码为相同条码值的次数是否大于次数门限,如果是,则认为解码得到的所述条码的条码值可信,否则,则认为解码得到的所述条码的条码值不可信;在确定所述条码的条码值不可信时,保存解码得到的所述条码的条码值。
关于各个模块的更为详细介绍也可参考前文方法部分的相应章节,此处不再赘述。比如,关于条码检测模块30的更为详细介绍也可参考前文方法部分的条码检测的章节。
本文中的“和/或”表示和或者或,比如A、B和/或C,包括A、B、C、AB、AC、BC、ABC几种情况。本文中的“包括”均表示“包括但不限于”。本文中的“步骤”和“方法”在有些情况下是可以替换的,一个方法的一个步骤也可以被称为另一个方法。本文中的“若干”为两个或两个以上,“多个”为两个或两个以上。
上文对本发明进行了足够详细的具有一定特殊性的描述。所属领域内的普通技术人员应该理解,实施例中的描述仅仅是示例性的,在不偏离本发明的真实精神和范围的前提下做出所有改变都应该属于本发明的保护范围。本发明所要求保护的范围是由所述的权利要求书进行限定的,而不是由实施例中的上述描述来限定的。
Claims (20)
1.一种线性条码识别方法,其特征在于,其包括:
获取图像;
在所述图像中进行条码检测;
在所述图像中进行条码定位以确定条码的边界;
估计所述图像的模糊度;
根据所述模糊度从若干标准特征矢量集中选择对应的一个标准特征矢量集,每一个标准特征矢量集对应一个模糊度范围并包括若干标准特征矢量;
基于所述条码的边界从图像中提取所述条码的所有条码数据符对应的测试特征矢量;和
利用所述条码的所有条码数据符对应的测试特征矢量和选择的标准特征矢量集解码得到所述条码的条码值。
2.根据权利要求1所述的线性条码识别方法,其特征在于,在所述图像中进行条码检测包括:
在图像中搜索至少两个条形区域,并确定每个条形区域的端点;和
基于搜索到的各个条形区域的端点确定搜索到的各个条形区域是否属于一个条码,如果搜索到的各个条形区域属于一个条码,则判定所述图像中包含有条码。
3.根据权利要求2所述的线性条码识别方法,其特征在于,所述在图像中搜索至少两个条形区域,并确定每个条形区域的端点包括:
选定一行像素点;
在选定的一行像素点中选定一个黑色像素点作为初始像素点;
从初始像素点开始依次向下或/和向上搜索临近最低灰度值的像素点,并判断搜索到的像素点是否为黑色像素点,如果是黑色像素点,则依次记录其坐标,如果不是黑色像素点,则确定前一个黑色像素点为所述黑色区域的端点;
将所记录的黑色像素点的坐标进行曲线拟合得到一曲线;和
基于该曲线确定所述黑色区域是否为条形区域。
4.根据权利要求1所述的线性条码识别方法,其特征在于,在所述图像中进行条码定位以确定所述条码的边界包括:
在图像中搜索至少两个左边界点和至少两个右边界点;和
分别基于搜索到的左右边界点确定条码的左右边界。
5.根据权利要求4所述的线性条码识别方法,其特征在于,所述在图像中搜索至少两个左边界点和至少两个右边界点包括:
选取一行像素点,取预定像素宽度的滑动窗口,该滑动窗口从该行像素点的第一端开始朝向第二端逐像素进行移动;
每移动到一个新的位置,比较所述滑动窗口左右两侧像素点灰度值的差异,当该差异超过预定灰度值差异门限值时,即认为边界点已经位于所述滑动窗口之内;
在所述滑动窗口中每一像素点的靠近第二端的一侧选取预定数量的像素点,统计选取的这些像素点的左端点和右端点的灰度值差异,当所述灰度值差异达到最大值时,记录所述滑动窗口中对应的像素点位置,将选取的这些像素点在图像中的横坐标作为横坐标,将选取的这些像素点的灰度值作为纵坐标,进行线性拟合得到第一直线;
在记录的像素点的靠近第一端的一侧选取预定数量的像素点,找到选取的这些像素点中的属于背景区域的像素点,将确定是背景区域的像素点在图像中的横坐标作为横坐标,将确定是背景区域的像素点的灰度值作为纵坐标,进行线性拟合得到第二直线;和
计算第一直线和第二直线的交点,该交点的横坐标就是该行像素点中的边界点的横坐标,该行像素点的纵坐标为该行像素点中的边界点的纵坐标。
6.根据权利要求1所述的线性条码识别方法,其特征在于,估计所述图像的模糊度包括:
统计条形区域和背景区域之间的过渡区域附近的像素点的灰度值;
利用统计到的像素点的灰度值统计相邻像素点的灰度值差异;
将统计的相邻像素点的灰度值差异与预定灰度值差异门限值进行对比来判定所述过渡区域和所述背景区域的第一过渡边界以及所述过渡区域与所述条形区域的第二过渡边界;
计算所述过渡区域的两个过渡边界之间的宽度;和
基于所述过渡区域的宽度确定所述模糊度。
7.根据权利要求1所述的线性条码识别方法,其特征在于,基于条码类型所定义的一个或若干个标准条码数据符生成对应模糊度范围的一个标准特征矢量。
8.根据权利要求1所述的线性条码识别方法,其特征在于,基于所述条码的边界从图像中提取所述条码的条码数据符的测试特征矢量包括:
根据所述条码的边界确定所述条码的每个条码数据符的位置;
根据所述条码的每个条码数据符的位置从图像中提取灰度信息,并基于提取的灰度信息生成该条码数据符对应的测试特征矢量。
9.根据权利要求8所述的线性条码识别方法,其特征在于,根据所述条码的边界确定所述条码的每个条码数据符的位置还包括:
根据所述模糊度和所述条码的边界确定测试范围;
在测试范围内依次确定所述条码的合法位置;和
基于确定的所述条码的合法位置确定所述条码的每个条码数据符的位置。
10.根据权利要求1-9任一所述的线性条码识别方法,其特征在于,利用所述条码的所有条码数据符对应的测试特征矢量和选择的标准特征矢量集解码得到所述条码的条码值包括:
将测试特征矢量组和其在选择的标准特征矢量集中对应的若干标准特征矢量组进行相似度比较,所述测试特征矢量组为所述条码的所有条码数据符对应的测试特征矢量的组合,所述标准特征矢量组是选定的标准特征矢量集中的若干标准特征矢量的组合;
确定和所述测试特征矢量组总相似度最高的标准特征矢量组,基于所述测试特征矢量组中的测试特征矢量和所述标准特征矢量组中的标准特征矢量的单相似度来确定所述测试特征矢量组和所述标准特征矢量组的总相似度;
根据总相似度最高的标准特征矢量组确定所述条码的条码值。
11.根据权利要求10所述的线性条码识别方法,其特征在于,其还包括有:
根据最高总相似度以及总相似度最高的标准特征矢量组中的各标准特征矢量与各测试特征矢量的单相似度判定解码得到的所述条码的条码值是否可信。
12.根据权利要求11所述的线性条码识别方法,其特征在于,根据最高总相似度以及总相似度最高的标准特征矢量组中的各标准特征矢量与各测试特征矢量的单相似度判定解码得到的所述条码的条码值是否可信包括:
在所述最高总相似度大于第一相似度门限值时,则认为解码得到的所述条码的条码值可信;
在所述最高总相似度小于第一相似度门限值大于第二相似度门限值且最小单相似度大于第四相似度门限值时,则认为解码得到的所述条码的条码值可信。
13.根据权利要求12所述的线性条码识别方法,其特征在于,根据最高总相似度以及总相似度最高的标准特征矢量组中的各标准特征矢量与各测试特征矢量的单相似度判定解码得到的所述条码的条码值是否可信还包括:
在所述最高总相似度小于第三相似度门限值时,则认为解码得到的所述条码的条码值不可信;
在所述最高总相似度大于第三相似度门限值小于第二相似度门限值且最小单相似度小于第五相似度门限值时,则认为解码得到的所述条码的条码值不可信;
在所述最高总相似度小于第一相似度门限值大于第二相似度门限值且最小单相似度小于第四相似度门限值大于第五相似度门限值时,或在所述最高总相似度小于第二相似度门限值大于第三相似度门限值且最小单相似度大于第五相似度门限值时,确定解码为相同条码值的次数是否大于次数门限,如果是,则认为解码得到的所述条码的条码值可信,否则,则认为解码得到的所述条码的条码值不可信;
在确定所述条码的条码值不可信时,保存解码得到的所述条码的条码值。
14.一种线性条码识别系统,其特征在于,其包括:
摄像模块,用于获取图像;
条码检测模块,用于在所述图像中进行条码检测;
条码定位模块,用于在所述图像中进行条码定位以确定所述条码的边界;
模糊度估计模块,用于估计所述图像的模糊度;
条码解码模块,用于根据所述模糊度从若干标准特征矢量集中选择对应的一个标准特征矢量集,基于所述条码的边界从图像中提取所述条码的所有条码数据符对应的测试特征矢量,以及利用所述条码的所有条码数据符对应的测试特征矢量和选择的标准特征矢量集解码得到所述条码的条码值,其中每一个标准特征矢量集对应一个模糊度范围并包括若干标准特征矢量。
15.根据权利要求14所述的线性条码识别系统,其特征在于,所述条码检测模块包括条形区域探测单元和条码探测单元,所述条形区域探测单元在图像中搜索至少两个条形区域,并确定每个条形区域的端点;所述条码探测单元基于搜索到的各个条形区域的端点确定搜索到的各个条形区域是否属于一个条码,
所述条形区域探测单元在图像中搜索一个条形区域的过程包括:选定一行像素点;在选定的一行像素点中选定一个黑色像素点作为初始像素点,并记录其坐标;从初始像素点开始依次向下或/和向上搜索临近最低灰度值的像素点,并判断搜索到的像素点是否为黑色像素点,如果是黑色像素点,则依次记录其坐标,如果不是黑色像素点,则确定前一个黑色像素点为所述黑色区域的端点;将所记录的黑色像素点的坐标进行曲线拟合得到一曲线;和基于该曲线确定所述黑色区域是否为条形区域。
16.根据权利要求14所述的线性条码识别系统,其特征在于,所述条码定位模块包括边界点搜索单元和边界确定单元,所述边界点搜索单元在图像中搜索至少两个左边界点和至少两个右边界点;所述边界确定单元分别基于搜索到的左右边界点确定条码的左右边界,
所述边界点搜索单元搜索到一个边界点的过程包括:
选取一行像素点,取预定像素宽度的滑动窗口,该滑动窗口从该行像素点的第一端开始朝向第二端逐像素进行移动;
每移动到一个新的位置,比较所述滑动窗口左右两侧像素点灰度值的差异,当该差异超过预定灰度值差异门限值时,即认为边界点已经位于所述滑动窗口之内;
在所述滑动窗口中每一像素点的靠近第二端的一侧选取预定数量的像素点,统计选取的这些像素点的左端点和右端点的灰度值差异,当所述灰度值差异达到最大值时,记录所述滑动窗口中对应的像素点位置,将选取的这些像素点在图像中的横坐标作为横坐标,将选取的这些像素点的灰度值作为纵坐标,进行线性拟合得到第一直线;
在记录的像素点的靠近第一端的一侧选取预定数量的像素点,找到选取的这些像素点中的属于背景区域的像素点,将确定是背景区域的像素点在图像中的横坐标作为横坐标,将确定是背景区域的像素点的灰度值作为纵坐标,进行线性拟合得到第二直线;
计算第一直线和第二直线的交点,该交点的横坐标就是该行像素点中的边界点的横坐标,该行像素点的纵坐标为该行像素点中的边界点的纵坐标。
17.根据权利要求14所述的线性条码识别系统,其特征在于,所述模糊度估计模块统计条形区域和背景区域之间的过渡区域附近的像素点的灰度值,利用统计到的像素点的灰度值统计相邻像素点的灰度值差异,将统计的相邻像素点的灰度值差异与预定灰度值差异门限值进行对比来判定所述过渡区域和所述背景区域的第一过渡边界以及所述过渡区域与所述条形区域的第二过渡边界,计算所述过渡区域的两个过渡边界之间的宽度,以及基于所述过渡区域的宽度确定所述模糊度。
18.根据权利要求14所述的线性条码识别系统,其特征在于,基于条码类型所定义的一个或若干个标准条码数据符生成对应模糊度范围的一个标准特征矢量。
19.根据权利要求14-18任一所述的线性条码识别系统,其特征在于,所述条码解码模块将测试特征矢量组和其在选择的标准特征矢量集中对应的若干标准特征矢量组进行相似度比较,确定和所述测试特征矢量组总相似度最高的标准特征矢量组,以及根据总相似度最高的标准特征矢量组确定所述条码的条码值,
其中所述测试特征矢量组为所述条码的所有条码数据符对应的测试特征矢量的组合,所述标准特征矢量组是所述标准特征矢量集中的若干标准特征矢量的组合,基于所述测试特征矢量组中的测试特征矢量和所述标准特征矢量组中的标准特征矢量的单相似度来确定所述测试特征矢量组和所述标准特征矢量组的总相似度。
20.根据权利要求19所述的线性条码识别系统,其特征在于,其还包括解码验证模块,
所述解码验证模块根据最高总相似度以及总相似度最高的标准特征矢量组中的各标准特征矢量与各测试特征矢量的单相似度判定解码得到的所述条码的条码值是否可信。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110291479.5A CN103034831B (zh) | 2011-09-30 | 2011-09-30 | 线性条码识别方法和系统 |
PCT/CN2012/082511 WO2013044875A1 (zh) | 2011-09-30 | 2012-09-29 | 线性条码识别方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110291479.5A CN103034831B (zh) | 2011-09-30 | 2011-09-30 | 线性条码识别方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103034831A CN103034831A (zh) | 2013-04-10 |
CN103034831B true CN103034831B (zh) | 2015-05-27 |
Family
ID=47994289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110291479.5A Expired - Fee Related CN103034831B (zh) | 2011-09-30 | 2011-09-30 | 线性条码识别方法和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103034831B (zh) |
WO (1) | WO2013044875A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI823463B (zh) * | 2022-01-26 | 2023-11-21 | 大陸商環旭電子股份有限公司 | 標籤完整度自適應檢測方法及系統 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239909B (zh) * | 2014-08-11 | 2018-03-16 | 北京捷通华声语音技术有限公司 | 一种图像的识别方法和装置 |
CN104361312B (zh) * | 2014-10-16 | 2017-11-14 | 北京捷通华声语音技术有限公司 | 一种对图像进行字符识别的方法和装置 |
CN104484639B (zh) * | 2014-12-30 | 2017-03-22 | 北京慧眼智行科技有限公司 | 一种解码方法及解码系统 |
JP6607122B2 (ja) * | 2016-03-30 | 2019-11-20 | ブラザー工業株式会社 | 画像解析装置 |
CN106874818B (zh) | 2016-08-30 | 2019-11-22 | 阿里巴巴集团控股有限公司 | 一种数字对象唯一标识符doi识别方法与装置 |
CN108073847B (zh) * | 2016-11-07 | 2021-09-07 | 斑马智行网络(香港)有限公司 | 对条码进行定位的方法、设备和装置 |
CN108073848B (zh) * | 2016-11-07 | 2021-03-12 | 斑马智行网络(香港)有限公司 | 一种条码识别方法、设备和装置 |
CN109948393B (zh) * | 2019-03-22 | 2022-04-26 | 凌云光技术股份有限公司 | 一种一维条码的定位方法及装置 |
CN110659529B (zh) * | 2019-09-03 | 2023-06-02 | 珠海市杰理科技股份有限公司 | 条形码识别方法、装置、计算机设备和存储介质 |
CN111476050B (zh) * | 2020-04-02 | 2023-10-10 | 北京致胜宏达科技有限公司 | 一种条码识别方法、装置、电子设备及存储介质 |
CN111476054B (zh) * | 2020-05-07 | 2022-03-08 | 浙江华睿科技股份有限公司 | 解码方法及电子设备 |
CN112950540B (zh) * | 2021-02-01 | 2022-04-15 | 联宝(合肥)电子科技有限公司 | 一种条码识别方法及设备 |
CN112990192B (zh) * | 2021-02-04 | 2024-02-02 | 西安理工大学 | 一种数字水准仪的条码标尺图像定位和识别检测方法 |
CN113139399B (zh) * | 2021-05-13 | 2024-04-12 | 阳光电源股份有限公司 | 一种图像线框识别方法及服务器 |
CN113129305B (zh) * | 2021-05-18 | 2023-06-16 | 浙江大华技术股份有限公司 | 丝锭状态的确定方法、装置、存储介质及电子装置 |
CN116385742B (zh) * | 2023-03-20 | 2024-04-12 | 北京兆讯恒达技术有限公司 | 一种低质量条码图像信号提取方法和装置 |
CN116842977B (zh) * | 2023-08-31 | 2023-11-17 | 中科微至科技股份有限公司 | 条形码识别方法 |
CN116958124B (zh) * | 2023-09-12 | 2023-12-26 | 地立(苏州)智能装备有限公司 | 一种自动包装机异常监测系统 |
CN117635729B (zh) * | 2023-11-28 | 2024-06-11 | 钛玛科(北京)工业科技有限公司 | 一种线相机背光标定器及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5412196A (en) * | 1994-04-01 | 1995-05-02 | United Parcel Service Of America, Inc. | Method and apparatus for decoding bar code images using multi-order feature vectors |
CN1674033A (zh) * | 2004-04-16 | 2005-09-28 | 广州市瀚迪科技开发有限公司 | 一种一维条码解码方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7562820B2 (en) * | 2002-12-17 | 2009-07-21 | Sharp Kabushiki Kaisha | Barcode recognition apparatus |
JP5300598B2 (ja) * | 2009-05-29 | 2013-09-25 | 株式会社東芝 | バーコード処理装置及びバーコード処理方法 |
-
2011
- 2011-09-30 CN CN201110291479.5A patent/CN103034831B/zh not_active Expired - Fee Related
-
2012
- 2012-09-29 WO PCT/CN2012/082511 patent/WO2013044875A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5412196A (en) * | 1994-04-01 | 1995-05-02 | United Parcel Service Of America, Inc. | Method and apparatus for decoding bar code images using multi-order feature vectors |
CN1674033A (zh) * | 2004-04-16 | 2005-09-28 | 广州市瀚迪科技开发有限公司 | 一种一维条码解码方法 |
Non-Patent Citations (2)
Title |
---|
基于数学形态学的二维条码边缘检测算法;谢俊喜 等;《计算机工程与应用》;20081231(第44期);第197页-第199页 * |
模糊条码图像的正则化复原算法;王凤鹏;《光学技术》;20061130;第32卷;第932页-第938页 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI823463B (zh) * | 2022-01-26 | 2023-11-21 | 大陸商環旭電子股份有限公司 | 標籤完整度自適應檢測方法及系統 |
Also Published As
Publication number | Publication date |
---|---|
CN103034831A (zh) | 2013-04-10 |
WO2013044875A1 (zh) | 2013-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103034831B (zh) | 线性条码识别方法和系统 | |
Hirzer | Marker detection for augmented reality applications | |
US10410030B2 (en) | System and method for recognizing deformed linear barcodes from a stream of varied focus video frames | |
Liu et al. | Recognition of QR Code with mobile phones | |
US8240571B2 (en) | Barcode image recognition system and associated method for hand-held device | |
Gallo et al. | Reading 1D barcodes with mobile phones using deformable templates | |
EP0669593B1 (en) | Two-dimensional code recognition method | |
JP3209108B2 (ja) | 2次元コード読み取り装置 | |
EP2921997A1 (en) | Two-dimensional code | |
CN103034830B (zh) | 条码解码方法及装置 | |
EP2715278B1 (en) | 3d scanner using structured lighting | |
WO2013112753A1 (en) | Rules for merging blocks of connected components in natural images | |
CN103034833B (zh) | 条码定位方法及装置 | |
CN105654015A (zh) | 解码二维矩阵符号的方法和系统 | |
CN108021837B (zh) | 一种条形码检测方法、条形码检测装置及电子设备 | |
US8744189B2 (en) | Character region extracting apparatus and method using character stroke width calculation | |
CN103336938A (zh) | 一种基于一维条形码图像的识别方法 | |
KR20180116729A (ko) | 물류 관리를 위한 원거리 다수의 코드 인식 방법 및 이를 이용한 코드 인식 장치 | |
CN105224903A (zh) | 一种二维码的防伪方法和二维码的读取装置 | |
KR20170010753A (ko) | 부호의 광학적 검출 방법 | |
CN105844200A (zh) | 一种判断条码类型的方法 | |
US20150227772A1 (en) | Detection and decoding method | |
Gallo et al. | Reading challenging barcodes with cameras | |
Dita et al. | Data matrix code—a reliable optical identification of microelectronic components | |
CN103778398A (zh) | 图像模糊度估计方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150527 Termination date: 20180930 |