本文整理汇总了C++中Vocabulary::getSowBowRepr_img方法的典型用法代码示例。如果您正苦于以下问题:C++ Vocabulary::getSowBowRepr_img方法的具体用法?C++ Vocabulary::getSowBowRepr_img怎么用?C++ Vocabulary::getSowBowRepr_img使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vocabulary
的用法示例。
在下文中一共展示了Vocabulary::getSowBowRepr_img方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: runtime_error
std::vector<std::vector<float> >Loop_Closer::calcProbabCamera(Vocabulary &VocabularyObject, flann::GenericIndex<cv::flann::L2<float> > &flannIndObj, const unsigned neighbor, const float lc_threshold,const unsigned subset_range,const float gmtr_threshold, Mat &img_current, unsigned int img_n, string ts, string odom) throw (runtime_error){
detectedLoopClosures.clear();
cout<<"Processing image number "<<img_n<<endl;
Mat curImgFlannLabels, curImgFlannDist, curImgDescriptors;
vector<KeyPoint> curImgFeatures;
//******* get sow_representation of a new image **********
vector<int> curImg_bow = VocabularyObject.getSowBowRepr_img(img_current, 0, flannIndObj, curImgFeatures, curImgDescriptors, curImgFlannLabels, curImgFlannDist);
if (*curImg_bow.begin() == -1) {
throw runtime_error("Error in BoW representation"); // just ignoring should work in this case
}
bowImgRepresByImage.push_back(curImg_bow); //image into bow representation
vwImgRepresByImage.push_back(curImgFlannLabels);// vector of visual words each image consists of
newKeyPointsByImage.push_back(curImgFeatures);//
newDescriptorsByImage.push_back(curImgDescriptors);//
std::pair <string,string> tempDM (ts,odom);
dataMap[img_n] = tempDM;
totalNumbDescr+=curImgFeatures.size();
//stringstream tempDir;
// tempDir<<img_n<<".dat";
// VocabularyObject.MatToFile(outputFolder+imDescr+tempDir.str(),curImgDescriptors);
// VocabularyObject.MatToFile(outputFolder+imgFlannLab+tempDir.str(),curImgFlannLabels);
// cout<<"Starting new Inverted Index Computing..."<<endl;
//-----------recompute inverted index------------------
vector<int>::iterator itr_sow = curImg_bow.begin(), itr_sow_fal = curImg_bow.end();
newInvIndex = recalcNewInvIndex( itr_sow, itr_sow_fal, img_n);
//cout<<"New Inverted Index Computing ended!"<<endl;
// ======== updating vw_times_seen map ============
MatConstIterator_<int> itr_labels = curImgFlannLabels.begin<int>(), itr_labels_fal = curImgFlannLabels.end<int>();
for(; itr_labels!=itr_labels_fal; ++itr_labels){
++vw_times_seen[*itr_labels];
}
//==================================================
//cout<<"Starting tf-idf weight computation..."<<endl;
idf = calcIdfIset(curImg_bow.begin(), curImg_bow.size());
pair<int, vector<float> > tfIdfByImage_pair;
vector<float> curImg_w_log = calcImg_tfIdf(curImg_bow.begin(), curImg_bow.end(), curImgFeatures.size());
if (curImg_w_log.size()==0){
throw runtime_error ("Error occurred while forming curImg_w_log");
}
tfIdfByImage_pair = make_pair(img_n, curImg_w_log);
tfIdfByImage.insert(tfIdfByImage_pair);
//-----------------------------------------------------------
//cout<<"tf-idf weight computation ended"<<endl;
if (img_n > neighbor) {
//++++++++++++++++++ average image calculation +++++++++++++++++++++++++++
if (img_n<100 || (img_n-neighbor)%100==0){ // is it enough??
// cout<<"Calculating new average image..."<<endl;
//-----------deleting '-1's from the inverse index-----------------------------
map<int, vector<int> >::iterator ii_map_itr = newInvIndex.begin(), ii_map_itr_fal = newInvIndex.end();
for(;ii_map_itr!=ii_map_itr_fal; ++ii_map_itr){ //for each key
vector<int>::iterator inner_runner = ii_map_itr->second.begin(), inner_runner_fal = ii_map_itr->second.end();
for(;inner_runner!=inner_runner_fal; ++inner_runner){ // for each element of the member vector
if((*inner_runner)==-1)
ii_map_itr->second.erase(inner_runner); // delete if it is equal to -1
}
}
//------------------------------------------------------------------------------
int n_descr_avgImg=0;
avgImg_rows = totalNumbDescr/newKeyPointsByImage.size();
//-------trying to get average image from current ones
bowAvgImage = takeAvgImage(curImg_bow.size(),avgImg_rows, n_descr_avgImg);
vector<int>::iterator itr_avg_bow = bowAvgImage.begin(), itr_avg_bow_fal = bowAvgImage.end();
newInvIndex = recalcNewInvIndex( itr_avg_bow, itr_avg_bow_fal, -1);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//******** calc. similarity map ******************************
map<int,float> sim_cfs = getSimilarityCoefficients(curImg_bow.begin(),curImg_bow.end(), curImg_w_log.begin(), curImg_w_log.end(), neighbor, img_n );
map<int,float> likelihood = getLikelihoodCoef(sim_cfs.begin(), sim_cfs.end());
lc_probability.push_back(likelihood);
int fal_not_neighbor = img_n-neighbor;
if (fal_not_neighbor==1){
vector<float> probability(1,1);
pair<int, vector<float> > clp_pair;
clp_pair = make_pair(neighbor,probability);
closureProbab.insert(clp_pair);
}
//----------------------------------------------------------------
vector<float> curImg_pos_probab;
float p_lclosing=0;
for(int to_pos = -1; to_pos!=fal_not_neighbor;++to_pos){
float p_lclosing_with_to_pos=0;
//.........这里部分代码省略.........