趙明繪,王建華,鄭 翔,張山甲,張 程
(上海海事大學(xué) 航運技術(shù)與控制工程交通行業(yè)重點實驗室,上海 201306)
無人水面艇由于其可以執(zhí)行更危險的以及不適于有人船只執(zhí)行的任務(wù)而吸引了廣大研究人員[1]。為了實現(xiàn)無人水面艇的自主避障和目標(biāo)跟蹤等功能,無人水面艇對周圍環(huán)境進(jìn)行感知是十分必要的。視覺技術(shù)能切實提高無人水面艇對環(huán)境的感知能力,實現(xiàn)動態(tài)避障和目標(biāo)跟蹤等功能,增強(qiáng)無人水面艇對未知環(huán)境的應(yīng)變能力,提高無人水面艇的航行安全。
基于單目視覺的測距問題,目前已有一些研究工作,文獻(xiàn)[2~4]利用圖像像素點、相機(jī)內(nèi)參和透視投影幾何關(guān)系測量前方車輛障礙物的距離。文獻(xiàn)[5]通過視頻來估計被跟蹤船與相機(jī)距離;文獻(xiàn)[6,7]利用圖像中地平線與目標(biāo)船之間的垂直像素距離作為測量距離;文獻(xiàn)[8]計算垂直方向距離和水平方向距離,并且測量相機(jī)俯仰角;文獻(xiàn)[9]分析參數(shù)誤差對測距精度的影響;文獻(xiàn)[10]分析不同相機(jī)高度、俯仰角及方向角對車距測量的影響。
本文在單目測距模型、相機(jī)高度和俯仰角標(biāo)定方法的基礎(chǔ)上,通過仿真實驗分析影響測距精度的因素,通過實船實驗進(jìn)行驗證。
采集水面目標(biāo)圖像,識別圖像中目標(biāo)所在區(qū)域,并計算該區(qū)域像素縱坐標(biāo)最大值,及其對應(yīng)的橫坐標(biāo)均值,將組合得到的坐標(biāo)作為觀測點的像素坐標(biāo)。根據(jù)相機(jī)內(nèi)部參數(shù)和透視投影幾何關(guān)系獲得觀測點在相機(jī)坐標(biāo)系下的深度信息,再根據(jù)剛體變換計算觀測點在無人艇附體坐標(biāo)系下的三維信息,進(jìn)而計算觀測點到艇體的距離。圖1為本文采用的測距模型,可近似看成將三維場景的物體通過單個針孔相機(jī)映射成二維圖像[2~5]。
圖1 測距模型
圖1中,xOy是圖像坐標(biāo)系,Zc表示相機(jī)坐標(biāo)系的Z軸及光軸,XO2Y表示無人艇附體坐標(biāo)系下Z=0平面及水面,O1表示相機(jī)鏡頭,a,b兩條虛線表示視覺場范圍,θ表示相機(jī)俯仰角,觀測點P1點在圖像平面成像點為P,在光軸上的投影點為P2,在X軸上的投影點為P3,P3點在圖像平面成像點為P0。
觀測點到艇體中心的距離為
(1)
式中xs,ys為觀測點在無人艇附體坐標(biāo)系中Ps(xs,ys,zs)的坐標(biāo)值,可根據(jù)觀測點在像素坐標(biāo)系下的坐標(biāo)p(u,v)與在無人艇附體坐標(biāo)系下的坐標(biāo)Ps(xs,ys,zs)的關(guān)系求得[11]
(2)
式中fx,fy,u0,v0為相機(jī)的內(nèi)部參數(shù),根據(jù)文獻(xiàn)[12]中的方法標(biāo)定而得。R為無人艇附體坐標(biāo)系到相機(jī)坐標(biāo)系的旋轉(zhuǎn)矩陣,T為無人艇附體坐標(biāo)系到相機(jī)坐標(biāo)系的平移矩陣,zc為觀測點在相機(jī)坐標(biāo)系下Pc(xc,yc,zc)中的深度坐標(biāo)值,即為距離O1P2的值
Zc=O1P2=O1P3×cosλ
(3)
其中,距離O1P3可根據(jù)幾何關(guān)系得到
(4)
式中H為相機(jī)高度,λ為P0點處光線與相機(jī)光軸夾角,θ為相機(jī)俯仰角
(5)
式中y為P點在圖像坐標(biāo)系中的縱坐標(biāo),f為相機(jī)的焦距。在像素坐標(biāo)系中,λ可表示為
(6)
式中v為P點在像素坐標(biāo)系中的縱坐標(biāo),v0為圖像中心的縱坐標(biāo),dy為y方向上的單位像素長度,fy為y方向上歸一化焦距。
分析上述測距模型可知測距結(jié)果會受到相機(jī)高度和俯仰角的影響。為提高該方法的測距精度,需要精確標(biāo)定相機(jī)高度和俯仰角。
為減小在實際不確定環(huán)境中相機(jī)高度和俯仰角的測量誤差對測距精度的影響,本文提出了一種相機(jī)高度和俯仰角的標(biāo)定方法。
假設(shè)水面較為平靜,可近似看作是一個平面。如圖2所示,A(x1,y1,0)為網(wǎng)格坐標(biāo)系下平面z=0與相機(jī)光軸(即相機(jī)坐標(biāo)系的Z軸)的交點,A點在相機(jī)坐標(biāo)系下的坐標(biāo)為Ca(0,0,z1)。B(x2,y2,a)為網(wǎng)格坐標(biāo)系下的平面z=0與相機(jī)光軸的交點,交點B在相機(jī)坐標(biāo)系下的坐標(biāo)為Cb(0,0,z2),交點B在網(wǎng)格坐標(biāo)系下z=0平面上的垂直投影點B′的坐標(biāo)為(x2,y2,0),則相機(jī)的俯仰角大小為∠BAB′。
圖2 相機(jī)高度和相機(jī)俯仰角模型
令相機(jī)的俯仰角∠BAB′為θ,相機(jī)高度為H,θ和H可由下式計算而得
(7)
H=z1×sinθ
(8)
通過相機(jī)標(biāo)定,獲得與水面共面的標(biāo)定板上的網(wǎng)格坐標(biāo)系和相機(jī)坐標(biāo)系的旋轉(zhuǎn)矩陣R1和平移矩陣T1,且網(wǎng)格坐標(biāo)系下的坐標(biāo)XX與相機(jī)坐標(biāo)系下對應(yīng)坐標(biāo)XXc存在如下關(guān)系
(9)
將A和Ca的坐標(biāo)變量代入式(9)
(10)
即
(11)
求解式(11)可得A和Ca的坐標(biāo)值。同理可以計算出B和Cb的坐標(biāo)值。
分析1.1節(jié)中提到的測距模型,可知測距結(jié)果受相機(jī)高度、俯仰角和觀測點像素坐標(biāo)的影響。為分析相機(jī)高度、俯仰角和觀測點像素坐標(biāo)對測距精度的影響,建立5×5的觀測物陣列作為模擬場景的觀測物區(qū)域,所建場景中的無人水面艇和觀測物的位置關(guān)系如圖3(a)。相機(jī)的內(nèi)參矩陣[3 440.9,0,623.5;0,3 440.9,551.5;0,0,1],相機(jī)距離水面高度H=500 mm,相機(jī)與水平方向的夾角θ=5°。假設(shè)相機(jī)相對于無人水面艇的位置恒定,通過相機(jī)成像模型,將觀測區(qū)域的特征點投影到無人水面艇上搭載的相機(jī)的成像平面上,如圖3(b)所示。
圖3 仿真圖
將上述方法得到的二維圖像作為實際觀測圖像,觀察相同區(qū)域的觀測點,分析相機(jī)高度測量誤差ΔH,俯仰角測量誤差Δθ,觀測點像素坐標(biāo)測量誤差ΔvΔu,相機(jī)高度H和俯仰角θ對測距精度的影響。
ΔH為測量值H′和實際值H的差值。在觀察ΔH對測距結(jié)果的影響時,設(shè)置Δθ=0,Δv=0,Δu=0,H=500 mm,θ=5°。ΔH對不同距離的測距結(jié)果的影響如圖4(a)所示。分析圖4(a)可知,當(dāng)ΔH=20 mm時,測距結(jié)果的相對誤差不隨測量距離的改變而改變,當(dāng)ΔH為10,-10,-20 mm時,上述規(guī)律也適用。同時,不同距離觀測點的相對誤差只與ΔH有關(guān),且相對誤差為ΔH和H的比值,即
(12)
Δθ為測量值θ′與實際值θ的差值,在觀察Δθ對測距結(jié)果的影響時,設(shè)置ΔH=0,Δv=0,Δu=0,H=500 mm,θ=5° 。Δθ對不同距離的測距結(jié)果的影響如圖4(b)所示。分析圖4(b)可知,當(dāng)Δθ=0.2°時,測距結(jié)果的相對誤差隨測量距離的增大而增大,當(dāng)Δθ為0.1°,-0.1°和-0.2°時,上述規(guī)律也適用。當(dāng)測量距離相同時,若Δθ>0,則相對誤差隨Δθ的減小而減小,且測距結(jié)果小于實際距離;若Δθ<0,則相對誤差隨|Δθ|的減小而減小,且測距結(jié)果大于實際距離;若|Δθ|相同,Δθ>0時的相對誤差小于Δθ<0時的相對誤差,即θ′小于θ對相對誤差的影響更大。
Δv為測量值v′與實際值v的差值,在觀察Δv對測距結(jié)果的影響時,設(shè)置ΔH=0,Δθ=0,Δu=0,H=500 mm,θ=5°。Δθ對不同距離的測距結(jié)果的影響如圖4(c)所示。分析圖4(c)可知,當(dāng)Δv=2時,測量距離的相對誤差隨測量距離的增大而增大,當(dāng)Δv為1,-1和-2時,上述規(guī)律也適用。當(dāng)測量距離相同時,若Δv>0,相對誤差隨Δv的減小而減小,且測距結(jié)果小于實際距離;若Δv<0,相對誤差隨|Δv|的減小而減小,且測距結(jié)果大于實際距離;若|Δv|相同,Δv>0時的相對誤差小于Δv<0時的相對誤差,即v′小于v對相對誤差的影響更大。
Δu為測量值u′與實際值u的差值,在觀察Δu對測距結(jié)果的影響時,設(shè)置ΔH=0,Δθ=0,Δv=0,H=500 mm,θ=5°。Δu對不同距離的測距結(jié)果的影響如圖4(d)所示。分析圖4(d)可知,當(dāng)Δu=2時,測距結(jié)果的相對誤差隨測量距離的增大而減小,當(dāng)Δu為1,-1和-2時,上述規(guī)律也適用。當(dāng)測量距離相同時,相對誤差隨|Δu|的減小而減小,且相對誤差較小。
圖4 測量誤差對測距精度的影響
在觀察H對點測距結(jié)果的影響時,設(shè)置ΔH=20 mm,Δθ=-0.2,Δv=-2,θ=6°,觀察H為600,900,1 200,1 500 mm時對不同距離觀測點的測距結(jié)果的影響如圖5(a)~(c)所示。分析圖5(a)~(c)可知,當(dāng)ΔH、Δθ或Δv不為0時,測距結(jié)果的相對誤差隨H的增大而減小。
在觀察θ對測距結(jié)果的影響時,設(shè)置ΔH=20 mm,Δθ=-0.2,Δv=-2,H=900 mm,觀察θ為6°,8°,10°,12°時對不同距離觀測點測距結(jié)果的影響如圖5(d)~(f)所示。
分析圖5(d)~(f)可知,當(dāng)ΔH,Δθ或Δv不為0時,測距結(jié)果的相對誤差受θ影響較小。
圖5 相機(jī)高度和俯仰角對測距精度的影響
將本文提出的測距方法應(yīng)用于無人水面艇進(jìn)行水面目標(biāo)測距。如圖6(a)所示,將相機(jī)固定到“海博”號無人水面艇上。圖6(b)是實驗場景圖。
圖6 實驗平臺
采集的單幀圖像如圖7(a)所示,提取水面目標(biāo)的所在區(qū)域[12],計算出該區(qū)域像素坐標(biāo)縱坐標(biāo)最大值,及其對應(yīng)的橫坐標(biāo)的平均值,將組合得到的坐標(biāo)作為觀測點的像素坐標(biāo),如圖7(b)所示,計算該觀測點到無人水面艇的距離。
圖7 水面目標(biāo)圖像和觀測點提取
由仿真實驗可知相機(jī)俯仰角的大小對相同區(qū)域觀測點的影響可忽略,通過調(diào)整相機(jī)高度和俯仰角采集相同區(qū)域的圖像,分析相機(jī)高度對測距精度的影響,見表1。
表1 不同相機(jī)高度對測距結(jié)果的影響
用本文提出的標(biāo)定相機(jī)高度和相機(jī)俯仰角的方法對相機(jī)高度和俯仰角進(jìn)行標(biāo)定,標(biāo)定結(jié)果見表1。表1中的實際距離由雷達(dá)測得,通過實驗進(jìn)一步驗證相對誤差隨相機(jī)高度的增加而減小,隨測量距離的增大而增大。
本文提出一種相機(jī)高度和俯仰角的標(biāo)定方法和一種水面目標(biāo)的單目測距方法。仿真實驗表明:采集相同區(qū)域的圖像,當(dāng)相機(jī)高度和俯仰角相同時,相機(jī)俯仰角測量誤差是影響測距精度的主要因素;當(dāng)相機(jī)高度和俯仰角不同時,相機(jī)高度是影響測距精度的主要因素;測量距離越近,測距精度越高。實船實驗表明:本文提出的單目測距方法在測量距離10 m以內(nèi)目標(biāo)時的相對誤差小于3 %,可應(yīng)用于低速無人艇的避障和目標(biāo)跟蹤。