专利名称:一种条码识别方法及装置的制作方法
一种条码识别方法及装置技术领域
本发明属于条码识别技术领域,尤其涉及一种条码识别方法及装置。
技术背景
条码技术是在信息技术和计算机技术基础上发展起来的一门集编码、印刷、识别、 数据采集和处理于一身的新兴技术。由于其识别快速、准确、可靠以及成本低等优点,被广泛应用于商业、图书管理、仓库、邮电、交通和工业控制等领域,并且势必在逐渐兴起的“物联网”应用中发挥重大的作用。
常见电子条码为广泛采用的一维条码,国际上对其进行的编码标准有EAN-8, EAN-13,UPC-A及UPC-E等各种编码标准,这些标准应用已经相当广泛,然而,其内含的信息量相当少,其只限于使用数字,在这信息爆炸的时代已不再使用。随着信息技术及硬件发展的进步,使我们得以扩展电子条码的容量,因而产生了二维条码的标准及技术,常见的二维条码的国际标准有PDF417、Data Matrix、MaxiCode及QR Code等各种标准,除了数字及符号外,有些编码方式还可以加入各国语言文字集。目前,世界上约有225种以上的一维条形码,每种一维条码都有自己的一套编码规格,以规定每个字母(可能是文字或数字)是由几个线条(Bar)及几个空白(Space)组成,以及字母的排列。一般较流行的一维条码有39码, EAN码,UPC码,1 码,以及专门用于书刊管理的ISBN,ISSN等。
现有条码识别方法一般只能对已知是一维或者二维的条码进行识别,或者只对一维或者二维条码的一、二种类型条码进行识别判断,而且识别性能不高。发明内容
本发明实施例的目的在于提供一种条码识别方法及装置,旨在解决由于现有技术没有实现对未知维数的条码进行识别判断,且识别性能不高的问题。
本发明实施例是这样实现的,一种条码识别方法,所述方法包括下述步骤
获取二值化处理后的待识别条码图像及所述图像的多个扫描起始点坐标;
按照预设的所述多个扫描起始点的顺序,依次从每一个扫描起始点开始,向上、 下、左、右四个方向分别对该图像进行逐行与逐列扫描,获取所述图像中条码的外接矩形;
根据所述外接矩形的特征和/或所述外接矩形中条码的特征信息,判断获取所述条码的维数。
本发明实施例的另一目的在于提供一种条码识别装置,所述装置包括
扫描起始点获取单元,用于获取二值化处理后的待识别条码图像及所述图像的多个扫描起始点坐标;
外接矩形获取单元,用于按照预设的所述多个扫描起始点的顺序,依次从每一个扫描起始点开始,向上、下、左、右四个方向分别对该图像进行逐行与逐列扫描,获取所述图像中条码的外接矩形;以及
维数获取单元,用于根据所述外接矩形的特征和/或所述外接矩形中条码的特征信息,判断获取所述条码的维数。
本发明实施例通过获取二值化处理后的待识别条码图像及该图像的多个扫描起始点坐标,按照预设的该多个扫描起始点的顺序,依次从每一个扫描起始点开始,向上、下、 左、右四个方向分别对该图像进行逐行与逐列扫描,获取该图像中条码的外接矩形;根据该外接矩形的特征和/或该外接矩形中条码的特征信息,判断获取该条码的维数,解决了由于现有技术没有实现对未知维数的条码进行识别判断,且识别性能不高的问题,从而能够自动识别条码维数,识别性能也得到提高。
图1是本发明第一实施例提供的条码识别方法的实现流程图2是本发明第一实施例提供的条码识别方法的实现流程图3是本发明实施例提供的一维条码的示意图4a、4b分别是本发明实施例提供的一维条码与二维条码的示意图5是本发明第一实施例提供的条码识别方法的实现流程图6是本发明第二实施例提供的条码识别方法中最佳亮度值的获取流程图7是本发明第三实施例提供的条码识别方法的实现流程图8是本发明第四实施例提供的条码识别装置的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例通过获取待识别图像的外接矩形,根据该外接矩形和/或该外接矩形中条码的特征信息来获取该图像中条码的维数,实现了对未知维数的条码进行识别判断以及对一幅图像所包含的多个条码的识别判断,也使得识别性能得到提高。
本发明实施例提供了一种条码识别方法,所述方法包括下述步骤
获取二值化处理后的待识别条码图像及所述图像的多个扫描起始点坐标;
按照预设的所述多个扫描起始点的顺序,依次从每一个扫描起始点开始,向上、 下、左、右四个方向分别对该图像进行逐行与逐列扫描,获取所述图像中条码的外接矩形;
根据所述外接矩形的特征和/或所述外接矩形中条码的特征信息,判断获取所述条码的维数。
本发明实施例还提供了一种条码识别装置,所述装置包括
扫描起始点获取单元,用于获取二值化处理后的待识别条码图像及所述图像的多个扫描起始点坐标;
外接矩形获取单元,用于按照预设的所述多个扫描起始点的顺序,依次从每一个扫描起始点开始,向上、下、左、右四个方向分别对该图像进行逐行与逐列扫描,获取所述图像中条码的外接矩形;以及
维数获取单元,用于根据所述外接矩形的特征和/或所述外接矩形中条码的特征信息,判断获取所述条码的维数。
本发明实施例通过获取二值化处理后的待识别条码图像以及该图像的多个扫描起始点坐标,按照预设的该多个扫描起始点的顺序,依次从每一个扫描起始点开始,向上、 下、左、右四个方向分别对该图像进行逐行与逐列扫描,获取该图像中条码的外接矩形;根据该外接矩形的特征和/或该外接矩形中条码的特征信息,判断获取该条码的维数,实现了对未知维数的条码进行识别判断以及对一幅图像所包含的多个条码的识别判断,也提高了识别性能的目的。
以下结合具体实施例对本发明的具体实现进行详细描述
一维条码又称线形条码,是由平行排列的多个“条”和“空”单元组成,条码信息依靠条和空的不同宽度和位置来表达。二维条码是由按一定规律在二维方向上分布的黑白相间的特定几何图形组成,其可以在二维方向上表达信息。二维条码可以分为行列式二维条码和矩阵式二维条码。行列式二维条码是由多行短截的一维条码堆叠而成,代表性的行列式二维条码包括PDF417、C0de49、C0de 16k等。行列式二维条码信息表示方法与一维条码类似,也是依靠条和空的不同宽度和位置来表达。矩阵式二维条码是由按预定规则分布于矩阵中的黑、白模块组成,代表性的矩阵式二维条码包括QR码、Data Matrix码、Maxi码、 htec码、汉信码等。
实施例一
图1示出了本发明第一实施例提供的条码识别方法的实现流程,详述如下
在步骤SlOl中,获取二值化处理后的待识别条码图像以及该图像的多个扫描起始点坐标。
在具体实施过程中,首先从摄像头获取待识别的彩色条码图像,并将该彩色条码图像进行灰度化处理,接着获取灰度化处理后的该图像,计算该图像的直方图,由于条码一般是黑色亮度和白色亮度组成,则在该直方图中将出现靠近黑色亮度区域的波峰和一个靠近白色亮度区域的波峰,因此可以确定两个波峰之间的一个最佳亮度值,对该图像进行分割,若两个峰值的距离比较接近,小于预设的距离值,则认为该图像的对比度不够,不存在条码的条件;两个峰值比较远,则认为存在条码,获取该两个峰值中间的某个最佳亮度值, 以该值作为图像二值化的判断阈值,将图像中大于阈值的灰度值设为1,否则为0,从而获取二值化处理后的待识别图像,进而可以获取该图像的多个扫描起始点坐标,该图像的多个扫描起始点坐标包括所述图像的中心点坐标等,例如以(Xe,Yc)表示该中心点的坐标。 具体地,首先需要对待识别条码图像进行预设个数的分块,获取分块后每一块图像的中心点,则分块后每一块图像的中心点即为该图像的扫描起始点,则获取了该图像的多个扫描起始点,在实际识别过程中,可以将该待识别条码图像分成四块,获取分块后该四块分块图像的中心点,加上该整幅待识别图像的中心点,可以获取5个扫描起始点。
具体地,获取该作为图像二值化的最佳亮度值或者阈值的具体过程如下实施例二所述,但不限于该实施例的获取过程,在此不再赘述。
在本发明实施例中,由于现有的一维或者二维条码是由灰度值为0的黑色和灰度值为1的白色组成,对图像进行二值化处理后,再进行条码的获取及维数的判断,使得结果更准确。
在步骤S102中,按照预设的该多个扫描起始点的顺序,依次从每一个扫描起始点开始,向上、下、左、右四个方向分别对该图像进行逐行与逐列扫描,获取该图像中条码的外接矩形。
其中,该预设的该多个扫描起始点的顺序可以根据用户需要预先设定,比如可以将该多个扫描起始点所包括的该待识别图像的中心点作为第一扫描起始点,其他按照图像的左上、右上、左下、右下的顺序对剩余的扫描起始点排序。
该步骤S102具体包括以下步骤,该待识别图像的中心点坐标为(Xc,Yc),如图2所示
步骤S221中,获取该多个扫描起始点的第一扫描起始点。
步骤S222中,从该扫描起始点开始,对该条码图像进行逐行扫描,确定最小纵坐标和最大纵坐标。
具体地,以图像的左上角为坐标系X-Y的原点(0,0),水平向右为X方向,横坐标值从左至右逐渐增加,垂直方向为Y方向,纵坐标从上到下逐渐增加。则从扫描起始点开始往下逐行扫描(水平扫描)该图像,纵坐标值逐渐增大,逐行加1,按照扫描顺序,计算扫描方向上每一行图像中出现像素值连续为1(表示白色)的个数,若该个数大于预设的像素阈值,该预设的像素阈值可以为该条码图像每一行像素总个数的1/4,则认为是条码的边界,条码周围是白色区域,此时该行对应的纵坐标即为最大的纵坐标Ymax值,否则继续扫描,获取该Ymax。同样,从扫描起始点开始往上逐行扫描该图像,纵坐标值逐渐较小,逐行减1,则按照扫描顺序,计算扫描方向上每一行图像中,出现像素值连续为1(表示白色)的个数,若该个数大于预设的像素阈值,该预设的像素阈值可以为图像每一行的像素总个数的1/4,则认为是条码的边界,条码周围是白色区域,此时该行的纵坐标即为最小的纵坐标 Ymin 值。
在具体实施过程中,对于条码类型为一维的横向水平条码,此时获取的Ymax值与 Ymin值范围较小,而对于一维的竖向垂直条码或者二维条码,此时获取的Ymax值与Ymin值范围较大。
步骤S223中,从该扫描起始点开始,对该图像进行逐列扫描,确定最小横坐标和最大横坐标。
具体地,从该扫描起始点开始往左逐列扫描(垂直扫描)该图像,横坐标值逐渐减小,逐列减1,按照扫描顺序,计算扫描方向上每一列图像中,出现像素值连续为1(表示白色)的个数,若该个数大于预设的像素阈值,该预设的像素阈值可以为图像每一列的像素总个数的1/4,则认为是条码的边界,条码周围是白色区域,此时该列的横坐标即为最小的横坐标Xmin。同样,从该扫描起始点开始往右逐列扫描(垂直扫描)该图像,横坐标值逐渐增加,逐列加1,按照上述条件,可以获取最大的横坐标值Xmax。
在具体实施过程中,对于条码类型为一维的竖向垂直条码,此时获取的Xmax值与 Xmin值范围较小,而对于一维的横向水平条码或者二维条码,此时获取的Xmax值与Xmin值范围较大。
步骤S2M中,根据获取的最大横坐标、最小横坐标、最大纵坐标、最小纵坐标,获取并保存该条码的外接矩形。
具体地,以(Xmin,Ymin)、(Xmax, Ymin)、(Xmin、Ymax)、(Xmax, Ymax)为四边形的四个顶点,确定外接矩形。
步骤S225中,判断该扫描起始点是否为该多个扫描起始点的最后一个扫描起始点,是,则执行步骤S227,退出,否,则执行步骤S2^。
步骤中,获取该多个扫描起始点的下一扫描起始点,并返回执行步骤S222。
在本发明实施例中,该条码识别方法支持一幅图像中多个条码的识别,当该图像中存在多个条码时,利用上述步骤S221至S227可以获取该图像中每个条码的外接矩形。另外,如果用户只需要识别该待识别图像中心附近的条码,则可以设定以将该多个扫描起始点所包括的该待识别图像的中心点作为第一扫描起始点,从而在获取第一个外接矩形后就直接退出,执行下述步骤S103即可,同样可以根据实际需要,获取该待识别图像其他部位附近的条码的外接矩形,从而提高识别效率。
在步骤S103中,根据该外接矩形的特征和/或该外接矩形中条码的特征信息,判断获取该条码的维数。
在具体实施过程中,该外接矩形的特征包外接矩形的长、高等,该外接矩形的长是指外接矩形在χ方向上的长度或者是Xmax与Xmin之间的距离,外接矩形的高是指外接矩形在Y方向上的长度Ymax与Ymin之间的距离,在获取条码的外接矩形后,若该外接矩形的长(Xmax与Xmin之间的距离)小于预设的长度值,或该外接矩形的高(Ymax与Ymin之间的距离)小于预设的高度值时,则认为该条码不是二维条码,确定该条码的维数是一;当该外接矩形的长小于预设的长度值,且该外接矩形的高小于预设的高度值时,则认为不存在条码;当该外接矩形的长小于预设的长度值,而该外接矩形的高大于预设的高度值时,则认为该一维条码为竖直型条码,如图3所示;当该外接矩形的高小于预设的高度值,而该外接矩形的长大于预设的长度值时,则认为该一维条码为水平型条码,而不是二维条码;若该外接矩形的长大于预设的长度值,且该外接矩形的高大于预设的高度值时,则需要进一步结合该条码的特征信息来确定该条码的维数,该条码的特征信息是指该条码的条空宽度信息,包括条空宽度值,条空分布信息等,该条空分布信息是指任意2行或者多行的条空分布是否相同等。
具体地,若该外接矩形的长大于预设的长度值,且该外接矩形的高大于预设的高度值时,可以随机多次垂直或者水平扫描该外接矩形中任意2列或者2行条码,若该2列条码中存在相同的条空宽度信息或者该2行条码中存在相同的条空宽度信息,则认为该条码为一维条码,如图如所示,且若各行条空宽度基本上相等,则认为条码是水平的;若各列条空宽度基本上相等,则认为条码是垂直的,否则认为该条码为二维条码,如图4b所示,该扫描的次数可以根据用户需要设定,扫描次数越多,数据的可靠性越稳定,判断结果越准确。
另外,在确定该条码为一维条码后,根据该2列或者2行条码中相同的条空宽度的条空线的方向,若该条空线的方向为垂直或者偏向垂直方向,则在以后条码种类判定时, 可以只进行垂直扫描,具体可以隔列进行从上到下与从下到上垂直交替扫描,就可以确定该条码的类型,同样,若该条空线的方向为水平或者偏向水平方向,则在以后条码种类判定时,可以只进行水平扫描,具体可以隔行进行从左到右与从右到左水平交替扫描,从而不管条码顺着放,倒着放,旋转着放,都可以对其类型进行识别,使得该确定该一维条码的类型的方法具有较强的适应性,且能够提高条码类型的识别速度。
在本发明实施例中,该条码识别方法支持一幅图像中多个条码的识别,当该图像中存在多个条码时,按照检测到该多个条码的顺序,判断获取该多个条码的维数,具体地, 首先需要对待识别条码图像进行预设个数的分块,比如分成五块,获取分块后每一块图像8的中心点,则在对待识别条码图像进行二值化处理后,从每一块图像的中心点开始,也即从扫描起始点开始,向上、下、左、右四个方向分别对该图像进行逐行与逐列扫描,获取该图像中每个条码的外接矩形,接着逐个获取该每个条码的外接矩形的特征和/或该外接矩形中条码的特征信息,根据每个条码的外接矩形的特征和/或该外接矩形中条码的特征信息判断获取该条码的维数,由于在识别一幅图像所包含的多个条码时,预先对条码图像进行预设个数的分块,再获取分块后每一块图像的中心点或者扫描起始点,可以保证所获取的扫描起始点落在该多个条码中,从而可以进行下一步的条码维数识别,也使得该方法能够适应多种条码的应用场景,具有较强的自适应性。
该条码识别方法还包括以下步骤,如图5所示
在S501中,当判断该条码的维数为一维时,根据该外接矩形中条码的特征信息, 或者对该图像进行预处理后获取的条空信息,判断预设的多种条码类型表中是否存在匹配的条空信息。
具体地,在确定该条码为一维条码后,根据已经获取的该外接矩形中条码的特征信息,可以判断预设的多种条码类型表中是否存在匹配的条空信息,如无法判断则在确定该条码为一维条码后,也可以采用1维图像边缘处理方法处理该条码图像及自动去噪功能等预处理操作,以更精确的获取该一维条码的条空信息,该条空信息为通过对该一维条码按照条空线的方向进行垂直或者水平扫描等获取的多行条空的特征信息,也即进一步获取预处理后该条码的条空宽度信息及条空线的方向。
其中,该预设的多种条码类型表为在识别条码之前预先配置,配置有多种类型的条码及对应的条码特征,以方便在进行条码的识别时使用,且用户可以根据需要随时添加其他类型的条码至该类型表中,具有较好的扩展性。该表中各条码类型放置根据使用的条码类型的频率排序,也即配置各条码的检测识别优先级别,使得在当前图像中检测到的条码,其配置的优先级最高时,则在获取该条码的类型后,则不必继续检测后面的类型的条码,从而提高了条码识别速度。
在S502中,当存在匹配的条空信息时,获取与该匹配的条空信息对应的条码类型。
在S503中,根据该条码类型对该条码进行识别,并输出识别结果。
在具体实施过程中,假如当前图像的条码是eanl3,则进行eanl3类型的条码识别,图3为eanl3类型条码图像。根据该条码多行的条空宽度信息确定最终的类型结果,并将该结果输出。
在本发明实施例中,该一维条码类型的判断方法通过先对条码进行预处理,如边缘检测、去噪等,再进行按照条空线方向的多行扫描,获取条空信息,结合该条空信息与预设的多种条码类型表,得到条码的类型结果,使得条码识别精度得到提高,误识率得到降低。
该条码识别方法还包括对二维条码的类型判断步骤,其具体实现过程如下实施例三所述,在此不再赘述。
实施例二
图6示出了本发明第二实施例提供的条码识别方法中最佳亮度值的获取流程,具体为对待识别的彩色图像进行灰度化处理,获取该灰度图像的直方图后,对该图像进行二值化处理(二值为0、1),获取作为二值化的最佳亮度值或者阈值的过程,但不限于该实施例的获取过程,详述如下
在步骤S601中,获取该直方图中的第一峰值以及该第一峰值对应的第一灰度值。
具体地,该第一峰值为该灰度图像中出现最多的某一灰度值的个数,也即该直方图中的最大值,以maxBucketCount表示,并获取该最大值对应的第一灰度值,也即该灰度图像中出现最多的该某一灰度值,以firstPeak表示。另外,当该灰度图像中出现最多的灰度值不止一个时,则可以取灰度值较小的灰度所对应的峰值作为第一峰值。
在步骤S602中,获取该直方图中的第二峰值以及该第二峰值对应的第二灰度值。
具体地,以i表示除灰度值firstPeak以外的其他灰度值,distanceToBiggest表示i到firstPeak的距离,也即灰度值差,hist0gram[i]表示该i对应的直方图值,也即该灰度图像中出现灰度值i的个数,则利用下述公式(1)获取i对应的峰值sCOre[i]
score [i] = histogram[i] ^distanceToBiggest A 2(1)
因而,利用公式(1)可以获取除firstPeak以外的所有其他灰度值对应的峰值, 则其中最大的峰值即为该直方图中的第二峰值,且获取该第二峰值对应的第二灰度值,以 secondPeak 表不。
在步骤S603中,当该第一灰度值大于该第二灰度值时,交换该第一灰度值与该第二灰度值。
具体地,比较 firstPeak 和 secondPeak,如果 firstPeak 大于 secondPeak,则交换该两个数据,以确保firstPeak是小数据,也即使得该firstPeak对应的亮度值较小,靠近黑色,而secondPeak靠近白色区域。
在步骤S604中,判断该第二灰度值与该第一灰度值的差值是否大于预设的距离值,是,则继续执行步骤S605,否则,执行步骤S606,退出。
在本发明实施例中,根据实际试验获取的数据可知,以numBuckets代表该灰度图像的最大灰度值,若secondPeak减firstPeak的值小于等于(numBuckets/16),则说明该灰度图像的对比度效果不好,图像进行二值化后所表示的内容会与真实图像的内容有较大误差,则说明该图像中不存在条码,也即若两个峰值的距离比较接近,小于预设的距离值 numBuckets/16,则认为该图像的对比度不够,不存在条码的条件,此时则退出该条码识别过程,否则继续执行步骤S605。
在步骤S605中,根据该第二灰度值与该第一灰度值,确定最佳二值化的阈值。
具体地,用j表示在该第二灰度值secondPeak与该第一灰度值firstPeak之间的灰度值,fromFirst代表j与firstPeak的距离,则利用下述公式(2)获取j的波谷值 SCORE[j]
SCORE[j] = fromFirst Λ2氺(secondPeak—j)氺(maxBucketCount_histogram[j]) (2)
因而,利用公式(1)可以获取在该第二灰度值secondPeak与该第一灰度值 firstPeak之间的灰度值所对应的波谷值,从而确定其中最大的波谷值所对应的灰度值即为所需要的用于图像二值化的最佳亮度值或者阈值。
在本发明实施例中,该获取最佳亮度值的方法使得该波谷更靠近白色区域,而不是靠近黑色区域,也即作为二值化的阈值更大,从而使得图像二值化的效果更好,分割更为准确,二值化后的待识别图像更接近于真实的图像所表示的内容,进而使得获取图像中的条码以及条码维数判断的结果更准确。
实施例三
图7示出了本发明第三实施例提供的条码识别方法中对二维条码类型判断的流程,详述如下
在步骤S701中,当判断该条码的维数为二维时,判断该外接矩形中是否存在与预设的多种条码类型表中的一种类型的条码特征相匹配的特征。
其中,该预设的多种条码类型表为在识别条码之前预先配置,配置有多种类型的条码及对应的条码特征,以方便在进行条码的识别时使用,且用户可以根据需要随时添加或者其他类型的条码至该类型表中,具有较好的扩展性。该表中各条码类型放置根据使用的条码类型的频率排序,也即配置各条码的检测识别优先级别,使得在当前图像中检测到的条码,其配置的优先级最高时,则在获取该条码的类型后,则不必继续检测后面的类型的条码,从而提高了条码识别速度。
在步骤S702中,当存在匹配的特征时,获取与该特征对应的条码类型。
在步骤S703中,根据该条码类型对该条码进行识别,并输出识别结果。
在具体实施过程中,当该条码为二维条码时,首先获取该预设的多种条码类型表中的第一种类型(优先级最高)的条码的特征,判断在该外接矩形中是否存在匹配的该特征,是,则该预设的多种条码类型表中的第一种类型(优先级最高)的条码即为该待识别条码的类型,退出识别过程;否,则继续获取该预设的多种条码类型表中的下一种类型条码的特征,继续重复上述步骤,直至存在匹配的特征时退出,或者该条码外接矩形中不存在与预设的多种条码类型表中的所有类型的二维条码特征相匹配的特征时退出。
具体的,比如,首先获取该预设的多种条码类型表中的第一种类型(优先级最高) 的条码为QR码,则该QR码的条码特征为定位探测器符号,则在条码外接矩形4个点的周边小分为区域里或者所有区域里,分别进行定位探测器符号的搜索,若找不到,则搜索另一种二维条码的条码特征。
另外,也可以将预设的多种条码类型表按照线性条码和矩阵条码进行分类配置, 则在区分条码类型的判断过程中,可以层次进行判断,首先判断该外接矩形中是否存在线性条码的特征,是,则进行具体的某一种线性条码特征的判断,否则,该条码为矩阵条码,同样进行具体的某一种矩阵条码特征的判断。在获取条码的类型以后,对该条码按照现有技术进行译码,以识别并输出条码所包含的信息。
在本发明实施例中,该对二维条码类型判断的方法结合了预设的多种条码类型表以及外接矩形中条码的特征,进行条码类型的判断获取,提高条码识别速度。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中, 所述的存储介质,如ROM/RAM、磁盘、光盘等。
实施例四
图8示出了本发明第四实施例提供的条码识别装置的结构,为了便于说明,仅示出了与本发明实施例相关的部分。
该条码识别装置包括扫描起始点获取单元81、外接矩形获取单元82以及维数获取单元83,其中
扫描起始点获取单元81,用于获取二值化处理后的待识别条码图像及该图像的多个扫描起始点坐标。
在本发明实施例中,首先从摄像头获取待识别的彩色图像,并将该彩色图像进行灰度化处理,接着获取灰度化处理后的该图像,计算该图像的直方图,由于条码一般是黑色亮度和白色亮度组成,则在该直方图中将出现靠近黑色亮度区域的波峰和一个靠近白色亮度区域的波峰,因此可以确定两个波峰之间的一个最佳亮度值,对该图像进行分割,若两个峰值的距离比较接近,小于预设的距离值,则认为该图像的对比度不够,不存在条码的条件;两个峰值比较远,则认为存在条码,获取该两个峰值中间的某个最佳亮度值,以该值作为图像二值化的判断阈值,将图像中大于阈值的灰度值设为1,否则为0,从而利用扫描起始点获取单元81获取二值化处理后的待识别图像及该图像的多个扫描起始点坐标,该图像的多个扫描起始点坐标包括所述图像的中心点坐标等。具体地,首先需要对待识别条码图像进行预设个数的分块,获取分块后每一块图像的中心点,则分块后每一块图像的中心点即为该图像的扫描起始点,则获取了该图像的多个扫描起始点,在实际识别过程中,可以将该待识别条码图像分成四块,获取分块后该四块分块图像的中心点,加上该整幅待识别图像的中心点,可以获取5个扫描起始点。
外接矩形获取单元82,用于按照预设的该多个扫描起始点的顺序,依次从每一个扫描起始点开始,向上、下、左、右四个方向分别对该图像进行逐行与逐列扫描,获取该图像中条码的外接矩形。
在本发明实施例中,该预设的该多个扫描起始点的顺序可以根据用户需要预先设定,比如可以将该多个扫描起始点所包括的该待识别图像的中心点作为第一扫描起始点, 其他按照图像的左上、右上、左下、右下的顺序对剩余的扫描起始点排序。利用外接矩形获取单元82按照预设的该多个扫描起始点的顺序,依次从每一个扫描起始点开始,对该条码图像进行逐行扫描,确定最小纵坐标和最大纵坐标,再从该扫描起始点开始,对该图像进行逐列扫描,确定最小横坐标和最大横坐标,最后根据获取的最大横坐标、最小横坐标、最大纵坐标、最小纵坐标,可以获取该条码的外接矩形。
维数获取单元83用于根据该外接矩形的特征和/或该外接矩形中条码的特征信息,判断获取该条码的维数。
该维数获取单元83具体包括
第一判断单元,用于当该外接矩形的长小于预设的长度值,或该外接矩形的高小于预设的高度值时,则该条码的维数是一;
第二判断单元,用于当该外接矩形的长小于预设的长度值,且该外接矩形的高小于预设的高度值时,则该图像中不存在条码;以及
第三判断单元,用于当该外接矩形的长大于预设的长度值,且该外接矩形的高大于预设的高度值时,则根据该外接矩形中条码的条空宽度信息,进一步确定该条码的维数是一或者二。
在本发明实施例中,该外接矩形的特征包外接矩形的长、高等,该外接矩形的长是指外接矩形在χ方向上的长度或者是Xmax与Xmin之间的距离,外接矩形的高是指外接矩形在Y方向上的长度Ymax与Ymin之间的距离。在获取条码的外接矩形后,若该外接矩形10/12 页的长(Xmax与Xmin之间的距离)小于预设的长度值,或该外接矩形的高(Ymax与Ymin之间的距离)小于预设的高度值时,则认为该条码不是二维条码,确定该条码的维数是一;当该外接矩形的长小于预设的长度值,且该外接矩形的高小于预设的高度值时,则认为不存在条码;当该外接矩形的长小于预设的长度值,而该外接矩形的高大于预设的高度值时,则认为该一维条码为竖直型条码,如图3所示;当该外接矩形的高小于预设的高度值,而该外接矩形的长大于预设的长度值时,则认为该一维条码为水平型条码,而不是二维条码;若该外接矩形的长大于预设的长度值,且该外接矩形的高大于预设的高度值时,则需要进一步结合该条码的特征信息来确定该条码的维数,该条码的特征信息是指该条码的条空宽度信息,包括条空宽度值,条空分布信息等,该条空分布信息是指任意2行或者多行的条空分布是否相同等。
具体地,若该外接矩形的长大于预设的长度值,且该外接矩形的高大于预设的高度值时,可以随机多次垂直或者水平扫描该外接矩形中任意2列或者2行条码,若该2列条码中存在相同的条空宽度信息或者该2行条码中存在相同的条空宽度信息,则认为该条码为一维条码,如图如所示,且若各行条空宽度基本上相等,则认为条码是水平的;若各列条空宽度基本上相等,则认为条码是垂直的,否则认为该条码为二维条码,如图4b所示,该扫描的次数可以根据用户需要设定,扫描次数越多,数据的可靠性越稳定,判断结果越准确。
另外,在确定该条码为一维条码后,根据该2列或者2行条码中相同的条空宽度的条空线的方向,若该条空线的方向为垂直或者偏向垂直方向,则在以后条码种类判定时, 可以只进行垂直扫描,具体可以隔列进行从上到下与从下到上垂直交替扫描,就可以确定该条码的类型,同样,若该条空线的方向为水平或者偏向水平方向,则在以后条码种类判定时,可以只进行水平扫描,具体可以隔行进行从左到右与从右到左水平交替扫描,从而不管条码顺着放,倒着放,旋转着放,都可以对其类型进行识别,使得该确定该一维条码的类型的方法具有较强的适应性,且能够提高条码类型的识别速度。
在本发明实施例中,该条码识别装置支持一幅图像中多个条码的识别,当该图像中存在多个条码时,按照检测到该多个条码的顺序,判断获取该多个条码的维数,具体地, 首先需要对待识别条码图像进行预设个数的分块,比如分成五块,获取分块后每一块图像的中心点,则在对待识别条码图像进行二值化处理后,从每一块图像的中心点开始,也即从扫描起始点开始,向上、下、左、右四个方向分别对该图像进行逐行与逐列扫描,获取该图像中每个条码的外接矩形,接着逐个获取该每个条码的外接矩形的特征和/或该外接矩形中条码的特征信息,根据每个条码的外接矩形的特征和/或该外接矩形中条码的特征信息判断获取该条码的维数,由于在识别一幅图像所包含的多个条码时,预先对条码图像进行预设个数的分块,再获取分块后每一块图像的中心点或者扫描起始点,可以保证所获取的扫描起始点落在该多个条码中,从而可以进行下一步的条码维数识别,也使得该方法能够适应多种条码的应用场景,具有较强的自适应性。
本发明实施例解决了在对一幅图像进行条码自动识别时,通过该扫描起始点获取单元81获取二值化处理后的待识别图像以及该图像的扫描起始点坐标;外接矩形获取单元82按照预设的该多个扫描起始点的顺序,依次从每一个扫描起始点开始,向上、下、左、 右四个方向分别对该图像进行逐行与逐列扫描,获取该图像中条码的外接矩形实现了在未知条码的维数情况下;维数获取单元83根据条码的特征获取到的外接矩形及其中的条码13特征信息等,获取了条码的维数,从而可以进一步识别该维数的条码的种类和信息等,且该识别方法支持多种扫描方式,也提高了条码的识别性能。
该条码识别装置还包括
匹配单元,用于当判断该条码的维数为一维时,根据该外接矩形中条码的特征信息,或者对该图像进行预处理后获取的条空信息,判断预设的多种条码类型表中是否存在匹配的条空信息;以及
—维条码类型获取单元,用于当存在匹配的条空信息时,获取与该匹配的条空信息对应的条码类型。
其中,该预设的多种条码类型表为在识别条码之前预先配置,配置有多种类型的条码及对应的条码特征,以方便在进行条码的识别时使用,且用户可以根据需要随时添加或者其他类型的条码至该类型表中,具有较好的扩展性。该表中各条码类型放置根据使用的条码类型的频率排序,也即配置各条码的检测识别优先级别,使得在当前图像中检测到的条码,其配置的优先级最高时,则在获取该条码的类型后,则不必继续检测后面的类型的条码,从而提高了条码识别速度。
在本发明实施例中,在确定该条码为一维条码后,采用1维图像边缘处理方法处理该条码图像及自动去噪功能等预处理操作,以更精确的获取该一维条码的条空信息,该条空信息为通过对该一维条码按照条空线的方向进行垂直或者水平扫描等获取的多行条空的宽度信息,结合该条空信息与预设的多种条码类型表,得到条码的类型结果,使得条码识别精度得到提高,误识率得到降低。
该条码识别装置还包括
判断单元,用于当判断该条码的维数为二维时,判断该外接矩形中是否存在与预设的多种条码类型表中的一种类型的条码特征相匹配的特征;以及
二维条码类型获取单元,用于当存在匹配的特征时,获取与该特征对应的条码类型。
该条码识别装置还包括
输出单元,用于根据该条码类型对该条码进行识别,并输出识别结果。
在本发明实施例中,当该条码为二维条码时,首先获取该预设的多种条码类型表中的第一种类型(优先级最高)的条码的特征,判断在该外接矩形中是否存在匹配的该特征,是,则该预设的多种条码类型表中的第一种类型(优先级最高)的条码即为该待识别条码的类型,退出识别过程;否,则继续获取该预设的多种条码类型表中的下一种类型条码的特征,继续重复上述步骤,直至存在匹配的特征时退出,或者该条码外接矩形中不存在与预设的多种条码类型表中的所有类型的二维条码特征相匹配的特征时退出。
本发明实施例提供的该对二维条码类型判断的方法,结合了预设的多种条码类型表以及外接矩形中条码的特征,进行条码类型的判断获取,提高条码识别速度。
本发明实施例通过获取二值化处理后的待识别条码图像以及该图像的扫描起始点坐标,按照预设的该多个扫描起始点的顺序,依次从每一个扫描起始点开始,向上、下、 左、右四个方向分别对该图像进行逐行与逐列扫描,获取该图像中条码的外接矩形,根据该外接矩形的特征和/或该外接矩形中条码的特征信息,判断获取该条码的维数,解决了由于现有技术没有实现对未知维数的条码进行识别判断,且识别性能不高的问题,达到了对未知维数的条码进行识别判断及对一幅图像所包含的多个条码的识别判断的目的,且提高了识别性能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种条码识别方法,其特征在于,所述方法包括下述步骤获取二值化处理后的待识别条码图像及所述图像的多个扫描起始点坐标; 按照预设的所述多个扫描起始点的顺序,依次从每一个扫描起始点开始,向上、下、左、 右四个方向分别对该图像进行逐行与逐列扫描,获取所述图像中条码的外接矩形;根据所述外接矩形的特征和/或所述外接矩形中条码的特征信息,判断获取所述条码的维数。
2.如权利要求1所述的方法,其特征在于,所述方法还包括以下步骤 当所述图像中存在多个条码时,获取所述图像中每个条码的外接矩形;按照检测到所述多个条码的顺序,根据每个条码的外接矩形的特征和/或所述外接矩形中条码的特征信息,判断获取所述每个条码的维数。
3.如权利要求1所述的方法,其特征在于,所述图像的多个扫描起始点坐标包括所述图像的中心点坐标,所述条码的特征信息指所述条码的条空宽度信息。
4.如权利要求1所述的方法,其特征在于,所述方法还包括以下步骤当判断该条码的维数为一维时,根据该外接矩形中条码的特征信息,或者对该图像进行预处理后获取的条空信息,判断预设的多种条码类型表中是否存在匹配的条空信息; 当存在匹配的条空信息时,获取与所述匹配的条空信息对应的条码类型。
5.如权利要求1所述的方法,其特征在于,所述方法还包括以下步骤当判断所述条码的维数为二维时,判断所述外接矩形中是否存在与预设的多种条码类型表中的一种类型的条码特征相匹配的特征;当存在匹配的特征时,获取与所述特征对应的条码类型。
6.如权利要求3所述的方法,其特征在于,所述方法还包括以下步骤当所述外接矩形的长小于预设的长度值,或所述外接矩形的高小于预设的高度值时, 则所述条码的维数是一;当所述外接矩形的长小于预设的长度值,且所述外接矩形的高小于预设的高度值时, 则所述图像中不存在条码;当所述外接矩形的长大于预设的长度值,且所述外接矩形的高大于预设的高度值时, 则根据所述外接矩形中条码的条空宽度信息,进一步确定所述条码的维数是一或者二。
7.—种条码识别装置,其特征在于,所述装置包括扫描起始点获取单元,用于获取二值化处理后的待识别条码图像及所述图像的多个扫描起始点坐标;外接矩形获取单元,用于按照预设的所述多个扫描起始点的顺序,依次从每一个扫描起始点开始,向上、下、左、右四个方向分别对该图像进行逐行与逐列扫描,获取所述图像中条码的外接矩形;以及维数获取单元,用于根据所述外接矩形的特征和/或所述外接矩形中条码的特征信息,判断获取所述条码的维数。
8.如权利要求7所述的装置,其特征在于,所述装置还包括匹配单元,用于当判断该条码的维数为一维时,根据该外接矩形中条码的特征信息,或者对该图像进行预处理后获取的条空信息,判断预设的多种条码类型表中是否存在匹配的条空信息;以及一维条码类型获取单元,用于当存在匹配的条空信息时,获取与所述匹配的条空信息对应的条码类型。
9.如权利要求7所述的装置,其特征在于,所述装置还包括判断单元,用于当判断所述条码的维数为二维时,判断所述外接矩形中是否存在与预设的多种条码类型表中的一种类型的条码特征相匹配的特征;以及二维条码类型获取单元,用于当存在匹配的特征时,获取与所述特征对应的条码类型。
10.如权利要求7所述的装置,其特征在于,所述维数获取单元具体包括第一判断单元,用于当所述外接矩形的长小于预设的长度值,或所述外接矩形的高小于预设的高度值时,则所述条码的维数是一;第二判断单元,用于当所述外接矩形的长小于预设的长度值,且所述外接矩形的高小于预设的高度值时,则所述图像中不存在条码;以及第三判断单元,用于当所述外接矩形的长大于预设的长度值,且所述外接矩形的高大于预设的高度值时,则根据所述外接矩形中条码的条空宽度信息,进一步确定所述条码的维数是一或者二。
全文摘要
本发明适用于条码识别技术领域,提供了一种条码识别方法及装置,所述方法包括下述步骤获取二值化处理后的待识别条码图像及该图像的多个扫描起始点坐标;按照预设的该多个扫描起始点的顺序,依次从每一个扫描起始点开始,向上、下、左、右四个方向分别对该图像进行逐行与逐列扫描,获取所述图像中条码的外接矩形;根据所述外接矩形的特征和/或所述外接矩形中条码的特征信息,判断获取所述条码的维数。本发明实现了对未知维数的条码进行识别判断的目的,且提高了识别性能。
文档编号G06K7/10GK102521558SQ201110367610
公开日2012年6月27日 申请日期2011年11月18日 优先权日2011年11月18日
发明者于兆和, 张俊, 彭青峰, 李佐广, 李耀华, 李运秀, 梁日雄 申请人:深圳市宝捷信科技有限公司