(中北大学 仪器科学与动态测试教育部重点实验室,太原030051)
双目立体视觉技术使用两台摄像机模拟人的双眼对景物的感知,通过获取目标在两台摄像机图像中的位置差异来计算目标在三维场景中的位置信息,在工业自动化和生活中得到广泛应用[1]。
信号弹是一种用来传递信息或指示目标的武器,其飞行高度是衡量其自身性能的重要指标之一。传统的信号弹飞行高度测量方法是由工人使用观测仪对飞行高度进行估计,这种测量方法精度低、主观性强,对操作人员要求较高。文献[2]采用了一种基于声光特性的测量方法,通过比较信号弹达到理论最高点时的爆亮和爆响到达系统的时间差来测量信号弹的最大飞行高度。由于信号弹发出这种声光信号的时刻是依据装药量推算得出,故这种方法测得结果与实际值存在一定误差。目前国外对于信号弹飞行高度测量的研究较少。
信号弹在飞行过程中存在距离远、目标小、空间运动范围广等特点,采用双目立体视觉方法能够快速、准确地测量信号弹的飞行高度。本文针对信号弹性能参数测量需要,使用长基线双目视觉系统对信号弹的飞行过程进行记录,对图像序列使用背景减除法定位信号弹ROI 并从图像中分割该区域,通过自适应阈值的二值化方法从分割图像中定位信号弹的像素坐标,以此求取信号弹的飞行高度,绘制其发光过程中的高度轨迹并得出最大飞行高度值。经实验证明,系统测得的结果与人工观测值基本一致,能够较好地反映信号弹的实际飞行过程。系统运行速度快,自动化程度高,为信号弹测高问题提供了新的解决方案。
双目立体视觉系统是通过数学和物理模型,使用坐标变换的方式得到目标在三维场景中的位置信息。在实际中常用的坐标系有:
(1)像素坐标系(u,v)
一般情况下,摄像机拍摄的数字图像由像素构成,像素坐标系以图像左上角像素为原点,像素坐标表示该像素在图像像素矩阵中的行数和列数。
(2)摄像机坐标系(Xc,Yc,Zc)
摄像机坐标系一般选取摄像机镜头光心为坐标系原点,X轴和Y轴分别平行于像素坐标系中的x轴和y轴,正方向同摄像机光轴,Z轴垂直于像平面与X轴和Y轴交于原点。
(3)世界坐标系(Xw,Yw,Zw)
世界坐标系原点可以根据需要任意选取,世界空间内任意一点在世界坐标系中都应有唯一对应的一组坐标值。
式(1)定义了三维世界空间中任意一点同摄像机所拍摄图像上的点间的变换关系[3]。经过摄像机标定可得出摄像机内外参数,带入式中即可求取世界中任意一点在图像中的像素坐标。
式中:fx和fy分别为单个像素点在x轴和y轴方向上的归一化焦距。由此可得三维世界空间中任意一点的世界坐标转化为像素坐标的流程,如图1所示。
图1 坐标转换流程Fig.1 Coordinate transforms
理想的双目测距模型中左右摄像机的光轴绝对平行,距离一定,两摄像机的焦距f 相等,像平面处在同一平面。理想的双目测距模型如图2所示。
图2 双目视觉模型Fig.2 Model of binocular vision
两摄像机光心之间的距离称为双目视觉系统的基线T。在理想模型中,目标P 在左右摄像机像平面的投影点横坐标分别为xl和xr,由几何原理可以推导出目标P 与系统间的距离Z,计算方法如式(2)所示:
建立准确的目标点与成像点间的对应关系是确保测量精度的重要环节[4]。摄像机和镜头会在生产装配过程中产生误差,导致在实际成像中成像模型产生非线性畸变。系统单目标定的目的是求取摄像机的内参数矩阵与畸变向量。张正友标定法[5]在标定过程中使用标定板平面上的点作为世界坐标系,使得所有点坐标值的Zw均为0,由摄像机成像模型可得式(3):
式中:s为尺度因子;A为摄像机的内参数矩阵;H为单应性矩阵,由摄像机内外参数构成。由此可求解双目视觉系统的内外参数。
由于长基线双目视觉系统两摄像机距离较远,摄像机近距离共同视野较小,其外参数标定中若继续使用棋盘格标定板,则会出现标定板在左右摄像机图像中所占面积过小的问题,导致外参数标定误差偏大。本实验中系统的外参数标定使用由黑色圆球搭建的标定物为参照完成。
图3 外参数标定物Fig.3 External parameter calibration items
在标定物中,以左上角位置圆球质心作为世界坐标系原点,使用左右摄像机同时拍摄的标定物图像获取对应点的像素坐标,将其带入摄像机数学模型可得式(4):
在理想双目测距模型中两摄像机像平面平行,垂直光轴同像平面平行,但现实中不存在绝对平行[6],图像校正的目的就是将左右摄像机的成像在消除畸变的基础上,使图像的对极线映射至同一水平线上。
图像校正需要由标定获取的外参数来进行,其基本过程如下:
(1)将图像的像素坐标系下的坐标变换至摄像机坐标下;
(2)通过旋转矩阵R 对坐标进行平行极线校正;
(3)通过畸变参数校正摄像机坐标;
(4)将校正后的摄像机坐标变换回像素坐标系下。
通过以上操作,能够得到处在同一平面,理想的行对准图像。
信号弹的飞行过程具有活动空间广、运动速度快的特点,反映在图像序列中即目标的像素坐标值变化快,且连续帧间关键点距离变化较小,图像相对背景单一固定。
背景减除算法(BS)是一种识别图像序列中运动目标的方法[7],其原理是对相邻帧图像做出差分和二值化处理,再使用形态学膨胀处理来识别运动区域轮廓。由于信号弹飞行时会在图像中留下烟雾,烟雾在图像中不仅所占面积远大于信号弹目标,且会被信号弹照亮,影响算法识别效果,针对信号弹目标识别,本文对这种方法做出了一定修改。
首先依次读取图像序列,对于首张图像直接使用其作为输入背景(Background),将序列图像与其相邻帧(Frame)图像进行差分运算,获取包含场景中运动目标的差分图(Different map),据此对图像中所有像素点进行分类,其次使用相邻帧的分类信息补充背景信息。
信号弹飞行图像序列中的像素点x(u,v)只有两种分类情况,在背景(BG)上或运动目标(FG)上。首先使用相邻帧图像差分的绝对值来计算图像中像素点灰度值的变化量。定义一个阈值C,当第t 帧图像中像素点xt(u,v)的灰度值变化量ΔP 小于C时,将该点分类至背景,当ΔP 大于等于C时,则综合相邻帧分类情况加权计算其概率分布以确定其分类,其属于背景分类的概率计算方法如式(5)所示:
式中:C 依据图像中运动区域附近的像素灰度值平均变化量来确定。由此可以利用相邻帧的信息对图像中运动目标和背景做出更好的识别。方法效果如图4所示。
图4 识别效果对比Fig.4 Comparison of recognition effects
如图4(a)所示,受天空中无关物体和镜头前障碍影响,原图像的二值化差分图像中出现2个目标且无关物体在图像中所占面积更大;如图4(b)所示,原方法错误地将无关物体识别为了信号弹目标;如图4(c)所示,上述方法未受到无关物体影响。
信号弹离开发射装置飞行至一定高度开始发光放热并向下风向移动,运动过程中信号弹本身发出的光会照亮空气中的悬浮颗粒和自身燃烧留下的烟雾。常用的质心提取方法是通过计算图像矩来寻找连通区域的中心位置,并将其看作质心[8]。对于密度均匀形状标准的物体,质心和几何中心重合,信号弹飞行在空中表现为一个高亮度低纹理的圆形光斑,由于烟雾的影响光斑经常会呈现为灰度逐渐递减的水滴形斑点,在自动提取时容易出现误判,本文中使用自适应阈值二值化来解决这一问题。
信号弹飞行过程中,其亮度是一个从低快速变高再慢速降低的变化过程,同时信号弹向上飞行过程中所占的像素面积也会逐渐变小,即在固定阈值下二值图像中连通区域面积会体现出一个快速增大后逐渐减小的过程。首先使用一个特定阈值L 作为初始帧的阈值并保存其连通区域的面积大小s,接着随分割图像序列输入不断比较在L 下二值化图像连通区域面积s 相较于之前帧的变化量Δs,同时不断更新截至此帧连通区域面积的平均值S。当Δs 大于S的20%时,依据当前S的大小来决策增加或减小L的取值。
假设阈值每次变化的大小为t,在第f 帧分割图像中增减的次数为i,通过计算在阈值L+it 下二值图像连通区域的面积,使其逼近上一帧分割图像的面积。接着以原始阈值L 继续对f+1 帧的分割图像进行处理,若Δs值依旧出现大幅波动,则将f 帧使用的阈值L+it 设定给之后所有帧。方法基本过程如图5所示。
图5 阈值决策流程Fig.5 Threshold determination flow chart
如图6(a)、6(b)所示为使用OpenCV 函数库中的轮廓识别方法分别在第100 帧与第120 帧图像中定位效果,图6(c)、6(d)为上述方法效果。
图6 信号弹定位效果对比Fig.6 Comparison of the signal flare locating
直接提高二值化处理阈值也能缓解被照亮的烟雾被提取为光斑的概率,但同时会降低算法在信号弹亮度较低时的识别能力。在实际实验中阈值会自动进行4次左右的调节,与常用方法相比,上述方法对目标的定位更加准确。
本实验使用由分辨率为4096*3000的灰点GS3-U3-123S6C-C型工业相机和焦距25 mm的长步道FA2515A 镜头组成的双目视觉系统,基线长度为1.5 m。系统在测量前需要进行摄像机标定和静态目标精确性检验。
本实验在摄像机内参数标定中使用的是规格11*9,方格宽度为30 mm的棋盘格标定板,外参数标定使用的是用黑色圆球搭建的标定物。为提升标定鲁棒性降低实验误差[9],每台摄像机使用的内参数标定图像均为18 张。
在进行信号弹目标测量前,先使用静态目标对系统精度进行测试,结果如表1所示。
表1 静态目标检精度检验结果Tab.1 Static target accuracy test results
将标定后的双目视觉系统垂直于地面,从发射装置下方拍摄信号弹飞行过程。将左右摄像机拍摄的图像序列使用双目视觉系统内外参数进行图像校正处理,对图像序列使用本文方法对左右摄像机图像中的目标进行分割与定位并完成自动测量,生成信号弹飞行高度曲线。
由于信号弹在图像中所占面积非常小,信号弹在接近最高点时其质心在左右摄像机图像中的视差趋于不变,导致此部分数据波动较大,不易直观获取信号弹性能参数。本文使用的摄像机的拍摄速度为30 fps,在信号弹飞行达到最高点附近时,相邻少数帧中信号弹目标的飞行高度可以近似看作相等[10]。
由此,取5 帧视差均值作为计算信号弹飞行高度的依据,得出结果如图7所示。
图7 信号弹飞行高度变化曲线Fig.7 Comparison of the signal flare locating
以垂直于地面为正方向,信号弹离开发射装置为t0时刻,信号弹的上升速度在t0时刻最大,飞行高度随时间开始增加,受重力加速度作用其上升速度逐渐减小,在th时刻达到最高点,此时上升速度为0,th时刻后速度变为负数,飞行高度随时间开始减小。可见由系统自动测量的信号弹飞行高度变化趋势符合物理规律,结果可信度高。
进行多组实验,将测量结果中最大高度值与人工观测最高点高度值进行对比,结果如表2所示。
表2 信号弹最高点测量结果对比Tab.2 Highest point comparison results for signal flares
由对比结果可知,系统测量结果与人工观测值总体一致,相对误差较小,符合信号弹测试需求。
系统测量结果与人工测量值的误差随信号弹飞行高度逐渐增加,分析原因可知,系统误差主要由目标定位点的漂移产生。信号弹目标飞行高度增大时,在左右摄像机图像中所占的面积逐渐减小的同时视差也在减小,致使定位点的误差对高度计算结果影响逐渐增大。此外,观测高度由有经验的工人使用观测仪得出,存在主观误差。
本文使用长基线双目系统对多组信号弹飞行过程进行了拍摄,使用基于背景减除算法的运动识别方法从图像中自动分割信号弹图像,采用自适应阈值二值化方法从分割图像中定位质心,由多帧视差均值对信号弹飞行过程进行高度绘制。实验结果表明,本方法可以通过绘制高度变化曲线还原信号弹飞行的高度轨迹,测量精度可信,自动化程度高,能够快速对信号弹性能做出有效评测。