日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ORB-SLAM2中MapPoints的描述子的计算

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORB-SLAM2中MapPoints的描述子的计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//我們在從金字塔的圖像中獲取特征點時為每一個特征點計算了描述子 //現在看看如何計算一個空間的地圖點的描述子 void MapPoint::ComputeDistinctiveDescriptors() {// Retrieve all observed descriptorsvector<cv::Mat> vDescriptors;//獲取到某一個地圖點可以被哪些關鍵幀觀測到以及在這些關鍵幀上與該地圖點對應的特征點的編號map<KeyFrame*,size_t> observations;{unique_lock<mutex> lock1(mMutexFeatures);if(mbBad)return;observations=mObservations;}if(observations.empty())return;//vDescriptors用來存儲這些所有與可以觀測到該地圖點的特征點的描述子vDescriptors.reserve(observations.size());for(map<KeyFrame*,size_t>::iterator mit=observations.begin(), mend=observations.end(); mit!=mend; mit++){//獲取可以觀測到此地圖點的所有關鍵幀KeyFrame* pKF = mit->first;//然后獲取,在該關鍵幀下與該地圖點對應的特征點的描述子//vDescriptors中存儲了所有的那些可以觀測到該地圖點的圖像上的與之對應的特征點的描述子。if(!pKF->isBad())vDescriptors.push_back(pKF->mDescriptors.row(mit->second));}if(vDescriptors.empty())return;// Compute distances between themconst size_t N = vDescriptors.size();//Distances是一個N*N的二維數組float Distances[N][N];//計算任意兩個描述子之間的海明距離//Distances[N][N]是一個對稱矩陣并且對角線上的元素都為0for(size_t i=0;i<N;i++){Distances[i][i]=0;for(size_t j=i+1;j<N;j++){int distij = ORBmatcher::DescriptorDistance(vDescriptors[i],vDescriptors[j]);Distances[i][j]=distij;Distances[j][i]=distij;}}// Take the descriptor with least median distance to the rest//需要找到的是一個最小的中值距離int BestMedian = INT_MAX;int BestIdx = 0;for(size_t i=0;i<N;i++){//將Distences中的每一行單獨拿出來//因為在這個矩陣中第i行表示,第i個描述子與其他所有描述子之間的海明距離vector<int> vDists(Distances[i],Distances[i]+N);//將這些距離進行排序sort(vDists.begin(),vDists.end());//經過排序之后都要取排序后的中值int median = vDists[0.5*(N-1)];//遍歷Distances中的所有行找到一個最小的中值,那么該描述子就可以代表這個地圖點的描述子if(median<BestMedian){BestMedian = median;BestIdx = i;}}{unique_lock<mutex> lock(mMutexFeatures);mDescriptor = vDescriptors[BestIdx].clone();} }

Take the descriptor with least median distance to the rest

就是在所有的描述子中找到那個與其他所有的描述子之間的距離的中值最小的描述子作為該地圖點的描述子,

這里選擇的是中值作為衡量標準。

總結

以上是生活随笔為你收集整理的ORB-SLAM2中MapPoints的描述子的计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。