鄭 坤, 姜文正, 盧 曉, 王勝利
(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算法結合提高了算法的匹配精度,減少了匹配時間,增強了算法的實時性。該算法雖然解決了海浪角點檢測的困難,但是在角點檢測均勻程度上還有些不足,會對后期的波面三維重建的精度產生一定影響。本文方法經過現場實測,可以應用到中國東南亞海域海浪波高、波長等參數的觀測。