37 #ifndef PCL_RECOGNITION_HV_GREEDY_H_
38 #define PCL_RECOGNITION_HV_GREEDY_H_
40 #include <pcl/pcl_macros.h>
41 #include <pcl/recognition/hv/hypotheses_verification.h>
42 #include <pcl/common/common.h>
52 template<
typename ModelT,
typename SceneT>
65 class RecognitionModel
68 std::vector<int> explained_;
71 int good_information_;
79 struct sortModelsClass
82 operator() (
const boost::shared_ptr<RecognitionModel> & n1,
const boost::shared_ptr<RecognitionModel> & n2)
84 float val1 =
static_cast<float>(n1->good_information_) - static_cast<float>(n1->bad_information_) * n1->regularizer_;
85 float val2 =
static_cast<float>(n2->good_information_) - static_cast<float>(n2->bad_information_) * n2->regularizer_;
97 boost::shared_ptr<RecognitionModel> model_;
103 struct sortModelIndicesClass
106 operator() (
const modelIndices & n1,
const modelIndices & n2)
108 float val1 =
static_cast<float>(n1.model_->good_information_) - static_cast<float>(n1.model_->bad_information_) * n1.model_->regularizer_;
109 float val2 =
static_cast<float>(n2.model_->good_information_) - static_cast<float>(n2.model_->bad_information_) * n2.model_->regularizer_;
112 } sortModelsIndicesOp;
115 std::vector<modelIndices> indices_models_;
118 std::vector<boost::shared_ptr<RecognitionModel> > recognition_models_;
121 std::vector<std::vector<boost::shared_ptr<RecognitionModel> > > points_explained_by_rm_;
134 indices_models_.clear ();
135 for (
size_t i = 0; i < recognition_models_.size (); i++)
138 mi.index_ =
static_cast<int> (i);
139 mi.model_ = recognition_models_[i];
140 indices_models_.push_back (mi);
143 std::sort (indices_models_.begin (), indices_models_.end (), sortModelsIndicesOp);
145 std::sort (recognition_models_.begin (), recognition_models_.end (), sortModelsOp);
150 updateGoodInformation (
int i)
152 for (
size_t k = 0; k < recognition_models_[i]->explained_.size (); k++)
155 for (
size_t kk = 0; kk < points_explained_by_rm_[recognition_models_[i]->explained_[k]].size (); kk++)
157 (points_explained_by_rm_[recognition_models_[i]->explained_[k]])[kk]->good_information_--;
158 (points_explained_by_rm_[recognition_models_[i]->explained_[k]])[kk]->bad_information_++;
180 #ifdef PCL_NO_PRECOMPILE
181 #include <pcl/recognition/impl/hv/greedy_verification.hpp>
Abstract class for hypotheses verification methods.
A greedy hypothesis verification method.
boost::shared_ptr< PointCloud< PointT > > Ptr
GreedyVerification(float reg=1.5f)
Constructor.