徐 進(jìn) 陳姚節(jié)
(武漢科技大學(xué)計(jì)算機(jī)學(xué)院 武漢 430081)
視覺測(cè)距[1]作為機(jī)器視覺[2]領(lǐng)域內(nèi)的基礎(chǔ)技術(shù)之一而受到廣泛的關(guān)注,其廣泛應(yīng)用于機(jī)器視覺定位[3]、目標(biāo)跟蹤[4]、視覺避障[5]等。船舶作為水上運(yùn)輸?shù)慕煌üぞ?,同其他的交通工具比較,不具有很強(qiáng)的靈活性和可控性,需要提前測(cè)量與其他船舶和碰撞物之間的距離,并做好規(guī)避方案,才能有效地避免碰撞事故的發(fā)生。機(jī)器視覺的發(fā)展為解決海上船舶測(cè)量提供了一個(gè)新的方向。通過現(xiàn)有船舶上的攝像頭來模擬人的視覺功能,對(duì)“目標(biāo)圖像”進(jìn)行數(shù)字化,提取相應(yīng)信息,并通過計(jì)算機(jī)進(jìn)行相應(yīng)處理,來實(shí)時(shí)獲取船舶的位置信息和速度。
傳統(tǒng)非機(jī)器視覺測(cè)量船舶距離的方法主要包括雷達(dá)自動(dòng)識(shí)別系統(tǒng)[6~7]、船舶自動(dòng)識(shí)別系統(tǒng)[6]、紅外傳感器測(cè)距方法[8]和超聲波測(cè)距方法[9]等。雷達(dá)自動(dòng)識(shí)別系統(tǒng)和船舶自動(dòng)識(shí)別系統(tǒng)都是保障船舶安全航行,避免碰撞的有效方式,但現(xiàn)有設(shè)備昂貴,我國僅在大型船舶上配備,很難大范圍普及。紅外傳感器測(cè)距方法是通過發(fā)射紅外光以及接收的紅外光來判斷目標(biāo)船只和本船的距離,在中短距離的判斷上具有較大優(yōu)勢(shì)。但精度不高,容易同其他紅外信號(hào)混淆,造成系統(tǒng)失效。超聲波測(cè)距方法適用于中小型船舶的距離測(cè)量系統(tǒng),但受天氣的影響特別大,特別是濃霧天氣。
基于機(jī)器視覺的測(cè)量方法[10]主要包括:單目視覺測(cè)量、雙目視覺測(cè)量、結(jié)構(gòu)光視覺測(cè)量等。結(jié)構(gòu)光的應(yīng)用受到光源的限制[11],本文無法應(yīng)用,這里不做介紹。王健等提出一種在AOI 內(nèi)利用灰度梯度探測(cè)物標(biāo)的方法,但船舶動(dòng)態(tài)搖擺對(duì)該方法的測(cè)距精度影響較大[12]。楊晨曦等提出一種雙目立體視覺測(cè)距方法,該方法測(cè)距精度高,但可測(cè)量距離短[13]。而單目視覺測(cè)距方法具有結(jié)構(gòu)簡單,操作方便,運(yùn)行速度快等特點(diǎn)。本文在單目視覺的基礎(chǔ)上進(jìn)行研究。
基于單目機(jī)器視覺的實(shí)時(shí)船舶測(cè)距方法及誤差修正是通過Visual Studio 2017 平臺(tái)開發(fā)設(shè)計(jì)、計(jì)算機(jī)視覺庫OpenCV實(shí)現(xiàn)功能、SCA200光電云臺(tái)采集圖片并進(jìn)行重復(fù)性試驗(yàn),采用faster R-CNN 算法和ECO 算法實(shí)現(xiàn)對(duì)目標(biāo)的識(shí)別與跟蹤,并畫出矩形框,使用三角幾何原理對(duì)目標(biāo)進(jìn)行測(cè)距,并通過誤差修正方法對(duì)誤差進(jìn)行調(diào)整,最后輸出測(cè)距結(jié)果,整個(gè)系統(tǒng)的流程如圖1所示。
圖1 單目測(cè)距流程圖
光電云臺(tái)獲取目標(biāo)船舶的二維信息,通過機(jī)器視覺faster R-CNN 進(jìn)行目標(biāo)檢測(cè),提取目標(biāo)船舶的特征,根據(jù)船舶形狀框選目標(biāo),并將光電中心(即為圖像中心)移到目標(biāo)底部中心,利用三角幾何原理計(jì)算與目標(biāo)船舶之間的距離。
點(diǎn)P 為光電云臺(tái),線段PF 為光電云臺(tái)初始水平方位,矩形ABCD為自動(dòng)船舶的目標(biāo)框,點(diǎn)S為船舶矩形框底部AB的中心點(diǎn),h為光電云臺(tái)距離水平面的安裝高度OP,d為本船舶與目標(biāo)船舶之間的水平距離OS,角α為光電云臺(tái)的俯仰角,其中f為光電云臺(tái)的有效焦距。(u0,v0)為光軸與像平面的交點(diǎn),作為像平面坐標(biāo)系的原點(diǎn),取為( 0 ,0 );(u,v)為目標(biāo)船舶底部中心點(diǎn)S在像平面上的投影坐標(biāo)。
圖2 單目測(cè)距幾何模型圖
根據(jù)幾何三角原理,其距離計(jì)算公式為
圖像坐標(biāo)系與屏幕坐標(biāo)之間有如下關(guān)系,其中dx,dy 為每一個(gè)像素點(diǎn)在x 軸與y 軸方向上的物理尺寸。(u0,v0)為屏幕坐標(biāo)中心點(diǎn),為相機(jī)的內(nèi)參,可通過相機(jī)標(biāo)定獲取。中心點(diǎn)S 在像平面上的實(shí)際投影點(diǎn)與屏幕中心點(diǎn)之間的關(guān)系如式(2)。
攝像機(jī)鏡頭的幾何畸變和船舶搖擺等問題一直是船舶測(cè)距中的重難點(diǎn)。本文根據(jù)光電云臺(tái)與船舶位置是否發(fā)生偏移將誤差分為靜態(tài)誤差和動(dòng)態(tài)誤差兩種,并分別對(duì)誤差因素進(jìn)行分析。靜態(tài)誤差:1)攝像頭幾何畸變?cè)斐赡繕?biāo)成像位置的偏移誤差;2)光電云臺(tái)的安裝高度誤差;3)光電云臺(tái)在跟蹤目標(biāo)時(shí)存在的抖動(dòng)誤差;4)圖像處理中的噪聲誤差以及根據(jù)目標(biāo)輪廓自動(dòng)檢測(cè)形成矩形框所造成的誤差;動(dòng)態(tài)誤差主要是由于船舶搖擺造成的光電云臺(tái)高度以及初始角度發(fā)生的偏移誤差。
由式(1)可得,測(cè)量距離與相機(jī)的安裝高度成正比即d=k·x,k?R。即可表示為在同一偏轉(zhuǎn)角度,隨著光電云臺(tái)安裝高度的增加,所產(chǎn)生的距離誤差不變。如圖3 所示,相機(jī)的安裝高度對(duì)距離計(jì)算誤差影響為固定值,因此本文這里不做分析。
圖3 屏幕坐標(biāo)投影
圖4 相機(jī)安裝高度對(duì)距離影響圖
首先進(jìn)行靜態(tài)試驗(yàn),光電云臺(tái)安裝高度為2.0m,計(jì)算3m~20m之間的距離,測(cè)量數(shù)據(jù)為16組。通過光電云臺(tái)沿著某一方向采集圖片,連續(xù)采集目標(biāo)船舶的圖片。光電云臺(tái)在自動(dòng)跟蹤目標(biāo)時(shí),光電本身存在抖動(dòng)誤差這種誤差是客觀存在的。假設(shè)光電云臺(tái)抖動(dòng)誤差角度為θ,此時(shí)距離計(jì)算公式為
光電云臺(tái)在跟蹤目標(biāo)時(shí),會(huì)隨著目標(biāo)檢測(cè)的變化在矩形框內(nèi)上下移動(dòng),導(dǎo)致測(cè)距的角度也在小范圍的變化。本文采取求和計(jì)算平均值法來計(jì)算距離。具體方法為每隔10 幀計(jì)算與目標(biāo)的距離并求和來消除光電云臺(tái)抖動(dòng)誤差角度θ,計(jì)算距離為這10幀的平均值。
通過靜態(tài)試驗(yàn)誤差分析對(duì)數(shù)據(jù)進(jìn)行修正,得到的修正后的數(shù)據(jù)如表1所示。
表1 靜態(tài)測(cè)距實(shí)驗(yàn)結(jié)果(單位:m)
從表1 可以看出,利用本文提出的靜態(tài)誤差修正方法,在100m 內(nèi),實(shí)際距離與測(cè)量誤差在2m 之間,在可接受范圍內(nèi),說明本方法測(cè)距具有一定的可行性。
當(dāng)船舶在水面上進(jìn)行動(dòng)態(tài)運(yùn)動(dòng)時(shí),其測(cè)量的橫傾角會(huì)隨著船舶搖擺而改變。不同船舶最大橫傾角要求不同,這里考慮的船舶橫傾角在5°以內(nèi)。船舶受波浪影響造成前后搖擺,此時(shí)會(huì)有以下情況:因無法獲取目標(biāo)船舶搖擺角度。由于單目視覺會(huì)失去空間角度信息,這里只考慮本船舶搖擺中的前傾而導(dǎo)致光電云臺(tái)的高度以及俯仰角會(huì)發(fā)生變化,假設(shè)船舶前傾偏轉(zhuǎn)角為γ。通過陀螺儀實(shí)時(shí)獲取船舶前傾角度。則此時(shí)光電云臺(tái)相對(duì)于水面高度為
這里假設(shè)船舶前傾角度為正,后搖角度為負(fù)。此時(shí)距離計(jì)算公式為
圖5 船舶震蕩角度變化圖
驗(yàn)證實(shí)驗(yàn)分為兩組,第一組為搖擺狀態(tài)下物體靜止測(cè)距實(shí)驗(yàn),即保持目標(biāo)位置不動(dòng),距離不變。第二組為搖擺狀態(tài)下物體進(jìn)行在直線移動(dòng)時(shí)動(dòng)態(tài)測(cè)距實(shí)驗(yàn),保持物體沿著光電云臺(tái)正前方移動(dòng),同時(shí)使光電云臺(tái)在(-5,5)范圍內(nèi)搖擺。實(shí)驗(yàn)對(duì)比共有四組:實(shí)際距離相同、橫傾角不同的兩組:27.88m和69.44m;實(shí)際距離不同、橫傾角相同的兩組:-2.9655°和-4.6892°。實(shí)驗(yàn)結(jié)果表明,本文提出的基于單目視覺測(cè)距系統(tǒng)的實(shí)時(shí)船舶測(cè)距方法及誤差修正方法能夠很好地降低相對(duì)誤差,且具有很高的可行性。從測(cè)量的數(shù)據(jù)觀察,使用本文提出的修正方法測(cè)距的相對(duì)誤差保持在(0.4%~2.7%)之內(nèi),修正前相對(duì)誤差在(16.2%~79.2%)之間。說明本文的修正方法,極大地減少了相對(duì)誤差,提高了測(cè)距精度。且本文的修正方法相對(duì)誤差整體保持在3%之內(nèi),說明該方法效果較穩(wěn)定,具有很好的可行性。
表2 搖擺狀態(tài)下的動(dòng)態(tài)測(cè)距實(shí)驗(yàn)結(jié)果
本文對(duì)單目視覺在船舶距離測(cè)量領(lǐng)域的應(yīng)用進(jìn)行了研究,提出了一種改進(jìn)方法和誤差修正方法。其改進(jìn)方法是在傳統(tǒng)的單目視覺測(cè)距基礎(chǔ)上,將光電云臺(tái)光心移至目標(biāo)矩形框的底部中心處,對(duì)目標(biāo)物體進(jìn)行測(cè)量。并通過誤差修正方法對(duì)測(cè)量結(jié)果進(jìn)行修正,使用修正方法之前,相對(duì)誤差在(16.2%~79.2%),而本文的修正方法使測(cè)距相對(duì)誤差保持在(0.4%~2.7%)之間,極大地提高了測(cè)距精度,具有很好的可行性,可以讓船舶工作人更直接地了解前方障礙物距離信息,及時(shí)作出應(yīng)對(duì)措施以避免碰撞事故的發(fā)生。