APP下载

基于双目视觉的缺陷药片检测

2021-12-09郭兆明周庆华曾小为

计算机与现代化 2021年11期
关键词:立体匹配双目药片

郭兆明,周庆华,曾小为

(1.长沙理工大学物理与电子科学学院,湖南 长沙 410114;2.纳威尔智能科技有限公司,湖南 长沙 410114)

0 引 言

目前,在医药检测行业,机械化和智能化不断取缔了传统的人工检测模式,常用的检测方法有X射线检测技术、高光谱检测技术、机器视觉检测技术等[1]。其中,基于机器视觉的药片缺陷检测技术越来越广泛地应用于医药检测行业。常见的药片缺陷可分为2大类[2]:一类为形状缺陷,包括药片破损、碎裂以及尺寸大小不合格等;另一类为表面纹理缺陷,包括表面划痕、污渍、异色等。药片的缺陷检测是利用药片的形状轮廓特征和表面纹理特征进行判别的,主要包括模板匹配法[3]、基于形体和颜色的特征分析法[4]。传统的基于机器视觉的药片缺陷检测方法通常采用单摄像机采集药片上表面图像的方式[5-6],该种方式有利于获取形状完好、纹理清晰的药片图像,利于检测药片破碎、划痕、污渍、异色等大部分的缺陷类型。但是,在实际生产中,存在着一类在厚度上有缺陷的药片,通常是由于压片过程中药剂量不足或由于药片上下表面间开裂断开导致的,使得该类药片的厚度小于标准药片。由于药片的弱纹理特性,以及药片侧表面信息的缺失,该类药片难以通过单摄像机从药片正上方拍摄的方式来很好地检测是否存在缺陷。高体红等人[7]提出了在单摄像机的基础上在药片的四周增加4块反射镜的方法,该方法能够获得药片上表面和侧表面的所有信息,极大地提高了表面划痕、污渍等缺陷的检测精度,但也无法有效地检测药片的厚度缺陷。

近年来双目视觉技术发展越来越成熟,被广泛用于无人驾驶、智能机器人、工件尺寸测量等领域[8-10]。本文提出一种基于双目视觉的药片缺陷检测方法,对存在厚度缺陷的药片进行检测,实验结果表明,该方法具有较高的检测精度。

1 相机标定

在双目立体视觉中,为了反映场景中某一点的世界坐标和图像像素点的坐标之间的关系,需要建立像素坐标系和世界坐标系之间的对应关系。在摄像机的成像模型中,共有4个坐标系之间的转换,分别为:代表目标物体所在位置的世界坐标系;原点位于相机光心的摄相机坐标系;原点位于图像中心的图像物理坐标系;原点位于左上角的像素坐标系[11]。一旦像素坐标系和世界坐标系之间的转换关系确立,结合双目视觉系统中的三角测距原理便可求得某一像素点对应的目标点的世界坐标。在不考虑畸变的线性模型中,像素坐标系到世界坐标系之间的转换关系[12]如下:

(1)

其中,点(u,v)代表像素点坐标,点(Xw,Yw,Zw)代表与像素点(u,v)对应的世界坐标,(u0,v0)表示图像像素坐标系的主点坐标,fx和fy分别表示摄像机在x轴和y轴上的焦距,Zc表示世界坐标系的点转换到摄像机坐标系的Z轴的值,矩阵A代表摄像机的内参数,是摄像机的固有属性。R表示世界坐标系变换到摄像机坐标系的旋转矩阵,T表示其平移矩阵,R和T共同构成外部参数,寻找内外参数的过程称为摄像机的标定[13]。

实际应用中的相机镜头都会存在一定程度的畸变,存在畸变的相机成像模型称为非线性模型,畸变类型主要有径向畸变和切向畸变,其中,径向畸变是影响精度的主要因素[14],本文仅考虑存在径向畸变的情况,其数学表达式可表示为[15]:

(2)

其中,(ud,vd)代表线性模型下的理想坐标,(u,v)表示畸变模型下的实际坐标,r2=u2+v2,k1,k2,k3…表示畸变系数,本文只取前2项畸变系数作为非线性模型的畸变参数。

非线性相机模型的标定是通过对摄像机存在的畸变进行数学建模,在求解摄像机的内外参数时融入了畸变模型,使得标定结果更加趋向于真实的摄像机的内外参数。Tsai两步法[16]是一种将标定过程分2步进行的非线性标定方法,通过线性模型和非线性模型相结合的方法,分步求解相机的内外参数,但该方法对设备要求较高,难以应用于一般的场合。另一种比较常用的方法是张正有标定法[17-18],以一个黑白棋盘格作为标定板,因此张正有标定法又称为平面模板法,该方法通过拍摄不同位姿的若干组模板图像,检测图像中的角点,求解理想线性模型下的摄像机内外参数,并用极大似然估计提升参数精度,同时采用最小二乘法求出实际的径向畸变参数。张正有标定法是一种标定过程简单、标定精度高的相机标定方法。

为了使用过程的便利性,实验采用集成的双目相机,单边相机分辨率为360×240,镜头焦距为3.6 mm,像素尺寸为3.75 μm×3.75 μm,2个相机光轴距离约为34 mm。采集11张不同位姿的平面棋盘格模板图像,根据张正有标定理论进行标定,双目相机的内外参数标定结果如表1所示。

表1 相机参数表

表1的标定结果表明2个相机相距约34.3 mm,与实际距离34 mm相近,镜头存在微小的径向畸变,右相机相对于左相机有微小的旋转,光轴接近平行,满足本文的检测要求。

2 缺陷药片检测

由于缺陷药片与标准药片相比,存在着厚度差,因此,本文利用双目视觉的三角测距原理计算出药片到双目视觉系统的深度,利用缺陷药片和完好药片的深度差检测出缺陷药片并计算出缺损的厚度。为了获取药片的深度信息,首先需要对双目视觉系统采集的2幅图像提取特征点,完成立体匹配,利用三角测距原理获取药片的深度值,计算深度差,并检测缺陷药片。

2.1 立体匹配

为了计算某一物点的视差值,需要进行立体匹配。立体匹配就是寻找一个图像内某个像素点对应的物点在另一个图像内的对应像素点,从而完成双目相机左右图像像素点匹配的过程。根据匹配方式的不同,立体匹配可分为3类,分别为基于区域的匹配、基于相位的匹配和基于特征的匹配。区域匹配是通过建立局部窗口,利用窗口之间的像素灰度信息的相似性来进行图像的匹配,该类匹配方式的匹配精度和计算量受窗口大小的影响,难以在精度和计算量上达到平衡,同时对弱纹理区域的匹配精度较低[19]。基于相位的匹配是利用相位信息进行左右图像的匹配,传统的相位匹配方法匹配速度较慢,近年来提出的基于极线校正的亚像素相位匹配方法[20]、基于多尺度分析的快速相位立体匹配[21]等相位匹配方法极大地提高了匹配速度,但存在着相位偏差、相位缠绕等问题,同时需要增加光栅投影设备,增加了双目视觉系统的复杂度。基于特征的匹配是通过提取图像的角点、边缘等作为匹配实体进行立体匹配,该种匹配方法计算量小、匹配速度快,是一种实时的立体匹配算法。由于药片作为一种弱纹理物品,常见的特征匹配方法如SIFT算法和SURF算法对其的匹配效果一般,有效匹配点较少,也不存在角点,无法以角点作为有效的特征点进行匹配,因此,本文以边缘属性作为特征进行立体匹配。

边缘是图像中2个不同灰度区域的边界,是图像的特征属性之一,常见的边缘检测算法有Sobel算子、Roberts算子、Laplace算子和Canny算子。在以边缘作为特征的立体匹配中,边缘位置的准确度将直接影响视差的精度,最终会对药片的检测精度造成影响。其中,Canny算子是一种多级边缘检测算子,具有低错误率、边缘定位精度高、单一的边缘响应等优点,广泛用于图像的边缘检测,因此,本文采用Canny算子进行边缘提取。

图像的采集对后续的处理有至关重要的影响,摄像机置于药片正上方的图像采集方式是目前单相机药片检测的主要方式,该种图像采集方式有利于尽可能多地采集到药片表面信息,提高检测精度,因此,本文将双目相机放置于药片正上方进行图像的采集。

图1是双目相机从药片正上方对药片进行拍摄得到的双目相机左右图像,并对双目相机采集到的图像用Canny算子提取边缘。实际的药片经过边缘提取后,存在着大量的伪边缘点,为了提高立体匹配的准确度并减少计算量,本文只提取边缘轮廓上水平切线和竖直切线的切点作为特征点进行匹配。水平切线的切点和竖直切线的切点可以用图2所示的十字模板进行提取。

图1 Canny算子边缘提取

图2 模板

图2所示的模板中心点位于十字架的中心,让该模板的中心点在边缘轮廓上移动,当模板的中心点通过边缘轮廓的水平切线或竖直切线的切点时,具有如下的性质:当模板的中心点通过水平切线的切点时,模板覆盖区域的边缘关于模板中的十字架左右对称,且该段边缘不可越过十字架的水平轴同时存在于上下区域;同理,当模板的中心点通过竖直切线的切点时,模板覆盖区域的边缘关于模板中的十字架上下对称,且该段边缘不可越过十字架的竖轴同时存在于左右区域。利用该特点可以有效地提取药片边缘轮廓的水平和竖直切线的切点。

图3是对边缘进行特征点提取后的图像,圆点为提取的特征点。实际上,除了在药片表面边缘轮廓上的几个特定特征点之外,提取的其他特征点无法作为有效的匹配特征点。立体匹配中通常采用相似度测度函数来进行特征点的匹配,常用的有差值平方和SSD(Sum of Squared Differences)算法、绝对值和SAD(Sum of Absolute Differences)算法、归一化互相关NCC(Normalized Cross Correlation)算法和Census变换[22]等。由于本文所用药片表面特征单一,图像中的特征点无法建立足够的歧义性,采用上述相似度测度函数无法进行有效的特征匹配,因此,本文利用药片边缘轮廓上特征点的一些约束条件,进行特征点的筛选。约束条件如下:

图3 特征提取

1)在药片上表面边缘轮廓上水平切线的切点或竖直切线的切点都应该在该轮廓上成对出现,这样便可去除大部分的孤立特征点。

2)边缘轮廓上水平切线的切点对和竖直切线的切点对在误差允许的范围内互相对称。该约束条件可以去除不在药片表面轮廓上的特征点。

3)平行双目相机采集的图像具有极线约束,即左右图像的对应点应具有相同的纵坐标。

图4是图3经过特征点筛选后剩下的有效特征点在原灰度图像上的映射,为了更直观地表示,图中线段表示切线,黑点表示切点。左右图像特征点的匹配可以按照从上到下、从左到右的配对规则。

图4 特征点提取

2.2 深度计算

在一个平行双目视觉系统中,双目相机视场内的任意一物点分别会在左右相机中形成对应的像点,通过计算左右图像中对应点的横坐标之间的差值的绝对值,根据物点和2个相机之间的几何关系便可计算出物点距离光心的距离,双目视觉三角测距模型如图5所示[23]。

图5 双目视觉三角测距原理

图5为双目视觉的测距模型,其中,点P为待测目标点,Cl和Cr分别为左右相机的成像平面,Ol和Or分别为左右相机的光心,Xl和Xr分别表示左右相机的像素坐标,B为2个相机光心的距离,fl和fr分别为左右相机的焦距,由于在双目视觉系统中,2个相机的参数均一致,因此左右相机拥有共同的焦距f,由此可知点P的深度Z的关系为:

Z/f=B/(Xl-Xr)

(3)

由上式可得:

Z=Bf/d

(4)

其中d=Xl-Xr为左右图像中对应点的视差值,即同一物点在左相机图像中对应像素点的横坐标和右相机图像中对应像素点横坐标的差值的绝对值,Z为场景中点P到摄像机像平面的距离。

图6为双目视觉系统参数B为34.3 mm、f为226像素时,深度关于视差的反比例函数Z=Bf/d的曲线图。由曲线可知,随着视差值的逐渐增大,单位视差对应的深度值减小,检测的精度增大,在视差值大于190时,单位视差的深度变化小于0.2 mm,此时有较高的检测精度。在实际应用中由于受制于相机视场角和相机分辨率的因素,视差值受限在一定的范围内,本文采用的双目相机的2个相机的分辨率都为360×240,因此视差最大值为240,由式(4)可知,药片距离双目相机在32 mm~40 mm时有较高的检测精度。

图6 深度-视差曲线

为了减小计算特征点时的误差对检测精度造成的影响,本文将4个立体匹配点对应的视差值取均值,以该均值代替药片的总体视差值,并计算深度,将该值与标准的药片深度值进行对比,并取二者之间的差值作为缺损的平均厚度。

3 实验结果

本文实验采用厚度为3 mm的药片,通过采集7组药片图像并计算其深度差,结果如表2所示。

表2 实验结果

实验采用的左右相机像素均为360×240,光轴相距约为34 mm。通过表2的数据表明,在试验平台固定且距离药片上表面深度为37.8 mm的时候,用本文的方法和实际测量的结果误差在0.1 mm之内,在误差允许的范围内。同时,在双目相机距离药片距离一定时,随着相机分辨率的增大,测量精度成正比例增长,因此,该方法满足检测要求。

4 结束语

本文提出了一种基于双目视觉的药片缺陷检测方法。采用张正有标定法进行双目相机参数的标定,提取药片图像的边缘轮廓的水平和竖直切线的切点作为特征点,并利用药片边缘轮廓的对称属性和平行双目相机的行对齐属性作为约束条件进行立体匹配,解决了传统基于相似度测度函数对弱纹理区域匹配精度低的问题。在双目相机分辨率较低的情况下,药片的平均厚度测量精度达到了0.1 mm,能够有效地解决存在厚度缺陷的药片的检测问题。

猜你喜欢

立体匹配双目药片
救命药片
基于双目测距的卡尔曼滤波船舶轨迹跟踪
药片洗头有奇效
药片颜色谁决定
药片颜色谁决定
影像立体匹配中的凸优化理论研究
基于互补不变特征的倾斜影像高精度立体匹配
改进导向滤波器立体匹配算法
基于双目视觉图像的长度测量方法
一种基于图像分割的立体匹配算法