基于边缘定位的西林瓶柱面标签展开算法研究
2021-09-27姚立权史立峰
姚立权,张 萌,史立峰,朱 虹
(辽宁装备制造职业技术学院,辽宁沈阳 110161)
0 引言
西林瓶作为疫苗、冻干等药品的容器在医药卫生行业被广泛使用。受制于生产工艺及加工设备精度的影响,西林瓶标签易出现倾斜、重叠、错印及漏印等质量问题[1],既不符合国家对于药品监管的法律法规,又严重影响了药品的销售与推广,因此西林瓶柱面标签的质量检测就显得至关重要。我国医药企业目前所采用的半自动检测设备甚至人工检测已经难以满足日益增长的生产需求[2-3]。同时,伴随着机器视觉技术在工业自动化领域的快速发展,机器视觉已经广泛应用于普通医药产品的质量检测中[4-5],但与传统的平面标签检测方法不同,西林瓶标签为类圆柱体,标签的边缘位置会出现图像失真及压缩变形[6],相机不能提取到有效信息,从而难以直接进行西林瓶标签的质量检测[7]。
若将西林瓶柱面标签平面展开,获得一幅连续的柱面标签平面展开图,既可以解决因柱面畸变导致的标签信息丢失,又可以应用成熟的平面标签检测技术,从而降低研发成本,满足企业的实际需要。为解决西林瓶等类圆柱体侧面的平面展开问题,国内外的研究机构做了大量的研究。汪军等[8]使用相机与旋转机构相配合,利用图像拼接算法拼接柱体图像序列,得到柱体360°全景图像。该方法生成的图像分辨率较高,但拼接速度较慢且需要相机与旋转机构的高精度标定和配合,难以工业化应用。吴晓军等[9]使用反射相机对类圆柱体侧面进行成像,也可以获得类圆柱体侧面的平面展开图。该方法获得的平面展开图像存在变形且图像分辨率差异较大。曹继英等[10]通过柱面反投影算法实现柱面图像的反投影变换,得到校正后的柱面标签侧面展开图。但该方法仅适用于类圆柱体小范围移动的场合,若标签圆柱体半径改变,则需要再次重新标定,不满足企业柔性化生产的要求。杨海明等[11]使用多相机环绕饮料瓶标签成像,也取得了较好的效果,但该方法光路设计复杂,对设备安装及位置精度要求较高。
针对柱面标签平面展开的实际问题,提出基于边缘的西林瓶标签的平面展开算法,该算法通过多相机采集柱面标签图像,基于边缘点对西林瓶标签进行定位,结合相机的透视成像模型提取像素值,校正西林瓶标签的柱面畸变,得到连续且归一化的西林瓶标签平面展开图。该方法仅依赖于柱面标签的边缘点进行定位,不需要复杂的设备相配合,对于西林瓶标签的位置变化也具有鲁棒性,柱面标签平面展开的速度满足工业生产的要求。
1 实验系统的结构及原理
为了获取西林瓶标签的全表面图像,本系统由以90°间隔环绕柱面标签放置的4台工业相机、工控机及LED光源组成,实验系统结构示意图如图1所示。在工作过程中,4台相机对西林瓶柱面标签进行同步图像采集,并传送到工控机中进行处理。为获得良好的西林瓶柱面标签表面光照条件,采用在西林瓶底部放置平面光源,顶部布置环形光源的光源方案对西林瓶标签进行打光。
图1 实验系统结构示意图
本文算法流程图如图2所示,首先对采集的柱面标签图像进行预处理,准确提取每个相机视野下的柱面标签边缘点,依据边缘点与相机焦点的空间位置关系求解西林瓶标签的空间位姿,采用随机采样一致性算法(random sample consensus,RANSAC)剔除离群的边缘点,提高标签位姿估计的精度。结合相机的空间位置信息确定相机的观测范围并提取像素值,最后通过图像拼接算法对4幅柱面标签图像进行拼接融合,得到西林瓶柱面标签的平面展开图。
图2 西林瓶标签平面展开算法流程图
2 西林瓶柱面标签平面展开流程
2.1 西林瓶柱面标签空间定位
实验系统采集的西林瓶柱面标签部分图像如图3(a)所示。由于柱面标签没有覆盖整个瓶身,且西林瓶表面存在反光,背景中存在干扰等因素的影响,导致直接提取标签边缘会存在误差。图3(a)中2号相机所采集的图像中,柱面标签右侧边缘与背景灰度值差异较小,难以准确地提取边缘。同时,若直接使用Sobel、Laplace及Canny等边缘检测算法也会提取到大量的标签内部的边缘,检测效果受限,使用Canny边缘检测算法检测边缘的结果如图3(b)所示,西林瓶柱面标签右侧边缘并未检出。
(a)2号相机图象
所以在预处理步骤中,引入颜色空间变换的方法,将采集的图像由RGB颜色空间变换到HSV空间[12],对HSV空间下的S分量的图像执行高通滤波后再进行边缘提取,同时依据图像形态学处理的结果对边缘位置进行限制,可以显著提高边缘检测的准确性,消除背景噪声的影响。
对S分量的图像执行高通滤波后的结果及西林瓶标签边缘检测结果如图4所示,可以准确提取出西林瓶柱面标签的两侧边缘。
依据相机的透视成像原理,可以建立空间中坐标为(Xw,Yw,Zw)的空间点与其在图像坐标系上的对应点(u,v)的数学关系,其数学表达式为
(a)S通道下高通滤波
(1)
式中:s为物体在相机坐标系中的Z向坐标;K为相机的内参数矩阵;R、T分别为相机坐标系相对于世界坐标系的旋转矩阵和平移矩阵,构成了相机的外参数矩阵。
所有相机均通过张正友标定算法进行标定[13],得到相机的内外参数矩阵。
(2)
式中:i为相机的编号,i∈1,2,3,4;j为在相机i下的边缘点序号,j∈1,2,3,…,n。
图5 西林瓶柱面标签的空间定位
根据空间中两异面直线的距离公式,射线OiPw与西林瓶标签圆柱体中心轴的距离为
(3)
两条异面直线之间的距离Dij应该等于西林瓶标签圆柱体的半径R,据此构建误差函数:
(4)
由于环境光线的变化,柱面标签纹理边缘不明显等因素的影响,导致所提取的边缘可能存在显著的“离群点”,直接使用最小二乘法求解西林瓶标签的空间位姿会出现较大误差。因此,应用随机采样一致性算法[14]对西林瓶标签位姿进行优化。从西林瓶标签边缘点中随机选择部分边缘点组成边缘点子集,基于该子集对西林瓶标签位姿进行求解,确定参数估计模型。然后将所有标签边缘点带入估计模型中进行验证,计算其误差损失作为衡量标准。选择不同子集迭代求解,得到一个全局最优的模型。从而达到剔除边缘点中的“离群点”,提高西林瓶标签位姿估计准确度的目的。
2.2 西林瓶标签柱面畸变校正
由2.1所得到的西林瓶柱面标签圆柱体中心轴上的定点及方向向量,建立标签圆柱体的空间模型[15],如图6所示。其空间模型的高度及每层的像素点数目决定了柱面标签平面展开图的分辨率。
依据西林瓶标签三维点与4个相机焦点的空间相对位置,确定每个相机的观测范围。西林瓶标签为类圆柱体,每层仅有Z坐标不同,为简化计算,仅提取西林瓶标签三维模型中间一层进行计算,并应用到三维模型中的其他像素点,确定空间模型中每个三维像素点的最优观测相机。
(a)西林瓶空间模型
(5)
式中:Zk为标签圆柱体中心轴上选取的第z=k层对应的圆柱体中心轴上的点;Ci为相机i焦点的空间坐标;Pj指三维模型上的空间点;y为4个相机焦点所组成的夹角中余弦最小值。
对于每个空间点Pj求取其与4个相机焦点夹角的余弦值,余弦值取最大时所对应的相机即是该点的最优观测相机,即∠ZkPjCi余弦值取得最大值时,函数值y所对应的相机序号即为该空间点Pj的最优观测相机。
由相机标定结果得到各相机的内外参数,结合2.2所确定的最优观测相机,将标签圆柱体空间模型中的三维点变换到各自相机下的像素坐标系中,采用插值算法计算该点所对应的像素值,即完成了单相机视野下的柱面标签畸变校正,其校正结果如图7所示。
(a)西林瓶标签图像
最后将相机所观测到所有空间点按顺序在平面展开,即完成了单相机下的西林瓶标签的校正,循环处理所有相机后即可以获得一幅连续且归一化的西林瓶柱面标签展开图,西林瓶标签柱面畸变校正并展开后的图像如图8所示。
图8 西林瓶柱面标签平面展开
3 西林瓶柱面标签拼接融合
由于西林瓶位姿估计时误差不可避免,因此直接通过相机透视成像模型得到的平面图像中必然存在瑕疵,如拼接接缝处的错位等缺陷。为获得更高质量的西林瓶柱面标签展开图,需要扩展每个相机的成像区域,使相邻两个相机成像区域之间有重合区域,如图9所示。
(a)原始相机的可视区域
分别校正各个相机视野下的柱面标签畸变,得到具有重合区域的西林瓶标签部分图像,如图10 (a)所示。再利用图像拼接算法拼接相邻相机下的柱面标签展开图像,使用渐入渐出融合算法消除拼接缝隙,最终获得一幅完整且拥有较高质量的西林瓶柱面标签展开图,图10 (b)为西林瓶柱面标签的完整展开图。
图10 西林瓶标签完整展开图
4 实验结果及分析
实验平台由映美精工业相机、LED光源、工控机(CPU:Core i7,16 GB内存)及显示器组成,4台相机静态采集西林瓶标签全表面图像,应用西林瓶柱面标签展开算法对柱面标签平面展开,获得连续且归一化的西林瓶标签的平面展开图。为验证算法对于西林瓶柱面标签位置的鲁棒性,将西林瓶放置在实验台的不同位置上分别采集150组实验图像作为样本,记录并分析实验数据。
实验所采集的一组西林瓶柱面标签图像如图11(a)所示,经西林瓶柱面标签平面展开算法对柱面标签平面展开,其标签平面展开图像如图11(b)所示。
图11 西林瓶柱面标签实验结果图
图12为使用基于特征点的图像拼接算法直接拼接西林瓶标签部分图像后的结果,因标签并未完整覆盖西林瓶瓶身,在无标签区域,图像纹理信息较弱,难以检测及匹配特征点,从而无法完成图像拼接工作。该图像中的西林瓶标签边缘存在信息压缩,且标签上下边缘为弧形,与实际标签图像差异较大。
图12 基于特征点的柱面标签拼接算法
西林瓶标签展开算法运行时间如图13所示。当标签平面展开图的分辨率为850×250,柱面标签平面展开算法所消耗的平均时间为345.6 ms。基于特征点检测算法仅拼接相邻两幅西林瓶柱面标签图像所耗费的平均时间为432 ms。若改变西林瓶标签空间模型中每层像素点之间的采样间隔,标签平面展开图分辨率为425×125,算法所消耗的平均时间为289.7 ms。虽然算法运行效率提高,但由于图像分辨率降低,导致了图像质量的下降,所以需要根据实际的应用环境做出调整。在150组不同位置采集的西林瓶的标签图像中,有147组可以获得连续且无畸变的西林瓶标签平面展开图,成功率达98%。图13中有3组图像在不同分辨率下均耗时较长,以至于不能将柱面标签平面展开。其主要原因为光照条件的变化及背景纹理的影响导致西林瓶标签位姿估计不精确,在位姿的优化算法部分消耗了大量的时间。
图13 算法执行时间对比图
5 结束语
针对西林瓶标签成像过程中的柱面标签边缘信息压缩的问题,提出基于边缘定位的西林瓶标签的平面展开算法。该算法不依赖额外的设备及复杂的标定,仅通过边缘点及相机焦点的位置对西林瓶标签进行空间定位,建立柱面标签的空间模型并确定各相机的可视范围,校正柱面畸变后拼接融合相邻标签图像,最终获得连续且无畸变的西林瓶标签平面展开图。实验结果表明,该算法可以校正西林瓶标签的柱面畸变,对西林瓶的位置变化具有鲁棒性,且拼接速度快,为下一步的标签质量检测奠定了基础。