Point Cloud Library (PCL)
1.7.0
Main Page
Modules
Namespaces
Classes
segmentation
include
pcl
segmentation
comparator.h
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Point Cloud Library (PCL) - www.pointclouds.org
5
* Copyright (c) 2010-2012, Willow Garage, Inc.
6
*
7
* All rights reserved.
8
*
9
* Redistribution and use in source and binary forms, with or without
10
* modification, are permitted provided that the following conditions
11
* are met:
12
*
13
* * Redistributions of source code must retain the above copyright
14
* notice, this list of conditions and the following disclaimer.
15
* * Redistributions in binary form must reproduce the above
16
* copyright notice, this list of conditions and the following
17
* disclaimer in the documentation and/or other materials provided
18
* with the distribution.
19
* * Neither the name of the copyright holder(s) nor the names of its
20
* contributors may be used to endorse or promote products derived
21
* from this software without specific prior written permission.
22
*
23
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34
* POSSIBILITY OF SUCH DAMAGE.
35
*
36
*
37
*
38
*/
39
40
#ifndef PCL_SEGMENTATION_COMPARATOR_H_
41
#define PCL_SEGMENTATION_COMPARATOR_H_
42
43
#include <pcl/point_cloud.h>
44
45
namespace
pcl
46
{
47
/** \brief Comparator is the base class for comparators that compare two points given some function.
48
* Currently intended for use with OrganizedConnectedComponentSegmentation
49
*
50
* \author Alex Trevor
51
*/
52
template
<
typename
Po
int
T>
53
class
Comparator
54
{
55
public
:
56
typedef
pcl::PointCloud<PointT>
PointCloud
;
57
typedef
typename
PointCloud::Ptr
PointCloudPtr
;
58
typedef
typename
PointCloud::ConstPtr
PointCloudConstPtr
;
59
60
typedef
boost::shared_ptr<Comparator<PointT> >
Ptr
;
61
typedef
boost::shared_ptr<const Comparator<PointT> >
ConstPtr
;
62
63
/** \brief Empty constructor for comparator. */
64
Comparator
() :
input_
()
65
{
66
}
67
68
/** \brief Empty destructor for comparator. */
69
virtual
70
~Comparator
()
71
{
72
}
73
74
/** \brief Set the input cloud for the comparator.
75
* \param[in] cloud the point cloud this comparator will operate on
76
*/
77
virtual
void
78
setInputCloud
(
const
PointCloudConstPtr
& cloud)
79
{
80
input_
= cloud;
81
}
82
83
/** \brief Get the input cloud this comparator operates on. */
84
virtual
PointCloudConstPtr
85
getInputCloud
()
const
86
{
87
return
(
input_
);
88
}
89
90
/** \brief Compares the two points in the input cloud designated by these two indices.
91
* This is pure virtual and must be implemented by subclasses with some comparison function.
92
* \param[in] idx1 the index of the first point.
93
* \param[in] idx2 the index of the second point.
94
*/
95
virtual
bool
96
compare
(
int
idx1,
int
idx2)
const
= 0;
97
98
protected
:
99
PointCloudConstPtr
input_
;
100
};
101
}
102
103
#endif //#ifndef _PCL_SEGMENTATION_COMPARATOR_H_