void opengv::sac::MultiSampleConsensusProblem<M>::selectWithinDistance( const model_t & model_coefficients, const double threshold, std::vector<std::vector<int> > &inliers ) { std::vector<std::vector<double> > dist; dist.resize(indices_->size()); inliers.clear(); inliers.resize(indices_->size()); for( size_t j = 0; j < indices_->size(); j++ ) dist[j].reserve((*indices_)[j].size()); getDistancesToModel( model_coefficients, dist ); for( size_t j = 0; j < indices_->size(); j++ ) { inliers[j].clear(); inliers[j].reserve((*indices_)[j].size()); for(size_t i = 0; i < dist[j].size(); ++i) { if( dist[j][i] < threshold ) inliers[j].push_back( (*indices_)[j][i] ); } } }
int opengv::sac::SampleConsensusProblem<M>::countWithinDistance( const model_t & model_coefficients, const double threshold) { std::vector<double> dist; dist.reserve(indices_->size()); getDistancesToModel( model_coefficients, dist ); int count = 0; for( size_t i = 0; i < dist.size(); ++i ) { if( dist[i] < threshold ) ++count; } return count; }
void RansacProblem<M>::selectWithinDistance (const model_t & model_coefficients, const double threshold, std::vector<int> &inliers) { std::vector<double> dist; dist.reserve(indices_->size()); getDistancesToModel(model_coefficients, dist); inliers.clear(); inliers.reserve(indices_->size()); for(size_t i = 0; i < dist.size(); ++i) { if(dist[i] < threshold) { inliers.push_back( (*indices_)[i] ); } } }