ORB、RFNET等特征點分析

回顧了一下比賽的問題
我們這個slam針對的場景是什么?這個需要分析下優(yōu)缺點。

直覺:

1、ORB更穩(wěn)定,rfnet更準確。

可能原因:

  • orbslam對于orb特征點選擇問題,特征點選擇方式使得系統(tǒng)更加穩(wěn)定
  • 系統(tǒng)參數(shù)沒調(diào)整好
  • rfnet特征點本身的問題

2、Orb,rfnet,lfnet在什么場景會好?什么場景會不好?

較難比較

3、ORB與SIFT之類的在keypoints上有什么差異?

keypoints對比:

ORB

ORBSLAM系統(tǒng)中的ORB
orbslam

with scale ori
RFNET

直觀上RFNET更稀疏,傾向于物體的輪廓,似乎能感知到圖片中高層語義信息,比如電腦和桌子的輪廓非常清晰,不僅僅是圖像灰度變化就會相應。

匹配效果上:

ORB
ORB_allmatch.png

ORB_withRANSAC.png
RFNET
RFNET_all_match.png

RFNET_withRANSAC.png

感覺比orb匹配成功的更多

Fast與Sift的比較

4、SURF之類的加速策略?

5、能不能在RFNET網(wǎng)絡中引入在無紋理區(qū)域加特征點機制。使得密集地方還是很密,但是在空白地方也要有至少達到一定數(shù)量的特征點,盡管要保持不均勻性,但是要兼顧穩(wěn)定性

6、RFNet直覺上光照更穩(wěn)定

當我們都提取1000個特征點時候,RFNet能得到的正確匹配比ORB要多很多

RFNET

ORB

7、 能不能也安LIFT學習SIFT流程學習一遍ORB?

不太可能,因為detector本質(zhì)上就是fast,orb是描述方法通過學習的,改成深度學習意義不是很大。

8、 ORBSLAM系統(tǒng)上希望得到的特征點

均勻,并且要有一定表現(xiàn)能力

9 、ORBSLAM系統(tǒng)提取特征點策略:

整個特征提取部分涉及到的對象結(jié)構(gòu)如下:


特征點提取策略

每一幀圖像共提取1000個特征點,分布在金字塔8層中,層間尺度比例1.2,計算下來金字塔0層大約有217個特征點,7層大約有50個特征點。

9.1 建立金字塔

為了得到尺度不變性,使用金字塔結(jié)構(gòu)。


9.2 在每層金字塔上劃分網(wǎng)格提取fast角點

  • ComputeKeyPointsOctTree()
    這一步要對圖像每一層來計算特征點,具體步驟就是將圖像劃分成小網(wǎng)格區(qū)域(orbslam2里使用的是30大小的窗口),然后對每個小網(wǎng)格單獨使用FAST角點檢測。值得注意是,為了盡可能使得每個小網(wǎng)格都能有點被檢測到,這里使用了兩種不同的閾值,如果沒有檢測到角點則使用更低閾值檢測。

              //計算FAST關鍵點
              vector<cv::KeyPoint> vKeysCell;
              FAST(mvImagePyramid[level].rowRange(iniY,maxY).colRange(iniX,maxX),
                   vKeysCell,iniThFAST,true);
              // 如果沒有找到關鍵點,就降低閾值重新計算FAST
              if(vKeysCell.empty())
              {
                  FAST(mvImagePyramid[level].rowRange(iniY,maxY).colRange(iniX,maxX),
                       vKeysCell,minThFAST,true);
              }
    

得到角點后對每一層都調(diào)用一下DistributeOctTree()

9.3 使用四叉樹均勻角點

  • DistributeOctTree()
    其實是四叉樹均勻分布算法的實現(xiàn)。
    為了提取出的特征點在圖像中分布比較均勻(實際情況中,特征點通常分布得比較集中,這樣不利于進行匹配,也不利于精確地求解相機間的位姿從而得到精確的VO軌跡),使用了八叉樹(其實是平面上的四叉樹)的數(shù)據(jù)結(jié)構(gòu)來存儲提取出的特征點。
    這個樹結(jié)構(gòu)除了根節(jié)點其實只實現(xiàn)了3層,最頂層的node數(shù)量由圖像的橫縱比決定(例如2);下面兩層最多產(chǎn)生64個葉子。因此,對于前面提到的特征點數(shù),平均每個分割節(jié)點中分布一兩個特征點,如果該葉子中含有較多特征點,則選取其中Harris響應值(是由OpenCV的KeyPoint.response屬性計算的)最大的,其他的拋棄!

10 初步設想

  • end-to-end學出來這種orbslam2的特征選擇方式,甚至要更穩(wěn)定
  • 速度要提升上來
  • lfnet在尺度上來說是失敗的,rfnet提高了很多,但是角度上反而變差了,應當具有更好的尺度角度信息
  • 實際應用場景更加魯棒,如光線明暗、模糊、動態(tài)場景
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容