李 展
装箱捆百钞快速检测的算法
李 展
本文提出了一种基于机器视觉钞票封包品质好坏的快速检测方法。经实验验证,该方法有效地检测出每个钞票装箱的把数和产品数量,可以为钞劵封装工艺改进给出进一步的信息数据分析。
检封产品装箱线是印钞产品工序的最后一道环节,产品的“数字安全”尤为重要,出厂产品以一箱为单位,每一箱必须有20个千尺包(产品包),每个千尺包已塑封过的10把产品,在实际生产过程中,由于前工序操作原因,存在某千尺包产品“少把”的情况,或者本工序某箱产品“少包”的情形。需要检测千尺包产品是否有10把,箱内产品是否有20个千尺。“钞券检封装箱捆百检测检测系统”是对钞券在检封生产过程中封包信息、装箱信息、小包捆百进行检测的系统。通过本系统的实施,可实现在装箱线每千尺包产品“把数”检测和每箱产品数量的检测。通过工业现场总线将各个信息点进行连接,最终实现通过信息系统能够查询该条生产线上每箱产品的实时数据或历史数据。
系统全面推广应用后,可以全面达到钞券封装工艺改革中总行提出的“保数量、保质量、可追溯”的工艺要求,为打造智能化、信息化的一流钞券生产线奠定基础。
本文设计的系统实现了对钞券封装方式的改革,改变传统的五小包捆大包后装箱的方式,按照单尺装箱的方式进行装箱,同时对小包封签方式的也进行了改进,改变了传统封装方式,使用小包透明塑膜捆百带,捆百带上在线喷印有唯一标识的条码信息,同时在装箱前,将每小包装箱产品的首张冠号信息自动识别后再完成装箱。系统实现了将条码信息、装箱识别首号信息、箱号信息的有效对应,从而实现对每箱内所有产品号码、封装生产信息的追溯。
根据装箱线的安装条件和实际尺寸要求(物距900mm,成像区域大小500mm*600mm)选择使用相机baumer(型号txg50,分辨率2448*2050),镜头kowl(12mm),900*900白色面光源。曝光时间不同情况成像如图2所示。
区域边界裁剪
如图3所示,待测目标基本都在图像中(200,200)和(800,800)构成对角的矩形范围内,可以根据该特征缩小处理的范围。通过二值化后矩形的寻找将图像中合理的优化裁剪,得到分割后的目标图像。
为了得到感兴趣的目标物的信息,我们首先需要将准备检测的图像通过一定的数学处理变化为更加方便计算机处理的二值图像(图像二值化)。而通常的做法是,采用阈值计算的方法来达到图像二值化的目的。得到阈值的方法很多,一般通过图像的直方图信息进行计算得到阈值。灰度图像I的直方图h定义为:
上述公式中m是在整个灰度级值的范围内取值。
Otsu算法是一种基于直方图的概率统计方法。这里假设图像直方图的概率密度函数为:
图1 机械安装示意图
图2 不同曝光时间成像效果(a) 1.5ms (b) 3ms (c) 4ms以及不同曝光时间成像效果对应的直方图(d) 1.5ms (e) 3ms (f) 4ms
图3 装箱图及其灰度分布
图4 对装箱图照片二值化后的效果
其中,
其次,对二值化后的图像采用Blob分析,并标记出图像中的连通区域。这里我们先将一幅二值图像定义为,同时,,?其中的取值有两种可能(0或者1)。假设在图像中存在一个像素序列
接下来我们需要标记二值图像B,并最终获得被标号的图像Lable-B。像素所在连通成分的标号就等于标号图像中每个像素的值。这里为了方便的考虑,采用正整数来标记像素连通成分,从而达到用符号命名一个实体的目的。
目前存在多种算法来达到标记连通成分的目的。一种算法是针对图像较大的情况,考虑到计算机内存大小的限制,无法使得整张图片完全被载入。此时,算法被设计成单次处理图像中的2行像素。第二种算法是假设计算机内存大小足以载入全部图像,此时只要采用传统的递归法即可达到对全图像扫描的目的。其他的例如在大型机上采用并行策略算法来实现连通成分标记等等。马里兰大学的A.Rosenfeld与J.L.Pfaltz于1966年发表了基于经典的图连通算法的连通成分标记算法,俗称并查算法(unionfind)。该并查算法的实现依赖于对图像的两次扫描:第一次扫描首先是记录图像中的等价像素对,并为之临时赋予一个标记号。与此同时,用二元关系对第一次扫描获得的等价对集合进行存储,紧接着处理这些等价集合并最终确定这些二元关系的等价类。第二次扫描则开始将每个临时标记号替换成等价类的标号。上述这种随着找到的等价对实时动态地构建等价类的并查算法在后续的计算机科技发展当中被广发的应用。通过上述并查数据结构的引入,基于树结构表示的等价类能够被高效的构造以及操作,从而使得经典算法的性能得到大幅度的改善。
把相互不相交的集合存储在一起,从而可以使得合并运算和查找运算的效率大幅度提升,这是引入并查数据结构的主要目的。具体来说,即用树来存储每一个集合,每个标号用树的节点来代表,该标号同时指向它的父节点。为了实现并查数据结构,只需要构建一个向量数组Parent,Parent向量数组的下标即为标号,父节点的标号就是元素的值。当父节点等于零时,意味该父节点是树的根节点。图5显示的是两组树形结构。第一组树形结构的标号为,第二组树形结构的标号为。其中标号3为第一组树形结构的父节点,同时也是第一组树形结构集合的标号;标号7是上述树形结构的父节点,同时也是该树形结构集合的标号。通过查找Parent向量数组,可以得知以下一些信息,诸如:节点3和节点7并不存在父节点,标号1的父节点是2,标号2、4、8的父节点是3,等。同时,值得注意的是,由于背景像素通常用零来表示,Parent向量数组中并不存在标号等于零的元素。同时数组中值为零的元素代表该节点不存在父节点。
图5 两组标号的并查数据结构。第一组包括标号{1,2,3,4,8},第二组包括标号{5,6,7}。对每一个整数标号i,PARENT[i]的值是i的一个根节点,没有父节点,则PARENT[i]的值是0.
图6 轮廓信息特征提取步骤
并查数据结构所要实现两个具体的过程,第一是查找过程,第二是合并过程。其中查找过程中所涉及的参数为数组的标号X和父数组Parent。该查找过程沿着树结构向上对父指针进行跟踪,从而达到查找标号X对应树根节点标号的目的。而合并过程中所涉及的参数除了标号X和父数组Parent外,还包括Y。该合并过程主要是用于修改结构,即将包含X的集合和包含Y的集合进行合并操作。具体来说,即分别从标号X和标号Y开始,沿着树结构向上对父指针进行跟踪,直到寻找到包含X和包含Y的两个集合的根节点为终止点。若一个标号所对应根节点与另一个标号所对应的根节点有区别,则把其中一个较小集合标号的父节点用另一个较大集合的标号来替代。这样可以起到将树的深度向纵向扩展的目的。
对裁剪和检测目标提取后的图像进行近一步的轮廓信息特征提取,主要的步骤如下。
轮廓信息特征提取基本思路是:首先通过一些较为严格的“探测准则”将目标轮廓上的像素寻找到。再根据这些轮廓上的像素的某些特征,遵循一定的“跟踪准则”将目标物体上的其他边界像素寻找到。为了更好的理解上述思路,下面将详细讲解基于二值图像的轮廓信息提取算法。
图7 (a)图像轮廓效果图 (b) 正常产品包面积大小图(c) “少把"图像
首先介绍“探测准则”。该准则是用来寻找第一个边界像素。我们依照从左往右,自下而上的搜索顺序寻找黑点,最左下方的边界点一定是依照该顺序找到的第一个黑点,我们将其标记为A。A的四个邻位点(左上,上,右上,右)中至少有一个是边界点,将该边界点标记为B,接下来从标记点B开始依照特定的顺序(右、右上、上、左上、左、左下、下、右下)来搜索其相邻点中的边界点,将该边界点标记为C。同时,将C点与A点进行比对,若C点即为A点,则表明搜索路径已经转了一个圆圈,此时,搜索程序终止;否则,从C点按照上述方法和顺序继续搜索,直到找到的标记点等于A点为止。从上面的描述可以看。
其次,将介绍“跟踪准则”。寻找和判断一个点是不是边界点相对来说较为容易,基本的判断准则就是:若其上下左右四个邻点都不是黑点,则可以确认该点为边界点。
上述边缘轮廓检测只能用来获得目标物体轮廓线附近的像素点,并不能用来获得连接这些像素点之间的线。通常情况下,我们需要检测的物体形状事先可以确定并用代数方程来表示。此时,一种有效的方法就是采用霍夫变换,即将所检测图像上的特征像素点相应的映射到表示两点所连接的线的形状的参数空间上。为了方便描述,现采用下面的代数方程来表示直线:
上式中,和分别代表从坐标原点向直线引的垂线的长度以及垂线与x轴之间的夹角。当我们使用如(8)所示的代数方程时,可以方便的将直角坐标系图像空间中的直线,表示成极坐标参数空间中的一个点。同时,任意直线,只要经过图像中的相应特征点(,),则可用下式(9)表示:
换个思路来看,就是用式(9)表示的参数空间中的轨迹来对应图像空间中的点(,)。基于上述图像空间与参数空间的变换关系,下面介绍下,在霍夫变换中进行直线检测的具体方式:1)准备一个二维数组,该二维数组中所有元素值都被初始化为零用于表示参数空间;2)把上文通过相应算法搜索到的图像中的各个特征点的坐标值,代入到公式(8)中; 3)将步骤2)中获得的方程式所表示的轨迹在参数空间中描绘出来。描绘轨迹的方法是:一边使按的大小间隔逐渐增加,一边将带入方程计算相对应的值;4)根据所计算的轨迹,及其相对应通过的数组元素,将该数组元素的值增加1。5)通过上述方法描绘出所有对应特征点的轨迹,并计算出大多数轨迹所集中的相对应的位置。该位置即为参数空间的数组中具有最大值的元素。6)将类似这样的元素所表示的参数定义为(,)。则该参数代表图像中的通过多数特征点的边界直线。
上述方法的一个显著的优点是,霍夫变换能检测出特征点非连续的图像的边缘直线。霍夫变换法相对边缘追踪等方法来说,具有较强的抗噪声性。进一步的,基于优化了的边缘特征点,检测目标的钞捆轮廓及面积统计如图7 (a)所示。
在获取到图像轮廓图后,就可以根据轮廓线和位置参数,计算出每个包的序号位置和面积大小,如图7(b)所示。对于“少把”面积图像做检测后,如图所示:序号12的产品包,面积大小为83798,与其他正常包的面积大小内差在9%左右,此依据可以作为检测“少把”的标准。
对装箱流水线的生产箱“产品个数”进行图像检测,对每个产品包“把数”进行检测,系统检测信息以箱为单位,按箱号存储,并关联首包号识别系统。产品个数检测误报率:0.01%;产品“少把”误报率:0.5%;装箱自动线把数检测误报率≤4%,漏报率为0,识别后检测准确率100%;箱内报数检测误报率1%,漏报率为0,识别后检测准确率100%。
李 展
成都印钞有限公司
李展(1982-),四川省成都市人,硕士。研究方向:从事钞券技术研究工作。
10.3969/j.issn.1001-8972.2016.11.031