李 潔,彭 琪,莊奕琪,蔣山平
(1.西安電子科技大學 微電子學院,西安 710071; 2.北京衛(wèi)星環(huán)境工程研究所,北京 100094)
空間目標分為合作目標和非合作目標,后者包括失效或者發(fā)生故障的航天器、脫離軌道運行的航天器等。目前,在地球軌道中存在著已知信息的大型尺寸非合作目標約2.2萬塊,而運動狀態(tài)與形狀信息完全未知的非合作目標多達30多萬塊[1]。這些非合作目標的形態(tài)特征與結構尺寸難以快速準確測量,因此目前無法對它們實現(xiàn)動態(tài)追蹤與捕獲[2]。而它們長期占用空間軌道資源,對正常運行的現(xiàn)役航天器造成嚴重的威脅,故應盡快獲得其相關信息,以便進行規(guī)避或予以清除。
對非合作目標的信息獲取,目前國內(nèi)和國際上采用較多的是視覺與激光的測量方法。采用視覺的方法能更直觀地獲得場景的立體信息,且計算復雜度較低。雙目視覺測量系統(tǒng)目前主要應用在機器人導航、三維模型構建、高精度測量技術以及虛擬現(xiàn)實技術等領域,例如,利用雙目視覺與機器人的動作姿態(tài)相結合,可根據(jù)拍攝到的場景圖片進行障礙物檢測,為機器人規(guī)劃行走路線[3]。
本文基于雙目視覺的測量系統(tǒng),通過采集靜止狀態(tài)下任意姿態(tài)的非合作目標的左右圖像,對2幅圖像進行立體匹配獲取被測目標的點云數(shù)據(jù);并提出一種點云輪廓線的直接提取算法,其不需要對點云建立三角網(wǎng)格模型,從而降低了算法的復雜度;最終通過提取出的被測點云線性擬合得到被測目標的結構尺寸信息。
雙目立體視覺系統(tǒng)是基于視差的原理,通過對同一目標物拍攝2幅或多幅圖像來重構該目標物的三維立體信息,也就是將被測物體的二維信息在相機平面上進行投影,從而獲得被測物的結構參數(shù)[4-5]。常用的理想化立體視覺模型有會聚式雙目立體視覺模型和平行雙目立體視覺模型,后者計算精度更高,應用更廣泛。
平行雙目立體視覺模型的建立須首先選取2個參數(shù)一致、光軸平行的相機,放置在同一條直線上,且相機的成像面在同一平面內(nèi)(參見圖1)。
圖1 平行雙目立體視覺模型Fig.1 The parallel binocular visual model
圖1中:兩相機光心距離為T,也稱為基線距離??臻g點P在左、右成像面的投影點分別為Pl(xl,yl,zl)和Pr(xr,yr,zr),對應的像素坐標系坐標分別為 (ul,vl)和 (ur,vr);左、右相機中心點的像素坐標系坐標分別為Ol(ul0,vl0)和Or(ur0,vr0)。定義ku,kv為像素坐標系坐標軸方向上的尺度因子,mm/像素。根據(jù)相似三角形原理可知:
式中f為相機焦距。
如果將世界坐標系當做左相機坐標系,那么空間點的世界坐標(xw,yw,zw)可以表示為
將式(2)代入空間點的三維坐標計算公式可得:
現(xiàn)實中我們所用的雙目相機的參數(shù)存在差異,不能直接按照理想化模型來處理,須通過相機標定得到相機焦距f、兩相機光心距T、圖像的主點坐標、鏡頭的畸變參數(shù)以及兩個相機之間的外部參數(shù)等。若要得到空間點的三維坐標,還需要知道左、右圖像的視差,最終通過計算得到三維場景信息。
雙目立體視覺系統(tǒng)通過采集左、右相機的圖像,獲取相機的內(nèi)外參數(shù),進行立體校正,利用雙目立體匹配算法獲取視差圖,以得到圖像深度信息,最終獲取目標點云數(shù)據(jù)。
1.3.1 相機標定與極線校正
本文采用視覺平行的雙目相機,利用MATLAB標定工具箱對相機進行標定。標定原理是基于張正友的標定法[6],標定步驟參見圖2:采用8×9的黑白棋盤格,用左、右相機采集同一時間的棋盤格圖像20張;用MATLAB進行左、右分別標定以及立體標定,獲取左、右相機的內(nèi)外參數(shù)、畸變參數(shù)以及相機之間的旋轉平移矢量。相機內(nèi)參數(shù)主要包括主點、實際焦距、尺度因子和畸變系數(shù)(徑向和切向);相機外參數(shù)主要包括旋轉矢量和平移矢量。表1為標定后得到的相機內(nèi)、外參數(shù)。
圖2 相機標定步驟Fig.2 Steps for camera calibration
表1 相機內(nèi)、外參數(shù)Table 1 Internal and external parameters of the cameras
在進行雙極線校正之前要對左、右相機拍攝的2幅圖進行去畸變。相機畸變分為徑向畸變和切向畸變。徑向畸變來源于透鏡本身的工藝問題;切向畸變來源于透鏡與圖像平面不平行。本文采用公式法進行去畸變,坐標(x,y)由圖像像素坐標系轉換到相機坐標系。在相機標定這一步中我們得到徑向畸變系數(shù)k1、k2、k3,切向畸變系數(shù)p1、p2,公式如下:
采用雙極線校正的目的是使左、右兩個相機的光軸平行,像點在左、右圖像上的高度一致。雙極線校正時采用OpenCV提供的算法,實現(xiàn)步驟如下:1)將2個相機通過標定得到的內(nèi)參矩陣換算統(tǒng)一;2)將2個圖像的像素坐標分別乘以步驟1得到的共同內(nèi)參矩陣;3)對得到的新坐標左乘旋轉矩陣R1和R2,其中R1和R2是對旋轉矩陣的分解,R1×R2=R;4)對新坐標實現(xiàn)步驟2中的逆操作,得到新圖像;5)用原左、右圖像的像素值對步驟4中得到的新圖像分別進行像素點插值。
1.3.2 基于特征點提取的 SIFT 立體匹配
SIFT(尺度不變特征轉換)特征點提取算法的關鍵是在不同的尺度空間上查找圖像的特征點,并計算出特征點的方向。該算法提取出的特征點對圖像的旋轉和尺度變化具有不變性,對三維視角變化和光照變化具有很強的適應性,局部特征在場景雜亂時仍保持不變,特征之間相互區(qū)分的能力強,有利于實現(xiàn)不同尺度空間特征點之間的匹配[7]。SIFT算法所查找到的特征點基本都是角點、邊緣點等,不會因為光照變化、放射變換而變化,因此該算法常被用在立體匹配中。圖3為SIFT算法的實現(xiàn)流程。
圖3 SIFT 算法流程Fig.3 Flowchart of SIFT algorithm
1.3.3 視差與點云獲取
視差的測量原理如圖4所示,其中Cl、Cr表示左、右圖像坐標系。根據(jù)相似三角形原理很容易推導出視差d=xl-xr與圖像深度信息Z的關系。由圖4可知:
可見深度Z與視差d成反比,因此,只有當目標與相機相距較近時才會有精度較高的深度Z。
圖4 視差測量原理示意Fig.4 Principle of parallax measurement
要得到非合作目標的點云數(shù)據(jù),須先計算出被測目標的空間三維坐標,并由雙目立體視覺模型中的空間三維世界坐標計算公式(式(3))轉換成視差和深度的形式:
通過雙目立體視覺獲得的空間點云是散亂的稀疏點云,可以利用這些點的三維坐標來重構物體的表面模型。目前廣泛采用的重構方法是三角剖分算法或者基于網(wǎng)格生長的三角剖分算法[8],其原理是:由初始的點云數(shù)據(jù),按照一定的算法把這些點劃分成一個個三角網(wǎng)格,再將這些網(wǎng)格連接起來,形成最終的目標物模型。其中,三角網(wǎng)格的生成是關鍵,它直接決定點云重建模型的質量。點云密度非常大時,三角剖分算法得到的模型曲面非常光滑,但是相應的計算量也非常大,如此進行目標物結構尺寸測量則實現(xiàn)速度較慢且計算復雜度高。而實際上,只需要獲得目標的外形輪廓即可測量目標物的結構尺寸,沒必要對目標物的表面進行完全重構。
因此,本文采用基于圖形輪廓的點云線性擬合方法,先對立體匹配后的圖像進行輪廓提取,然后將圖像的輪廓與二維點云進行重疊,提取出重疊部分的點的坐標,再利用最小二乘法原理對邊緣點云數(shù)據(jù)進行線性擬合。
Canny算法用Canny邊緣檢測算子來實現(xiàn)對圖像的邊緣檢測,是先平滑后求導數(shù)的方法,其原理[9]如下:
1)先將圖像格式轉化成灰度圖像,再對灰度圖像進行高斯濾波。濾波可以使用2個一維高斯核加權實現(xiàn),也可以直接使用二維高斯核一次實現(xiàn)。
2)計算梯度的幅值和方向。對x、y求一階偏導數(shù),得到梯度幅值M[i,j]以及梯度方向θ[i,j]的計算公式
3)對梯度幅值進行非極大值抑制,即尋找像素點的局部最大值。為了排除掉非邊緣點,將非極大值點所對應的灰度值設置為0。其工作原理是:選定一像素點C,判斷其灰度值是否在8值鄰域內(nèi)為最大;求得C點的梯度方向,將其與C點鄰域像素的交點再與C點進行灰度值比較——若C點灰度值小于其他兩點,則判斷C點非局部極大值點,即非邊緣點。
4)分別設置高閾值TH和低閾值TL。圖像中灰度值大于TH的點即為邊緣點,可以連接成目標輪廓;而灰度值小于TL的點可以直接舍棄;對于灰度值介于TL與TH之間的點,則需在8值鄰域內(nèi)進行比較以確定其是否為邊緣點。
獲得的點云數(shù)據(jù)中會存在一些噪聲點或者誤匹配點,為了剔除這些點,一般會通過構建點云模型來提取邊緣輪廓,方法有2種:1)采用三角剖分算法構建三角網(wǎng)格,從而逼近目標物的模型;2)直接由點云進行空間線性擬合和曲面擬合。通過構建三角網(wǎng)格來提取輪廓的方法計算量非常大,而且凹邊形的邊緣上會存在狹長的三角形,進行邊緣點提取時易產(chǎn)生較大誤差[10]。而直接提取法需要對點云數(shù)據(jù)進行區(qū)域分割和曲率計算,計算復雜度較高,易增大誤差。本文采用輪廓邊緣提取法對點云數(shù)據(jù)的邊緣進行提取,不僅可以有效排除這些噪聲點,而且可有效降低計算復雜度。
將三維點云投影到xy平面,并與已提取的輪廓圖像進行重疊,從中提取重疊部分的點云坐標。具體實現(xiàn)步驟如下:1)通過二值圖像形態(tài)學處理將輪廓線圖像的噪聲點去除,并細化輪廓線;2)將點云坐標系轉換到圖像像素坐標系,將點云數(shù)據(jù)轉化為二維點云;3)對轉化后的二維點云數(shù)據(jù)進行插值;4)提取輪廓線上的拐點位置,將輪廓線圖像上像素灰度值為255的點坐標提取出來與二維點云圖像上的點進行匹配,若坐標點的灰度值小于閾值則將其提取出來。對于所有提取出來的點進行線性擬合時,需先結合提取到的拐點對輪廓點云數(shù)據(jù)進行區(qū)域分割,本文采用自適應閾值法進行分割。
采用最小二乘法進行直線擬合,對于已知的二維點云 (x1,y1)、(x2,y2)、···,要擬合的模型表達式為y=f(x),使誤差最?。蝗缓髮φ`差公式求偏導,再將兩點的坐標代入即得到方程f(x)的直線表達式。圖5所示為Canny算子邊緣檢測結果;圖6所示為輪廓點線性擬合結果。
圖5 Canny 算子邊緣檢測結果Fig.5 Edge detection of Canny operator
圖6 輪廓點線性擬合結果Fig.6 Linear fitting of contour points
搭建雙目視覺立體測量實驗平臺如圖7所示,包括三維旋轉平臺、控制箱、雙目相機和計算機。利用三維旋轉平臺和控制箱來模擬非合作目標在空間中的翻轉運動狀態(tài),雙目相機的最高有效像素為2560×960。本文采用一個立方體模擬非合作目標模型進行測量,所有算法的仿真均在MATLAB軟件平臺進行,對立方體的外形輪廓尺寸測量結果與其實際尺寸的對比見表2。
圖7 雙目視覺立體測量實驗平臺Fig.7 Hardware platform for binocular stereo vision measurement
表2中的關鍵尺寸用顏色來表示,以與圖6中擬合出來的不同顏色的直線相對應,并依次對應立方體的左上橫邊、右上橫邊、中間豎邊、右豎邊、左豎邊、左下橫邊、右下橫邊。根據(jù)表中的結果可預估目標物為體積約為 1 187.625 9 cm3的立方體。根據(jù)表2的對比結果可知,本文設計的雙目視覺立體測量系統(tǒng)對非合作目標的關鍵結構特征尺寸的測量誤差達到百μm級。
本文提出一種點云輪廓線的直接提取算法應用于非合作目標的結構尺寸測量,打破了需先進行目標物的三維重構再提取其輪廓的常規(guī),在保持測量精度的同時降低了算法的實現(xiàn)復雜度,提高了測量效率。在對被測目標模型完全未知的情況下,采用視覺獲取點云數(shù)據(jù)的方法也可進行目標的位姿測量,從而為實現(xiàn)非合作目標的動態(tài)追蹤與捕獲奠定基礎。