徐 進 陳姚節
(武漢科技大學計算機學院 武漢 430081)
視覺測距[1]作為機器視覺[2]領域內的基礎技術之一而受到廣泛的關注,其廣泛應用于機器視覺定位[3]、目標跟蹤[4]、視覺避障[5]等。船舶作為水上運輸的交通工具,同其他的交通工具比較,不具有很強的靈活性和可控性,需要提前測量與其他船舶和碰撞物之間的距離,并做好規避方案,才能有效地避免碰撞事故的發生。機器視覺的發展為解決海上船舶測量提供了一個新的方向。通過現有船舶上的攝像頭來模擬人的視覺功能,對“目標圖像”進行數字化,提取相應信息,并通過計算機進行相應處理,來實時獲取船舶的位置信息和速度。
傳統非機器視覺測量船舶距離的方法主要包括雷達自動識別系統[6~7]、船舶自動識別系統[6]、紅外傳感器測距方法[8]和超聲波測距方法[9]等。雷達自動識別系統和船舶自動識別系統都是保障船舶安全航行,避免碰撞的有效方式,但現有設備昂貴,我國僅在大型船舶上配備,很難大范圍普及。紅外傳感器測距方法是通過發射紅外光以及接收的紅外光來判斷目標船只和本船的距離,在中短距離的判斷上具有較大優勢。但精度不高,容易同其他紅外信號混淆,造成系統失效。超聲波測距方法適用于中小型船舶的距離測量系統,但受天氣的影響特別大,特別是濃霧天氣。
基于機器視覺的測量方法[10]主要包括:單目視覺測量、雙目視覺測量、結構光視覺測量等。結構光的應用受到光源的限制[11],本文無法應用,這里不做介紹。王健等提出一種在AOI 內利用灰度梯度探測物標的方法,但船舶動態搖擺對該方法的測距精度影響較大[12]。楊晨曦等提出一種雙目立體視覺測距方法,該方法測距精度高,但可測量距離短[13]。而單目視覺測距方法具有結構簡單,操作方便,運行速度快等特點。本文在單目視覺的基礎上進行研究。
基于單目機器視覺的實時船舶測距方法及誤差修正是通過Visual Studio 2017 平臺開發設計、計算機視覺庫OpenCV實現功能、SCA200光電云臺采集圖片并進行重復性試驗,采用faster R-CNN 算法和ECO 算法實現對目標的識別與跟蹤,并畫出矩形框,使用三角幾何原理對目標進行測距,并通過誤差修正方法對誤差進行調整,最后輸出測距結果,整個系統的流程如圖1所示。

圖1 單目測距流程圖
光電云臺獲取目標船舶的二維信息,通過機器視覺faster R-CNN 進行目標檢測,提取目標船舶的特征,根據船舶形狀框選目標,并將光電中心(即為圖像中心)移到目標底部中心,利用三角幾何原理計算與目標船舶之間的距離。
點P 為光電云臺,線段PF 為光電云臺初始水平方位,矩形ABCD為自動船舶的目標框,點S為船舶矩形框底部AB的中心點,h為光電云臺距離水平面的安裝高度OP,d為本船舶與目標船舶之間的水平距離OS,角α為光電云臺的俯仰角,其中f為光電云臺的有效焦距。(u0,v0)為光軸與像平面的交點,作為像平面坐標系的原點,取為( 0 ,0 );(u,v)為目標船舶底部中心點S在像平面上的投影坐標。

圖2 單目測距幾何模型圖
根據幾何三角原理,其距離計算公式為

圖像坐標系與屏幕坐標之間有如下關系,其中dx,dy 為每一個像素點在x 軸與y 軸方向上的物理尺寸。(u0,v0)為屏幕坐標中心點,為相機的內參,可通過相機標定獲取。中心點S 在像平面上的實際投影點與屏幕中心點之間的關系如式(2)。

攝像機鏡頭的幾何畸變和船舶搖擺等問題一直是船舶測距中的重難點。本文根據光電云臺與船舶位置是否發生偏移將誤差分為靜態誤差和動態誤差兩種,并分別對誤差因素進行分析。靜態誤差:1)攝像頭幾何畸變造成目標成像位置的偏移誤差;2)光電云臺的安裝高度誤差;3)光電云臺在跟蹤目標時存在的抖動誤差;4)圖像處理中的噪聲誤差以及根據目標輪廓自動檢測形成矩形框所造成的誤差;動態誤差主要是由于船舶搖擺造成的光電云臺高度以及初始角度發生的偏移誤差。
由式(1)可得,測量距離與相機的安裝高度成正比即d=k·x,k?R。即可表示為在同一偏轉角度,隨著光電云臺安裝高度的增加,所產生的距離誤差不變。如圖3 所示,相機的安裝高度對距離計算誤差影響為固定值,因此本文這里不做分析。

圖3 屏幕坐標投影

圖4 相機安裝高度對距離影響圖
首先進行靜態試驗,光電云臺安裝高度為2.0m,計算3m~20m之間的距離,測量數據為16組。通過光電云臺沿著某一方向采集圖片,連續采集目標船舶的圖片。光電云臺在自動跟蹤目標時,光電本身存在抖動誤差這種誤差是客觀存在的。假設光電云臺抖動誤差角度為θ,此時距離計算公式為

光電云臺在跟蹤目標時,會隨著目標檢測的變化在矩形框內上下移動,導致測距的角度也在小范圍的變化。本文采取求和計算平均值法來計算距離。具體方法為每隔10 幀計算與目標的距離并求和來消除光電云臺抖動誤差角度θ,計算距離為這10幀的平均值。

通過靜態試驗誤差分析對數據進行修正,得到的修正后的數據如表1所示。

表1 靜態測距實驗結果(單位:m)
從表1 可以看出,利用本文提出的靜態誤差修正方法,在100m 內,實際距離與測量誤差在2m 之間,在可接受范圍內,說明本方法測距具有一定的可行性。
當船舶在水面上進行動態運動時,其測量的橫傾角會隨著船舶搖擺而改變。不同船舶最大橫傾角要求不同,這里考慮的船舶橫傾角在5°以內。船舶受波浪影響造成前后搖擺,此時會有以下情況:因無法獲取目標船舶搖擺角度。由于單目視覺會失去空間角度信息,這里只考慮本船舶搖擺中的前傾而導致光電云臺的高度以及俯仰角會發生變化,假設船舶前傾偏轉角為γ。通過陀螺儀實時獲取船舶前傾角度。則此時光電云臺相對于水面高度為

這里假設船舶前傾角度為正,后搖角度為負。此時距離計算公式為


圖5 船舶震蕩角度變化圖
驗證實驗分為兩組,第一組為搖擺狀態下物體靜止測距實驗,即保持目標位置不動,距離不變。第二組為搖擺狀態下物體進行在直線移動時動態測距實驗,保持物體沿著光電云臺正前方移動,同時使光電云臺在(-5,5)范圍內搖擺。實驗對比共有四組:實際距離相同、橫傾角不同的兩組:27.88m和69.44m;實際距離不同、橫傾角相同的兩組:-2.9655°和-4.6892°。實驗結果表明,本文提出的基于單目視覺測距系統的實時船舶測距方法及誤差修正方法能夠很好地降低相對誤差,且具有很高的可行性。從測量的數據觀察,使用本文提出的修正方法測距的相對誤差保持在(0.4%~2.7%)之內,修正前相對誤差在(16.2%~79.2%)之間。說明本文的修正方法,極大地減少了相對誤差,提高了測距精度。且本文的修正方法相對誤差整體保持在3%之內,說明該方法效果較穩定,具有很好的可行性。

表2 搖擺狀態下的動態測距實驗結果
本文對單目視覺在船舶距離測量領域的應用進行了研究,提出了一種改進方法和誤差修正方法。其改進方法是在傳統的單目視覺測距基礎上,將光電云臺光心移至目標矩形框的底部中心處,對目標物體進行測量。并通過誤差修正方法對測量結果進行修正,使用修正方法之前,相對誤差在(16.2%~79.2%),而本文的修正方法使測距相對誤差保持在(0.4%~2.7%)之間,極大地提高了測距精度,具有很好的可行性,可以讓船舶工作人更直接地了解前方障礙物距離信息,及時作出應對措施以避免碰撞事故的發生。