双目立体视觉的波浪表面重建

2019-08-16 07:38梁海香
无线电工程 2019年8期
关键词:双目极值高斯

梁海香

(哈尔滨工程大学 电子信息与通信工程学院,黑龙江 哈尔滨 150001)

0 引言

随着我国综合实力的显著提高,军事实力的日益雄厚,对海洋资源的保护和利用成为了一个重要的发展战略。因此,对于船舶的性能要求也越来越高。船舶在行进过程中产生的兴波阻力[1]影响着船舶的速度、性能,从而给海洋资源的开发、利用等造成阻碍。因此,为了测定兴波阻力,需要对波浪进行观测。

真实场景的重建和仿真一直是计算机视觉和计算机图形学方面的研究重点,在之前的几十年里,几乎所有的技术都研究的是具有朗伯反射的不透明物体[2],并在这个领域取得了极大的进展。国外首次将摄影测量技术用于波浪的测量是在20世纪30年代。1954年,利用光学邻域的光反射原理,将波浪的斜率和波浪表面的反射亮度相对应[3]。1960年,证明了可以用立体照相的方法测量海洋长波的波面等高图。1994年,Zhang等[4]将颜色编码技术用于波浪的观测,让水面反射的颜色与水面每一点的斜率相互对应,之后进行彩色图像的颜色识别完成观测。2005年,Ihrke等[5]使用荧光物质对水体染色,通过荧光的强度计算水体厚度,构造出流体表面。2006年,Benetazzo[6]将拍摄的图像应用图像分析技术得到水面的高度场,再用双目立体摄影技术,由相重叠的图像获得表面信息。2009年,Wang等[7]实现对水进行染色,并对液体表面投影特殊图案,使用双目相机进行拍摄,计算获得深度图,并根据张力和速度场的约束进行优化,重建水面。2011年,Sagawa等[8]向染色后的水面投影特殊的图案,根据图像的形状变化来恢复变化的水面。2017年,Quan等[9]用基于物理粒子的方法来重建水面,该方法通过浅水方程构造线性几何表面和非线性几何表面约束,来重构水面形态。

综上所述,之前的研究方法存在2方面的问题。第1方面,试验方法简便,但实验结果一般,水面波浪的高度的结果误差较大;第2方面,实验设备采用精密的仪器,代价昂贵。因此,本文将双目立体视觉技术应用于波浪高度的测量;之后通过三维坐标重建波浪表面,再由最小二乘法拟合出三维表面,实验设备便宜,并且实验结果误差相对较小。

1 波浪表面特征提取

1.1 双目相机标定

采用张正友[10]平面标定法来进行双目相机的标定。双目标定不仅要得出2个相机的内部参数,还要通过标定来获得2个相机之间的相对位置,即右相机相对于左相机的旋转矩阵R和三维平移向量T。相机C1,C2与世界坐标系外部参数为旋转矩阵R1,R2,平移向量T1,T2;空间中的一点P在世界坐标系、相机C1,C2坐标系下的坐标分别为XW,XC1,XC2;则2个相机坐标系的转换关系可用R,T表示。假设同一空间点,其世界坐标与左右2个相机坐标系下的坐标变换关系分别为:

XC1=R1XW+T1,

XC2=R2XW+T2。

(1)

最后化解可得:

(2)

1.2 水面图像采集

为了采集水面的图像,搭建了一套水面采集系统。该实验系统包括双目相机、笔记本电脑和千兆路由器。相机采用的型号是GigE接口工业网络MV-VEM200SC;笔记本电脑用的是Thinkpad T440,能够保证运算速度;双目相机与电脑经由千兆路由器相连。

由于水面是透明的,特征提取较为困难,需要对水进行处理。基于相关文献,为了增加水面的特征,利用投影仪向水面投影网格图像。在搭建好试验环境后,即可采集图像,如图1和图2所示。

图1 平静水面图像

图2 波浪水面图像

1.3 波浪表面特征提取

在采集了水面图像之后,需要提取特征,采用的是SIFT特征提取算法,该算法实现了特征的尺度无关性,对提取到的角点生成描述子,这些生成的描述子将被用于后续的立体匹配算法中,以达到提高匹配的正确率。

1.3.1 尺度空间的极值检测

提取尺度无关的特征点可以通过搜寻所有可能的尺度,这就要用到尺度空间理论。高斯函数是得到尺度空间唯一可用的核函数,将图像I(x,y)的尺度定义为一个函数L(x,y,σ),它由高斯函数G(x,y,σ)的图像I(x,y)卷积得到:

L(x,y,σ)=G(x,y,σ)*I(x,y)。

(3)

为了在尺度空间中搜寻到较为稳定的关键点的位置,可以将高斯差分函数与原始图像进行卷积,然后在得到的空间D(x,y,σ)中寻找极值点,

D(x,y,σ)=(G(x,y,kσ)-G(x,y,σ))*I(x,y)=

L(x,y,kσ)-L(x,y,σ)。

(4)

式中,相邻2个尺度由一个常数k分开。

1.3.2 计算高斯差分图像

为了得出尺度无关的特征点,首先计算出相邻尺度之间图像的差分,得到差分之后的图像,并在该图像空间中求极值点,采用金字塔用以计算高斯差分图像。金字塔分为很多层,在第1层中,将原始图像用高斯函数进行卷积,得到一系列依次平滑的图像。

1.3.3 计算极值点

之前的操作已经得出了高斯差分图像,接下来要计算极值点。在计算极值点时,高斯差分图像中的像素点,要和它所在图像的8领域像素相比较,而且要和上一层和下一层图像邻近的9个像素点比较。

1.3.4 选取关键点

对于任意一个尺度上取得的极值点,用一个三维的2次函数求得该极值点在原图像上的位置[11],然后去掉对比度较低的极值点。首先在某极值点A对D(x,y,σ)进行泰勒展开:

(5)

式中,X=(x,y,σ)T是到点A的偏移量。对式(5)求X的偏导数,并令其偏导为零,得出

(6)

(7)

1.3.5 关键点方向确定

SIFT特征具有的重要特性是旋转不变性,实现旋转不变性采用的是“相对”的概念。先为关键点设定一个方向,而定义的关键点描述子是与这个方向相对的,因此可以得到匹配时图像的旋转无关性。为了实现尺度无关,根据关键点所在的尺度选择与该尺度最相近的高斯平滑图像L。对于L上的每个L(x,y),计算梯度和方向:

(8)

(9)

1.3.6 局部描述子

之前已经计算得出了关键点的图像所在位置、尺度和方向,接下来根据关键点附近的特征计算特征描述子。这个描述子还应对仿射变换、光照变换等特性具有鲁棒性。计算描述子之前,要确定特征点及其邻域的像素点的范围,该图像区域有一个确定的半径,其计算公式为:

(10)

式中,σoct是角点所在的尺度的标准偏差;d=4。

在之前确定的范围内计算出每一个像素点所对应的梯度和方向,接着对这些梯度的幅值高斯加权后生成梯度直方图,即

(1-dc)×(1-do),

(11)

式中,xk表示像素点与角点的列间距;yk表示像素点与角点的行间距;σw表示高斯加权函数的标准差。

对采集到的平静水面和波浪水面图像分别进行特征提取,提取的结果如图3和图4所示。

图3 平静水面特征提取结果

图4 波浪水面特征提取结果

2 立体匹配与三维重建

2.1 立体匹配

提取特征点后,可进行立体匹配。采用SIFT立体匹配算法[12],原理是计算2幅图像上的特征点描述子间的欧氏距离[13-14],取最临近与次临近的比值位于一个阈值范围内的特征描述符所对应的特征点作为匹配点对[14],再利用霍夫变换对同一个物体中的特征进行聚类,去掉错误的匹配点对[15-17]。特征点在匹配时可以使用最近邻的方法,而最近邻定义为特征向量的欧氏距离[18]。在进行大库的匹配时,采用Best-Bin-First(BBF)算法,大大提高了运行速度,而且以很大的几率找到最近邻[19]。

2.2 三维重建

在得出立体匹配对的特征点的二维坐标后,可以通过双目相机的内外参数求得特征点的三维坐标,由三维坐标可以构建物体的三维模型[20]。双目相机的参数包括左右摄像头各自的内部参数Al,Ar,以及2个摄像头之间的外部参数,旋转矩阵R和平移向量T;而在内部参数中分别包括了左图像上的中心坐标(u0l,v0l)和右图像上的中心坐标(u0r,v0r)。

假设三维空间点P的世界坐标为(XW,YW,ZW),点P在2个相机的成像平面上的像点分别为p1,p2,其像素坐标分别为(ul,vl),(ur,vr),由第2节计算机图像坐标系到世界坐标系的转换关系可以求得三维空间点P的空间坐标,由于世界坐标系的原点为左相机的光心,因此在转换为世界坐标的过程中只需内部参数即可,2个相机的转换关系的方程分别为:

(12)

相机标定可以得到左右摄像头的内部参数,其表达式为:

(13)

将式(12)化简后,利用最小二乘法计算出三维点q(XW,YW,ZW)在世界坐标系下的空间坐标,其计算公式为:

(14)

3 实验结果与分析

相机拍摄完水面图像后,利用SIFT算法进行特征提取和立体匹配,SIFT立体匹配后的结果如图5和图6所示。从结果图显示,SIFT算法可以正确匹配较多的特征点。

图5 平静水面立体匹配结果

图6 波浪水面立体匹配结果

之后将匹配特征点像素坐标和双目相机内外参数作为输入,利用三维重建算法,可以得出水面特征点的三维坐标,将平静水面的三维坐标与波浪水面的三维坐标进行对比,能够得出精确的浪高数据,利用Matlab绘制浪高等高线图,如图7所示;将三维坐标数据通过最小二乘法拟合为三维曲面,得到波浪表面的可视化模型,如图8所示。

图7 以平静水面为基准的波浪等高线图

图8 波浪水面重建的三维模型

从图7可以看出,波浪的高度相对于平静水面的变化是几毫米的微小波动。此方法较为精确地测量出波浪高度和重建水面模型,实验设计简单,结果相对较好。从图8可以直观看出波形结构,与实际的波形结构相同。测量平静水面高度约52 mm,将水波纹的高度减去平静水面的高度,可以更加直观地看出相对于平静水面的波浪的高度变化。

4 结束语

将双目立体视觉用于三维重建的方法,以双目相机拍摄的水面图像作为输入,利用SIFT算法进行特征提取与立体匹配;由于视角、光照、系统误差等采集的左右图像存在着灰度差异以及仿射变化等[21],同时水介质的透光、反光等也加大了左右波浪图像的差异[22],造成水波浪图像的匹配结果很不理想,给双目测量应用于波浪测量方向带来困难。以双目摄影波浪测量为背景,研究特征提取与匹配算法,并采用改进的特征提取与匹配算法处理采集的波浪图像,最终绘制等高线,得到波浪的波形、浪高信息。不过当前的系统只能用于水域较小的环境,之后的研究方向将着眼于用更为先进的设备实现较为广阔水面的观测。

猜你喜欢
双目极值高斯
采用双目视觉和自适应Kalman滤波的作物行识别与跟踪
霜 降 苏美玲
基于双目视觉的机器人定位与导航算法
通过函数构造解决极值点偏移问题
例谈解答极值点偏移问题的方法
极值点偏移问题的解法
机械手的双目视觉定位抓取研究
数学王子高斯
天才数学家——高斯
也谈谈极值点偏移问题