郑 坤, 姜文正, 卢 晓, 王胜利
(1.山东科技大学电气与自动化工程学院, 青岛 266590; 2.自然资源部第一海洋研究所, 青岛 266061;3.山东科技大学海洋科学与工程学院, 青岛 266590;)
海浪是1种很常见的海洋现象,海浪数据的观测对于海洋防灾减灾等方面的工作具有重要的意义。人们对海洋资源的探索越来越多,海浪数据资源的获取也变得越来越重要,海浪数据获取的方法也随着社会的进步在不断地更新。从20世纪50年代,中国开始开展海浪观测工作,最初的海浪观测是利用简易的测波装置——光学测波仪和测波杆。这种简易的测波装置受到人工的限制,慢慢被自动的测波装置取代,例如压力式测波、声学式测波、浮标自动测波、雷达式测波。近年来随着立体摄影技术的发展,摄影系统也被广泛应用于海浪数据的观测。基于立体摄影系统的观测方法也开始慢慢成熟,如无海面控制点的海浪波高的测量方法[1]。针对海浪观测的难点在于海浪特征点的检测,由于海浪对象的特殊性,特征点的提取易发生误提取的状况,而且目前常见的角点检测算法对海浪角点的检测效果并不理想。因此为了解决海浪特征点提取算法的不足,提出在Harris算法[2]的基础上,对海浪特征点提取算法进行改进,实现对海浪特征点的提取,提高海浪三维重建模型[3]的精度。
基于双目立体视觉的三维重建主要是指通过双目相机系统拍摄一系列图像数据利用特征点检测、特征点匹配等相关技术,根据像素坐标系、图像坐标系、相机坐标系以及世界坐标系相互之间的转换关系,将图像上二维点转化为世界坐标系下三维点,恢复出物体的三维模型。具体的实现流程如图1所示。
图1 三维重建流程图Fig.1 Flow chart of 3D reconstruction
对于海浪这种变化繁复的研究对象,图像的预处理和特征点的提取对于重建的后续工作的开展和重建模型的精度具有重要的影响。传统的Harris算法针对普通研究对象的焦点的提取非常高效稳定,但是在海浪图像特征点的提取上,会出现误提取的状况。在Harris算法的基础上对特征点提取步骤进行改进,该改进算法能够准确地提取出图像的特征点,减少误提取点的数量。该算法相较于传统的提取算法更适合海浪图像的处理。
Harris算法是利用固定窗口在图像上移动实现的,窗口移动前后窗口内的像素灰度值发生变化,如果存在任意方向上的变化,则可认为此处存在角点。当窗口发生(u,v)移动时,窗口滑动前后的像素变化可以描述为
(1)
式(1)中:(u,v)为窗口偏移量;(x,y)为窗口内像素的位置坐标;w(x,y)为窗口函数;I(x,y)为像素点的灰度值。
对E(u,v)表达式进行一阶泰勒展开,表达式演化为
(2)
式(2)中:Ix、Iy分别为水平和竖直方向上的梯度值。
所以E(u,v)的表达式更新为
(3)
式(3)中:M为协方差矩阵,特征值分别为λ1、λ2,引入阈值T来判断角点,T定义为
T=detM-k(traceM)2
(4)
式(4)中:k为经验常数,k=0.04~0.06。
T=λ1λ2-k(λ1+λ2)2
(5)
通过设定阈值T的大小来判断是否为角点。
改进的特征点提取算法的原理是利用高斯金字塔[4]对海浪图像进行预处理,处理后的海浪图像使用Harris算法进行角点的提取。经过对海浪图像的分析,特征点提取困难的主要原因是海浪图像纹理不清晰,造成特征点提取困难,易产生错误识别。
假设获取第a+1层高斯金字塔图像,采取如下方法。
(1)对第a层图像进行高斯内核卷积,选用5×5高斯内核。
(2)将图像像素排列中的偶数行和列去除,得到的即为第a+1层图像,具体的去除公式为
(6)
式(6)中:ga(i,j)为第a层图像灰度值;m、n分别为行列数。
为了获取纹理清晰且易于提取特征点的金字塔图像,将高斯金字塔取至第2层,经检验分析这1层的高斯金字塔图像具有一定的低通滤波,且纹理较清晰,便于特征点提取。
使用Harris算法对高斯金字塔第2层图像进行特征点提取。第2层图像特征点提取完毕之后,找出第2层图像特征点所对应的第1层的像素矩阵,遍历该矩阵中的每1个元素并把兴趣值最大的点作为该层的特征点,最终以第1层的特征点找出原始图像的特征点。假设像元的位置为(x,y),兴趣值为V(x,y),具体兴趣值计算为
(7)
V(x,y)=min(V1,V2,V3,V4)
(8)
经过改进的Harris算法提取的特征点是在图像坐标系下的1个特征点的描述,为提高海浪图像特征点的匹配,使用尺度不变特征变换(scale-invariant feature transform, SIFT)描述子[5]进行特征点局部描述。将关键点周围的区域划分成4×4的图像块,计算每1块图像的梯度直方图。为去除光照对描述子的影响,对梯度直方图进行归一化处理,然后统计每个直方图即可得到SIFT描述子。每1块梯度直方图的计算公式为
(9)
(10)
式中:N(x,y)为梯度的幅度值;θ(x,y)为梯度的方向。
在海浪这种环境下,光照对于海浪特征点提取和描述有较大的影响。为减小光照的影响,采用图像直方图归一化处理,这样不仅可减小光照对海浪特征点描述的影响,还可提高图像的清晰程度,提高图像特征点的提取稳定性和匹配精度。将图像归一化处理,图像的像素范围[a,b]转换到[0,255]区间内,具体的算法为
(11)
式(11)中:Xin、Xout分别为输入输出图像的像素值。
现场实验依托向阳红01船的全球航次进行,实验时间为2017年12月31日。如图2所示,相机安装在船顶部右侧,距离水面高度约20 m,2个相机之间的距离为3.65 m。拍摄的图像对如图3所示。
图2 依托向阳红01全球航次的船载立体摄影海浪观测实验Fig.2 The shipborne stereoscopic wave observation experiment based on Xiangyanghong 01 global voyage
图3 现场采集图像对Fig.3 Field acquisition image pairs
4.2.1 相机参数标定[6-8]
标定方法是基于张正友标定法[7],为了弥补标定板的粗糙程度所造成的标定精度影响,最好是在相机系统前方固定平面,将标定板进行旋转平移操作,实现拍摄多组视角的图像拍摄。进行相机标定之前,将采集的图像进行预处理,剔除模糊的图像。
通过对22组的棋盘格标定板图像进行处理,最终得出内外参数[8]。实验中左右相机的内外参数的标定结果如表1、表2所示。
表1 左右相机内参数标定结果Table 1 Calibration results of left and right camera internal parameters
表2 左右相机外参数标定结果Table 2 Calibration results of left and right camera external parameters
4.2.2 Harris算法与改进的算法结果分析
在海浪图像转换为高斯金字塔图像进行特征点提取后,对比可发现图像中误提取特征点的数量明显减少,有效地抑制了由光照及其他因素引起的特征点误提取,减少后期特征点的匹配。金字塔图像如图4所示。原Harris算法与改进的Harris算法的特征点检测效果对比如图5所示。
图4 高斯金字塔图像Fig.4 The second layer gaussian pyramid image
图5 特征点提取效果对比Fig.5 Comparison of extraction effect of feature points
立体匹配[9]的目的是在2张相机图像的重叠部分匹配出1个三维点。虽然SIFT算法[10]的效率不高,但是针对海浪纹理不清晰的问题,使用SIFT算法会更好一些。使用SIFT算法对图像特征点进行匹配的效果如图6所示。
图6 SIFT算法特征点匹配效果Fig.6 SIFT algorithm feature points matching renderings
4.2.3 三维重建结果
根据立体匹配出的深度信息,利用相似三角原理[11]得出海浪表面三维信息网格,如图7所示。
图7 海浪三维信息网格Fig.7 Three-dimensional information grid of waves
结合Harris算法与SIFT算法描述的改进角点检测算法解决了海浪特征点检测困难以及误提取角点数量较多的问题。该改进算法具有角点定位精确,可以有效地抑制图像因光照原因产生的无效角点,与SIFT算法结合提高了算法的匹配精度,减少了匹配时间,增强了算法的实时性。该算法虽然解决了海浪角点检测的困难,但是在角点检测均匀程度上还有些不足,会对后期的波面三维重建的精度产生一定影响。本文方法经过现场实测,可以应用到中国东南亚海域海浪波高、波长等参数的观测。