鄢詠折,彭 松,馬友青,張 爍,亓 晨,溫 博,李 昊,賈 陽,劉少創(chuàng)
1.中國科學(xué)院空天信息創(chuàng)新研究院,北京 100101;2.中國科學(xué)院大學(xué),北京 100049;3.北京空間飛行器總體設(shè)計(jì)部,北京 100094;4.武漢大學(xué)測(cè)繪學(xué)院,武漢 430072
行星探測(cè)器離開地球到達(dá)行星表面經(jīng)歷的時(shí)間短則數(shù)天,長則數(shù)月甚至數(shù)年,其間探測(cè)器(分為著陸器和巡視器)的外界環(huán)境不斷發(fā)生變化,有很多不可預(yù)估的因素影響著探測(cè)器所攜帶的傳感器,如導(dǎo)航雙目相機(jī)。導(dǎo)航雙目相機(jī)在發(fā)射前已在地球完成標(biāo)定,但長時(shí)間脫離地球引力進(jìn)行飛行,以及著陸器與巡視器分離時(shí)對(duì)巡視器的輕微沖擊等,都可能導(dǎo)致相機(jī)參數(shù)發(fā)生改變。巡視器的導(dǎo)航相機(jī)是雙目立體相機(jī),根據(jù)其獲取的立體影像可重建巡視器周邊地形,相機(jī)參數(shù)的標(biāo)定誤差會(huì)導(dǎo)致地形重建的誤差,從而影響巡視器的路線規(guī)劃,因此需要在著陸后重新對(duì)導(dǎo)航雙目相機(jī)進(jìn)行標(biāo)定。
目前,巡視器導(dǎo)航相機(jī)標(biāo)定方法多屬于發(fā)射前的在地標(biāo)定方法,例如,張正友棋盤標(biāo)定法[1-2],基于CAHVOR模型的標(biāo)定方法[3]、本質(zhì)矩陣法[4]等。巡視器導(dǎo)航相機(jī)離開地球后的自標(biāo)定技術(shù)研究較少,其困難之處主要在于缺少物方控制信息。文獻(xiàn)[5]提出內(nèi)參與三階多項(xiàng)式擬合的外參模型與未知月面點(diǎn)一起進(jìn)行光束法平差,但該方法的不足之處在于巡視器需要行走一段距離后,待單相機(jī)獲取多組立體像對(duì)后才能解算出相機(jī)參數(shù),且導(dǎo)航相機(jī)在著陸后即需生成地形進(jìn)行路線規(guī)劃,因此該方法不適合導(dǎo)航相機(jī)的標(biāo)定。文獻(xiàn)[6]提出將機(jī)械轉(zhuǎn)軸關(guān)系和立體影像相結(jié)合使用滅點(diǎn)原理的標(biāo)定方法,但該方法需手動(dòng)提取直線要素,此過程會(huì)代入粗差或隨機(jī)誤差,且該方法未充分應(yīng)用巡視器自有的標(biāo)定板——太陽能電池板。
圖1展示的是巡視器“玉兔號(hào)”月球車的結(jié)構(gòu),由6個(gè)輪子、車身、2片太陽能電池板、1對(duì)導(dǎo)航相機(jī)、前后方的避障相機(jī)、全景相機(jī)等結(jié)構(gòu)組成。2片太陽能電池板位于車身兩邊,1對(duì)導(dǎo)航相機(jī)位于桅桿上的云臺(tái)上,占據(jù)高位,云臺(tái)可在俯仰、航向、橫滾3個(gè)方向上360°旋轉(zhuǎn),所以導(dǎo)航相機(jī)可獲取影像的范圍及姿態(tài)足夠多,可以滿足相機(jī)標(biāo)定的需求。如圖2所示,太陽能電池板上整齊排列著大小一致的小電池板,這些小電池板使其形成格網(wǎng)結(jié)構(gòu),與張正友棋盤標(biāo)定法一樣,格網(wǎng)可為導(dǎo)航雙目相機(jī)標(biāo)定提供物方坐標(biāo)信息。
圖1 “玉兔號(hào)”月球車Fig.1 The image of yutu lunar rover
圖2 太陽能電池板Fig.2 The image of a solar panel
與地球一樣,月球本身并不發(fā)光,需要太陽光照明及給予熱量,因月球幾乎沒有大氣層的保溫功能,月球的夜間溫度極低,巡視器無法工作[7],因此巡視器導(dǎo)航相機(jī)獲取的影像均為日間拍攝的影像。如圖3所示,當(dāng)導(dǎo)航雙目相機(jī)拍攝太陽能電池板時(shí),小電池板中間的間隙反射非常強(qiáng),在影像中呈現(xiàn)白色,而小電池板呈現(xiàn)幾乎完全黑色。但因光照環(huán)境或拍攝方向的原因,太陽能電池板在影像中呈現(xiàn)的格網(wǎng)并不明顯,或僅在較小區(qū)域內(nèi)呈現(xiàn),在影像中的線性特征更為明顯。所以本文基于太陽能電池板的線性特征進(jìn)行相機(jī)標(biāo)定,因月球晝夜溫差極大,在提取影像線性特征時(shí),還應(yīng)考慮太陽能電池板的膨脹系數(shù)[8]。
圖3 “玉兔二號(hào)”導(dǎo)航雙目相機(jī)獲取的立體像對(duì)(全色影像,影像分辨率為1024×1024像素)Fig.3 The stereo images obtained by yutu-2 lunar rover 's navigation binocular cameras
根據(jù)是否為相機(jī)的固有參數(shù),將相機(jī)參數(shù)分為內(nèi)參和外參,其中內(nèi)參包括相機(jī)焦距f、主點(diǎn)(x0,y0)及相機(jī)畸變參數(shù)(K1,K2,P1,P2),外參包括相機(jī)在物方坐標(biāo)系下的三維坐標(biāo)(Xs,Ys,Zs)及相機(jī)主光軸在物方坐標(biāo)系下的角元素(φ、ω、κ)[9]。本文標(biāo)定方法僅涉及導(dǎo)航相機(jī)外參標(biāo)定,所以影像要先以地面標(biāo)定的畸變參數(shù)進(jìn)行畸變校正,并在已知相機(jī)焦距f、主點(diǎn)(x0,y0)的情況下進(jìn)行。
影像中并非所有格網(wǎng)線都作為標(biāo)定輸入值,例如有些呈現(xiàn)反光異常強(qiáng)烈的區(qū)域,導(dǎo)致格網(wǎng)線粗大且發(fā)散,無法擬合出準(zhǔn)確格網(wǎng)線,所以這樣的區(qū)域不宜選擇,具體步驟如下。
(1)選擇在左右影像中均拍攝的清晰格網(wǎng)區(qū)域。
(2)因在該區(qū)域內(nèi)格網(wǎng)線與非格網(wǎng)線黑白分明,設(shè)置閾值對(duì)選區(qū)進(jìn)行二值化。
(3)二值化后的白色像素點(diǎn)是一個(gè)組,通過Hough變換后的r軸方向上聚類對(duì)白色像素點(diǎn)進(jìn)行初步分組,并設(shè)置組內(nèi)像素點(diǎn)的數(shù)量閾值清除噪聲點(diǎn)。
(4)對(duì)Hough變換后的初步分組點(diǎn)根據(jù)距離r值合并進(jìn)一步得到白色像素點(diǎn)的最佳分組,使同一條格網(wǎng)線上的點(diǎn)在一個(gè)組。
(5)分別對(duì)各組格網(wǎng)點(diǎn)進(jìn)行最小二乘直線擬合,解算出直線參數(shù)。
(6)根據(jù)直線參數(shù)解算導(dǎo)航雙目相機(jī)外參。因?yàn)殡p目相機(jī)的相對(duì)位置關(guān)系是固定不變的,雙目相機(jī)的外參指兩個(gè)相機(jī)間的平移和旋轉(zhuǎn)關(guān)系。
興趣區(qū)二值化后,興趣區(qū)中的像素被分為兩類,白色像素和黑色像素,其中白色像素是筆者感興趣的潛在網(wǎng)格點(diǎn),這些白色像素中可能有噪聲點(diǎn),可能有非格網(wǎng)點(diǎn),但大部分屬于格網(wǎng)點(diǎn)。通過Hough變換將格網(wǎng)點(diǎn)篩選出來,并根據(jù)Hough變換到極坐標(biāo)下的θ值進(jìn)行初步分組。
笛卡兒直角坐標(biāo)系下的一個(gè)點(diǎn)對(duì)應(yīng)著Hough變換極坐標(biāo)下的一條曲線,笛卡兒直角坐標(biāo)系下的一條直線對(duì)應(yīng)著Hough變換極坐標(biāo)下的一個(gè)點(diǎn)[10-12]。笛卡兒直角坐標(biāo)系下的點(diǎn)坐標(biāo)(x,y)與Hough變換極坐標(biāo)下的點(diǎn)(r,θ)的轉(zhuǎn)換關(guān)系[10]如下
r=xcosθ+ysinθ(θ∈[0,2π))
(1)
式中,r表示笛卡兒直角坐標(biāo)系下,直線到原點(diǎn)的距離(垂線段在一、四象限時(shí)值為正,垂線段在二、三象限時(shí)值為負(fù));θ表示x軸正方向與直線到原點(diǎn)垂線間的夾角(圖4)。
圖4 Hough變換Fig.4 The schematic diagram of Hough transformation
對(duì)極坐標(biāo)下的θ值在[0,2π)區(qū)間按某個(gè)設(shè)定步長采樣,則笛卡兒直角坐標(biāo)系下的每個(gè)潛在格網(wǎng)點(diǎn)都對(duì)應(yīng)極坐標(biāo)下的一條正弦或余弦曲線上的離散點(diǎn)。如圖5所示,對(duì)笛卡兒直角坐標(biāo)系下的5個(gè)點(diǎn)進(jìn)行Hough變換,轉(zhuǎn)換到極坐標(biāo)下,相同的顏色代表同一個(gè)點(diǎn)的Hough變換。
如圖5所示,步長為d,在θ=nd(n=0,1,…,[2π/d])處r軸方向上形成了一個(gè)個(gè)“珠串”,同一個(gè)“珠串”上的“珠子”代表著該“珠子”笛卡兒坐標(biāo)系下的對(duì)應(yīng)點(diǎn)所在直線的斜率是一樣的。對(duì)每一個(gè)“珠串”按照以下步驟聚類[13-15]。
圖5 5個(gè)點(diǎn)Hough變換 Fig.5 The schematic diagram of 5 points ' Hough transformation
(1)將“珠串”其中一個(gè)“珠子”作為種子點(diǎn),同一“珠串”中其他“珠子”依次與種子點(diǎn)求r軸方向上的差值。當(dāng)差值小于某一閾值時(shí),該“珠子”與種子點(diǎn)歸為一類,并計(jì)算該類的中心點(diǎn)。
(2)再次依次計(jì)算該“珠串”上未歸類的“珠子”與該類新中心點(diǎn)的差值,差值小于某一閾值的“珠子”并入同一類。
(3)重復(fù)步驟(1)—(2)直至沒有新的“珠子”并入。
(4)在未被歸類的“珠子”中選擇新的種子點(diǎn),重復(fù)步驟(1)—(3),直至將所有“珠子”都分類完畢。
按照以上方法完成[2π/d]+1個(gè)“珠串”的聚類,選擇類別數(shù)最少的“珠串”,這個(gè)“珠串”的θ值對(duì)應(yīng)的即為該影像中反映出的其中一個(gè)方向的格網(wǎng)線。刪除該“珠串”中數(shù)量小于閾值的類別,這些少量的“珠子”可視為噪聲。
當(dāng)格網(wǎng)線在影像中的寬度大于1個(gè)像素時(shí),需要將同一格網(wǎng)線的點(diǎn)合并為一類,步驟如下。
(1)以1.3節(jié)中選擇“珠串”的其中一類為基準(zhǔn),計(jì)算其他類中心與該類中心的差值。
(2)選擇與基準(zhǔn)類差值最小且差值小于某一閾值(與直線寬度和直線斜率相關(guān))的兩類合并。
(3)重復(fù)步驟(1)—(2)完成該“珠串”上所有類的合并。
(4)將“珠串”的“珠子”在笛卡兒坐標(biāo)系下的對(duì)應(yīng)點(diǎn),按照“珠子”的分類而分類。
經(jīng)過以上步驟后,所有白色像素被篩選出格網(wǎng)線的點(diǎn),并按照所在格網(wǎng)線分了組。分別對(duì)每一組的格網(wǎng)點(diǎn)通過最小二乘的方法擬合直線[16-18]。具體步驟如下。
(1)通過太陽能電池板的膨脹系數(shù)將提取的格網(wǎng)點(diǎn)(x,y)恢復(fù)到膨脹前的坐標(biāo)(x′,y′)[19-20]。
解算以上方程組
式中,下標(biāo)i表示該格網(wǎng)線上的第i個(gè)格網(wǎng)點(diǎn),該格網(wǎng)線上總共有n個(gè)格網(wǎng)點(diǎn)。
因?yàn)橛裢?導(dǎo)航相機(jī)獲取的單張影像僅對(duì)格網(wǎng)線中某一方向的格網(wǎng)線展現(xiàn)明顯,所以想獲取橫豎格網(wǎng)線交點(diǎn)的像點(diǎn)坐標(biāo),利用張正友棋盤標(biāo)定法進(jìn)行相機(jī)標(biāo)定的方法不可行。
假設(shè)電池板格網(wǎng)大小是m×n(已知值),誤差方程是以格網(wǎng)線的直線參數(shù)建立像方與物方的聯(lián)系:在物方,以選區(qū)內(nèi)第1條格網(wǎng)線為Y軸,則該格網(wǎng)線上的2個(gè)點(diǎn)物方坐標(biāo)為(0,Y1,0)、(0,Y2,0)。根據(jù)共線條件方程可計(jì)算出這2個(gè)格網(wǎng)點(diǎn)對(duì)應(yīng)的像點(diǎn)坐標(biāo)為
(2)
則格網(wǎng)線斜率k0和t0為
(3)
(4)
由式(4)可推導(dǎo)出
(5)
由式(5)推出Zs的表達(dá)式,令
p0=t0+k0x0-y0
則
(6)
將式(6)代入式(3),可形成由旋轉(zhuǎn)歐拉角φ、ω、κ和Xs4個(gè)未知數(shù)的誤差方程。
同理,根據(jù)選區(qū)內(nèi)第i+1條格網(wǎng)線上的2個(gè)物方點(diǎn)(i×m,Y1,0)、(i×m,Y2,0)的直線參數(shù)ki和ti列出φ、ω、κ和Xs4個(gè)未知數(shù)的誤差方程,其中ki和ti為
(7)
(8)
(9)
(10)
列出選區(qū)內(nèi)所有格網(wǎng)線的誤差方程,附加Zs不變的約束條件,最小二乘法不斷迭代求解出一個(gè)導(dǎo)航相機(jī)外參Xs、Ys、Zs、φ、ω、κ。
按照上述方法分別解求在同一物方坐標(biāo)系下的兩個(gè)導(dǎo)航相機(jī)的外參,再根據(jù)式(11)計(jì)算導(dǎo)航雙目相機(jī)外參(表示兩個(gè)相機(jī)相對(duì)位置關(guān)系的參數(shù),即平移和旋轉(zhuǎn)參數(shù))[21-22]
R雙目R左=R右
(11)
試驗(yàn)分為兩個(gè)部分:一是選擇圖3中右影像中某一區(qū)域進(jìn)行格網(wǎng)線提取;二是假定一個(gè)相機(jī)內(nèi)外參數(shù),模擬一組平行線的物方與像方信息,通過本文外參標(biāo)定方法反算出相機(jī)外參元素,并與真值比較驗(yàn)證。
如圖6所示,框選范圍為手動(dòng)選擇的影像區(qū)域。圖7是完成1.4節(jié)步驟獲取最佳格網(wǎng)點(diǎn)分組的結(jié)果,綠色為過濾掉的白色像素噪聲,格網(wǎng)點(diǎn)分組結(jié)果用漸變的顏色顯示。圖8和圖9是分別使用本文方法和直接用標(biāo)準(zhǔn)Hough變換直線提取的結(jié)果。
圖6 區(qū)域選擇Fig.6 The selected region
圖7 潛在格網(wǎng)點(diǎn)最佳分組Fig.7 The opimal proups of the potential grid-points
圖8 本文方法的提取結(jié)果Fig.8 The extraction result of this method
圖9 標(biāo)準(zhǔn)Hough變換的提取結(jié)果Fig.9 The extraction results of the standard Hough transformation
由圖9可知,標(biāo)準(zhǔn)Hough變換即使設(shè)置了合適的閾值,也會(huì)出現(xiàn)錯(cuò)誤提取和漏提取的情況,因?yàn)樗纯紤]平行線組方向性,僅從統(tǒng)計(jì)量超過閾值的角度提取直線,所以會(huì)出現(xiàn)提取出橫向線和雙線甚至多線的問題。試驗(yàn)結(jié)果表明本文的提取方法比標(biāo)準(zhǔn)Hough變換提取的格網(wǎng)線更準(zhǔn)確,當(dāng)待提取的直線方向一致時(shí),本文提取方法更適用。
假定相機(jī)內(nèi)參:x0=640,y0=512,f=1500,相機(jī)外參:Xs=4,Ys=1,Zs=25,φ=8°,ω=4°,κ=6°,平行線間距m=1,生成Y軸平行線模擬數(shù)據(jù),見表1。
根據(jù)表1像點(diǎn)坐標(biāo)計(jì)算Y軸平行格網(wǎng)線的參數(shù)見表2。
表1 模擬數(shù)據(jù)Tab.1 The simulated data
表2 模擬影像格網(wǎng)線參數(shù)Tab.2 The parameters of the gird-lines by the simulated data
根據(jù)1.6節(jié)列出誤差方程,使用Matlab中非線性最小二乘擬合函數(shù)lsqnonlin由3組不同初值迭代出未知數(shù)φ、ω、κ、Xs的收斂值,見表3—表5。
表3 第1組初值最小二乘迭代結(jié)果Tab.3 The iteration result of the No.1 initial values by least squares method
表4 第2組初值最小二乘迭代結(jié)果Tab.4 The iteration result of the No.2 initial values by least squares method
表5 第3組初值最小二乘迭代結(jié)果Tab.5 The iteration result of the No.3 initial values by least squares method
3組初值迭代結(jié)果顯示,本文標(biāo)定方法對(duì)初值依賴性不強(qiáng),迭代結(jié)果較穩(wěn)定。只要初值與真值差距控制在一定范圍,通過最小二乘迭代的收斂值精度都能滿足相機(jī)標(biāo)定的要求。試驗(yàn)結(jié)果同時(shí)還表明,初值越準(zhǔn)確,收斂值越準(zhǔn)確,而與真值差距較大的初值會(huì)迭代出錯(cuò)誤的結(jié)果。因此,在使用本文方法標(biāo)定導(dǎo)航相機(jī)時(shí),應(yīng)以傳感器機(jī)械系統(tǒng)推算出的雙目系統(tǒng)中左、右相機(jī)外參為初值。
雙目視覺三維重建時(shí),解求雙目相機(jī)的內(nèi)外參數(shù)是首要步驟。文中提取平行線組的方法對(duì)一些具有明顯方向性的直線組均適用,本文將Hough變換、聚類思想與最小二乘相結(jié)合的直線提取方法,較之標(biāo)準(zhǔn)的Hough變換直線提取,有以下3項(xiàng)優(yōu)點(diǎn):①本文方法通過最小二乘的方式擬合直線,而標(biāo)準(zhǔn)Hough變換通過設(shè)置步長來控制精度,所以本文方法提取的直線參數(shù)精度更高;②本文方法對(duì)于寬度大于1個(gè)像素的直線僅會(huì)提取出中心線,而標(biāo)準(zhǔn)Hough變換會(huì)提取出多條線;③本文方法不會(huì)提取出與平行線不一致方向的直線,而標(biāo)準(zhǔn)Hough變換僅根據(jù)閾值設(shè)置,從而會(huì)提取出一些錯(cuò)誤直線。以往將Hough變換、聚類思想與最小二乘相結(jié)合的直線提取方法大多是在笛卡兒直角坐標(biāo)系下的聚類[11,23],而本文直線提取方法在極坐標(biāo)下聚類,更利于斜率較一致的平行線組的提取。文中提出的基于平行線的外參標(biāo)定法與傳統(tǒng)的標(biāo)定方法不同之處在于,傳統(tǒng)標(biāo)定方法的輸入為點(diǎn)坐標(biāo)[24],本文標(biāo)定方法的輸入為直線參數(shù),一組平行線只能標(biāo)定與其垂直的方向Xs、Ys中的一項(xiàng),所以需要橫向格網(wǎng)與縱向格網(wǎng)的兩組立體像對(duì)進(jìn)行標(biāo)定,與直接基于平行線滅點(diǎn)進(jìn)行相機(jī)標(biāo)定[25-26]的方法相比,輸入?yún)?shù)為最小二乘擬合后的值,受干擾因素減弱,且對(duì)于平行線組特征的影像,本文標(biāo)定方法能列出更多的誤差方程。但本文相機(jī)標(biāo)定方法的不足之處在于:①?zèng)]有將相機(jī)內(nèi)參納入統(tǒng)一平差模型;②左、右相機(jī)單獨(dú)標(biāo)定。后續(xù)將進(jìn)一步研究相機(jī)內(nèi)、外參同時(shí)標(biāo)定的方法和雙目相機(jī)一步標(biāo)定的方法。
綜上,本文提出了巡視器著陸后導(dǎo)航雙目相機(jī)利用太陽能電池板的成像對(duì)雙目相機(jī)外參再次標(biāo)定的一種方法,并通過試驗(yàn)證明方法可行有效。圖10是使用本文標(biāo)定方法解算的外參進(jìn)行月面地形重建的效果圖,該效果圖顯示了以月球車為圓心,半徑10 m范圍內(nèi)的月面地形,從圖中可清楚地看出在月球車周圍遍布著大大小小的隕石坑。當(dāng)隕石坑或石塊過大時(shí),為保障月球車安全前行,月球車會(huì)被規(guī)劃繞道而行。
圖10 月面地形重建效果Fig.10 The scene graph of lunar terrain reconstruction