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 \
74 (pcl::InterestPoint) \
78 (pcl::PointXYZRGBNormal) \
79 (pcl::PointXYZINormal) \
80 (pcl::PointXYZLNormal) \
81 (pcl::PointWithRange) \
82 (pcl::PointWithViewpoint) \
83 (pcl::MomentInvariants) \
84 (pcl::PrincipalRadiiRSD) \
86 (pcl::PrincipalCurvatures) \
87 (pcl::PFHSignature125) \
88 (pcl::PFHRGBSignature250) \
90 (pcl::CPPFSignature) \
91 (pcl::PPFRGBSignature) \
92 (pcl::NormalBasedSignature12) \
93 (pcl::FPFHSignature33) \
94 (pcl::VFHSignature308) \
95 (pcl::GASDSignature512) \
96 (pcl::GASDSignature984) \
97 (pcl::GASDSignature7992) \
98 (pcl::GRSDSignature21) \
99 (pcl::ESFSignature640) \
100 (pcl::BRISKSignature512) \
102 (pcl::IntensityGradient) \
103 (pcl::PointWithScale) \
105 (pcl::ShapeContext1980) \
106 (pcl::UniqueShapeContext1960) \
110 (pcl::ReferenceFrame) \
114 #define PCL_RGB_POINT_TYPES \
115 (pcl::PointXYZRGBA) \
117 (pcl::PointXYZRGBL) \
118 (pcl::PointXYZRGBNormal) \
122 #define PCL_XYZ_POINT_TYPES \
126 (pcl::PointXYZRGBA) \
128 (pcl::PointXYZRGBL) \
131 (pcl::InterestPoint) \
133 (pcl::PointXYZRGBNormal) \
134 (pcl::PointXYZINormal) \
135 (pcl::PointXYZLNormal) \
136 (pcl::PointWithRange) \
137 (pcl::PointWithViewpoint) \
138 (pcl::PointWithScale) \
143 #define PCL_XYZL_POINT_TYPES \
145 (pcl::PointXYZRGBL) \
146 (pcl::PointXYZLNormal)
149 #define PCL_NORMAL_POINT_TYPES \
152 (pcl::PointXYZRGBNormal) \
153 (pcl::PointXYZINormal) \
154 (pcl::PointXYZLNormal) \
158 #define PCL_FEATURE_POINT_TYPES \
159 (pcl::PFHSignature125) \
160 (pcl::PFHRGBSignature250) \
161 (pcl::PPFSignature) \
162 (pcl::CPPFSignature) \
163 (pcl::PPFRGBSignature) \
164 (pcl::NormalBasedSignature12) \
165 (pcl::FPFHSignature33) \
166 (pcl::VFHSignature308) \
167 (pcl::GASDSignature512) \
168 (pcl::GASDSignature984) \
169 (pcl::GASDSignature7992) \
170 (pcl::GRSDSignature21) \
171 (pcl::ESFSignature640) \
172 (pcl::BRISKSignature512) \
176 #define PCL_DESCRIPTOR_FEATURE_POINT_TYPES \
177 (pcl::PFHSignature125) \
178 (pcl::PFHRGBSignature250) \
179 (pcl::FPFHSignature33) \
180 (pcl::VFHSignature308) \
181 (pcl::GASDSignature512) \
182 (pcl::GASDSignature984) \
183 (pcl::GASDSignature7992) \
184 (pcl::GRSDSignature21) \
185 (pcl::ESFSignature640) \
186 (pcl::BRISKSignature512) \
217 template<
typename FeaturePo
intT>
226 using Array4fMap = Eigen::Map<Eigen::Array4f, Eigen::Aligned>;
233 using Vector3c = Eigen::Matrix<std::uint8_t, 3, 1>;
236 using Vector4c = Eigen::Matrix<std::uint8_t, 4, 1>;
240 #define PCL_ADD_UNION_POINT4D \
241 union EIGEN_ALIGN16 { \
250 #define PCL_ADD_EIGEN_MAPS_POINT4D \
251 inline pcl::Vector2fMap getVector2fMap () { return (pcl::Vector2fMap (data)); } \
252 inline pcl::Vector2fMapConst getVector2fMap () const { return (pcl::Vector2fMapConst (data)); } \
253 inline pcl::Vector3fMap getVector3fMap () { return (pcl::Vector3fMap (data)); } \
254 inline pcl::Vector3fMapConst getVector3fMap () const { return (pcl::Vector3fMapConst (data)); } \
255 inline pcl::Vector4fMap getVector4fMap () { return (pcl::Vector4fMap (data)); } \
256 inline pcl::Vector4fMapConst getVector4fMap () const { return (pcl::Vector4fMapConst (data)); } \
257 inline pcl::Array3fMap getArray3fMap () { return (pcl::Array3fMap (data)); } \
258 inline pcl::Array3fMapConst getArray3fMap () const { return (pcl::Array3fMapConst (data)); } \
259 inline pcl::Array4fMap getArray4fMap () { return (pcl::Array4fMap (data)); } \
260 inline pcl::Array4fMapConst getArray4fMap () const { return (pcl::Array4fMapConst (data)); }
262 #define PCL_ADD_POINT4D \
263 PCL_ADD_UNION_POINT4D \
264 PCL_ADD_EIGEN_MAPS_POINT4D
266 #define PCL_ADD_UNION_NORMAL4D \
267 union EIGEN_ALIGN16 { \
277 #define PCL_ADD_EIGEN_MAPS_NORMAL4D \
278 inline pcl::Vector3fMap getNormalVector3fMap () { return (pcl::Vector3fMap (data_n)); } \
279 inline pcl::Vector3fMapConst getNormalVector3fMap () const { return (pcl::Vector3fMapConst (data_n)); } \
280 inline pcl::Vector4fMap getNormalVector4fMap () { return (pcl::Vector4fMap (data_n)); } \
281 inline pcl::Vector4fMapConst getNormalVector4fMap () const { return (pcl::Vector4fMapConst (data_n)); }
283 #define PCL_ADD_NORMAL4D \
284 PCL_ADD_UNION_NORMAL4D \
285 PCL_ADD_EIGEN_MAPS_NORMAL4D
287 #define PCL_ADD_UNION_RGB \
301 std::uint32_t rgba; \
304 #define PCL_ADD_EIGEN_MAPS_RGB \
305 inline Eigen::Vector3i getRGBVector3i () { return (Eigen::Vector3i (r, g, b)); } \
306 inline const Eigen::Vector3i getRGBVector3i () const { return (Eigen::Vector3i (r, g, b)); } \
307 inline Eigen::Vector4i getRGBVector4i () { return (Eigen::Vector4i (r, g, b, a)); } \
308 inline const Eigen::Vector4i getRGBVector4i () const { return (Eigen::Vector4i (r, g, b, a)); } \
309 inline Eigen::Vector4i getRGBAVector4i () { return (Eigen::Vector4i (r, g, b, a)); } \
310 inline const Eigen::Vector4i getRGBAVector4i () const { return (Eigen::Vector4i (r, g, b, a)); } \
311 inline pcl::Vector3cMap getBGRVector3cMap () { return (pcl::Vector3cMap (reinterpret_cast<std::uint8_t*> (&rgba))); } \
312 inline pcl::Vector3cMapConst getBGRVector3cMap () const { return (pcl::Vector3cMapConst (reinterpret_cast<const std::uint8_t*> (&rgba))); } \
313 inline pcl::Vector4cMap getBGRAVector4cMap () { return (pcl::Vector4cMap (reinterpret_cast<std::uint8_t*> (&rgba))); } \
314 inline pcl::Vector4cMapConst getBGRAVector4cMap () const { return (pcl::Vector4cMapConst (reinterpret_cast<const std::uint8_t*> (&rgba))); }
316 #define PCL_ADD_RGB \
318 PCL_ADD_EIGEN_MAPS_RGB
320 #define PCL_ADD_INTENSITY \
326 #define PCL_ADD_INTENSITY_8U \
329 std::uint8_t intensity; \
332 #define PCL_ADD_INTENSITY_32U \
335 std::uint32_t intensity; \
393 inline constexpr
RGB (
const _RGB &p) :
RGB{p.r, p.g, p.b, p.a} {}
397 inline constexpr
RGB (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a = 255) :
_RGB{{{{_b, _g, _r, _a}}}} {}
438 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101
439 inline constexpr
operator unsigned char()
const
491 inline constexpr
PointXYZI (
float _x,
float _y,
float _z,
float _intensity = 0.f) :
_PointXYZI{{{_x, _y, _z, 1.0f}}, {{_intensity}}} {}
511 inline constexpr
PointXYZL (
float _x,
float _y,
float _z, std::uint32_t _label = 0) :
_PointXYZL{{{_x, _y, _z, 1.0f}}, _label} {}
520 std::uint32_t label = 0;
522 inline constexpr
Label (std::uint32_t _label = 0): label(_label) {}
562 inline constexpr
PointXYZRGBA (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a):
568 inline constexpr
PointXYZRGBA (
float _x,
float _y,
float _z, std::uint8_t _r,
569 std::uint8_t _g, std::uint8_t _b, std::uint8_t _a) :
_PointXYZRGBA{{{_x, _y, _z, 1.0f}}, {{{_b, _g, _r, _a}}}} {}
628 inline constexpr
PointXYZRGB (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
635 std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
636 _PointXYZRGB{{{_x, _y, _z, 1.0f}}, {{{_b, _g, _r, 255}}}} {}
651 inline constexpr
PointXYZRGBL (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
658 std::uint8_t _r, std::uint8_t _g, std::uint8_t _b,
659 std::uint32_t _label = 0, std::uint8_t _a = 255) :
660 _PointXYZRGBL{{{_x, _y, _z, 1.0f}}, {{{_b, _g, _r, _a}}}, _label} {}
694 float _L,
float _a,
float _b) :
732 float _h,
float _s,
float _v) :
755 inline constexpr
PointXY(
float _x,
float _y): x(_x), y(_y) {}
756 inline constexpr
PointXY(): x(0.0f), y(0.0f) {}
776 inline constexpr
PointUV(
float _u,
float _v): u(_u), v(_v) {}
824 inline constexpr
Normal (
float _curvature = 0.f):
Normal (0.f, 0.f, 0.f, _curvature) {}
826 inline constexpr
Normal (
float n_x,
float n_y,
float n_z,
float _curvature = 0.f) :
827 _Normal{{{n_x, n_y, n_z, 0.0f}}, {{_curvature}}} {}
846 inline constexpr
Axis (
const _Axis &p) :
Axis{p.normal_x, p.normal_y, p.normal_z} {}
850 inline constexpr
Axis (
float n_x,
float n_y,
float n_z) :
_Axis{{{n_x, n_y, n_z, 0.0f}}} {}
885 inline constexpr
PointNormal (
float _x,
float _y,
float _z,
float n_x,
float n_y,
float n_z,
float _curvature = 0.f) :
886 _PointNormal{{{_x, _y, _z, 1.0f}}, {{n_x, n_y, n_z, 0.0f}}, {{_curvature}}} {}
942 PointXYZRGBNormal {p.x, p.y, p.z, p.r, p.g, p.b, p.a, p.normal_x, p.normal_y, p.normal_z, p.curvature} {}
953 inline constexpr
PointXYZRGBNormal (
float _x,
float _y,
float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
956 inline constexpr
PointXYZRGBNormal (
float _x,
float _y,
float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b,
957 float n_x,
float n_y,
float n_z,
float _curvature = 0.f) :
959 {{_x, _y, _z, 1.0f}},
960 {{n_x, n_y, n_z, 0.0f}},
961 {{ {{{_b, _g, _r, 255u}}}, _curvature }}
965 inline constexpr
PointXYZRGBNormal (
float _x,
float _y,
float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b,
966 std::uint8_t _a,
float n_x,
float n_y,
float n_z,
float _curvature = 0.f) :
968 {{_x, _y, _z, 1.0f}},
969 {{n_x, n_y, n_z, 0.0f}},
970 {{ {{{_b, _g, _r, _a}}}, _curvature }}
1001 PointXYZINormal {p.x, p.y, p.z, p.intensity, p.normal_x, p.normal_y, p.normal_z, p.curvature} {}
1009 float n_x,
float n_y,
float n_z,
float _curvature = 0.f) :
1011 {{_x, _y, _z, 1.0f}},
1012 {{n_x, n_y, n_z, 0.0f}},
1013 {{_intensity, _curvature}}
1044 PointXYZLNormal {p.x, p.y, p.z, p.label, p.normal_x, p.normal_y, p.normal_z, p.curvature} {}
1048 inline constexpr
PointXYZLNormal (
float _x,
float _y,
float _z, std::uint32_t _label = 0u) :
1052 float n_x,
float n_y,
float n_z,
float _curvature = 0.f) :
1054 {{_x, _y, _z, 1.0f}},
1055 {{n_x, n_y, n_z, 0.0f}},
1056 {{_label, _curvature}}
1125 inline constexpr
PointWithViewpoint (
float _x,
float _y,
float _z,
float _vp_x,
float _vp_y,
float _vp_z) :
1137 float j1 = 0.f, j2 = 0.f, j3 = 0.f;
1141 inline constexpr
MomentInvariants (
float _j1,
float _j2,
float _j3): j1 (_j1), j2 (_j2), j3 (_j3) {}
1152 float r_min = 0.f, r_max = 0.f;
1167 std::uint8_t boundary_point = 0;
1169 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101
1170 constexpr
operator unsigned char()
const
1172 return boundary_point;
1176 inline constexpr
Boundary (std::uint8_t _boundary = 0): boundary_point (_boundary) {}
1189 float principal_curvature[3];
1207 principal_curvature_x (_x), principal_curvature_y (_y), principal_curvature_z (_z), pc1 (_pc1), pc2 (_pc2) {}
1218 float histogram[125] = {0.f};
1219 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<PFHSignature125>; }
1233 float histogram[250] = {0.f};
1234 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<PFHRGBSignature250>; }
1247 float f1 = 0.f, f2 = 0.f, f3 = 0.f, f4 = 0.f;
1248 float alpha_m = 0.f;
1252 inline constexpr
PPFSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _alpha = 0.f):
1253 f1 (_f1), f2 (_f2), f3 (_f3), f4 (_f4), alpha_m (_alpha) {}
1264 float f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
1268 CPPFSignature (0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, _alpha) {}
1270 inline constexpr
CPPFSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _f5,
float _f6,
1271 float _f7,
float _f8,
float _f9,
float _f10,
float _alpha = 0.f):
1272 f1 (_f1), f2 (_f2), f3 (_f3), f4 (_f4), f5 (_f5), f6 (_f6),
1273 f7 (_f7), f8 (_f8), f9 (_f9), f10 (_f10), alpha_m (_alpha) {}
1284 float f1 = 0.f, f2 = 0.f, f3 = 0.f, f4 = 0.f;
1285 float r_ratio = 0.f, g_ratio = 0.f, b_ratio = 0.f;
1286 float alpha_m = 0.f;
1290 inline constexpr
PPFRGBSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _alpha = 0.f):
1293 inline constexpr
PPFRGBSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _alpha,
float _r,
float _g,
float _b):
1294 f1 (_f1), f2 (_f2), f3 (_f3), f4 (_f4), r_ratio (_r), g_ratio (_g), b_ratio (_b), alpha_m (_alpha) {}
1306 float values[12] = {0.f};
1319 float descriptor[1980] = {0.f};
1320 float rf[9] = {0.f};
1321 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<ShapeContext1980>; }
1334 float descriptor[1960] = {0.f};
1335 float rf[9] = {0.f};
1336 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<UniqueShapeContext1960>; }
1349 float descriptor[352] = {0.f};
1350 float rf[9] = {0.f};
1351 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<SHOT352>; }
1365 float descriptor[1344] = {0.f};
1366 float rf[9] = {0.f};
1367 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<SHOT1344>; }
1392 inline const Eigen::Map<const Eigen::Vector3f>
getXAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (x_axis)); }
1394 inline const Eigen::Map<const Eigen::Vector3f>
getYAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (y_axis)); }
1396 inline const Eigen::Map<const Eigen::Vector3f>
getZAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (z_axis)); }
1397 inline Eigen::Map<Eigen::Matrix3f>
getMatrix3fMap () {
return (Eigen::Matrix3f::Map (rf)); }
1398 inline const Eigen::Map<const Eigen::Matrix3f>
getMatrix3fMap ()
const {
return (Eigen::Matrix3f::Map (rf)); }
1422 _ReferenceFrame{ {{_rf[0], _rf[1], _rf[2], _rf[3], _rf[4], _rf[5], _rf[6], _rf[7], _rf[8]}} } {}
1435 float histogram[33] = {0.f};
1436 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<FPFHSignature33>; }
1449 float histogram[308] = {0.f};
1450 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<VFHSignature308>; }
1463 float histogram[21] = {0.f};
1464 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<GRSDSignature21>; }
1478 float orientation = 0.f;
1479 unsigned char descriptor[64] = {0};
1480 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<BRISKSignature512>; }
1484 inline constexpr
BRISKSignature512 (
float _scale,
float _orientation): scale (_scale), orientation (_orientation) {}
1495 float histogram[640] = {0.f};
1496 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<ESFSignature640>; }
1509 float histogram[512] = {0.f};
1510 static constexpr
int descriptorSize() {
return detail::traits::descriptorSize_v<GASDSignature512>; }
1523 float histogram[984] = {0.f};
1524 static constexpr
int descriptorSize() {
return detail::traits::descriptorSize_v<GASDSignature984>; }
1537 float histogram[7992] = {0.f};
1538 static constexpr
int descriptorSize() {
return detail::traits::descriptorSize_v<GASDSignature7992>; }
1551 float histogram[16] = {0.f};
1552 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<GFPFHSignature16>; }
1565 float x = 0.f, y = 0.f, z = 0.f, roll = 0.f, pitch = 0.f, yaw = 0.f;
1566 float descriptor[36] = {0.f};
1567 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<Narf36>; }
1571 inline constexpr
Narf36 (
float _x,
float _y,
float _z):
Narf36 (_x, _y, _z, 0.f, 0.f, 0.f) {}
1573 inline constexpr
Narf36 (
float _x,
float _y,
float _z,
float _roll,
float _pitch,
float _yaw):
1574 x (_x), y (_y), z (_z), roll (_roll), pitch (_pitch), yaw (_yaw) {}
1616 inline constexpr
IntensityGradient (
float _x,
float _y,
float _z): gradient_x (_x), gradient_y (_y), gradient_z (_z) {}
1629 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<Histogram<N>>; }
1660 PointWithScale{p.x, p.y, p.z, p.scale, p.angle, p.response, p.octave} {}
1665 float _angle = -1.f,
float _response = 0.f,
int _octave = 0) :
1666 _PointWithScale{{{_x, _y, _z, 1.0f}}, {_scale}, _angle, _response, _octave } {}
1698 PointSurfel{p.x, p.y, p.z, p.normal_x, p.normal_y, p.normal_z, p.r, p.g, p.b, p.a, p.radius, p.confidence, p.curvature} {}
1701 PointSurfel{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0u, 0u, 0u, 0u, 0.0f, 0.0f, 0.0f} {}
1703 inline constexpr
PointSurfel (
float _x,
float _y,
float _z,
float _nx,
1704 float _ny,
float _nz, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a,
1705 float _radius,
float _confidence,
float _curvature) :
1707 {{_x, _y, _z, 1.0f}},
1708 {{_nx, _ny, _nz, 0.0f}},
1709 {{{{{_b, _g, _r, _a}}}, _radius, _confidence, _curvature}}
1732 PointDEM{p.x, p.y, p.z, p.intensity, p.intensity_variance, p.height_variance} {}
1736 inline constexpr
PointDEM (
float _x,
float _y,
float _z):
PointDEM (_x, _y, _z, 0.f, 0.f, 0.f) {}
1738 inline constexpr
PointDEM (
float _x,
float _y,
float _z,
float _intensity,
1739 float _intensity_variance,
float _height_variance) :
1740 _PointDEM{{{_x, _y, _z, 1.0f}}, _intensity, _intensity_variance, _height_variance} {}
1745 template <
int N> std::ostream&
1753 [&os](
const auto& hist) { os <<
", " << hist; });
1761 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_RGB,
1762 (std::uint32_t, rgba, rgba)
1767 (
float, intensity, intensity)
1772 (std::uint8_t, intensity, intensity)
1777 (std::uint32_t, intensity, intensity)
1792 (std::uint32_t, rgba, rgba)
1808 (std::uint32_t, rgba, rgba)
1809 (std::uint32_t, label, label)
1847 (
float, strength, strength)
1854 (
float, intensity, intensity)
1862 (std::uint32_t, label, label)
1865 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::Label,
1866 (std::uint32_t, label, label)
1870 (
float, normal_x, normal_x)
1871 (
float, normal_y, normal_y)
1872 (
float, normal_z, normal_z)
1873 (
float, curvature, curvature)
1877 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_Axis,
1878 (
float, normal_x, normal_x)
1879 (
float, normal_y, normal_y)
1880 (
float, normal_z, normal_z)
1888 (
float, normal_x, normal_x)
1889 (
float, normal_y, normal_y)
1890 (
float, normal_z, normal_z)
1891 (
float, curvature, curvature)
1898 (
float, normal_x, normal_x)
1899 (
float, normal_y, normal_y)
1900 (
float, normal_z, normal_z)
1901 (
float, curvature, curvature)
1908 (
float, intensity, intensity)
1909 (
float, normal_x, normal_x)
1910 (
float, normal_y, normal_y)
1911 (
float, normal_z, normal_z)
1912 (
float, curvature, curvature)
1918 (std::uint32_t, label, label)
1919 (
float, normal_x, normal_x)
1920 (
float, normal_y, normal_y)
1921 (
float, normal_z, normal_z)
1922 (
float, curvature, curvature)
1928 (
float, range, range)
1948 (
float, r_min, r_min)
1949 (
float, r_max, r_max)
1953 (std::uint8_t, boundary_point, boundary_point)
1957 (
float, principal_curvature_x, principal_curvature_x)
1958 (
float, principal_curvature_y, principal_curvature_y)
1959 (
float, principal_curvature_z, principal_curvature_z)
1965 (
float[125], histogram, pfh)
1969 (
float[250], histogram, pfhrgb)
1977 (
float, alpha_m, alpha_m)
1991 (
float, alpha_m, alpha_m)
1999 (
float, r_ratio, r_ratio)
2000 (
float, g_ratio, g_ratio)
2001 (
float, b_ratio, b_ratio)
2002 (
float, alpha_m, alpha_m)
2006 (
float[12], values, values)
2010 (
float[1980], descriptor, shape_context)
2015 (
float[1960], descriptor, shape_context)
2020 (
float[352], descriptor, shot)
2025 (
float[1344], descriptor, shot)
2030 (
float[33], histogram, fpfh)
2034 (
float, scale, brisk_scale)
2035 (
float, orientation, brisk_orientation)
2036 (
unsigned char[64], descriptor, brisk_descriptor512)
2040 (
float[308], histogram, vfh)
2044 (
float[21], histogram, grsd)
2048 (
float[640], histogram, esf)
2052 (
float[512], histogram, gasd)
2056 (
float[984], histogram, gasd)
2060 (
float[7992], histogram, gasd)
2064 (
float[36], descriptor, descriptor)
2068 (
float[16], histogram, gfpfh)
2072 (
float, gradient_x, gradient_x)
2073 (
float, gradient_y, gradient_y)
2074 (
float, gradient_z, gradient_z)
2081 (
float, scale, scale)
2088 (
float, normal_x, normal_x)
2089 (
float, normal_y, normal_y)
2090 (
float, normal_z, normal_z)
2091 (std::uint32_t, rgba, rgba)
2092 (
float, radius, radius)
2093 (
float, confidence, confidence)
2094 (
float, curvature, curvature)
2098 (
float[3], x_axis, x_axis)
2099 (
float[3], y_axis, y_axis)
2100 (
float[3], z_axis, z_axis)
2108 (
float, intensity, intensity)
2109 (
float, intensity_variance, intensity_variance)
2110 (
float, height_variance, height_variance)
2119 template<
typename Po
intT>
2120 struct FieldMatches<
PointT, ::pcl::fields::rgba>
2124 if (field.
name ==
"rgb")
2134 return (field.
name == traits::name<PointT, fields::rgba>::value &&
2135 field.
datatype == traits::datatype<PointT, fields::rgba>::value &&
2136 field.
count == traits::datatype<PointT, fields::rgba>::size);
2140 template<
typename Po
intT>
2141 struct FieldMatches<
PointT, fields::rgb>
2145 if (field.
name ==
"rgba")
2153 return (field.
name == traits::name<PointT, fields::rgb>::value &&
2154 (field.
datatype == traits::datatype<PointT, fields::rgb>::value ||
2156 field.
count == traits::datatype<PointT, fields::rgb>::size);
2164 #if defined _MSC_VER
2165 #pragma warning(disable: 4201)
2187 template <
typename Po
intT,
typename Field>
2188 struct has_field : boost::mpl::contains<typename pcl::traits::fieldList<PointT>::type, Field>::type
2192 template <
typename Po
intT,
typename Field>
2193 struct has_all_fields : boost::mpl::fold<Field,
2194 boost::mpl::bool_<true>,
2195 boost::mpl::and_<boost::mpl::_1,
2196 has_field<PointT, boost::mpl::_2> > >::type
2200 template <
typename Po
intT,
typename Field>
2201 struct has_any_field : boost::mpl::fold<Field,
2202 boost::mpl::bool_<false>,
2203 boost::mpl::or_<boost::mpl::_1,
2204 has_field<PointT, boost::mpl::_2> > >::type
2215 template <
typename Po
intT>
2216 struct has_xy : has_all_fields<PointT, boost::mpl::vector<pcl::fields::x,
2220 template <
typename Po
intT>
2221 constexpr
auto has_xy_v = has_xy<PointT>::value;
2223 template <
typename Po
intT>
2224 using HasXY = std::enable_if_t<has_xy_v<PointT>,
bool>;
2226 template <
typename Po
intT>
2227 using HasNoXY = std::enable_if_t<!has_xy_v<PointT>,
bool>;
2230 template <
typename Po
intT>
2231 struct has_xyz : has_all_fields<PointT, boost::mpl::vector<pcl::fields::x,
2236 template <
typename Po
intT>
2237 constexpr
auto has_xyz_v = has_xyz<PointT>::value;
2239 template <
typename Po
intT>
2240 using HasXYZ = std::enable_if_t<has_xyz_v<PointT>,
bool>;
2242 template <
typename Po
intT>
2243 using HasNoXYZ = std::enable_if_t<!has_xyz_v<PointT>,
bool>;
2247 template <
typename Po
intT>
2248 struct has_normal : has_all_fields<PointT, boost::mpl::vector<pcl::fields::normal_x,
2249 pcl::fields::normal_y,
2250 pcl::fields::normal_z> >
2253 template <
typename Po
intT>
2254 constexpr
auto has_normal_v = has_normal<PointT>::value;
2256 template <
typename Po
intT>
2257 using HasNormal = std::enable_if_t<has_normal_v<PointT>,
bool>;
2259 template <
typename Po
intT>
2260 using HasNoNormal = std::enable_if_t<!has_normal_v<PointT>,
bool>;
2263 template <
typename Po
intT>
2264 struct has_curvature : has_field<PointT, pcl::fields::curvature>
2267 template <
typename Po
intT>
2268 constexpr
auto has_curvature_v = has_curvature<PointT>::value;
2270 template <
typename Po
intT>
2271 using HasCurvature = std::enable_if_t<has_curvature_v<PointT>,
bool>;
2273 template <
typename Po
intT>
2274 using HasNoCurvature = std::enable_if_t<!has_curvature_v<PointT>,
bool>;
2277 template <
typename Po
intT>
2278 struct has_intensity : has_field<PointT, pcl::fields::intensity>
2281 template <
typename Po
intT>
2282 constexpr
auto has_intensity_v = has_intensity<PointT>::value;
2284 template <
typename Po
intT>
2285 using HasIntensity = std::enable_if_t<has_intensity_v<PointT>,
bool>;
2287 template <
typename Po
intT>
2288 using HasNoIntensity = std::enable_if_t<!has_intensity_v<PointT>,
bool>;
2291 template <
typename Po
intT>
2292 struct has_color : has_any_field<PointT, boost::mpl::vector<pcl::fields::rgb,
2293 pcl::fields::rgba> >
2296 template <
typename Po
intT>
2297 constexpr
auto has_color_v = has_color<PointT>::value;
2299 template <
typename Po
intT>
2300 using HasColor = std::enable_if_t<has_color_v<PointT>,
bool>;
2302 template <
typename Po
intT>
2303 using HasNoColor = std::enable_if_t<!has_color_v<PointT>,
bool>;
2306 template <
typename Po
intT>
2307 struct has_label : has_field<PointT, pcl::fields::label>
2310 template <
typename Po
intT>
2311 constexpr
auto has_label_v = has_label<PointT>::value;
2313 template <
typename Po
intT>
2314 using HasLabel = std::enable_if_t<has_label_v<PointT>,
bool>;
2316 template <
typename Po
intT>
2317 using HasNoLabel = std::enable_if_t<!has_label_v<PointT>,
bool>;
2320 #if defined _MSC_VER
2321 #pragma warning(default: 4201)
Defines all the PCL implemented PointT point type structures.
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
std::bitset< 32 > BorderTraits
Data type to store extended information about a transition from foreground to backgroundSpecification...
Defines functions, macros and traits for allocating and using memory.
static constexpr int descriptorSize_v
std::ostream & operator<<(std::ostream &ostream, int8 value)
Eigen::Map< Eigen::Vector2f > Vector2fMap
Eigen::Map< Eigen::Vector4f, Eigen::Aligned > Vector4fMap
const Eigen::Map< const Vector4c, Eigen::Aligned > Vector4cMapConst
const Eigen::Map< const Eigen::Vector2f > Vector2fMapConst
Eigen::Map< Vector4c, Eigen::Aligned > Vector4cMap
std::ostream & operator<<(std::ostream &os, const BivariatePolynomialT< real > &p)
const Eigen::Map< const Eigen::Vector3f > Vector3fMapConst
const Eigen::Map< const Vector3c > Vector3cMapConst
Eigen::Map< Eigen::Vector3f > Vector3fMap
Eigen::Matrix< std::uint8_t, 4, 1 > Vector4c
const Eigen::Map< const Eigen::Vector4f, Eigen::Aligned > Vector4fMapConst
const Eigen::Map< const Eigen::Array4f, Eigen::Aligned > Array4fMapConst
Eigen::Matrix< std::uint8_t, 3, 1 > Vector3c
Eigen::Map< Eigen::Array4f, Eigen::Aligned > Array4fMap
const Eigen::Map< const Eigen::Array3f > Array3fMapConst
Eigen::Map< Vector3c > Vector3cMap
Eigen::Map< Eigen::Array3f > Array3fMap
Defines all the PCL and non-PCL macros used.
#define PCL_IF_CONSTEXPR(x)
float angle
Computed orientation of the keypoint (-1 if not applicable).
float response
The response by which the most strong keypoints have been selected.
int octave
octave (pyramid layer) from which the keypoint has been extracted.
float scale
Diameter of the meaningful keypoint neighborhood.
A point structure representing Euclidean xyz coordinates, and the intensity value.
A structure representing the Local Reference Frame of a point.
const Eigen::Map< const Eigen::Matrix3f > getMatrix3fMap() const
const Eigen::Map< const Eigen::Vector3f > getYAxisVector3fMap() const
Eigen::Map< Eigen::Vector3f > getXAxisVector3fMap()
Eigen::Map< Eigen::Vector3f > getYAxisVector3fMap()
const Eigen::Map< const Eigen::Vector3f > getZAxisVector3fMap() const
Eigen::Map< Eigen::Vector3f > getZAxisVector3fMap()
const Eigen::Map< const Eigen::Vector3f > getXAxisVector3fMap() const
Eigen::Map< Eigen::Matrix3f > getMatrix3fMap()
A point structure representing an Axis using its normal coordinates.
constexpr Axis(float n_x, float n_y, float n_z)
constexpr Axis(const _Axis &p)
A point structure representing the Binary Robust Invariant Scalable Keypoints (BRISK).
constexpr BRISKSignature512()=default
static constexpr int descriptorSize()
constexpr BRISKSignature512(float _scale, float _orientation)
A structure to store if a point in a range image lies on a border between an obstacle and the backgro...
constexpr BorderDescription(int _x, int _y)
constexpr BorderDescription()=default
A point structure representing a description of whether a point is lying on a surface boundary or not...
constexpr Boundary(std::uint8_t _boundary=0)
A point structure for storing the Point Pair Feature (CPPF) values.
constexpr CPPFSignature(float _alpha=0.f)
constexpr 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 Ensemble of Shape Functions (ESF).
static constexpr int descriptorSize()
constexpr ESFSignature640()=default
A point structure representing the Fast Point Feature Histogram (FPFH).
static constexpr int descriptorSize()
constexpr FPFHSignature33()=default
bool operator()(const PCLPointField &field)
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape descriptor.
static constexpr int descriptorSize()
constexpr GASDSignature512()=default
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
static constexpr int descriptorSize()
constexpr GASDSignature7992()=default
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
constexpr GASDSignature984()=default
static constexpr int descriptorSize()
A point structure representing the GFPFH descriptor with 16 bins.
constexpr GFPFHSignature16()=default
static constexpr int descriptorSize()
A point structure representing the Global Radius-based Surface Descriptor (GRSD).
static constexpr int descriptorSize()
constexpr GRSDSignature21()=default
A point structure representing an N-D histogram.
static constexpr int descriptorSize()
A point structure representing the grayscale intensity in single-channel images.
constexpr Intensity32u(const _Intensity32u &p)
constexpr Intensity32u(std::uint32_t _intensity=0)
A point structure representing the grayscale intensity in single-channel images.
constexpr Intensity8u(std::uint8_t _intensity=0)
constexpr Intensity8u(const _Intensity8u &p)
A point structure representing the intensity gradient of an XYZI point cloud.
constexpr IntensityGradient(float _x, float _y, float _z)
constexpr IntensityGradient()
A point structure representing the grayscale intensity in single-channel images.
constexpr Intensity(const _Intensity &p)
constexpr Intensity(float _intensity=0.f)
A point structure representing an interest point with Euclidean xyz coordinates, and an interest valu...
constexpr Label(std::uint32_t _label=0)
A point structure representing the three moment invariants.
constexpr MomentInvariants()=default
constexpr MomentInvariants(float _j1, float _j2, float _j3)
A point structure representing the Narf descriptor.
constexpr Narf36(float _x, float _y, float _z, float _roll, float _pitch, float _yaw)
static constexpr int descriptorSize()
constexpr Narf36(float _x, float _y, float _z)
constexpr Narf36()=default
A point structure representing the Normal Based Signature for a feature matrix of 4-by-3.
constexpr NormalBasedSignature12()=default
A point structure representing normal coordinates and the surface curvature estimate.
constexpr Normal(const _Normal &p)
constexpr Normal(float _curvature=0.f)
constexpr Normal(float n_x, float n_y, float n_z, float _curvature=0.f)
A point structure representing the Point Feature Histogram with colors (PFHRGB).
constexpr PFHRGBSignature250()=default
static constexpr int descriptorSize()
A point structure representing the Point Feature Histogram (PFH).
constexpr PFHSignature125()=default
static constexpr int descriptorSize()
A point structure for storing the Point Pair Color Feature (PPFRGB) values.
constexpr PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha, float _r, float _g, float _b)
constexpr PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
constexpr PPFRGBSignature(float _alpha=0.f)
A point structure for storing the Point Pair Feature (PPF) values.
constexpr PPFSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
constexpr PPFSignature(float _alpha=0.f)
A point structure representing Digital Elevation Map.
constexpr PointDEM(const _PointDEM &p)
constexpr PointDEM(float _x, float _y, float _z, float _intensity, float _intensity_variance, float _height_variance)
constexpr PointDEM(float _x, float _y, float _z)
A point structure representing Euclidean xyz coordinates, together with normal coordinates and the su...
constexpr PointNormal(float _curvature=0.f)
constexpr PointNormal(float _x, float _y, float _z)
constexpr PointNormal(const _PointNormal &p)
constexpr PointNormal(float _x, float _y, float _z, float n_x, float n_y, float n_z, float _curvature=0.f)
A surfel, that is, a point structure representing Euclidean xyz coordinates, together with normal coo...
constexpr PointSurfel(const _PointSurfel &p)
constexpr PointSurfel(float _x, float _y, float _z, float _nx, float _ny, float _nz, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a, float _radius, float _confidence, float _curvature)
A 2D point structure representing pixel image coordinates.
constexpr PointUV(float _u, float _v)
constexpr PointUV()=default
A point structure representing Euclidean xyz coordinates, padded with an extra range float.
constexpr PointWithRange(float _range=0.f)
constexpr PointWithRange(float _x, float _y, float _z, float _range=0.f)
constexpr PointWithRange(const _PointWithRange &p)
A point structure representing a 3-D position and scale.
constexpr PointWithScale()
constexpr PointWithScale(const _PointWithScale &p)
constexpr PointWithScale(float _x, float _y, float _z, float _scale=1.f, float _angle=-1.f, float _response=0.f, int _octave=0)
A point structure representing Euclidean xyz coordinates together with the viewpoint from which it wa...
constexpr PointWithViewpoint(float _x, float _y, float _z)
constexpr PointWithViewpoint(float _x, float _y, float _z, float _vp_x, float _vp_y, float _vp_z)
constexpr PointWithViewpoint(const _PointWithViewpoint &p)
constexpr PointWithViewpoint()
A 2D point structure representing Euclidean xy coordinates.
pcl::Vector2fMap getVector2fMap()
constexpr PointXY(float _x, float _y)
pcl::Vector2fMapConst getVector2fMap() const
constexpr PointXYZHSV(const _PointXYZHSV &p)
constexpr PointXYZHSV(float _h, float _s, float _v)
constexpr PointXYZHSV(float _x, float _y, float _z, float _h, float _s, float _v)
A point structure representing Euclidean xyz coordinates.
constexpr PointXYZ(float _x, float _y, float _z)
constexpr PointXYZ(const _PointXYZ &p)
constexpr PointXYZI(float _x, float _y, float _z, float _intensity=0.f)
constexpr PointXYZI(float _intensity=0.f)
constexpr PointXYZI(const _PointXYZI &p)
A point structure representing Euclidean xyz coordinates, intensity, together with normal coordinates...
constexpr PointXYZINormal(float _intensity=0.f)
constexpr PointXYZINormal(const _PointXYZINormal &p)
constexpr PointXYZINormal(float _x, float _y, float _z, float _intensity, float n_x, float n_y, float n_z, float _curvature=0.f)
constexpr PointXYZINormal(float _x, float _y, float _z, float _intensity=0.f)
A point structure representing Euclidean xyz coordinates, and the CIELAB color.
constexpr PointXYZLAB(float _x, float _y, float _z, float _L, float _a, float _b)
constexpr PointXYZLAB(const _PointXYZLAB &p)
constexpr PointXYZL(std::uint32_t _label=0)
constexpr PointXYZL(const _PointXYZL &p)
constexpr PointXYZL(float _x, float _y, float _z, std::uint32_t _label=0)
A point structure representing Euclidean xyz coordinates, a label, together with normal coordinates a...
constexpr PointXYZLNormal(const _PointXYZLNormal &p)
constexpr PointXYZLNormal(float _x, float _y, float _z, std::uint32_t _label=0u)
constexpr PointXYZLNormal(std::uint32_t _label=0u)
constexpr PointXYZLNormal(float _x, float _y, float _z, std::uint32_t _label, float n_x, float n_y, float n_z, float _curvature=0.f)
A point structure representing Euclidean xyz coordinates, and the RGBA color.
constexpr PointXYZRGBA(const _PointXYZRGBA &p)
constexpr PointXYZRGBA(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a)
constexpr PointXYZRGBA(float _x, float _y, float _z)
constexpr PointXYZRGBA(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a)
A point structure representing Euclidean xyz coordinates, and the RGB color.
constexpr PointXYZRGB(float _x, float _y, float _z)
constexpr PointXYZRGB(const _PointXYZRGB &p)
constexpr PointXYZRGB(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
constexpr PointXYZRGB(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
constexpr PointXYZRGBL(std::uint32_t _label=0)
constexpr PointXYZRGBL(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint32_t _label=0, std::uint8_t _a=255)
constexpr PointXYZRGBL(float _x, float _y, float _z)
constexpr PointXYZRGBL(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
constexpr PointXYZRGBL(const _PointXYZRGBL &p)
A point structure representing Euclidean xyz coordinates, and the RGB color, together with normal coo...
constexpr 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)
constexpr PointXYZRGBNormal(float _x, float _y, float _z)
constexpr PointXYZRGBNormal(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
constexpr PointXYZRGBNormal(float _curvature=0.f)
constexpr PointXYZRGBNormal(const _PointXYZRGBNormal &p)
constexpr PointXYZRGBNormal(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a, float n_x, float n_y, float n_z, float _curvature=0.f)
constexpr PointXYZRGBNormal(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
A point structure representing the principal curvatures and their magnitudes.
constexpr PrincipalCurvatures(float _pc1, float _pc2)
constexpr PrincipalCurvatures()
float principal_curvature_x
constexpr PrincipalCurvatures(float _x, float _y, float _z)
float principal_curvature_z
float principal_curvature_y
constexpr PrincipalCurvatures(float _x, float _y, float _z, float _pc1, float _pc2)
A point structure representing the minimum and maximum surface radii (in meters) computed using RSD.
constexpr PrincipalRadiiRSD(float _r_min, float _r_max)
constexpr PrincipalRadiiRSD()=default
A structure representing RGB color information.
constexpr RGB(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a=255)
constexpr RGB(const _RGB &p)
constexpr ReferenceFrame()
constexpr ReferenceFrame(const float(&_rf)[9])
constexpr ReferenceFrame(const _ReferenceFrame &p)
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape+col...
static constexpr int descriptorSize()
constexpr SHOT1344()=default
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape onl...
constexpr SHOT352()=default
static constexpr int descriptorSize()
A point structure representing a Shape Context.
static constexpr int descriptorSize()
constexpr ShapeContext1980()=default
A point structure representing a Unique Shape Context.
static constexpr int descriptorSize()
constexpr UniqueShapeContext1960()=default
A point structure representing the Viewpoint Feature Histogram (VFH).
static constexpr int descriptorSize()
constexpr VFHSignature308()=default