40 #include <pcl/recognition/hv/hypotheses_verification.h>
52 template<
typename ModelT,
typename SceneT>
65 class RecognitionModel
68 std::vector<int> explained_;
71 int good_information_;
76 using RecognitionModelPtr = std::shared_ptr<RecognitionModel>;
81 struct sortModelsClass
84 operator() (
const RecognitionModelPtr & n1,
const RecognitionModelPtr & n2)
86 float val1 =
static_cast<float>(n1->good_information_) -
static_cast<float>(n1->bad_information_) * n1->regularizer_;
87 float val2 =
static_cast<float>(n2->good_information_) -
static_cast<float>(n2->bad_information_) * n2->regularizer_;
99 RecognitionModelPtr model_;
105 struct sortModelIndicesClass
108 operator() (
const modelIndices & n1,
const modelIndices & n2)
110 float val1 =
static_cast<float>(n1.model_->good_information_) -
static_cast<float>(n1.model_->bad_information_) * n1.model_->regularizer_;
111 float val2 =
static_cast<float>(n2.model_->good_information_) -
static_cast<float>(n2.model_->bad_information_) * n2.model_->regularizer_;
114 } sortModelsIndicesOp;
117 std::vector<modelIndices> indices_models_;
120 std::vector<RecognitionModelPtr> recognition_models_;
123 std::vector<std::vector<RecognitionModelPtr>> points_explained_by_rm_;
136 indices_models_.clear ();
137 for (std::size_t i = 0; i < recognition_models_.size (); i++)
140 mi.index_ =
static_cast<int> (i);
141 mi.model_ = recognition_models_[i];
142 indices_models_.push_back (mi);
145 std::sort (indices_models_.begin (), indices_models_.end (), sortModelsIndicesOp);
147 std::sort (recognition_models_.begin (), recognition_models_.end (), sortModelsOp);
152 updateGoodInformation (
int i)
154 for (std::size_t k = 0; k < recognition_models_[i]->explained_.size (); k++)
157 for (std::size_t kk = 0; kk < points_explained_by_rm_[recognition_models_[i]->explained_[k]].size (); kk++)
159 (points_explained_by_rm_[recognition_models_[i]->explained_[k]])[kk]->good_information_--;
160 (points_explained_by_rm_[recognition_models_[i]->explained_[k]])[kk]->bad_information_++;
182 #ifdef PCL_NO_PRECOMPILE
183 #include <pcl/recognition/impl/hv/greedy_verification.hpp>
A greedy hypothesis verification method.
GreedyVerification(float reg=1.5f)
Constructor.
Abstract class for hypotheses verification methods.
shared_ptr< PointCloud< PointT > > Ptr
Defines all the PCL and non-PCL macros used.