Point Cloud Library (PCL)  1.9.1-dev
correspondence_sorting.h
1 /*
2  * Software License Agreement (BSD License)
3  *
4  * Point Cloud Library (PCL) - www.pointclouds.org
5  * Copyright (c) 2010, 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 #if defined __GNUC__
44 # pragma GCC system_header
45 #endif
46 
47 #include <pcl/registration/correspondence_types.h>
48 
49 namespace pcl
50 {
51  namespace registration
52  {
53  /** @b sortCorrespondencesByQueryIndex : a functor for sorting correspondences by query index
54  * \author Dirk Holz
55  * \ingroup registration
56  */
58  {
61  using result_type = bool;
62  bool
64  {
65  return (a.index_query < b.index_query);
66  }
67  };
68 
69  /** @b sortCorrespondencesByMatchIndex : a functor for sorting correspondences by match index
70  * \author Dirk Holz
71  * \ingroup registration
72  */
74  {
77  using result_type = bool;
78  bool
80  {
81  return (a.index_match < b.index_match);
82  }
83  };
84 
85  /** @b sortCorrespondencesByDistance : a functor for sorting correspondences by distance
86  * \author Dirk Holz
87  * \ingroup registration
88  */
90  {
93  using result_type = bool;
94  bool
96  {
97  return (a.distance < b.distance);
98  }
99  };
100 
101  /** @b sortCorrespondencesByQueryIndexAndDistance : a functor for sorting correspondences by query index _and_ distance
102  * \author Dirk Holz
103  * \ingroup registration
104  */
106  {
109  using result_type = bool;
110  inline bool
112  {
113  if (a.index_query < b.index_query)
114  return (true);
115  else if ( (a.index_query == b.index_query) && (a.distance < b.distance) )
116  return (true);
117  return (false);
118  }
119  };
120 
121  /** @b sortCorrespondencesByMatchIndexAndDistance : a functor for sorting correspondences by match index _and_ distance
122  * \author Dirk Holz
123  * \ingroup registration
124  */
126  {
129  using result_type = bool;
130  inline bool
132  {
133  if (a.index_match < b.index_match)
134  return (true);
135  else if ( (a.index_match == b.index_match) && (a.distance < b.distance) )
136  return (true);
137  return (false);
138  }
139  };
140 
141  }
142 }
bool operator()(pcl::Correspondence a, pcl::Correspondence b)
int index_match
Index of the matching (target) point.
bool operator()(pcl::Correspondence a, pcl::Correspondence b)
sortCorrespondencesByMatchIndexAndDistance : a functor for sorting correspondences by match index and...
This file defines compatibility wrappers for low level I/O functions.
Definition: convolution.h:44
bool operator()(pcl::Correspondence a, pcl::Correspondence b)
Correspondence represents a match between two entities (e.g., points, descriptors, etc).
int index_query
Index of the query (source) point.
sortCorrespondencesByDistance : a functor for sorting correspondences by distance ...
bool operator()(pcl::Correspondence a, pcl::Correspondence b)
sortCorrespondencesByQueryIndex : a functor for sorting correspondences by query index ...
sortCorrespondencesByMatchIndex : a functor for sorting correspondences by match index ...
sortCorrespondencesByQueryIndexAndDistance : a functor for sorting correspondences by query index and...
bool operator()(pcl::Correspondence a, pcl::Correspondence b)