周文雅,李 哲,許 勇,楊 峰,賈 濤
(1.大連理工大學(xué)航空航天學(xué)院,大連 116024;2.中國空氣動力研發(fā)中心空天技術(shù)研究所,綿陽 621000)
無人機具有操作靈活、生產(chǎn)成本低和無人員傷亡等優(yōu)點,廣泛應(yīng)用于軍事和民用等領(lǐng)域。由于單個無人機能完成的任務(wù)量有限,往往需要多個無人機組成編隊,協(xié)同完成偵查、作戰(zhàn)及目標跟蹤等任務(wù)。為實現(xiàn)無人機編隊飛行,必須首先解決編隊無人機間相對定位問題。
傳統(tǒng)的目標定位技術(shù)主要利用雷達、激光等傳感器,這些傳感器容易受到無人機上其它傳感器的干擾,導(dǎo)致定位不準確,此外,這些傳感器也無法識別具體的目標物體。近年來,隨著計算機視覺技術(shù)的發(fā)展,利用視覺進行目標定位的方法成為目前新興的一種定位方法。視覺傳感器所需的實驗環(huán)境和硬件條件更加寬松,生產(chǎn)成本低,具有信息量大、檢測范圍大等特點。因此研究基于視覺的目標定位技術(shù)具有重要意義。
視覺定位的前提是檢測目標在視覺圖像中的位置,目前常用的目標檢測方法有特征點法和機器學(xué)習(xí)。特征點法與機器學(xué)習(xí)相比,具有優(yōu)勢:1)檢測通用性,機器學(xué)習(xí)事先需采集大量目標圖片作為訓(xùn)練樣本,特征點法則不限制目標的具體類型;2)檢測精確性,機器學(xué)習(xí)識別目標的大致區(qū)域,特征點法能夠在像素級別上檢測目標,進而也能提高目標定位的精確性。對于特征點算法,文獻[10]提出了一種尺度不變特征變換(Scale-invariant feature transform,SIFT)算法,其檢測的特征點對圖像的尺度和旋轉(zhuǎn)能夠保持不變,即尺度不變性和旋轉(zhuǎn)不變性,對噪聲及視角變化具有較好的魯棒性,但該算法采用圖像金字塔,使得圖像尺度較多,且特征點描述向量的維數(shù)較高,導(dǎo)致算法計算量較大,實時性不高;文獻[11]提出了一種加速魯棒性特征(Speeded up robust features,SURF)算法,SURF算法是SIFT算法的改進版本,保持了尺度不變性和旋轉(zhuǎn)不變性的同時,增強了算法的魯棒性,且計算速度提升了至少三倍,但計算量仍然較大;文獻[12]提出了ORB算法,ORB算法的運行速度相比于SURF算法和SIFT算法要快很多,只具有旋轉(zhuǎn)不變性,沒有尺度不變性。但對于雙目視覺,雙目圖像間沒有尺度變化,所以O(shè)RB算法仍能很好地應(yīng)用于雙目視覺的特征點匹配,并保證匹配精度。
視覺定位依據(jù)視覺傳感器的數(shù)量可分為單目視覺定位和雙目視覺定位。單目視覺無法直接獲得視場的深度信息。雙目視覺能夠利用雙目間的旋轉(zhuǎn)和平移參數(shù),解算深度信息,進而獲得目標的三維位置。文獻[16-17]通過機器學(xué)習(xí)的方式識別圖像中的人類、工件目標,再通過雙目視覺定位目標位置,由于人類、工件目標較小且形狀規(guī)則,容易確定目標中心,使定位誤差較小,但對于形狀不規(guī)則的較大無人機目標,通過雙目識別方式確定的目標幾何中心實際未必是精確對應(yīng)的,進而導(dǎo)致定位的無人機位置有較大誤差。文獻[18]提出了一種基于改進SIFT算法的雙目定位算法,通過減少SIFT算法中尺度空間的數(shù)量,降低了特征點描述向量的維數(shù),進而降低了SIFT算法的復(fù)雜度,在提高計算效率的同時也造成了精確度的損失。文獻[19]使用背景差分技術(shù)確定目標在圖像中的感興趣區(qū)域,在該區(qū)域內(nèi)使用SURF算法進行特征點提取與匹配,再利用雙目視差對特征點進行定位。由于只在感興趣區(qū)域內(nèi)進行特征點提取與匹配,提高了SURF算法的計算效率,進而提高了雙目定位效率。文獻[20]利用Zynq SoC高速處理器對SURF算法進行硬件加速,以實現(xiàn)雙目圖像的特征快速匹配,從而達到實時定位效果,但增加了無人機的生產(chǎn)成本。文獻[21]基于ORB算法對雙目圖像進行特征點匹配,并利用雙目實現(xiàn)了特征點的深度估計,但ORB算法容易受到背景環(huán)境干擾,提取的特征點不是全部集中在目標物體上。文獻[22-23]通過計算特征點的視差實現(xiàn)特征點定位,但基于視差原理的定位算法要求雙目圖像是平行且行對準的,這就要求雙目視覺設(shè)備具有較高的制作工藝。文獻[24]使用Bouguet的校準算法實現(xiàn)了左右雙目圖像共面且行對準,并基于視差原理計算得到目標的三維位置信息。文獻[26]利用特征點的對極約束條件提高了特征點的匹配精度和定位精度。
針對無人機編隊飛行時雙目視覺定位的精確性和實時性要求,本文對ORB算法進行了改進,提高了算法的計算效率,也提高了特征點匹配的精確度;雙目視覺定位模型更符合實際情況,避免了要求雙目平行且行對準的嚴格限制條件;將改進ORB算法提取的無人機特征點代入到雙目視覺定位模型中,實現(xiàn)了無人機的三維定位;進一步利用卡爾曼濾波算法對無人機的三維定位信息進行估計,提高了定位精度。實驗表明,基于特征點的無人機視覺定位算法滿足無人機定位的精確性和實時性要求,具有工程應(yīng)用價值。
ORB算法包括三部分內(nèi)容:特征點提取、特征點描述和特征點匹配。ORB算法由加速段測試特征(Features from accelerated segment test,F(xiàn)AST)提取算法和二進制魯棒獨立基本特征(Binary robust independent elementary features,BRIEF)描述算法組合并改進而成,這兩者具有很快的運算效率,但都不具備旋轉(zhuǎn)不變性和尺度不變性。ORB算法在這二者的基礎(chǔ)上,通過定義特征點的方向角度,實現(xiàn)了旋轉(zhuǎn)不變性。
ORB算法對特征點進行提取與描述后,用描述向量的距離表示兩個特征點之間的相似程度。測量左目圖像中的特征點與右目圖像中所有特征點的距離,并取距離最近的一對特征點作為匹配點。由于BRIEF特征點描述算法采用二進制字符串的描述形式,所以使用漢明距離作為兩個特征點相似程度的度量。
利用雙目視覺確定無人機編隊中無人機間的相對位置時,發(fā)現(xiàn)以下問題:一是受雙目圖像中無人機的背景環(huán)境的干擾,使用傳統(tǒng)的ORB算法進行雙目圖像間的特征點匹配時,存在許多錯誤匹配的特征點對,影響了特征點匹配的精確性;二是雙目圖像中存在非目標區(qū)域,而ORB算法中關(guān)于特征點的操作是基于整幅圖像的,致使算法中存在對非目標區(qū)域的無意義計算,影響了算法的計算量和實時性。針對以上問題,本文對ORB算法做出了如下改進:
1)目標區(qū)域提取
通過目標區(qū)域提取,確定了無人機在圖像中的位置區(qū)域,可以減少不相關(guān)區(qū)域的特征點檢測與匹配,同時避免目標背景對特征點提取與匹配的干擾。本文確定無人機目標區(qū)域的方法是利用邊緣檢測技術(shù)描繪圖像中無人機的邊緣曲線,以邊緣曲線包含的區(qū)域代表無人機的位置區(qū)域,處理流程如圖1所示。對應(yīng)的具體處理步驟如下:
(1)對雙目圖像進行灰度化處理,以增強圖像各點鄰域強度的變化值,也能減少邊緣檢測時的計算量;
(2)對灰度圖像進行高斯濾波處理,防止將圖像中的噪聲識別為邊緣;
(3)對濾波后的圖像進行邊緣檢測;
(4)對邊緣檢測圖像進行膨脹處理,以突出目標的邊緣曲線;
(5)對膨脹后的圖像進行閉運算操作,消除邊緣曲線鄰域內(nèi)的小型斑塊;
(6)識別圖1(d)中白色區(qū)域的最外邊界輪廓,并返回能包圍輪廓的最小矩形位置信息,即矩形的四個角點的像素坐標信息;
(7)以計算的矩形位置區(qū)域作為目標無人機的區(qū)域,將矩形顯示在原始圖像上,如圖1(e)所示。
圖1 目標提取流程
2)最近鄰約束
采用快速近似最近鄰搜索包(Fast library for approximate nearest neighbors,F(xiàn)LANN)對特征點進行匹配,F(xiàn)LANN適用于特征點數(shù)量較多和特征描述向量維度較高的情況。對于左目中的一個特征點,F(xiàn)LANN從右目中找到漢明距離最近的前兩個關(guān)鍵點,如果最近的距離除以次近距離的比值少于某個閾值,則可確定左目特征點與右目中距離最近的特征點是一對匹配良好的特征點。對于閾值參數(shù)的選擇,本文設(shè)置為0.5。若設(shè)置閾值過小,則雙目匹配的特征點過少;若設(shè)置閾值過大,則存在大量錯誤匹配點。
3)RANSAC方法剔除誤匹配點
對于通過最近鄰約束篩選的特征點匹配集合,還可能存在特征點交叉錯誤匹配的現(xiàn)象。RANSAC方法通過對樣本進行隨機抽樣,以估計模型參數(shù),進而識別樣本中的外點,最后以迭代方式估計模型的最優(yōu)參數(shù)。具體步驟為:
(1)在通過最近鄰約束篩選的特征點匹配集合中,隨機選取八個特征點對,計算雙目圖像間的基礎(chǔ)矩陣;
(2)依據(jù)對極約束條件和求得的基礎(chǔ)矩陣,計算特征點匹配集合中其它特征點對的對極約束誤差,若誤差在允許范圍內(nèi),則認為該特征點對為內(nèi)點,并統(tǒng)計內(nèi)點的數(shù)量;
(3)判斷內(nèi)點數(shù)量是否超過設(shè)定閾值,若超過設(shè)定閾值,則認為當前求得的基礎(chǔ)矩陣為最優(yōu)基礎(chǔ)矩陣,否則再從特征點匹配集合中隨機抽取八個特征點對,進行新一輪的迭代計算;
(4)若迭代次數(shù)達到設(shè)定的最大允許迭代次數(shù),則將求得內(nèi)點數(shù)量最多時對應(yīng)的基礎(chǔ)矩陣作為最優(yōu)基礎(chǔ)矩陣;
(5)最優(yōu)基礎(chǔ)矩陣對應(yīng)的內(nèi)點即為經(jīng)過RANSAC剔除誤匹配點后剩下的最優(yōu)匹配點。
利用改進ORB算法提取圖像中無人機的特征點后,需要計算特征點的三維坐標,進而確定無人機的三維位置。雙目視覺可以直接計算特征點的深度信息,這是因為在特征點的三維位置解算模型中,雙目視覺能夠提供具有實際物理意義的旋轉(zhuǎn)和平移參數(shù)。
利用雙目視覺進行編隊無人機三維定位的流程如圖2所示。首先利用雙目采集無人機的圖像;接著利用改進ORB算法提取雙目中無人機的特征點,對特征點進行配對并讀取匹配特征點的像素坐標;再將特征點的像素坐標代入到雙目視覺三維定位模型中,從而得到特征點的三維坐標;最后按上述方法對所有的特征點的三維坐標加和平均處理后,作為無人機的三維坐標位置。
圖2 雙目視覺三維定位流程
Fig.2 Process of binocular vision 3D positioning
2
2
單目視覺投影模型是雙目視覺定位中最基本的測量單元。對于單目視覺,空間場景中的特征點投影到像素平面的模型如圖3所示。
圖3 單目視覺投影模型
圖3所示的視覺投影模型包括4個坐標系:世界坐標系-、相機坐標系-、圖像坐標系-和像素坐標系-。首先將特征點在世界坐標系中的位置(,,)投影到相機坐標系中,再投影到圖像坐標系中,最后投影到像素坐標系,得到像素坐標(,)。整個過程的投影公式為
(1)
式中:為特征點的深度信息;,,,為相機矩陣參數(shù),可通過相機標定得到;和為世界坐標系與相機坐標系間的旋轉(zhuǎn)和平移;為相機內(nèi)部參數(shù)矩陣;為相機外部參數(shù)矩陣;為投影矩陣。
傳統(tǒng)的雙目視覺模型利用視差原理進行特征點的定位,這就要求雙目圖像是共面且行對準的,而受設(shè)備制作工藝、測量誤差等因素的制約,實際拍攝的雙目圖像很難做到共面且行對準。本文提出的雙目視覺模型不要求雙目圖像是嚴格共面和行對準的,利用三角測量的方式實現(xiàn)特征點的三維定位,符合實際情況的需求。
雙目視覺三維定位模型由兩個單目視覺投影模型構(gòu)成,如圖4所示。對于空間場景中的特征點,其在左右雙目圖像中匹配的像素點分別為和,則射線和的交點即為特征點的空間位置。
圖4 雙目視覺三維定位模型
設(shè)和對應(yīng)的像素坐標分別為(,)和(,),對應(yīng)的深度信息分別為和,和分別為左右相機的投影矩陣,則特征點與該點在左右圖像上像素坐標的對應(yīng)關(guān)系分別為
(2)
(3)
設(shè)左右相機的投影矩陣,的具體形式分別為
(4)
(5)
將式(4)和式(5)分別代入到式(2)和式(3)中,得
(6)
(7)
聯(lián)立式(6)和式(7),消除和,得
(8)
令
則式(8)的表達形式為
(9)
由于矩陣是4×3維的,則式(9)是關(guān)于變量,,的超定方程。理論上式(9)中某兩個方程是線性相關(guān)的,但受到特征點匹配誤差、圖像噪聲等的影響,這種線性相關(guān)性實際上不存在。線性相關(guān)性不存在的幾何意義就是射線和不相交而成為異面直線。所以這里求式(9)在最小二乘意義下的解,即
(10)
最小二乘意義下的解就是兩條異面直線間的最短距離所在線段的中點,如圖5所示。
圖5 最小二乘解
受實驗環(huán)境、實驗設(shè)備調(diào)試參數(shù)、實驗設(shè)備精度等因素的影響,實際的無人機三維位置與算法計算的無人機三維位置不可避免地存在一定偏差。因此,本文采用卡爾曼濾波算法對計算的無人機位置進行估計,以進一步提高無人機的定位精度。
卡爾曼濾波通過遞歸更新方法,對當前狀態(tài)進行估計,并使狀態(tài)的真實值和濾波器的估計值均方誤差最小??紤]如下系統(tǒng)模型:
(11)
式中:為時刻的系統(tǒng)狀態(tài);,-1為系統(tǒng)狀態(tài)轉(zhuǎn)移矩陣;-1為噪聲驅(qū)動矩陣;為狀態(tài)觀測量;為觀測矩陣。令過程噪聲-1的方差為;觀測噪聲的方差為。則對應(yīng)式(11)所示系統(tǒng)模型的卡爾曼濾波步驟為:
1)狀態(tài)預(yù)測:根據(jù)-1時刻狀態(tài)估計值-1|-1,計算時刻狀態(tài)預(yù)測值|-1,即
|-1=,-1-1|-1
(12)
2)協(xié)方差預(yù)測:根據(jù)-1時刻系統(tǒng)協(xié)方差-1|-1,預(yù)測時刻系統(tǒng)協(xié)方差|-1,即
(13)
3)卡爾曼增益更新:使用|-1計算卡爾曼增益,即
(14)
4)狀態(tài)更新:根據(jù)狀態(tài)的預(yù)測值和觀測值,計算時刻狀態(tài)估計值|,即
|=|-1+(-|-1)
(15)
5)協(xié)方差更新:求時刻狀態(tài)估計值對應(yīng)的協(xié)方差|,即
|=(-)|-1
(16)
當執(zhí)行步驟5)后,即完成一次迭代計算,再從步驟1)重新迭代,以計算下一時刻的狀態(tài)估計值。
本文使用的算法運行平臺為華碩FX63VM筆記本電腦(Intel i5-7300HQ,2.5GHZ CPU,8GB RAM),實驗平臺搭載Ubuntu16.04系統(tǒng)。使用MYNTEYE雙目相機采集雙目圖像,雙目圖像的分辨率均為752×480,利用雙目圖像進行下面的實驗。
為了驗證改進ORB算法的精確性和實時性,這里對傳統(tǒng)ORB算法與改進ORB算法的性能進行對比。利用傳統(tǒng)ORB算法對雙目圖像進行特征點匹配,實驗結(jié)果如圖6所示??梢钥闯?,傳統(tǒng)ORB算法會出現(xiàn)特征點的錯誤匹配現(xiàn)象,而且匹配的特征點數(shù)量過多,也增加了后續(xù)在無人機目標定位時的計算量。
圖6 傳統(tǒng)ORB算法特征點匹配
改進ORB算法的特征點匹配結(jié)果如圖7所示。對于采集的原始雙目圖像,首先提取雙目圖像中的無人機目標區(qū)域,如圖7(a)所示;接著在無人機目標區(qū)域內(nèi)進行特征點提取與匹配,并且通過最近鄰約束和RANSAC方法篩選出匹配質(zhì)量高的特征點對,如圖7(b)所示。
圖7 改進ORB算法
傳統(tǒng)ORB算法與改進ORB算法的具體性能指標的對比情況,見表1。
表1 兩種算法的性能對比
由表1可知,相比于傳統(tǒng)ORB算法,改進ORB算法的精確性和實時性均明顯提高。由于只在目標區(qū)域內(nèi)進行特征點提取與匹配,改進ORB算法避免了在非目標區(qū)域上選擇無效特征點而浪費計算資源,使得運行時間僅為原來的1/3左右,運行時間只需7 ms,滿足算法實時性的要求;通過最近鄰約束和RANSAC方法,改進ORB算法篩除了大部分匹配質(zhì)量低的和全部的交叉錯誤匹配特征點對,只保留少數(shù)匹配質(zhì)量高的特征點對,使得特征點對的匹配正確率達到100%,滿足算法精確性的要求。
為了驗證基于改進ORB算法的雙目視覺定位算法的可行性,本文進行了基于雙目視覺的目標定位實驗。
以左目相機坐標系作為世界坐標系,即雙目視覺定位系統(tǒng)的參考坐標系。標定目標定位實驗所需的雙目相機參數(shù),包括世界坐標系與相機坐標系間的旋轉(zhuǎn)和平移和、雙目相機內(nèi)部參數(shù)矩陣1和1。本文利用Kalibr軟件標定雙目相機的相關(guān)參數(shù),見表2。
表2 雙目相機參數(shù)
將目標放置在距離雙目相機450 mm處,利用雙目相機采集圖像;然后利用改進ORB算法對雙目圖像中的目標無人機進行特征點提取與匹配;再將特征點的像素坐標代入到雙目視覺三維定位模型中,得到特征點在世界坐標系中的三維坐標;最后求取所有特征點的三維坐標的平均值作為目標無人機的三維坐標。實驗結(jié)果見表3。
表3 三維定位結(jié)果
由表3可知,雙目視覺定位系統(tǒng)的軸定位誤差小于3%。由于特征點在世界坐標系軸和軸上的實際坐標位置難以測量,本文通過比較兩個特征點間的實際距離與解算距離的差值來評判軸和軸的定位誤差。最左邊與最右邊的特征點的實際距離為7.09 cm,解算距離為6.96 cm,可得軸定位誤差為1.819%;最上邊與最下邊的特征點的實際距離為6.16 cm,解算距離為6.30 cm,可得軸定位誤差為2.273%。經(jīng)分析,產(chǎn)生誤差的原因包括:1)通過標定得到的雙目相機參數(shù)有一定偏差,導(dǎo)致結(jié)果不精確;2)雙目相機設(shè)備精度低,圖像分辨率不高,導(dǎo)致獲取的特征點信息不精確。
由4.2小節(jié)的實驗可以看出,雙目視覺定位系統(tǒng)仍存在一定的定位誤差,采用卡爾曼濾波算法對計算的無人機位置進行估計,以進一步提高無人機的定位精度。設(shè)兩架無人機在空中相對飛行,用從機的雙目視覺定位系統(tǒng)計算的主機三維位置作為觀測量,觀測周期為0.1,并設(shè)雙目視覺定位系統(tǒng)中各軸的觀測噪聲標準差為3%。仿真結(jié)果如圖8所示。
圖8 卡爾曼濾波定位估計
圖8給出了雙目視覺定位系統(tǒng)原始觀測的定位誤差和經(jīng)過濾波處理后的定位誤差。從圖中可以看出,經(jīng)過卡爾曼濾波估計后的定位誤差大幅度減小。對圖中的數(shù)據(jù)進行統(tǒng)計,濾波前各軸的最大定位誤差為6.926%、8.885%、9.100%,濾波后各軸的最大定位誤差為3.143%、2.823%、2.578%;濾波前各軸的平均定位誤差為2.219%、2.433%、2.473%,濾波后各軸的平均定位誤差為0.979%、0.836%、0.827%。分析數(shù)據(jù)可知,使用卡爾曼濾波算法對無人機的定位信息進行估計,能夠進一步提高無人機的定位精度。
針對雙目視覺定位時精確性低、實時性差、計算量大的問題,本文提出了一種基于特征點的無人機雙目視覺定位算法。在圖像特征匹配方面,對ORB算法進行了改進,通過只對目標區(qū)域進行特征點識別,使得ORB算法的計算量大幅下降,實時性顯著提高;并通過最近鄰約束和RANSAC方法篩選出少量高匹配質(zhì)量的特征點對,提高了特征點的匹配精度,也減少了后來雙目視覺定位時的計算量。在雙目視覺定位方面,本文提出了更符合實際情況的雙目視覺定位模型,不要求雙目相機是嚴格的共面且行對準,同時也能保證定位的精確性,使得雙目視覺定位系統(tǒng)中各軸的定位誤差均小于3%;最后通過卡爾曼濾波算法對無人機的定位信息進行估計,進一步減小了無人機的定位誤差。實驗結(jié)果表明,基于特征點的無人機雙目視覺定位算法具有較高的精確性和實時性,滿足無人機間的相對定位要求。本論文的研究方法同樣適用于視場中有多個無人機的情況,但如果存在編隊中多架無人機在圖像中投影重疊的現(xiàn)象,本文所提改進ORB算法無法有效完成不同無人機間的圖像分割,進而影響無人機的定位結(jié)果。因此,在下一步工作中將研究通過人工智能手段對重疊目標進行分割的方法。