樊建昌, 余 粟, 尚鉦歷
(1 上海工程技術大學 機械與汽車工程學院, 上海 201620; 2 上海工程技術大學 工程實訓中心, 上海 201620; 3 上海星河灣雙語學校, 上海 201108)
隨著無人機技術和計算機科學技術的不斷發展,無人機在商業上的應用場景越來越廣泛,從最初的視頻業務如AR/VR、無人機航拍、物流無人機到后來的智能落地物聯網、基礎設施巡檢、無人安防等領域再到如今AI時代正大力發展的互聯網產品,所有的信息都表明了無人機巨大的商用價值。但是隨著無人機應用領域的逐漸擴大,各個應用場景對無人機的性能要求越來越高,主要包括無人機的續航能力、拍攝、避障等關鍵技術。其中無人機的避障技術由于直接關乎到無人機的安全性,因此一直以來都是科研人員在無人機研究領域的重點和熱點問題。潘梟等人[1]提出了一種基于毫米波雷達的多旋翼無人機避障技術的設計方案。此方案通過機載避障傳感器毫米波雷達來實現多旋翼無人機避障功能;劉躍波等人[2]針對無人機電力巡檢的應用場景,提出了基于T - S 模糊神經網絡,建立模糊控制規則來對無人機的實時避障進行仿真;金立軍等人[3]結合定位技術和激光測距技術,先通過慣性測量系統進行初步定位,得到無人機的經緯度坐標,然后利用無人機機載激光測距模塊,測量故障點到無人機的距離來達到無人機避障的目的;饒俊[4]利用了單載波頻域均衡(SCFDE)技術以及優化遙控幀與偽碼速率關系及發送位置的方法,降低了機上測距數據下傳誤碼率,提高了無人機系統的測距精度。與前述研究不同的是,本文利用被動測距技術中的雙目視覺測距技術,以NVIDIA Jetson TX2智能AI計算模塊為計算平臺,以SGBM立體匹配算法為基礎,設計了無人機測距系統,在圖像分辨率為376*240、平均誤差為4.87%的情況下,測距長度上達到了7 m,幀率達到了8.9幀,基本上滿足了無人機飛行過程中的實時性要求。
常見的理想狀態下攝像機成像模型如圖1[5]所示。模型中包含了4個坐標系,分別是:世界坐標系、相機坐標系、圖像坐標系以及圖像像素坐標系。其中,物體上的任意一點P在世界坐標系中的位置記為(Xw,Yw,Zw),在攝像機坐標系xoy中的坐標為(X,Y,Z),在圖像像素坐標系XfOYf中的坐標為(u,v),結合三角形相似推得點P由世界坐標系到圖像像素坐標系的轉化過程可由式(1)表示[6]:
M*N*Pw.
(1)
其中,s為縮放因子;M為攝像機的內參數矩陣,描述了點P由相機坐標系到圖像坐標系的轉化關系,M由相機自身的安裝精度及透鏡特性決定;N為點P由世界坐標系到相機坐標系的轉換矩陣,稱為攝像機模型的外參數矩陣;R3*3=[r1,r2,r3]是一個正交矩陣,T3*1=t3*1。二者分別為點P由世界坐標系轉換到相機坐標系的旋轉矩陣和平移矩陣。內參數矩陣M以及外參數矩陣N可以由單目相機標定求得。

圖1 攝像機成像模型
雙目立體視覺測距主要是利用雙目相機從不同視角拍攝同一物體時在圖像中得到的不同位置信息來計算圖像的視差信息,進一步利用三角形相似的原理求解出物體的三維坐標信息來達到求解物體的距離。其原理圖如圖2所示。

圖2 雙目成像原理
在圖2的平行雙目成像系統中,P表示待測目標上的某一點,Ol、Or分別表示左右攝像機坐標系的原點(左右相機的光心),Pl、Pr分別表示P在左右相機CCD芯片上的投影點,由圖2的攝像機成像模型易得,Ol、Or與左右相機的CCD芯片的中心連線垂直于Pl、Pr所形成雙目基準平面。xl、xr分別為物體上的P在左右相機成像平面的投影點到成像平面左邊界的物理距離,f為相機焦距,T為雙目相機左右光心之間的物理距離,Z為物體距離攝像機水平面的真實的物理距離[7]。
觀察圖2,由ΔPPlPr~ΔPOlOr得:
(2)
將PlPr=T-(Xl-Xr) 代入式(2)得:
(3)
由相機坐標系和圖像坐標系的轉換關系可得:
xr-xl=(ul-ur)*dx,
(4)
其中,dx表示在圖像坐標系中,每個像素在CCD芯片上所占的實際物理尺寸的大小。將式(4)代入式(3)得:
(5)
(6)

雙目標定是雙目系統中求取左右相機之間的旋轉矩陣R以及平移矩陣T的過程。 由圖1~圖2可得,在不考慮攝像頭畸變和相機水平擺放的誤差的前提下,物體點P由世界坐標系投影到相機坐標系可以用式(7)來表示:
(7)
進一步可得右相機到左相機的旋轉矩陣及平移矩陣如下[8]:
(8)
其中,R、T即為右相機到左相機的旋轉矩陣和平移矩陣。
在實際的雙目測距項目中,雙目相機由于安裝工藝的缺陷常常導致實際的安裝情況如圖3所示[9],這會使得后期的立體匹配需要在二維方向上進行。所以,在實際的測距過程中,在立體匹配之前常常使用Bouguet立體校正使雙目相機的左右成像平面平行,并且使得物體在左右圖像上的投影點位于同一水平線上。這樣做的目的是通過運用極限約束原理使得同一物體在左右兩幅圖像中的搜索范圍從二維降到了一維。

圖3 雙目成像系統
Bouguet校正矩陣的求解主要分為2步,對此可得闡釋分述如下。
(1)求解左右相機共面校正矩陣。由于R是正交實矩陣,則R是正規矩陣[10],所以有:
R=S*D*S-1,
(9)
其中,D為主對角元素為R的特征值組成的矩陣,S為R的特征向量組成的矩陣。進一步拆分式(9)可得:
(10)
令:
(11)
則將2個相機之間的旋轉矩陣R劃分為左右相機的合成矩陣Rl、Rr,可以實現左右圖像平面共面。但是行沒有對齊。
(2)求解行對校正矩陣。 根據式(12)建立行對準矩陣Rrect。其中,T為由右相機到左相機的平移矩陣。
綜合以上2步分別計算左右相機的行對準變換矩陣,即:
(12)
(13)
立體匹配是雙目測距中最關鍵的一部分,本文選用立體匹配中最常用的SGBM算法作為雙目測距中的立體匹配算法,其原理為[11]:確定左右圖像的匹配基元;構建基于多個方向掃描線的代價能量和函數;求取能量代價和函數的最優解。該算法在OpenCV中的實現流程具體如下。
(1)預處理。SGBM采用水平Sobel算子,把圖像做處理,再用一個函數將經過水平Sobel算子處理后的圖像上每個像素點(P表示其像素值)映射成一個新的圖像,Pnew表示新圖像上的像素值。映射函數如下:

(14)
其中,preFilterCap是一個常數參數,OpenCV缺省情況下取15。
(2)代價計算。由2部分組成:
① 經過預處理后得到的圖像的梯度信息利用基于采樣[12]的方法得到的梯度代價。
② 原圖像經過基于采樣的方法得到的SAD代價,其計算公式如下:

(15)
(3)動態規劃。SGBM算法試圖通過圖像上多個方向上一維路徑的約束,來建立一個全局的馬爾科夫能量方程,每個像素最終的匹配代價是所有路徑信息的疊加,每個像素的視差選擇都只是簡單通過 WTA(Winner Takes All)決定的。多方向能量聚集如圖4所示。其中,每個方向都按照動態規劃的思想進行能量累積,再將所有方向的匹配代價相加得到總的匹配代價,其計算公式可表示為:

圖4 能量聚集方向
Lr(p,d)=c(p,d)+
其中,L為當前路徑累積的代價函數;P1、P2為像素點與相鄰點視差存在較小和較大差異情況下的平滑懲罰,P1 (16) (4)后處理。主要包括如下內容:匹配窗口內的視差唯一性檢測;亞像素插值;左右一致性檢測;連通區域的檢測。 本文以NIVIDIA JetSon TX2 為處理平臺和小覓S1030(入門版)雙目攝像機搭建實驗平臺,詳見圖5。這里,給出研究實驗流程及結果的分析表述如下。 (1)本文以單元格大小為5 m*5 m的12*9高精度棋盤格作為標定板,左右相機分別采集29張標定板圖像,經過預處理后利用張氏標定法[13]對其進行標定,得到左右相機的內參數矩陣以及各自的畸變參數,標定結果界面如圖6所示,標定結果數值具體如下: Dl=[-250.357 6,505.793 9,-705.366 3, -851.954 5,0.000 0] Dr=[-303.763 8,799.294 3,515.475 4, -672.489 0,0.000 0] 其中,Ml、Mr分別為左右相機的內參數矩陣,Dl、Dr分別為左右相機的畸變參數矩陣。 圖5 實驗平臺 圖6 標定結果 (2)選取29組左右相機的圖片,標定板圖片的分辨率為752*480。利用OpenCV視覺庫編寫雙目標定程序,以左相機坐標系作為雙目標定的基準坐標系,通過OpenCV中的stereoCalibrate()函數計算得到旋轉矩陣R和平移矩陣T結果如下: T=[-1.200 248 976 4e+02,-1.178 263 74e+00,-5.205 820 51e+00] (3)利用(1)中得到的左右相機的內參數和畸變參數,以及(2)中的得到的左右相機之間的外參數,再利用通過OpenCV視覺庫中的cvStereoRectify()和initUndistortRectifyMap()函數計算出左右相機的立體校正和畸變校正參數矩陣。 (4)利用OpenCV視覺庫中的remap()函數對左右圖像進行立體校正和畸變校正,使得左右相機圖像處于行對準的理想狀態。 (5)以SGBM立體匹配算法為基礎,利用OpenCV視覺庫編寫雙目測距的運行算法,計算出左右圖像的視差圖。在此基礎上,進一步利用OpenCV視覺庫中的cvReprojectImageTo3D()函數計算得到障礙物距離雙目相機的距離,其中SGBM算法中的相關參數設置及含義如圖7所示。 圖7 SGBM算法及參數 本文在以NVIDIA JetSon TX2為計算平臺上,選取3 m、5 m、7 m作為雙目測距的基準距離,在近似于無人機空中飛行的簡單場景下,采用20次測量結果取平均值,得到的實驗結果見表1。 表1 雙目測距實驗結果 由實驗結果可得,對于SGBM算法,在752*480的分辨率下,本文設計的雙目系統測距的準確度要高于376*240的準確率,但是在實時性上,752*480的分辨率在4.6幀左右,很難滿足無人機的高速飛行,在376*240的分辨率下,當測量距離在7 m時,測距誤差在4.8%左右,其測距的準確性上不如752*480的分辨率,但是其幀率達到了8.9幀,基本滿足了無人機在高速飛行時的實時性要求。 與此同時,本系統也仍存在一定的問題,例如在單目標定時,由于所用的標定板過小,導致標定得到的相機的內參數和外參數的精度還有待提高。測距的準確度也亟需改善,實時性上還可以基于CUDA加速做進一步的加速計算,本系統仍有很大的提升空間。3 實驗流程及結果





4 結束語