周嘯風(fēng),汪 玲,劉寒寒,張 翔
(1.南京航空航天大學(xué) 電子信息工程學(xué)院,南京 211106;2.南京理工大學(xué) 機(jī)械工程學(xué)院,南京 210094)
在軌服務(wù)、主動碎片探索等任務(wù)中,目標(biāo)飛行器或者衛(wèi)星的姿態(tài)估計[1]都是一個重要的問題。相對姿態(tài)估計對于衛(wèi)星之間交會、接近、對接是必不可少的。根據(jù)目標(biāo)是否是合作的,目標(biāo)可分為合作目標(biāo)和非合作目標(biāo)[4]。在非合作目標(biāo)的情況下(沒有任何人工標(biāo)記,結(jié)構(gòu)形狀大小全部未知),一般采用基于視覺[7]的算法對衛(wèi)星進(jìn)行位姿估計。位姿估計一般分為特征提取、特征匹配、位姿計算三大步驟。特征提取的精度直接影響了位姿測量的準(zhǔn)確性。針對在太空中,受光照、復(fù)雜背景等影響提取特征困難的問題,本文的目標(biāo)是給出一套穩(wěn)健的特征提取方案,提取出非合作目標(biāo)的顯著特征。
在太空中,由于光照變化、背景中經(jīng)常出現(xiàn)地球等其它物體、距離太遠(yuǎn)等影響,特征提取難度增加,容易提取出錯誤的特征。傳統(tǒng)的特征提取算法,大多數(shù)是提取孤立的點(diǎn)、線特征。以提取特征點(diǎn)為主要特征的特征提取算法有ORB特征提取算法[9]、SIFT特征提取算法[10]、SURF特征提取算法[11]等等。以基于線段為主要特征的特征提取算法有HoughLines檢測算法、LSD算法等等。在Hough Lines檢測算法的基礎(chǔ)上前人也改進(jìn)了一些算法,比如多尺度霍夫變換算法[12]、累積霍夫變換算法[13]。上述的這些特征檢測算法都是傳統(tǒng)的特征檢測算法,已經(jīng)被廣泛地應(yīng)用到圖像處理領(lǐng)域。針對航天應(yīng)用背景,也出現(xiàn)了一些特征提取相關(guān)研究,例如文獻(xiàn)[14]采用基于Harris角點(diǎn)的特征提取算法用于后續(xù)空間目標(biāo)初始位姿估計;文獻(xiàn)[15]融合Shi-Tomasi角點(diǎn)檢測和SURF特征點(diǎn)檢測進(jìn)行特征提取;文獻(xiàn)[16]提出了一種融合多處理流的特征提取算法,該算法通過融合不同算法提取的特征點(diǎn),繼而將特征點(diǎn)合并為線段特征結(jié)構(gòu),提高了特征提取的穩(wěn)健性。國內(nèi)對特征提取算法也展開了相關(guān)的研究,例如文獻(xiàn)[17]提出了基于紋理邊界檢測的航天器橢圓特征提取算法,該算法對光照變換具有魯棒性,在光照變化和星體表面不均勻的情況下能準(zhǔn)確地提取特征。文獻(xiàn)[18]針對SIFT特征點(diǎn)提取算法實(shí)時性差的問題,提出了對比度增強(qiáng)和DAISY描述符的SIFT特征提取算法。文獻(xiàn)[19]提出了一種在月面環(huán)境下基于SIFT的特征提取算法。文獻(xiàn)[20]也提出了一種基于SIFT圖像特征提取與FLANN匹配的算法,該算法通過用SIFT特征提取算法提出特征點(diǎn),然后用FLANN匹配算法對特征點(diǎn)進(jìn)行匹配,SIFT特征提取算法對于圖像的尺度變換、光照變換具有很強(qiáng)的適應(yīng)性。
上述研究除[16]之外都是提取點(diǎn)或線段特征,這些特征都比較孤立,無法形成一個有效的整體來表征真實(shí)的目標(biāo)結(jié)構(gòu)。而[16]則考慮提取能夠反映目標(biāo)結(jié)構(gòu)的特征信息,本文借鑒[16]提出的特征點(diǎn)融合的思想,給出一種基于線段融合的特征提取算法。鑒于HoughLines線段檢測算法效率高、抗干擾能力強(qiáng)、對噪聲不敏感,LSD線段檢測算法能夠提取亞像素精度的特征,Shi-Tomasi角點(diǎn)檢測算法可以檢測對特征跟蹤有意義的角點(diǎn)的優(yōu)勢,聯(lián)合采用這3種算法對特征點(diǎn)進(jìn)行提取,保證提取到所有關(guān)鍵的特征點(diǎn)。然后對特征點(diǎn)進(jìn)行篩選,保留能夠反映目標(biāo)特征的較少數(shù)量的特征點(diǎn),之后進(jìn)行線段合成,并進(jìn)一步進(jìn)行線段融合。最后,設(shè)計了兩組實(shí)驗(yàn),對仿真圖像以及半物理仿真圖像進(jìn)行特征提取。仿真實(shí)驗(yàn)和半物理仿真實(shí)驗(yàn)結(jié)果表明,該特征提取方法的魯棒性強(qiáng),在光照條件欠佳以及復(fù)雜背景環(huán)境下仍能穩(wěn)健地提取目標(biāo)特征。需要指出的是,本文與[16]采取了相同的多種特征提取算法并行處理然后融合的策略,但是不同的是,本文詳細(xì)給出了進(jìn)一步線段合成和融合的具體算法。
本文的結(jié)構(gòu)安排如下:第1節(jié)給出特征提取流程,第2節(jié)詳細(xì)闡述特征提取的主步驟,第3節(jié)為實(shí)驗(yàn)驗(yàn)證與分析,第4節(jié)是結(jié)束語。
特征提取的整個流程大致分為背景濾除、特征點(diǎn)提取與融合、直線合成與融合三大步驟。在預(yù)處理過程中,首先對原始圖像進(jìn)行高斯濾波、灰度化處理,可以有效地減少噪聲對后續(xù)特征提取工作的影響。
在濾除背景的過程中,根據(jù)圖像的前景與背景灰度有較大差異的特點(diǎn),本文采用基于圖像梯度閾值的方法對圖像進(jìn)行背景濾除。將濾除背景的圖像用3種特征點(diǎn)提取算法分別提取三組不同的特征點(diǎn),將提取出來的特征點(diǎn)構(gòu)建K-D空間劃分樹,用K最近鄰搜索算法對特征點(diǎn)進(jìn)行融合,得到三組特征點(diǎn)的公共集合。
本文介紹了一種線段合成算法,通過計算兩點(diǎn)之間非零像素點(diǎn)個數(shù)占總個數(shù)的比值來判斷兩點(diǎn)之間有無合成線段的可能。最后,本文提出了一種基于線段端點(diǎn)的直線融合算法,通過線段端點(diǎn)的關(guān)系,判斷線段之間有無共線、重合、是否可以合并等情況,根據(jù)不同情況采取不同的融合策略,對線段進(jìn)行融合。特征提取的流程如圖1所示。
圖1 特征提取流程圖
從航天器中獲得的原始圖像,由于在采集、傳輸以及處理的過程中,容易受到噪聲的影響,對后續(xù)的背景濾除、特征提取工作造成影響,因此需要在開始的時候?qū)D像進(jìn)行一系列的預(yù)處理工作。預(yù)處理工作主要是對圖像進(jìn)行高斯濾波、灰度化處理。通過高斯濾波處理可以有效地降低圖像中的噪聲,灰度化處理可以將圖像轉(zhuǎn)換成灰度圖。
由于在太空中,背景比較復(fù)雜,圖像當(dāng)中常常會出現(xiàn)地球、云層、其它星球等復(fù)雜多樣的背景,這些背景會干擾特征提取,因此首先需要對圖像的背景進(jìn)行濾除。本文采用文獻(xiàn)[21]提出的基于Prewitt的梯度算法對背景進(jìn)行濾除。
在對圖像進(jìn)行濾波,灰度化處理后,圖像背景灰度與前景灰度往往會有較大的差異,這個差異可以用梯度來描述。該方法使用Prewitt算子計算每個像素點(diǎn)的梯度。首先,用兩個3×3的核與原始圖像進(jìn)行卷積,來計算水平導(dǎo)數(shù)與垂直導(dǎo)數(shù)的近似值。如果把輸入的圖像定義為F,圖像中每個點(diǎn)的水平方向的導(dǎo)數(shù)近似值為Gx,垂直方向的導(dǎo)數(shù)近似值為Gy。則Gx,Gy的計算公式如式(1)、(2)所示:
(1)
(2)
其中:*表示卷積。對于F中每一個像素點(diǎn),可以通過式(3)得到梯度的近似值,式(3)如下所示:
|Gx(u,v)|+|Gy(u,v)|
(3)
通過上述公式,可以得到圖像中每一個點(diǎn)的梯度值。然后對這些梯度值進(jìn)行排序,均勻劃分成100個區(qū)間,構(gòu)建梯度直方圖,并將直方圖擬合成一條曲線。之后通過計算曲線積分,找到曲線所圍面積為總面積0.99對應(yīng)的梯度閾值點(diǎn),最后將小于閾值的像素點(diǎn)濾除,即像素值設(shè)為0。圖2給出了對仿真的復(fù)雜背景圖像采用梯度方法進(jìn)行背景濾除的處理結(jié)果,其中圖2(a)是原始圖像,圖2(b)是背景濾除結(jié)果。
圖2 基于梯度的背景濾除算法處理結(jié)果
HoughLines檢測算法[22](以下簡稱HLT)具有檢測效率高、抗干擾能力強(qiáng)、對噪聲不敏感的特點(diǎn),已被用于衛(wèi)星目標(biāo)的特征提取。標(biāo)準(zhǔn)的HLT算法是提供一組角度和半徑的參數(shù)來表示檢測到的線段,而本文采用統(tǒng)計概率霍夫線變換算法,它可以返回檢測到的線段端點(diǎn)(x0,y0,x1,y1)來表示檢測到的線段。它在opencv中可以通過HoughLinesP函數(shù)實(shí)現(xiàn)。
LSD檢測算法[23]不需要調(diào)整參數(shù)、檢測速度快、可以返回亞像素精度的檢測結(jié)果,在opencv中主要是通過createLineSegmentDetector函數(shù)實(shí)現(xiàn)。相對于一般的點(diǎn)特征,HLT算法和LSD算法都是通過檢測線段,然后提取線段端點(diǎn)的方式提取特征點(diǎn),線段特征對于光照變換具有更強(qiáng)的魯棒性,而Shi-Tomas角點(diǎn)檢測算法[24](以下簡稱S-T)主要檢測角特征,對特征跟蹤起到很大作用,在opencv中主要是通過goodFeaturesToTrack函數(shù)實(shí)現(xiàn)。鑒于這3種特征點(diǎn)提取算法的優(yōu)勢,本文使用這3種方法提取特征點(diǎn)。圖3給出了上述幾種方法的特征提取結(jié)果,圖3(a)~(c)分別為Shi-Tomas算法、LSD算法和HLT算法的處理結(jié)果。由圖可見,Shi-Tomas特征提取算法可以有效地提取出圖像角點(diǎn),它提取出來的特征點(diǎn)分布在圖像四周。而LSD和HLT算法可以提取出線段的端點(diǎn),它提取出來的特征點(diǎn)分布在線段周圍。
圖3 提取的三組特征點(diǎn)
由圖3(a)可見,Shi-Tomasi算法檢測出來的特征點(diǎn)比LSD、HLT算法檢測出來的特征點(diǎn)多,但是也檢測到周圍的噪聲點(diǎn)。由圖3(b)和圖3(c)可見,LSD算法和HLT算法檢測出的有些特征點(diǎn)不能較好地反映目標(biāo)的結(jié)構(gòu)特征,形成干擾。但是LSD算法檢測到的特征點(diǎn)不包含來自于HLT的錯誤端點(diǎn),HLT算法檢測到的特征點(diǎn)不包含來自于LSD的錯誤端點(diǎn)。因此,融合三組特征檢測結(jié)果可以彌補(bǔ)3種特征提取算法各自的不足,保留反映目標(biāo)結(jié)構(gòu)特征的較少數(shù)量的關(guān)鍵特征,減少線段合成的運(yùn)算量。本文采用K-D空間劃分樹和KNN算法[25]對3種算法的特征提取結(jié)果進(jìn)行融合。
K-D空間劃分樹是一種可以將K維點(diǎn)集進(jìn)行劃分的數(shù)據(jù)結(jié)構(gòu)。在二維平面中K就代表2,它是一個根據(jù)樹的深度輪流選擇軸作為分區(qū)面將一個平面劃分為兩個平面的過程。首先,將所有特征點(diǎn)按照橫坐標(biāo)的大小順序進(jìn)行排序,選擇橫坐標(biāo)的值是中位數(shù)的那個點(diǎn)當(dāng)作根節(jié)點(diǎn),將所有小于根節(jié)點(diǎn)橫坐標(biāo)的點(diǎn)作為左子樹,所有大于根節(jié)點(diǎn)橫坐標(biāo)的點(diǎn)作為右子樹。這樣左右子樹就各自形成了兩個平面。然后以縱坐標(biāo)的大小為劃分依據(jù)對兩個平面做同樣的處理。以不斷輪換軸平面的方式對所有特征點(diǎn)進(jìn)行處理,這樣就能把一個點(diǎn)集構(gòu)建成一個K-D空間劃分樹。KNN算法指的是K最近鄰搜索算法,對于給定一個點(diǎn),可以在K-D空間劃分樹中找到與這個點(diǎn)最近的點(diǎn)。因此,可以將提取到的點(diǎn)集構(gòu)建K-D空間劃分樹,選擇另一點(diǎn)集的點(diǎn)作為匹配點(diǎn),找到兩個點(diǎn)集的重復(fù)點(diǎn)集。
由于可以控制用Shi-Tomasi方法提取出來的特征點(diǎn)的數(shù)目,因此先用LSD提取出來的特征點(diǎn)構(gòu)造K-D樹,然后用S-T提取出來的特征點(diǎn)逐個與K-D樹進(jìn)行匹配,篩選出重合的點(diǎn),得到一個過濾點(diǎn)集。然后用HLT點(diǎn)構(gòu)造K-D樹,再用過濾點(diǎn)集來匹配,最后得到三組點(diǎn)的共同點(diǎn)。圖4給出了最后的過濾點(diǎn)集。
圖4 特征點(diǎn)融合結(jié)果
融合三組特征點(diǎn)之后,進(jìn)行線段合成,然后進(jìn)行篩選并融合成更高級的結(jié)構(gòu)。
1)線段合成:遍歷所有的特征點(diǎn),判斷兩兩特征點(diǎn)之間能否構(gòu)成線段。具體做法是,兩個特征點(diǎn)之間每隔5個像素取出一個像素點(diǎn),將像素點(diǎn)的個數(shù)記為A,計算這些像素點(diǎn)的灰度值是否大于閾值,將所有大于閾值的個數(shù)記為B。如果B/A的比值大于一定的比例,則這兩點(diǎn)連接合成一條線段,并將該線段存入容器A1中。
2)線段融合:第一步合成的線段可能會存在共線和重合,也可以形成更高級的折線特征,因此需要進(jìn)一步篩選并進(jìn)行融合。圖6給出了線段融合的算法流程。具體做法是,將所有待判斷的線段存入容器A1中,判斷過的線段存入容器A2中。將待判斷的線段與A2中線段進(jìn)行比較:如果與所有已判斷過的線段都不共線,將當(dāng)前待判斷的線段視作一條獨(dú)立的線段同時添加到A2中;如果存在共線的情況,繼續(xù)分為以下幾種情況進(jìn)行處理:
圖5 線段融合示意圖
圖6 線段融合流程圖
第一種情況:如果待判斷的線段兩個端點(diǎn)都在已經(jīng)判斷過的線段里面,這時已經(jīng)判斷過的線段就包含待判斷的線段,則不需要額外處理,直接進(jìn)入下一條線段的判斷。
第二種情況:如果已經(jīng)判斷過的線段兩個端點(diǎn)在待判斷的線段里面,這時待判斷的線段包含已經(jīng)判斷過的線段,此時用待判斷的線段替換這條已經(jīng)判斷過的線段。如圖5所示,待判斷線段p1p3包含了已判斷線段p1p2,因此將線段p1p3代替線段p1p2。
第三種情況:待判斷的線段和已判斷的線段有共線部分,則合并這兩條線段并替換原來的已判斷過的線段。如圖5所示,線段p4p6與線段p5p7有重合部分,因此將兩個線段合并成一條更長的線段p4p7,同時替換掉原來的線段p5p7。
第四種情況:待判斷的線段與已判斷的線段共線,但是沒有重合部分,且線段間有一段距離。如果距離小于閾值,則進(jìn)行線段合并和替換。如圖5所示,線段p8p9與線段p10p11可以合并成一條更長的線段p8p11。反之,將待判斷的線段視作一條新的線段。
在判斷兩條線段是否共線的時候,記已經(jīng)存儲的線段p1p2兩個端點(diǎn)分別為p1和p2,待判斷的線段p3p4的兩個端點(diǎn)分別為p3和p4。分別計算端點(diǎn)p3、p4到線段p1p2的法向距離Dp3、Dp4以及端點(diǎn)p1、p2到線段p3p4的法向距離Dp1、Dp2。法向距離Dp1計算如公式(1)所示,其中(x1,y1)是點(diǎn)p1的坐標(biāo),(x3,y3)是點(diǎn)p3的坐標(biāo),(x4,y4)是p4的坐標(biāo)。
(4)
如果Dp1、Dp2小于閾值或者Dp3、Dp4小于閾值,就將線段p1p2、p3p4視為共線。
但是經(jīng)過上述操作,可能仍存在遺漏,比如應(yīng)該合并的線段并沒有合并。為減少此類情況的發(fā)生,可改變線段的存儲順序,對上述流程進(jìn)行迭代,直到提取出來的線段數(shù)量不再增加。
對圖4中融合后的特征點(diǎn)進(jìn)行線段合成,結(jié)果如圖7所示,白色線段為提取出來的線段結(jié)構(gòu)。
圖7 線段合成和融合結(jié)果
為了驗(yàn)證特征提取的準(zhǔn)確度以及算法對于光照、復(fù)雜背景的魯棒性,本文設(shè)計了兩部分實(shí)驗(yàn)進(jìn)行驗(yàn)證。第一部分是為了驗(yàn)證特征提取的準(zhǔn)確度,開展半物理仿真實(shí)驗(yàn),測量物體是一個立方星。該立方星的尺寸已知,實(shí)驗(yàn)通過跟蹤檢測到的特征點(diǎn),記錄特征點(diǎn)的坐標(biāo)信息,分析特征特征點(diǎn)的坐標(biāo)變化情況,同時跟蹤提取到的特征線段,計算提取的線段長度,與真實(shí)的線段長度進(jìn)行比較。從定量的角度來分析特征提取的精度。第二部分是為了驗(yàn)證算法在不同背景情況下的魯棒性,開展了仿真實(shí)驗(yàn)。為了驗(yàn)證在復(fù)雜背景環(huán)境下的魯棒性,本文仿真了兩組在不同太空背景情況下的衛(wèi)星圖像,根據(jù)特征提取結(jié)果,從定性的角度分析特征提取對于復(fù)雜背景的魯棒性。
為了驗(yàn)證特征提取算法的精度,開展半物理仿真實(shí)驗(yàn)驗(yàn)證。本文使用軟件Visual Studio 2017及Opencv3.4.2庫對圖像進(jìn)行特征提取工作。由于在特征提取過程中,提取出來的特征點(diǎn),特征線段都很容易受到光照、環(huán)境變化的干擾,因此可以通過跟蹤特征明顯的點(diǎn),記錄特征點(diǎn)的位置坐標(biāo),以及提取出來的線段的長度來分析誤差。該實(shí)驗(yàn)的目標(biāo)為立方星,如圖8所示,中間主體為長方體,尺寸為103.2 mm×103.2 mm×227 mm,兩個太陽翼的尺寸為82.802 mm×227 mm。
圖8 衛(wèi)星模型
設(shè)置不同光照條件、不同的相機(jī)距離和不同目標(biāo)位姿進(jìn)行圖像采集,共采集60張圖像,其中有6個強(qiáng)度的光照變換,相機(jī)距離變化為0.75~1.75 m,滾動角變化為-10~ 10°。
對其中10幅圖像進(jìn)行處理,提取兩條特征邊p1p2,p3p4(如圖8所示),圖9給出了強(qiáng)光與弱光兩種情況下的特征提取結(jié)果,分別如圖9(b)和圖9(d)所示。
圖9 衛(wèi)星圖像特征提取結(jié)果
將提取到的線段長度與真實(shí)長度進(jìn)行對比,測量結(jié)果如圖10所示,其中圖10(a)是線段p1p2的測量結(jié)果,圖10(b)是線段p3p4的測量結(jié)果。記錄線段p1p2的端點(diǎn)p1,p2坐標(biāo)的測量結(jié)果,結(jié)果如圖11所示。其中圖11(a)是點(diǎn)p1在x軸坐標(biāo)系下的坐標(biāo),圖11(b)是點(diǎn)p1在y軸坐標(biāo)系下的坐標(biāo),圖11(c)是點(diǎn)p2在x軸坐標(biāo)系下的坐標(biāo),圖11(d)是點(diǎn)p2在y軸坐標(biāo)系下的坐標(biāo)。
圖10 兩條特征線段提取結(jié)果長度誤差圖
圖11 p1、p2在坐標(biāo)系下的坐標(biāo)
由圖9可知,在沒有背景干擾的情況下,在強(qiáng)光和弱光兩種情況下,都能提取出目標(biāo)的結(jié)構(gòu)特征,并且提取出來的特征結(jié)構(gòu)清晰,可以很好的表示原始目標(biāo)。由圖10可知,提取出來的線段p1p2平均長度為100.691 2 mm,實(shí)際長度為103.2 mm,平均誤差為2.509 mm,提取出來的線段p3p4平均長度為82.499 mm,實(shí)際長度為82.802 mm,平均誤差為2.551 57 mm,特征提取誤差小,滿足特征提取的精度要求。由圖11可知,特征點(diǎn)波動的最大誤差在3 mm以內(nèi),波動誤差小。因此,特征提取算法對于特征點(diǎn)提取比較準(zhǔn)確,可以滿足特征提取的精度要求。
為了測試該算法在復(fù)雜背景情況下的魯棒性,本文開展仿真實(shí)驗(yàn),對背景中都是地球以及背景中部分出現(xiàn)地球兩種情況的衛(wèi)星圖像進(jìn)行特征提取,根據(jù)特征提取結(jié)果,從定性的角度分析特征提取的效果。對不同背景的衛(wèi)星仿真圖片進(jìn)行處理,處理結(jié)果如圖12所示。
圖12 不同背景的衛(wèi)星特征提取結(jié)果
從圖12可知,在背景中全都是地球以及部分是地球的兩種情況下,特征提取算法都能提取出目標(biāo)的關(guān)鍵特征,結(jié)果表明該算法也能很好地克服背景環(huán)境帶來地干擾,沒有提取出除目標(biāo)外的其它不重要特征。
針對在太空中對于非合作目標(biāo)受光照、背景等影響,特征提取困難的難題,本文給出了一種基于線段融合的特征提取算法。該算法首先通過基于梯度的背景濾除算法濾除背景,然后用3種不同的特征提取算法提取出三組不同的特征點(diǎn),用K-D空間劃分樹以及KNN算法將三組特征點(diǎn)融合,最后進(jìn)一步進(jìn)行線段合成與融合。在半物理仿真實(shí)驗(yàn)中,特征點(diǎn)的位置誤差在3 mm以內(nèi),提取的兩條線段誤差分別為2.509 mm與2.551 57 mm。實(shí)驗(yàn)結(jié)果表明,在光照變化等復(fù)雜背景條件下,該算法能夠穩(wěn)健地提取反映目標(biāo)結(jié)構(gòu)的線段特征,該算法將應(yīng)用于后續(xù)的位姿測量算法。同時,后續(xù)也會開展對其它特征結(jié)構(gòu)的特征提取工作。