ORB特征均勻提取策略對性能的提升有多大?
點擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)
本文轉(zhuǎn)自:計算機視覺life
在ORB-SLAM(2)的論文中,作者提到了一種使圖像中提取的ORB特征分布更加均勻的方法。這種策略是否有助于提高SLAM的性能?為什么作者不使用OpenCV中的ORB特征提取的實現(xiàn)?本文將通過實驗,比較這兩種ORB特征提取方法對ORB-SLAM2性能的影響。
隨便從TUM數(shù)據(jù)集中取出一張照片,分別使用OpenCV的實現(xiàn)和ORB-SLAM2的實現(xiàn)提取1000個ORB特征,效果如下圖。很明顯,OpenCV提取的特征點比較集中,出現(xiàn)了扎推現(xiàn)象。而ORB-SLAM2提取的特征點,分布比較均勻。
直觀上想象,特征點分布比較集中,極端情況就是所有特征都集中到了一點,那么相機的位姿就無法解算。特征點分布太過集中,SLAM系統(tǒng)的精度可能會有所下降。下面,通過實驗驗證這一想象。

實驗條件:
數(shù)據(jù)集: TUM RGB-D數(shù)據(jù)集中的6個序列 (嚴(yán)謹(jǐn)?shù)恼f,以下結(jié)論目前只適用于RGB-D相機,沒有測試單目和雙目的效果)
系統(tǒng):Ubuntu 16.04
CPU: Intel? Core? i7-8700 CPU @ 3.20GHz × 12
OpenCV: 3.3.1
ORB-SLAM2參數(shù)配置:使用ORB-SLAM2原版配置
軌跡精度對比
采用的評測標(biāo)準(zhǔn)是absolute trajectory error(ATE) RMSE, 結(jié)果見下圖。大部分序列下,ORB-SLAM2版本的精度更高。fr1_xyz序列,OpenCV版本的精度稍高,但是和ORB-SLAM2的精度也差不太多。而OpenCV的版本在fr2_3h序列中出現(xiàn)了跟丟現(xiàn)象,直到最后也沒有找回,所以測試軌跡精度的數(shù)據(jù)只占了整個序列開始很小一部分,在軌跡精度上稍顯高一些。實際上,fr2_3h的序列中,相機運動的較快,場景中也距離相機較遠(yuǎn),光線也不好。ORB-SLAM版本在所有序列上都沒有跟丟,因此魯棒性更高??傊?,ORB-SLAM2的均勻化特征提取的策略提高了系統(tǒng)的精度和魯棒性。

軌跡誤差就ORB-SLAM2的版本而言,地圖點比較均勻和稀疏,關(guān)鍵幀之間的邊相對較少。這似乎表明ORB-SLAM2的均勻提取策略降低了特征的重復(fù)性,不利于保證同一個特征在多幀之間都提取到。
而OpenCV版本的地圖點比較集中,這是由于OpenCV選擇響應(yīng)最高的點所導(dǎo)致的。關(guān)鍵幀之間的邊也更加密集,這似乎說明響應(yīng)高的那些ORB特征點具有更好的復(fù)現(xiàn)性,可以在連續(xù)的更多幀重復(fù)提取、跟蹤。但是,需要注意的是,這些特征點都集中在一起,即便形成了更強大的網(wǎng)絡(luò),獲得的估計精度還是沒有ORB-SLAM2版本的高。也就是說,特征點均勻分布是可以提高系統(tǒng)精度的。

下面再看一下,在fr2_desk序列中,每個frame追蹤到的地圖點的個數(shù)。ORB-SLAM2版本相對于OpenCV版本追蹤的地圖點數(shù)量要少,這也與上圖中OpenCV版本的關(guān)鍵幀網(wǎng)絡(luò)更加稠密相互印證。但是,這并不能表明ORB-SLAM2追蹤的質(zhì)量差,因為有可能是ORB-SLAM2的地圖點的數(shù)量本來就少呢?所以我又統(tǒng)計了以下地圖中關(guān)鍵幀的數(shù)量和地圖點的數(shù)量。ORB-SLAM2版本的關(guān)鍵幀數(shù)量比OpenCV版本的還多,但是地圖點的數(shù)量沒有OpenCV版本的多。ORB-SLAM2版本中,地圖點少,關(guān)鍵幀多,原因可能是1. ORB特征的復(fù)現(xiàn)性不好,不能在較多幀之間追蹤,構(gòu)造更多的地圖點。2. 均勻化的提取策略提取的特征點數(shù)量沒有OpenCV原版實現(xiàn)中提取特點數(shù)多。(這兩點目前沒有驗證。)
值得注意的是,雖然ORB-SLAM2版本每一幀跟蹤的特征點數(shù)少,但是最終的軌跡精度卻很高。這就體現(xiàn)出ORB-SLAM2特征提取方法的優(yōu)越性了,可能是特征點分布比較均勻的功勞。OpenCV版本跟蹤的點數(shù)雖多,但是這些點比較集中。



提取ORB特征,一是為了構(gòu)造地圖點,二是為了實現(xiàn)數(shù)據(jù)關(guān)聯(lián)。一個ORB特征點對應(yīng)的地圖點被越多的幀觀測到,那么就能形成越強大的Graph,從而也能保證系統(tǒng)的精度。也就是說,多幀之間的ORB特征應(yīng)具有很好的重復(fù)性,這樣才能保證形成強大的網(wǎng)絡(luò)。一個地圖點能夠被越多的幀觀測到越好。于是,我統(tǒng)計了每個特征點相連的關(guān)鍵幀數(shù)量。從這幅圖似乎感覺兩種特征提取方法差別不大,可能對數(shù)據(jù)影響最大的是實驗環(huán)境和運動軌跡吧?

ORB-SLAM2的特征提取時間為10.24±2.64 ms,OpenCV的特征提取時間為9.11±2.82 ms。兩者差別不大。
ORB-SLAM2中的ORB特征提取方法相對于OpenCV中的方法,提高了ORB-SLAM2的軌跡精度和魯棒性。增加特征提取的均勻性可以提高系統(tǒng)精度,但是似乎會降低特征提取的重復(fù)性。
我只用了TUM RGB-D數(shù)據(jù)集的6個序列來測試,因此相關(guān)結(jié)論僅供參考。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

