当前位置: 首页>>代码示例>>C++>>正文


C++ Vocabulary::getSowBowRepr_img方法代码示例

本文整理汇总了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;
//.........这里部分代码省略.........
开发者ID:f-alemauro,项目名称:loopCloser,代码行数:101,代码来源:Loop_Closer.cpp


注:本文中的Vocabulary::getSowBowRepr_img方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。