Point Cloud Library (PCL)  1.10.0
correspondence_estimation.h
1 /*
2  * Software License Agreement (BSD License)
3  *
4  * Point Cloud Library (PCL) - www.pointclouds.org
5  * Copyright (c) 2010-2011, Willow Garage, Inc.
6  * Copyright (c) 2012-, Open Perception, Inc.
7  *
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  *
14  * * Redistributions of source code must retain the above copyright
15  * notice, this list of conditions and the following disclaimer.
16  * * Redistributions in binary form must reproduce the above
17  * copyright notice, this list of conditions and the following
18  * disclaimer in the documentation and/or other materials provided
19  * with the distribution.
20  * * Neither the name of the copyright holder(s) nor the names of its
21  * contributors may be used to endorse or promote products derived
22  * from this software without specific prior written permission.
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35  * POSSIBILITY OF SUCH DAMAGE.
36  *
37  * $Id$
38  *
39  */
40 
41 #pragma once
42 
43 #include <string>
44 
45 #include <pcl/pcl_base.h>
46 #include <pcl/common/transforms.h>
47 #include <pcl/search/kdtree.h>
48 #include <pcl/pcl_macros.h>
49 
50 #include <pcl/registration/correspondence_types.h>
51 
52 namespace pcl
53 {
54  namespace registration
55  {
56  /** \brief Abstract @b CorrespondenceEstimationBase class.
57  * All correspondence estimation methods should inherit from this.
58  * \author Radu B. Rusu
59  * \ingroup registration
60  */
61  template <typename PointSource, typename PointTarget, typename Scalar = float>
62  class CorrespondenceEstimationBase: public PCLBase<PointSource>
63  {
64  public:
67 
68  // using PCLBase<PointSource>::initCompute;
73 
75  using KdTreePtr = typename KdTree::Ptr;
76 
78  using KdTreeReciprocalPtr = typename KdTree::Ptr;
79 
83 
87 
89 
90  /** \brief Empty constructor. */
92  : corr_name_ ("CorrespondenceEstimationBase")
93  , tree_ (new pcl::search::KdTree<PointTarget>)
94  , tree_reciprocal_ (new pcl::search::KdTree<PointSource>)
95  , target_ ()
98  , target_cloud_updated_ (true)
99  , source_cloud_updated_ (true)
100  , force_no_recompute_ (false)
102  {
103  }
104 
105  /** \brief Empty destructor */
107 
108  /** \brief Provide a pointer to the input source
109  * (e.g., the point cloud that we want to align to the target)
110  *
111  * \param[in] cloud the input point cloud source
112  */
113  inline void
115  {
116  source_cloud_updated_ = true;
118  input_fields_ = pcl::getFields<PointSource> ();
119  }
120 
121  /** \brief Get a pointer to the input point cloud dataset target. */
122  inline PointCloudSourceConstPtr const
124  {
125  return (input_ );
126  }
127 
128  /** \brief Provide a pointer to the input target
129  * (e.g., the point cloud that we want to align the input source to)
130  * \param[in] cloud the input point cloud target
131  */
132  inline void
134 
135  /** \brief Get a pointer to the input point cloud dataset target. */
136  inline PointCloudTargetConstPtr const
137  getInputTarget () { return (target_ ); }
138 
139 
140  /** \brief See if this rejector requires source normals */
141  virtual bool
143  { return (false); }
144 
145  /** \brief Abstract method for setting the source normals */
146  virtual void
148  {
149  PCL_WARN ("[pcl::registration::%s::setSourceNormals] This class does not require input source normals", getClassName ().c_str ());
150  }
151 
152  /** \brief See if this rejector requires target normals */
153  virtual bool
155  { return (false); }
156 
157  /** \brief Abstract method for setting the target normals */
158  virtual void
160  {
161  PCL_WARN ("[pcl::registration::%s::setTargetNormals] This class does not require input target normals", getClassName ().c_str ());
162  }
163 
164  /** \brief Provide a pointer to the vector of indices that represent the
165  * input source point cloud.
166  * \param[in] indices a pointer to the vector of indices
167  */
168  inline void
169  setIndicesSource (const IndicesPtr &indices)
170  {
171  setIndices (indices);
172  }
173 
174  /** \brief Get a pointer to the vector of indices used for the source dataset. */
175  inline IndicesPtr const
176  getIndicesSource () { return (indices_); }
177 
178  /** \brief Provide a pointer to the vector of indices that represent the input target point cloud.
179  * \param[in] indices a pointer to the vector of indices
180  */
181  inline void
182  setIndicesTarget (const IndicesPtr &indices)
183  {
184  target_cloud_updated_ = true;
185  target_indices_ = indices;
186  }
187 
188  /** \brief Get a pointer to the vector of indices used for the target dataset. */
189  inline IndicesPtr const
191 
192  /** \brief Provide a pointer to the search object used to find correspondences in
193  * the target cloud.
194  * \param[in] tree a pointer to the spatial search object.
195  * \param[in] force_no_recompute If set to true, this tree will NEVER be
196  * recomputed, regardless of calls to setInputTarget. Only use if you are
197  * confident that the tree will be set correctly.
198  */
199  inline void
201  bool force_no_recompute = false)
202  {
203  tree_ = tree;
204  if (force_no_recompute)
205  {
206  force_no_recompute_ = true;
207  }
208  // Since we just set a new tree, we need to check for updates
209  target_cloud_updated_ = true;
210  }
211 
212  /** \brief Get a pointer to the search method used to find correspondences in the
213  * target cloud. */
214  inline KdTreePtr
216  {
217  return (tree_);
218  }
219 
220  /** \brief Provide a pointer to the search object used to find correspondences in
221  * the source cloud (usually used by reciprocal correspondence finding).
222  * \param[in] tree a pointer to the spatial search object.
223  * \param[in] force_no_recompute If set to true, this tree will NEVER be
224  * recomputed, regardless of calls to setInputSource. Only use if you are
225  * extremely confident that the tree will be set correctly.
226  */
227  inline void
229  bool force_no_recompute = false)
230  {
231  tree_reciprocal_ = tree;
232  if ( force_no_recompute )
233  {
235  }
236  // Since we just set a new tree, we need to check for updates
237  source_cloud_updated_ = true;
238  }
239 
240  /** \brief Get a pointer to the search method used to find correspondences in the
241  * source cloud. */
242  inline KdTreeReciprocalPtr
244  {
245  return (tree_reciprocal_);
246  }
247 
248  /** \brief Determine the correspondences between input and target cloud.
249  * \param[out] correspondences the found correspondences (index of query point, index of target point, distance)
250  * \param[in] max_distance maximum allowed distance between correspondences
251  */
252  virtual void
254  double max_distance = std::numeric_limits<double>::max ()) = 0;
255 
256  /** \brief Determine the reciprocal correspondences between input and target cloud.
257  * A correspondence is considered reciprocal if both Src_i has Tgt_i as a
258  * correspondence, and Tgt_i has Src_i as one.
259  *
260  * \param[out] correspondences the found correspondences (index of query and target point, distance)
261  * \param[in] max_distance maximum allowed distance between correspondences
262  */
263  virtual void
265  double max_distance = std::numeric_limits<double>::max ()) = 0;
266 
267  /** \brief Provide a boost shared pointer to the PointRepresentation to be used
268  * when searching for nearest neighbors.
269  *
270  * \param[in] point_representation the PointRepresentation to be used by the
271  * k-D tree for nearest neighbor search
272  */
273  inline void
275  {
276  point_representation_ = point_representation;
277  }
278 
279  /** \brief Clone and cast to CorrespondenceEstimationBase */
281 
282  protected:
283  /** \brief The correspondence estimation method name. */
284  std::string corr_name_;
285 
286  /** \brief A pointer to the spatial search object used for the target dataset. */
288 
289  /** \brief A pointer to the spatial search object used for the source dataset. */
291 
292 
293 
294  /** \brief The input point cloud dataset target. */
296 
297  /** \brief The target point cloud dataset indices. */
299 
300  /** \brief The point representation used (internal). */
302 
303  /** \brief The transformed input source point cloud dataset. */
305 
306  /** \brief The types of input point fields available. */
307  std::vector<pcl::PCLPointField> input_fields_;
308 
309  /** \brief Abstract class get name method. */
310  inline const std::string&
311  getClassName () const { return (corr_name_); }
312 
313  /** \brief Internal computation initialization. */
314  bool
315  initCompute ();
316 
317  /** \brief Internal computation initialization for reciprocal correspondences. */
318  bool
320 
321  /** \brief Variable that stores whether we have a new target cloud, meaning we need to pre-process it again.
322  * This way, we avoid rebuilding the kd-tree for the target cloud every time the determineCorrespondences () method
323  * is called. */
325  /** \brief Variable that stores whether we have a new source cloud, meaning we need to pre-process it again.
326  * This way, we avoid rebuilding the reciprocal kd-tree for the source cloud every time the determineCorrespondences () method
327  * is called. */
329  /** \brief A flag which, if set, means the tree operating on the target cloud
330  * will never be recomputed*/
332 
333  /** \brief A flag which, if set, means the tree operating on the source cloud
334  * will never be recomputed*/
336 
337  };
338 
339  /** \brief @b CorrespondenceEstimation represents the base class for
340  * determining correspondences between target and query point
341  * sets/features.
342  *
343  * Code example:
344  *
345  * \code
346  * pcl::PointCloud<pcl::PointXYZRGBA>::Ptr source, target;
347  * // ... read or fill in source and target
348  * pcl::CorrespondenceEstimation<pcl::PointXYZ, pcl::PointXYZ> est;
349  * est.setInputSource (source);
350  * est.setInputTarget (target);
351  *
352  * pcl::Correspondences all_correspondences;
353  * // Determine all reciprocal correspondences
354  * est.determineReciprocalCorrespondences (all_correspondences);
355  * \endcode
356  *
357  * \author Radu B. Rusu, Michael Dixon, Dirk Holz
358  * \ingroup registration
359  */
360  template <typename PointSource, typename PointTarget, typename Scalar = float>
361  class CorrespondenceEstimation : public CorrespondenceEstimationBase<PointSource, PointTarget, Scalar>
362  {
363  public:
366 
381 
383  using KdTreePtr = typename KdTree::Ptr;
384 
388 
392 
394 
395  /** \brief Empty constructor. */
397  {
398  corr_name_ = "CorrespondenceEstimation";
399  }
400 
401  /** \brief Empty destructor */
403 
404  /** \brief Determine the correspondences between input and target cloud.
405  * \param[out] correspondences the found correspondences (index of query point, index of target point, distance)
406  * \param[in] max_distance maximum allowed distance between correspondences
407  */
408  void
410  double max_distance = std::numeric_limits<double>::max ()) override;
411 
412  /** \brief Determine the reciprocal correspondences between input and target cloud.
413  * A correspondence is considered reciprocal if both Src_i has Tgt_i as a
414  * correspondence, and Tgt_i has Src_i as one.
415  *
416  * \param[out] correspondences the found correspondences (index of query and target point, distance)
417  * \param[in] max_distance maximum allowed distance between correspondences
418  */
419  void
421  double max_distance = std::numeric_limits<double>::max ()) override;
422 
423 
424  /** \brief Clone and cast to CorrespondenceEstimationBase */
426  clone () const override
427  {
429  return (copy);
430  }
431  };
432  }
433 }
434 
435 #include <pcl/registration/impl/correspondence_estimation.hpp>
pcl::registration::CorrespondenceEstimationBase::getIndicesTarget
const IndicesPtr getIndicesTarget()
Get a pointer to the vector of indices used for the target dataset.
Definition: correspondence_estimation.h:190
pcl_macros.h
Defines all the PCL and non-PCL macros used.
pcl
This file defines compatibility wrappers for low level I/O functions.
Definition: convolution.h:45
pcl::IndicesPtr
shared_ptr< Indices > IndicesPtr
Definition: pcl_base.h:61
pcl::PCLBase< PointSource >::input_
PointCloudConstPtr input_
The input point cloud dataset.
Definition: pcl_base.h:151
pcl::registration::CorrespondenceEstimationBase::getInputSource
const PointCloudSourceConstPtr getInputSource()
Get a pointer to the input point cloud dataset target.
Definition: correspondence_estimation.h:123
pcl::registration::CorrespondenceEstimationBase::requiresSourceNormals
virtual bool requiresSourceNormals() const
See if this rejector requires source normals.
Definition: correspondence_estimation.h:142
pcl::registration::CorrespondenceEstimationBase::setInputSource
void setInputSource(const PointCloudSourceConstPtr &cloud)
Provide a pointer to the input source (e.g., the point cloud that we want to align to the target)
Definition: correspondence_estimation.h:114
pcl::registration::CorrespondenceEstimationBase::PointCloudTargetPtr
typename PointCloudTarget::Ptr PointCloudTargetPtr
Definition: correspondence_estimation.h:85
pcl::registration::CorrespondenceEstimationBase::KdTreeReciprocalPtr
typename KdTree::Ptr KdTreeReciprocalPtr
Definition: correspondence_estimation.h:78
pcl::registration::CorrespondenceEstimationBase::setInputTarget
void setInputTarget(const PointCloudTargetConstPtr &cloud)
Provide a pointer to the input target (e.g., the point cloud that we want to align the input source t...
Definition: correspondence_estimation.hpp:48
pcl::registration::CorrespondenceEstimationBase::initCompute
bool initCompute()
Internal computation initialization.
Definition: correspondence_estimation.hpp:67
pcl::PCLBase
PCL base class.
Definition: pcl_base.h:69
pcl::registration::CorrespondenceEstimationBase
Abstract CorrespondenceEstimationBase class.
Definition: correspondence_estimation.h:62
pcl::registration::CorrespondenceEstimationBase::getSearchMethodTarget
KdTreePtr getSearchMethodTarget() const
Get a pointer to the search method used to find correspondences in the target cloud.
Definition: correspondence_estimation.h:215
pcl::registration::CorrespondenceEstimationBase::tree_reciprocal_
KdTreeReciprocalPtr tree_reciprocal_
A pointer to the spatial search object used for the source dataset.
Definition: correspondence_estimation.h:290
pcl::PointCloud< PointSource >
pcl::registration::CorrespondenceEstimationBase::getSearchMethodSource
KdTreeReciprocalPtr getSearchMethodSource() const
Get a pointer to the search method used to find correspondences in the source cloud.
Definition: correspondence_estimation.h:243
pcl::PCLBase::setInputCloud
virtual void setInputCloud(const PointCloudConstPtr &cloud)
Provide a pointer to the input dataset.
Definition: pcl_base.hpp:65
pcl::registration::CorrespondenceEstimationBase::determineReciprocalCorrespondences
virtual void determineReciprocalCorrespondences(pcl::Correspondences &correspondences, double max_distance=std::numeric_limits< double >::max())=0
Determine the reciprocal correspondences between input and target cloud.
pcl::registration::CorrespondenceEstimationBase::PointCloudTargetConstPtr
typename PointCloudTarget::ConstPtr PointCloudTargetConstPtr
Definition: correspondence_estimation.h:86
pcl::search::KdTree::Ptr
shared_ptr< KdTree< PointT, Tree > > Ptr
Definition: kdtree.h:78
pcl::registration::CorrespondenceEstimationBase::clone
virtual CorrespondenceEstimationBase< PointSource, PointTarget, Scalar >::Ptr clone() const =0
Clone and cast to CorrespondenceEstimationBase.
pcl::registration::CorrespondenceEstimationBase::setIndicesTarget
void setIndicesTarget(const IndicesPtr &indices)
Provide a pointer to the vector of indices that represent the input target point cloud.
Definition: correspondence_estimation.h:182
pcl::registration::CorrespondenceEstimationBase::PointCloudSourcePtr
typename PointCloudSource::Ptr PointCloudSourcePtr
Definition: correspondence_estimation.h:81
pcl::registration::CorrespondenceEstimationBase::initComputeReciprocal
bool initComputeReciprocal()
Internal computation initialization for reciprocal correspondences.
Definition: correspondence_estimation.hpp:92
pcl::registration::CorrespondenceEstimationBase::point_representation_
PointRepresentationConstPtr point_representation_
The point representation used (internal).
Definition: correspondence_estimation.h:301
pcl::registration::CorrespondenceEstimationBase::input_transformed_
PointCloudTargetPtr input_transformed_
The transformed input source point cloud dataset.
Definition: correspondence_estimation.h:304
pcl::registration::CorrespondenceEstimationBase::getClassName
const std::string & getClassName() const
Abstract class get name method.
Definition: correspondence_estimation.h:311
pcl::registration::CorrespondenceEstimation::~CorrespondenceEstimation
~CorrespondenceEstimation()
Empty destructor.
Definition: correspondence_estimation.h:402
pcl::registration::CorrespondenceEstimationBase::target_
PointCloudTargetConstPtr target_
The input point cloud dataset target.
Definition: correspondence_estimation.h:295
pcl::registration::CorrespondenceEstimationBase::getInputTarget
const PointCloudTargetConstPtr getInputTarget()
Get a pointer to the input point cloud dataset target.
Definition: correspondence_estimation.h:137
pcl::registration::CorrespondenceEstimationBase::setPointRepresentation
void setPointRepresentation(const PointRepresentationConstPtr &point_representation)
Provide a boost shared pointer to the PointRepresentation to be used when searching for nearest neigh...
Definition: correspondence_estimation.h:274
pcl::PCLPointCloud2::ConstPtr
shared_ptr< const ::pcl::PCLPointCloud2 > ConstPtr
Definition: PCLPointCloud2.h:39
pcl::registration::CorrespondenceEstimationBase::Ptr
shared_ptr< CorrespondenceEstimationBase< PointSource, PointTarget, Scalar > > Ptr
Definition: correspondence_estimation.h:65
pcl::registration::CorrespondenceEstimationBase::ConstPtr
shared_ptr< const CorrespondenceEstimationBase< PointSource, PointTarget, Scalar > > ConstPtr
Definition: correspondence_estimation.h:66
pcl::search::KdTree::PointRepresentationConstPtr
typename PointRepresentation< PointT >::ConstPtr PointRepresentationConstPtr
Definition: kdtree.h:83
pcl::registration::CorrespondenceEstimation::CorrespondenceEstimation
CorrespondenceEstimation()
Empty constructor.
Definition: correspondence_estimation.h:396
pcl::registration::CorrespondenceEstimationBase::setSearchMethodTarget
void setSearchMethodTarget(const KdTreePtr &tree, bool force_no_recompute=false)
Provide a pointer to the search object used to find correspondences in the target cloud.
Definition: correspondence_estimation.h:200
pcl::search::KdTree
search::KdTree is a wrapper class which inherits the pcl::KdTree class for performing search function...
Definition: kdtree.h:61
pcl::PCLBase< PointSource >::setIndices
virtual void setIndices(const IndicesPtr &indices)
Provide a pointer to the vector of indices that represents the input data.
Definition: pcl_base.hpp:72
pcl::registration::CorrespondenceEstimation::determineCorrespondences
void determineCorrespondences(pcl::Correspondences &correspondences, double max_distance=std::numeric_limits< double >::max()) override
Determine the correspondences between input and target cloud.
Definition: correspondence_estimation.hpp:113
pcl::registration::CorrespondenceEstimationBase::CorrespondenceEstimationBase
CorrespondenceEstimationBase()
Empty constructor.
Definition: correspondence_estimation.h:91
pcl::registration::CorrespondenceEstimation
CorrespondenceEstimation represents the base class for determining correspondences between target and...
Definition: correspondence_estimation.h:361
pcl::registration::CorrespondenceEstimationBase::corr_name_
std::string corr_name_
The correspondence estimation method name.
Definition: correspondence_estimation.h:284
pcl::registration::CorrespondenceEstimation::clone
CorrespondenceEstimationBase< PointSource, PointTarget, Scalar >::Ptr clone() const override
Clone and cast to CorrespondenceEstimationBase.
Definition: correspondence_estimation.h:426
pcl::registration::CorrespondenceEstimationBase::KdTreePtr
typename KdTree::Ptr KdTreePtr
Definition: correspondence_estimation.h:75
pcl::registration::CorrespondenceEstimationBase::requiresTargetNormals
virtual bool requiresTargetNormals() const
See if this rejector requires target normals.
Definition: correspondence_estimation.h:154
pcl::registration::CorrespondenceEstimationBase::PointRepresentationConstPtr
typename KdTree::PointRepresentationConstPtr PointRepresentationConstPtr
Definition: correspondence_estimation.h:88
pcl::registration::CorrespondenceEstimationBase::setTargetNormals
virtual void setTargetNormals(pcl::PCLPointCloud2::ConstPtr)
Abstract method for setting the target normals.
Definition: correspondence_estimation.h:159
pcl::registration::CorrespondenceEstimationBase::setIndicesSource
void setIndicesSource(const IndicesPtr &indices)
Provide a pointer to the vector of indices that represent the input source point cloud.
Definition: correspondence_estimation.h:169
pcl::registration::CorrespondenceEstimationBase::target_cloud_updated_
bool target_cloud_updated_
Variable that stores whether we have a new target cloud, meaning we need to pre-process it again.
Definition: correspondence_estimation.h:324
pcl::PointCloud< PointSource >::Ptr
shared_ptr< PointCloud< PointSource > > Ptr
Definition: point_cloud.h:415
pcl::PCLBase< PointSource >::indices_
IndicesPtr indices_
A pointer to the vector of point indices to use.
Definition: pcl_base.h:154
pcl::registration::CorrespondenceEstimationBase::getIndicesSource
const IndicesPtr getIndicesSource()
Get a pointer to the vector of indices used for the source dataset.
Definition: correspondence_estimation.h:176
pcl::registration::CorrespondenceEstimationBase::force_no_recompute_
bool force_no_recompute_
A flag which, if set, means the tree operating on the target cloud will never be recomputed.
Definition: correspondence_estimation.h:331
pcl::registration::CorrespondenceEstimationBase::target_indices_
IndicesPtr target_indices_
The target point cloud dataset indices.
Definition: correspondence_estimation.h:298
pcl::registration::CorrespondenceEstimationBase::tree_
KdTreePtr tree_
A pointer to the spatial search object used for the target dataset.
Definition: correspondence_estimation.h:287
pcl::registration::CorrespondenceEstimationBase::PointCloudSourceConstPtr
typename PointCloudSource::ConstPtr PointCloudSourceConstPtr
Definition: correspondence_estimation.h:82
pcl::PointCloud< PointSource >::ConstPtr
shared_ptr< const PointCloud< PointSource > > ConstPtr
Definition: point_cloud.h:416
pcl::registration::CorrespondenceEstimationBase::setSourceNormals
virtual void setSourceNormals(pcl::PCLPointCloud2::ConstPtr)
Abstract method for setting the source normals.
Definition: correspondence_estimation.h:147
pcl::registration::CorrespondenceEstimationBase::source_cloud_updated_
bool source_cloud_updated_
Variable that stores whether we have a new source cloud, meaning we need to pre-process it again.
Definition: correspondence_estimation.h:328
pcl::registration::CorrespondenceEstimationBase::determineCorrespondences
virtual void determineCorrespondences(pcl::Correspondences &correspondences, double max_distance=std::numeric_limits< double >::max())=0
Determine the correspondences between input and target cloud.
pcl::registration::CorrespondenceEstimationBase::input_fields_
std::vector< pcl::PCLPointField > input_fields_
The types of input point fields available.
Definition: correspondence_estimation.h:307
pcl::Correspondences
std::vector< pcl::Correspondence, Eigen::aligned_allocator< pcl::Correspondence > > Correspondences
Definition: correspondence.h:88
pcl::registration::CorrespondenceEstimationBase::force_no_recompute_reciprocal_
bool force_no_recompute_reciprocal_
A flag which, if set, means the tree operating on the source cloud will never be recomputed.
Definition: correspondence_estimation.h:335
pcl::registration::CorrespondenceEstimation::determineReciprocalCorrespondences
void determineReciprocalCorrespondences(pcl::Correspondences &correspondences, double max_distance=std::numeric_limits< double >::max()) override
Determine the reciprocal correspondences between input and target cloud.
Definition: correspondence_estimation.hpp:171
pcl::registration::CorrespondenceEstimationBase::setSearchMethodSource
void setSearchMethodSource(const KdTreeReciprocalPtr &tree, bool force_no_recompute=false)
Provide a pointer to the search object used to find correspondences in the source cloud (usually used...
Definition: correspondence_estimation.h:228
pcl::shared_ptr
boost::shared_ptr< T > shared_ptr
Alias for boost::shared_ptr.
Definition: pcl_macros.h:90
pcl::registration::CorrespondenceEstimationBase::~CorrespondenceEstimationBase
~CorrespondenceEstimationBase()
Empty destructor.
Definition: correspondence_estimation.h:106