Point Cloud Library (PCL)
1.11.1-dev
|
43 #include <pcl/PCLPointField.h>
45 #include <pcl/register_point_struct.h>
47 #include <boost/mpl/and.hpp>
48 #include <boost/mpl/bool.hpp>
49 #include <boost/mpl/contains.hpp>
50 #include <boost/mpl/fold.hpp>
51 #include <boost/mpl/or.hpp>
52 #include <boost/mpl/placeholders.hpp>
53 #include <boost/mpl/vector.hpp>
60 #include <type_traits>
63 #define PCL_POINT_TYPES \
73 (pcl::InterestPoint) \
77 (pcl::PointXYZRGBNormal) \
78 (pcl::PointXYZINormal) \
79 (pcl::PointXYZLNormal) \
80 (pcl::PointWithRange) \
81 (pcl::PointWithViewpoint) \
82 (pcl::MomentInvariants) \
83 (pcl::PrincipalRadiiRSD) \
85 (pcl::PrincipalCurvatures) \
86 (pcl::PFHSignature125) \
87 (pcl::PFHRGBSignature250) \
89 (pcl::CPPFSignature) \
90 (pcl::PPFRGBSignature) \
91 (pcl::NormalBasedSignature12) \
92 (pcl::FPFHSignature33) \
93 (pcl::VFHSignature308) \
94 (pcl::GASDSignature512) \
95 (pcl::GASDSignature984) \
96 (pcl::GASDSignature7992) \
97 (pcl::GRSDSignature21) \
98 (pcl::ESFSignature640) \
99 (pcl::BRISKSignature512) \
101 (pcl::IntensityGradient) \
102 (pcl::PointWithScale) \
104 (pcl::ShapeContext1980) \
105 (pcl::UniqueShapeContext1960) \
109 (pcl::ReferenceFrame) \
113 #define PCL_RGB_POINT_TYPES \
114 (pcl::PointXYZRGBA) \
116 (pcl::PointXYZRGBL) \
117 (pcl::PointXYZRGBNormal) \
121 #define PCL_XYZ_POINT_TYPES \
125 (pcl::PointXYZRGBA) \
127 (pcl::PointXYZRGBL) \
129 (pcl::InterestPoint) \
131 (pcl::PointXYZRGBNormal) \
132 (pcl::PointXYZINormal) \
133 (pcl::PointXYZLNormal) \
134 (pcl::PointWithRange) \
135 (pcl::PointWithViewpoint) \
136 (pcl::PointWithScale) \
141 #define PCL_XYZL_POINT_TYPES \
143 (pcl::PointXYZRGBL) \
144 (pcl::PointXYZLNormal)
147 #define PCL_NORMAL_POINT_TYPES \
150 (pcl::PointXYZRGBNormal) \
151 (pcl::PointXYZINormal) \
152 (pcl::PointXYZLNormal) \
156 #define PCL_FEATURE_POINT_TYPES \
157 (pcl::PFHSignature125) \
158 (pcl::PFHRGBSignature250) \
159 (pcl::PPFSignature) \
160 (pcl::CPPFSignature) \
161 (pcl::PPFRGBSignature) \
162 (pcl::NormalBasedSignature12) \
163 (pcl::FPFHSignature33) \
164 (pcl::VFHSignature308) \
165 (pcl::GASDSignature512) \
166 (pcl::GASDSignature984) \
167 (pcl::GASDSignature7992) \
168 (pcl::GRSDSignature21) \
169 (pcl::ESFSignature640) \
170 (pcl::BRISKSignature512) \
178 using Array4fMap = Eigen::Map<Eigen::Array4f, Eigen::Aligned>;
185 using Vector3c = Eigen::Matrix<std::uint8_t, 3, 1>;
188 using Vector4c = Eigen::Matrix<std::uint8_t, 4, 1>;
192 #define PCL_ADD_UNION_POINT4D \
193 union EIGEN_ALIGN16 { \
202 #define PCL_ADD_EIGEN_MAPS_POINT4D \
203 inline pcl::Vector3fMap getVector3fMap () { return (pcl::Vector3fMap (data)); } \
204 inline pcl::Vector3fMapConst getVector3fMap () const { return (pcl::Vector3fMapConst (data)); } \
205 inline pcl::Vector4fMap getVector4fMap () { return (pcl::Vector4fMap (data)); } \
206 inline pcl::Vector4fMapConst getVector4fMap () const { return (pcl::Vector4fMapConst (data)); } \
207 inline pcl::Array3fMap getArray3fMap () { return (pcl::Array3fMap (data)); } \
208 inline pcl::Array3fMapConst getArray3fMap () const { return (pcl::Array3fMapConst (data)); } \
209 inline pcl::Array4fMap getArray4fMap () { return (pcl::Array4fMap (data)); } \
210 inline pcl::Array4fMapConst getArray4fMap () const { return (pcl::Array4fMapConst (data)); }
212 #define PCL_ADD_POINT4D \
213 PCL_ADD_UNION_POINT4D \
214 PCL_ADD_EIGEN_MAPS_POINT4D
216 #define PCL_ADD_UNION_NORMAL4D \
217 union EIGEN_ALIGN16 { \
227 #define PCL_ADD_EIGEN_MAPS_NORMAL4D \
228 inline pcl::Vector3fMap getNormalVector3fMap () { return (pcl::Vector3fMap (data_n)); } \
229 inline pcl::Vector3fMapConst getNormalVector3fMap () const { return (pcl::Vector3fMapConst (data_n)); } \
230 inline pcl::Vector4fMap getNormalVector4fMap () { return (pcl::Vector4fMap (data_n)); } \
231 inline pcl::Vector4fMapConst getNormalVector4fMap () const { return (pcl::Vector4fMapConst (data_n)); }
233 #define PCL_ADD_NORMAL4D \
234 PCL_ADD_UNION_NORMAL4D \
235 PCL_ADD_EIGEN_MAPS_NORMAL4D
237 #define PCL_ADD_UNION_RGB \
251 std::uint32_t rgba; \
254 #define PCL_ADD_EIGEN_MAPS_RGB \
255 inline Eigen::Vector3i getRGBVector3i () { return (Eigen::Vector3i (r, g, b)); } \
256 inline const Eigen::Vector3i getRGBVector3i () const { return (Eigen::Vector3i (r, g, b)); } \
257 inline Eigen::Vector4i getRGBVector4i () { return (Eigen::Vector4i (r, g, b, a)); } \
258 inline const Eigen::Vector4i getRGBVector4i () const { return (Eigen::Vector4i (r, g, b, a)); } \
259 inline Eigen::Vector4i getRGBAVector4i () { return (Eigen::Vector4i (r, g, b, a)); } \
260 inline const Eigen::Vector4i getRGBAVector4i () const { return (Eigen::Vector4i (r, g, b, a)); } \
261 inline pcl::Vector3cMap getBGRVector3cMap () { return (pcl::Vector3cMap (reinterpret_cast<std::uint8_t*> (&rgba))); } \
262 inline pcl::Vector3cMapConst getBGRVector3cMap () const { return (pcl::Vector3cMapConst (reinterpret_cast<const std::uint8_t*> (&rgba))); } \
263 inline pcl::Vector4cMap getBGRAVector4cMap () { return (pcl::Vector4cMap (reinterpret_cast<std::uint8_t*> (&rgba))); } \
264 inline pcl::Vector4cMapConst getBGRAVector4cMap () const { return (pcl::Vector4cMapConst (reinterpret_cast<const std::uint8_t*> (&rgba))); }
266 #define PCL_ADD_RGB \
268 PCL_ADD_EIGEN_MAPS_RGB
270 #define PCL_ADD_INTENSITY \
276 #define PCL_ADD_INTENSITY_8U \
279 std::uint8_t intensity; \
282 #define PCL_ADD_INTENSITY_32U \
285 std::uint32_t intensity; \
308 x = _x; y = _y; z = _z;
354 inline RGB (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
356 r = _r; g = _g; b = _b;
360 friend std::ostream&
operator << (std::ostream& os,
const RGB& p);
377 intensity = p.intensity;
382 intensity = _intensity;
403 intensity = p.intensity;
408 intensity = _intensity;
411 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101
412 operator unsigned char()
const
435 intensity = p.intensity;
440 intensity = _intensity;
468 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
474 inline PointXYZI (
float _x,
float _y,
float _z,
float _intensity = 0.f)
476 x = _x; y = _y; z = _z;
497 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
503 inline PointXYZL (
float _x,
float _y,
float _z, std::uint32_t _label = 0)
505 x = _x; y = _y; z = _z;
557 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
563 inline PointXYZRGBA (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a):
570 std::uint8_t _g, std::uint8_t _b, std::uint8_t _a)
572 x = _x; y = _y; z = _z;
574 r = _r; g = _g; b = _b; a = _a;
632 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
638 inline PointXYZRGB (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
645 std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
647 x = _x; y = _y; z = _z;
649 r = _r; g = _g; b = _b;
663 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
671 inline PointXYZRGBL (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
678 std::uint8_t _r, std::uint8_t _g, std::uint8_t _b,
679 std::uint32_t _label = 0)
681 x = _x; y = _y; z = _z;
683 r = _r; g = _g; b = _b;
714 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
715 h = p.
h; s = p.
s; v = p.
v;
726 float _h,
float _s,
float _v)
728 x = _x; y = _y; z = _z;
730 h = _h; s = _s; v = _v;
816 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z;
821 inline Normal (
float _curvature = 0.f):
Normal (0.f, 0.f, 0.f, _curvature) {}
823 inline Normal (
float n_x,
float n_y,
float n_z,
float _curvature = 0.f)
825 normal_x = n_x; normal_y = n_y; normal_z = n_z;
849 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z;
855 inline Axis (
float n_x,
float n_y,
float n_z)
857 normal_x = n_x; normal_y = n_y; normal_z = n_z;
889 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
890 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
899 inline PointNormal (
float _x,
float _y,
float _z,
float n_x,
float n_y,
float n_z,
float _curvature = 0.f)
901 x = _x; y = _y; z = _z;
903 normal_x = n_x; normal_y = n_y; normal_z = n_z;
963 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
964 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
978 inline PointXYZRGBNormal (
float _x,
float _y,
float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
981 inline PointXYZRGBNormal (
float _x,
float _y,
float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b,
982 float n_x,
float n_y,
float n_z,
float _curvature = 0.f)
984 x = _x; y = _y; z = _z;
986 r = _r; g = _g; b = _b;
988 normal_x = n_x; normal_y = n_y; normal_z = n_z;
1020 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1021 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
1032 float n_x,
float n_y,
float n_z,
float _curvature = 0.f)
1034 x = _x; y = _y; z = _z;
1037 normal_x = n_x; normal_y = n_y; normal_z = n_z;
1070 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1071 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
1082 float n_x,
float n_y,
float n_z,
float _curvature = 0.f)
1084 x = _x; y = _y; z = _z;
1087 normal_x = n_x; normal_y = n_y; normal_z = n_z;
1120 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1128 x = _x; y = _y; z = _z;
1161 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1171 x = _x; y = _y; z = _z;
1173 vp_x = _vp_x; vp_y = _vp_y; vp_z = _vp_z;
1217 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101
1218 operator unsigned char()
const
1299 inline PPFSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _alpha = 0.f):
1315 CPPFSignature (0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, _alpha) {}
1317 inline CPPFSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _f5,
float _f6,
1318 float _f7,
float _f8,
float _f9,
float _f10,
float _alpha = 0.f):
1319 f1 (_f1),
f2 (_f2),
f3 (_f3),
f4 (_f4),
f5 (_f5),
f6 (_f6),
1340 inline PPFRGBSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _alpha,
float _r,
float _g,
float _b):
1439 inline const Eigen::Map<const Eigen::Vector3f>
getXAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (x_axis)); }
1441 inline const Eigen::Map<const Eigen::Vector3f>
getYAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (y_axis)); }
1443 inline const Eigen::Map<const Eigen::Vector3f>
getZAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (z_axis)); }
1444 inline Eigen::Map<Eigen::Matrix3f>
getMatrix3fMap () {
return (Eigen::Matrix3f::Map (rf)); }
1445 inline const Eigen::Map<const Eigen::Matrix3f>
getMatrix3fMap ()
const {
return (Eigen::Matrix3f::Map (rf)); }
1455 std::copy_n(p.
rf, 9, rf);
1460 std::fill_n(x_axis, 3, 0.f);
1461 std::fill_n(y_axis, 3, 0.f);
1462 std::fill_n(z_axis, 3, 0.f);
1612 inline Narf36 () =
default;
1614 inline Narf36 (
float _x,
float _y,
float _z):
Narf36 (_x, _y, _z, 0.f, 0.f, 0.f) {}
1616 inline Narf36 (
float _x,
float _y,
float _z,
float _roll,
float _pitch,
float _yaw):
1704 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1714 float _angle = -1.f,
float _response = 0.f,
int _octave = 0)
1716 x = _x; y = _y; z = _z;
1755 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1766 normal_x = normal_y = normal_z = data_n[3] = 0.0f;
1794 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1804 inline PointDEM (
float _x,
float _y,
float _z,
float _intensity,
1805 float _intensity_variance,
float _height_variance)
1807 x = _x; y = _y; z = _z;
1817 template <
int N> std::ostream&
1825 [&os](
const auto& hist) { os <<
", " << hist; });
1834 (std::uint32_t, rgba, rgba)
1839 (
float, intensity, intensity)
1844 (std::uint8_t, intensity, intensity)
1849 (std::uint32_t, intensity, intensity)
1864 (std::uint32_t, rgba, rgba)
1880 (std::uint32_t, rgba, rgba)
1881 (std::uint32_t, label, label)
1909 (
float, strength, strength)
1916 (
float, intensity, intensity)
1924 (std::uint32_t, label, label)
1928 (std::uint32_t, label, label)
1932 (
float, normal_x, normal_x)
1933 (
float, normal_y, normal_y)
1934 (
float, normal_z, normal_z)
1935 (
float, curvature, curvature)
1940 (
float, normal_x, normal_x)
1941 (
float, normal_y, normal_y)
1942 (
float, normal_z, normal_z)
1950 (
float, normal_x, normal_x)
1951 (
float, normal_y, normal_y)
1952 (
float, normal_z, normal_z)
1953 (
float, curvature, curvature)
1960 (
float, normal_x, normal_x)
1961 (
float, normal_y, normal_y)
1962 (
float, normal_z, normal_z)
1963 (
float, curvature, curvature)
1970 (
float, intensity, intensity)
1971 (
float, normal_x, normal_x)
1972 (
float, normal_y, normal_y)
1973 (
float, normal_z, normal_z)
1974 (
float, curvature, curvature)
1980 (std::uint32_t, label, label)
1981 (
float, normal_x, normal_x)
1982 (
float, normal_y, normal_y)
1983 (
float, normal_z, normal_z)
1984 (
float, curvature, curvature)
1990 (
float, range, range)
2010 (
float, r_min, r_min)
2011 (
float, r_max, r_max)
2015 (std::uint8_t, boundary_point, boundary_point)
2019 (
float, principal_curvature_x, principal_curvature_x)
2020 (
float, principal_curvature_y, principal_curvature_y)
2021 (
float, principal_curvature_z, principal_curvature_z)
2027 (
float[125], histogram, pfh)
2031 (
float[250], histogram, pfhrgb)
2039 (
float, alpha_m, alpha_m)
2053 (
float, alpha_m, alpha_m)
2061 (
float, r_ratio, r_ratio)
2062 (
float, g_ratio, g_ratio)
2063 (
float, b_ratio, b_ratio)
2064 (
float, alpha_m, alpha_m)
2068 (
float[12], values, values)
2072 (
float[1980], descriptor, shape_context)
2077 (
float[1960], descriptor, shape_context)
2082 (
float[352], descriptor, shot)
2087 (
float[1344], descriptor, shot)
2092 (
float[33], histogram, fpfh)
2096 (
float, scale, brisk_scale)
2097 (
float, orientation, brisk_orientation)
2098 (
unsigned char[64], descriptor, brisk_descriptor512)
2102 (
float[308], histogram, vfh)
2106 (
float[21], histogram, grsd)
2110 (
float[640], histogram, esf)
2114 (
float[512], histogram, gasd)
2118 (
float[984], histogram, gasd)
2122 (
float[7992], histogram, gasd)
2126 (
float[36], descriptor, descriptor)
2130 (
float[16], histogram, gfpfh)
2134 (
float, gradient_x, gradient_x)
2135 (
float, gradient_y, gradient_y)
2136 (
float, gradient_z, gradient_z)
2143 (
float, scale, scale)
2150 (
float, normal_x, normal_x)
2151 (
float, normal_y, normal_y)
2152 (
float, normal_z, normal_z)
2153 (std::uint32_t, rgba, rgba)
2154 (
float, radius, radius)
2155 (
float, confidence, confidence)
2156 (
float, curvature, curvature)
2160 (
float[3], x_axis, x_axis)
2161 (
float[3], y_axis, y_axis)
2162 (
float[3], z_axis, z_axis)
2170 (
float, intensity, intensity)
2171 (
float, intensity_variance, intensity_variance)
2172 (
float, height_variance, height_variance)
2181 template<
typename Po
intT>
2182 struct FieldMatches<
PointT, ::pcl::fields::rgba>
2186 if (field.
name ==
"rgb")
2196 return (field.
name == traits::name<PointT, fields::rgba>::value &&
2197 field.
datatype == traits::datatype<PointT, fields::rgba>::value &&
2198 field.
count == traits::datatype<PointT, fields::rgba>::size);
2202 template<
typename Po
intT>
2203 struct FieldMatches<
PointT, fields::rgb>
2207 if (field.
name ==
"rgba")
2215 return (field.
name == traits::name<PointT, fields::rgb>::value &&
2216 (field.
datatype == traits::datatype<PointT, fields::rgb>::value ||
2218 field.
count == traits::datatype<PointT, fields::rgb>::size);
2226 #if defined _MSC_VER
2227 #pragma warning(disable: 4201)
2249 template <
typename Po
intT,
typename Field>
2250 struct has_field : boost::mpl::contains<typename pcl::traits::fieldList<PointT>::type, Field>::type
2254 template <
typename Po
intT,
typename Field>
2255 struct has_all_fields : boost::mpl::fold<Field,
2256 boost::mpl::bool_<true>,
2257 boost::mpl::and_<boost::mpl::_1,
2258 has_field<PointT, boost::mpl::_2> > >::type
2262 template <
typename Po
intT,
typename Field>
2263 struct has_any_field : boost::mpl::fold<Field,
2264 boost::mpl::bool_<false>,
2265 boost::mpl::or_<boost::mpl::_1,
2266 has_field<PointT, boost::mpl::_2> > >::type
2277 template <
typename Po
intT>
2278 struct has_xy : has_all_fields<PointT, boost::mpl::vector<pcl::fields::x,
2282 template <
typename Po
intT>
2283 constexpr
auto has_xy_v = has_xy<PointT>::value;
2285 template <
typename Po
intT>
2286 using HasXY = std::enable_if_t<has_xy_v<PointT>,
bool>;
2288 template <
typename Po
intT>
2289 using HasNoXY = std::enable_if_t<!has_xy_v<PointT>,
bool>;
2292 template <
typename Po
intT>
2293 struct has_xyz : has_all_fields<PointT, boost::mpl::vector<pcl::fields::x,
2298 template <
typename Po
intT>
2299 constexpr
auto has_xyz_v = has_xyz<PointT>::value;
2301 template <
typename Po
intT>
2302 using HasXYZ = std::enable_if_t<has_xyz_v<PointT>,
bool>;
2304 template <
typename Po
intT>
2305 using HasNoXYZ = std::enable_if_t<!has_xyz_v<PointT>,
bool>;
2309 template <
typename Po
intT>
2310 struct has_normal : has_all_fields<PointT, boost::mpl::vector<pcl::fields::normal_x,
2311 pcl::fields::normal_y,
2312 pcl::fields::normal_z> >
2315 template <
typename Po
intT>
2316 constexpr
auto has_normal_v = has_normal<PointT>::value;
2318 template <
typename Po
intT>
2319 using HasNormal = std::enable_if_t<has_normal_v<PointT>,
bool>;
2321 template <
typename Po
intT>
2322 using HasNoNormal = std::enable_if_t<!has_normal_v<PointT>,
bool>;
2325 template <
typename Po
intT>
2326 struct has_curvature : has_field<PointT, pcl::fields::curvature>
2329 template <
typename Po
intT>
2330 constexpr
auto has_curvature_v = has_curvature<PointT>::value;
2332 template <
typename Po
intT>
2333 using HasCurvature = std::enable_if_t<has_curvature_v<PointT>,
bool>;
2335 template <
typename Po
intT>
2336 using HasNoCurvature = std::enable_if_t<!has_curvature_v<PointT>,
bool>;
2339 template <
typename Po
intT>
2340 struct has_intensity : has_field<PointT, pcl::fields::intensity>
2343 template <
typename Po
intT>
2344 constexpr
auto has_intensity_v = has_intensity<PointT>::value;
2346 template <
typename Po
intT>
2347 using HasIntensity = std::enable_if_t<has_intensity_v<PointT>,
bool>;
2349 template <
typename Po
intT>
2350 using HasNoIntensity = std::enable_if_t<!has_intensity_v<PointT>,
bool>;
2353 template <
typename Po
intT>
2354 struct has_color : has_any_field<PointT, boost::mpl::vector<pcl::fields::rgb,
2355 pcl::fields::rgba> >
2358 template <
typename Po
intT>
2359 constexpr
auto has_color_v = has_color<PointT>::value;
2361 template <
typename Po
intT>
2362 using HasColor = std::enable_if_t<has_color_v<PointT>,
bool>;
2364 template <
typename Po
intT>
2365 using HasNoColor = std::enable_if_t<!has_color_v<PointT>,
bool>;
2368 template <
typename Po
intT>
2369 struct has_label : has_field<PointT, pcl::fields::label>
2372 template <
typename Po
intT>
2373 constexpr
auto has_label_v = has_label<PointT>::value;
2375 template <
typename Po
intT>
2376 using HasLabel = std::enable_if_t<has_label_v<PointT>,
bool>;
2378 template <
typename Po
intT>
2379 using HasNoLabel = std::enable_if_t<!has_label_v<PointT>,
bool>;
2382 #if defined _MSC_VER
2383 #pragma warning(default: 4201)
A 2D point structure representing pixel image coordinates.
Intensity(float _intensity=0.f)
PointWithViewpoint(float _x, float _y, float _z)
static int descriptorSize()
Label(std::uint32_t _label=0)
PointXYZRGBL(float _x, float _y, float _z)
PointXYZRGBA(const _PointXYZRGBA &p)
Defines all the PCL and non-PCL macros used.
A point structure representing the Point Feature Histogram (PFH).
PointWithRange(float _x, float _y, float _z, float _range=0.f)
A point structure representing Digital Elevation Map.
A point structure representing normal coordinates and the surface curvature estimate.
friend std::ostream & operator<<(std::ostream &os, const VFHSignature308 &p)
A point structure representing the minimum and maximum surface radii (in meters) computed using RSD.
Axis(float n_x, float n_y, float n_z)
PointXYZL(std::uint32_t _label=0)
const Eigen::Map< const Eigen::Vector3f > getYAxisVector3fMap() const
PointXYZI(const _PointXYZI &p)
A point structure for storing the Point Pair Color Feature (PPFRGB) values.
PointXYZRGBL(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint32_t _label=0)
float scale
Diameter of the meaningful keypoint neighborhood.
friend std::ostream & operator<<(std::ostream &os, const ESFSignature640 &p)
GASDSignature7992()=default
PointXY(float _x, float _y)
Eigen::Matrix< std::uint8_t, 3, 1 > Vector3c
PrincipalRadiiRSD()=default
friend std::ostream & operator<<(std::ostream &os, const ShapeContext1980 &p)
friend std::ostream & operator<<(std::ostream &os, const CPPFSignature &p)
A surfel, that is, a point structure representing Euclidean xyz coordinates, together with normal coo...
A point structure representing the Normal Based Signature for a feature matrix of 4-by-3.
static int descriptorSize()
GASDSignature512()=default
POINT_CLOUD_REGISTER_POINT_STRUCT(pcl::_PointXYZLAB,(float, x, x)(float, y, y)(float, z, z)(float, L, L)(float, a, a)(float, b, b)) namespace pcl
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape descriptor.
PointXYZRGBA(float _x, float _y, float _z)
PointDEM(const _PointDEM &p)
static int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const PointXYZL &p)
Eigen::Map< Eigen::Vector3f > getYAxisVector3fMap()
friend std::ostream & operator<<(std::ostream &os, const GASDSignature512 &p)
static int descriptorSize()
static int descriptorSize()
PFHSignature125()=default
A point structure representing a description of whether a point is lying on a surface boundary or not...
static int descriptorSize()
static int descriptorSize()
float angle
Computed orientation of the keypoint (-1 if not applicable).
MomentInvariants(float _j1, float _j2, float _j3)
friend std::ostream & operator<<(std::ostream &os, const RGB &p)
NormalBasedSignature12()=default
A point structure representing the Fast Point Feature Histogram (FPFH).
friend std::ostream & operator<<(std::ostream &os, const UniqueShapeContext1960 &p)
unsigned char descriptor[64]
PointXYZRGBNormal(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
friend std::ostream & operator<<(std::ostream &os, const Boundary &p)
PointWithRange(float _range=0.f)
friend std::ostream & operator<<(std::ostream &os, const SHOT1344 &p)
friend std::ostream & operator<<(std::ostream &os, const PFHSignature125 &p)
friend std::ostream & operator<<(std::ostream &os, const GRSDSignature21 &p)
friend std::ostream & operator<<(std::ostream &os, const SHOT352 &p)
A point structure representing Euclidean xyz coordinates, intensity, together with normal coordinates...
float principal_curvature_z
float principal_curvature[3]
A point structure representing the grayscale intensity in single-channel images.
GASDSignature984()=default
PrincipalCurvatures(float _x, float _y, float _z, float _pc1, float _pc2)
const Eigen::Map< const Eigen::Vector3f > getZAxisVector3fMap() const
friend std::ostream & operator<<(std::ostream &os, const PointWithScale &p)
PointXYZRGBNormal(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, float n_x, float n_y, float n_z, float _curvature=0.f)
static int descriptorSize()
A point structure representing Euclidean xyz coordinates, and the RGB color.
bool operator()(const PCLPointField &field)
PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
Eigen::Map< Vector3c > Vector3cMap
PointWithViewpoint(float _x, float _y, float _z, float _vp_x, float _vp_y, float _vp_z)
A point structure representing a Unique Shape Context.
PointNormal(const _PointNormal &p)
PointDEM(float _x, float _y, float _z)
A point structure representing Euclidean xyz coordinates together with the viewpoint from which it wa...
A point structure representing Euclidean xyz coordinates, and the intensity value.
friend std::ostream & operator<<(std::ostream &os, const FPFHSignature33 &p)
PrincipalRadiiRSD(float _r_min, float _r_max)
friend std::ostream & operator<<(std::ostream &os, const BorderDescription &p)
PointXYZRGBNormal(float _x, float _y, float _z)
const Eigen::Map< const Eigen::Vector3f > getXAxisVector3fMap() const
A point structure representing the grayscale intensity in single-channel images.
int octave
octave (pyramid layer) from which the keypoint has been extracted.
Narf36(float _x, float _y, float _z)
Intensity(const _Intensity &p)
A point structure representing a Shape Context.
PointXYZINormal(float _intensity=0.f)
friend std::ostream & operator<<(std::ostream &os, const Intensity32u &p)
A point structure representing the GFPFH descriptor with 16 bins.
friend std::ostream & operator<<(std::ostream &os, const NormalBasedSignature12 &p)
std::ostream & operator<<(std::ostream &os, const BivariatePolynomialT< real > &p)
Intensity8u(std::uint8_t _intensity=0)
friend std::ostream & operator<<(std::ostream &os, const PointSurfel &p)
PointXYZRGB(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
friend std::ostream & operator<<(std::ostream &os, const Intensity8u &p)
PFHRGBSignature250()=default
Eigen::Map< Eigen::Array3f > Array3fMap
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
friend std::ostream & operator<<(std::ostream &os, const BRISKSignature512 &p)
friend std::ostream & operator<<(std::ostream &os, const GASDSignature7992 &p)
A point structure representing Euclidean xyz coordinates, and the RGBA color.
PointXYZHSV(const _PointXYZHSV &p)
PointUV(float _u, float _v)
PointXYZL(const _PointXYZL &p)
friend std::ostream & operator<<(std::ostream &os, const PrincipalCurvatures &p)
PointXYZRGBL(const _PointXYZRGBL &p)
static int descriptorSize()
static int descriptorSize()
PointXYZRGB(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
A point structure representing the Global Radius-based Surface Descriptor (GRSD).
A point structure representing Euclidean xyz coordinates.
PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha, float _r, float _g, float _b)
A point structure for storing the Point Pair Feature (CPPF) values.
PointXYZINormal(float _x, float _y, float _z, float _intensity=0.f)
PointXYZRGBL(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
A point structure representing the grayscale intensity in single-channel images.
PointXYZINormal(const _PointXYZINormal &p)
A point structure for storing the Point Pair Feature (PPF) values.
const Eigen::Map< const Vector4c, Eigen::Aligned > Vector4cMapConst
PointXYZLNormal(float _x, float _y, float _z, std::uint32_t _label=0.f)
PointXYZLNormal(const _PointXYZLNormal &p)
Eigen::Map< Eigen::Vector3f > getZAxisVector3fMap()
friend std::ostream & operator<<(std::ostream &os, const GASDSignature984 &p)
float principal_curvature_y
ShapeContext1980()=default
Eigen::Map< Eigen::Array4f, Eigen::Aligned > Array4fMap
PPFSignature(float _alpha=0.f)
PointXYZI(float _x, float _y, float _z, float _intensity=0.f)
CPPFSignature(float _alpha=0.f)
A point structure representing the Binary Robust Invariant Scalable Keypoints (BRISK).
const Eigen::Map< const Eigen::Array4f, Eigen::Aligned > Array4fMapConst
A point structure representing an Axis using its normal coordinates.
friend std::ostream & operator<<(std::ostream &os, const PointXYZLNormal &p)
PointWithScale(const _PointWithScale &p)
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
A structure representing RGB color information.
PointXYZ(float _x, float _y, float _z)
Intensity8u(const _Intensity8u &p)
A point structure representing the Point Feature Histogram with colors (PFHRGB).
A point structure representing the three moment invariants.
A point structure representing an interest point with Euclidean xyz coordinates, and an interest valu...
Normal(float n_x, float n_y, float n_z, float _curvature=0.f)
BRISKSignature512(float _scale, float _orientation)
friend std::ostream & operator<<(std::ostream &os, const PointDEM &p)
PointXYZRGBA(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a)
PointXYZRGB(const _PointXYZRGB &p)
PPFSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
friend std::ostream & operator<<(std::ostream &os, const PFHRGBSignature250 &p)
A point structure representing Euclidean xyz coordinates, together with normal coordinates and the su...
PointXYZI(float _intensity=0.f)
PointXYZRGBNormal(float _curvature=0.f)
float principal_curvature_x
PointNormal(float _x, float _y, float _z)
Narf36(float _x, float _y, float _z, float _roll, float _pitch, float _yaw)
A 2D point structure representing Euclidean xy coordinates.
PointXYZHSV(float _x, float _y, float _z, float _h, float _s, float _v)
friend std::ostream & operator<<(std::ostream &os, const PrincipalRadiiRSD &p)
static int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const PointXYZINormal &p)
PointXYZLNormal(float _x, float _y, float _z, std::uint32_t _label, float n_x, float n_y, float n_z, float _curvature=0.f)
friend std::ostream & operator<<(std::ostream &os, const Label &p)
PointDEM(float _x, float _y, float _z, float _intensity, float _intensity_variance, float _height_variance)
friend std::ostream & operator<<(std::ostream &os, const Narf36 &p)
std::bitset< 32 > BorderTraits
Data type to store extended information about a transition from foreground to backgroundSpecification...
A point structure representing the principal curvatures and their magnitudes.
PointXYZ(const _PointXYZ &p)
PointXYZRGB(float _x, float _y, float _z)
A point structure representing the Narf descriptor.
friend std::ostream & operator<<(std::ostream &os, const PointXY &p)
PointXYZL(float _x, float _y, float _z, std::uint32_t _label=0)
static int descriptorSize()
float response
The response by which the most strong keypoints have been selected.
const Eigen::Map< const Eigen::Vector3f > Vector3fMapConst
static int descriptorSize()
PointNormal(float _curvature=0.f)
GRSDSignature21()=default
A point structure representing the Ensemble of Shape Functions (ESF).
PPFRGBSignature(float _alpha=0.f)
friend std::ostream & operator<<(std::ostream &os, const GFPFHSignature16 &p)
A point structure representing a 3-D position and scale.
static int descriptorSize()
PointXYZRGBA(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a)
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
PointXYZRGBL(std::uint32_t _label=0)
A point structure representing Euclidean xyz coordinates, padded with an extra range float.
A point structure representing an N-D histogram.
friend std::ostream & operator<<(std::ostream &os, const PointNormal &p)
ReferenceFrame(const _ReferenceFrame &p)
UniqueShapeContext1960()=default
BRISKSignature512()=default
Eigen::Map< Eigen::Vector3f > getXAxisVector3fMap()
std::uint8_t boundary_point
friend std::ostream & operator<<(std::ostream &os, const PointWithRange &p)
Intensity32u(std::uint32_t _intensity=0)
friend std::ostream & operator<<(std::ostream &os, const Normal &p)
A point structure representing Euclidean xyz coordinates, and the RGB color, together with normal coo...
Eigen::Matrix< std::uint8_t, 4, 1 > Vector4c
const Eigen::Map< const Vector3c > Vector3cMapConst
friend std::ostream & operator<<(std::ostream &os, const PointXYZI &p)
static int descriptorSize()
static int descriptorSize()
A point structure representing Euclidean xyz coordinates, a label, together with normal coordinates a...
A structure to store if a point in a range image lies on a border between an obstacle and the backgro...
FPFHSignature33()=default
Boundary(std::uint8_t _boundary=0)
BorderDescription()=default
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape+col...
friend std::ostream & operator<<(std::ostream &os, const MomentInvariants &p)
PointXYZLNormal(std::uint32_t _label=0)
PrincipalCurvatures(float _x, float _y, float _z)
PointXYZINormal(float _x, float _y, float _z, float _intensity, float n_x, float n_y, float n_z, float _curvature=0.f)
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape onl...
friend std::ostream & operator<<(std::ostream &os, const PPFRGBSignature &p)
PointXYZRGBNormal(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
Eigen::Map< Eigen::Vector3f > Vector3fMap
const Eigen::Map< const Eigen::Matrix3f > getMatrix3fMap() const
GFPFHSignature16()=default
friend std::ostream & operator<<(std::ostream &os, const PPFSignature &p)
friend std::ostream & operator<<(std::ostream &os, const PointXYZRGBNormal &p)
RGB(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
Eigen::Map< Eigen::Vector4f, Eigen::Aligned > Vector4fMap
Normal(float _curvature=0.f)
friend std::ostream & operator<<(std::ostream &os, const IntensityGradient &p)
PointWithRange(const _PointWithRange &p)
VFHSignature308()=default
Eigen::Map< Vector4c, Eigen::Aligned > Vector4cMap
PointWithViewpoint(const _PointWithViewpoint &p)
MomentInvariants()=default
PointXYZRGBNormal(const _PointXYZRGBNormal &p)
IntensityGradient(float _x, float _y, float _z)
PointNormal(float _x, float _y, float _z, float n_x, float n_y, float n_z, float _curvature=0.f)
PointXYZHSV(float _h, float _s, float _v)
Eigen::Map< Eigen::Matrix3f > getMatrix3fMap()
static int descriptorSize()
const Eigen::Map< const Eigen::Array3f > Array3fMapConst
friend std::ostream & operator<<(std::ostream &os, const Intensity &p)
Defines functions, macros and traits for allocating and using memory.
friend std::ostream & operator<<(std::ostream &os, const PointUV &p)
PrincipalCurvatures(float _pc1, float _pc2)
Intensity32u(const _Intensity32u &p)
A structure representing the Local Reference Frame of a point.
ESFSignature640()=default
PointWithScale(float _x, float _y, float _z, float _scale=1.f, float _angle=-1.f, float _response=0.f, int _octave=0)
const Eigen::Map< const Eigen::Vector4f, Eigen::Aligned > Vector4fMapConst
A point structure representing the Viewpoint Feature Histogram (VFH).
CPPFSignature(float _f1, float _f2, float _f3, float _f4, float _f5, float _f6, float _f7, float _f8, float _f9, float _f10, float _alpha=0.f)
A point structure representing the intensity gradient of an XYZI point cloud.
PointSurfel(const _PointSurfel &p)