1. 程式人生 > >ORBSLAM2學習(四):DBoW2原始碼分析(OrbVocabulary部分)

ORBSLAM2學習(四):DBoW2原始碼分析(OrbVocabulary部分)

{(w1,weight1),(w2,weight2),...,(wn,weightn)}的形式,就對應著這裡的BowVectorBowVector派生自public std::map<WordId, WordValue>,實際上就是public std::map<int, double>。有關std::map這裡做簡單介紹,map是STL中的一個關聯容器,提供一對一(第一個稱為關鍵字,在map中唯一,第二個可稱為鍵值)的對映關係。map自動建立key-value的對應,能夠快速插入/刪除key-value記錄,根據key快速獲取對應的value。BowVector封裝了增加元素的操作addWeight(),注意其中的插入操作確保了元素是按照key升序排列的,這對後面呼叫
L1Scoring的score()方法計算相似度時提供了便利。BowVector還封裝了normalize()函式用於對元素的value也就是單詞的權值做歸一化操作。