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] );
            }
        }
    }