41 #ifndef PCL_SAMPLE_CONSENSUS_MODEL_REGISTRATION_H_
42 #define PCL_SAMPLE_CONSENSUS_MODEL_REGISTRATION_H_
44 #include <pcl/sample_consensus/eigen.h>
45 #include <pcl/sample_consensus/sac_model.h>
46 #include <pcl/sample_consensus/model_types.h>
47 #include <pcl/common/eigen.h>
48 #include <pcl/common/centroid.h>
57 template <
typename Po
intT>
69 typedef boost::shared_ptr<SampleConsensusModelRegistration>
Ptr;
93 const std::vector<int> &indices,
128 int target_size =
static_cast<int> (target->size ());
131 for (
int i = 0; i < target_size; ++i)
144 indices_tgt_.reset (
new std::vector<int> (indices_tgt));
154 Eigen::VectorXf &model_coefficients);
162 std::vector<double> &distances);
171 const double threshold,
172 std::vector<int> &inliers);
182 const double threshold);
191 const Eigen::VectorXf &model_coefficients,
192 Eigen::VectorXf &optimized_coefficients);
196 const Eigen::VectorXf &,
203 const Eigen::VectorXf &,
221 if (model_coefficients.size () != 16)
242 Eigen::Vector4f xyz_centroid;
243 Eigen::Matrix3f covariance_matrix = Eigen::Matrix3f::Zero ();
248 for (
int i = 0; i < 3; ++i)
249 for (
int j = 0; j < 3; ++j)
250 if (!pcl_isfinite (covariance_matrix.coeffRef (i, j)))
251 PCL_ERROR (
"[pcl::SampleConsensusModelRegistration::computeSampleDistanceThreshold] Covariance matrix has NaN values! Is the input cloud finite?\n");
253 Eigen::Vector3f eigen_values;
259 PCL_DEBUG (
"[pcl::SampleConsensusModelRegistration::setInputCloud] Estimated a sample selection distance threshold of: %f\n",
sample_dist_thresh_);
268 const std::vector<int> &indices)
271 Eigen::Vector4f xyz_centroid;
272 Eigen::Matrix3f covariance_matrix;
276 for (
int i = 0; i < 3; ++i)
277 for (
int j = 0; j < 3; ++j)
278 if (!pcl_isfinite (covariance_matrix.coeffRef (i, j)))
279 PCL_ERROR (
"[pcl::SampleConsensusModelRegistration::computeSampleDistanceThreshold] Covariance matrix has NaN values! Is the input cloud finite?\n");
281 Eigen::Vector3f eigen_values;
287 PCL_DEBUG (
"[pcl::SampleConsensusModelRegistration::setInputCloud] Estimated a sample selection distance threshold of: %f\n",
sample_dist_thresh_);
303 const std::vector<int> &indices_src,
305 const std::vector<int> &indices_tgt,
306 Eigen::VectorXf &transform);
314 for (
size_t i = 0; i <
indices_->size (); ++i)
330 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
334 #include <pcl/sample_consensus/impl/sac_model_registration.hpp>
336 #endif //#ifndef PCL_SAMPLE_CONSENSUS_MODEL_REGISTRATION_H_