42#include <pcl/pcl_config.h>
44#include <pcl/PCLPointField.h>
46#include <pcl/register_point_struct.h>
48#include <boost/mpl/and.hpp>
49#include <boost/mpl/bool.hpp>
50#include <boost/mpl/contains.hpp>
51#include <boost/mpl/fold.hpp>
52#include <boost/mpl/or.hpp>
53#include <boost/mpl/placeholders.hpp>
54#include <boost/mpl/vector.hpp>
64#define PCL_POINT_TYPES \
75 (pcl::InterestPoint) \
79 (pcl::PointXYZRGBNormal) \
80 (pcl::PointXYZINormal) \
81 (pcl::PointXYZLNormal) \
82 (pcl::PointWithRange) \
83 (pcl::PointWithViewpoint) \
84 (pcl::MomentInvariants) \
85 (pcl::PrincipalRadiiRSD) \
87 (pcl::PrincipalCurvatures) \
88 (pcl::PFHSignature125) \
89 (pcl::PFHRGBSignature250) \
91 (pcl::CPPFSignature) \
92 (pcl::PPFRGBSignature) \
93 (pcl::NormalBasedSignature12) \
94 (pcl::FPFHSignature33) \
95 (pcl::VFHSignature308) \
96 (pcl::GASDSignature512) \
97 (pcl::GASDSignature984) \
98 (pcl::GASDSignature7992) \
99 (pcl::GRSDSignature21) \
100 (pcl::ESFSignature640) \
101 (pcl::BRISKSignature512) \
103 (pcl::IntensityGradient) \
104 (pcl::PointWithScale) \
106 (pcl::ShapeContext1980) \
107 (pcl::UniqueShapeContext1960) \
111 (pcl::ReferenceFrame) \
115#define PCL_RGB_POINT_TYPES \
116 (pcl::PointXYZRGBA) \
118 (pcl::PointXYZRGBL) \
119 (pcl::PointXYZRGBNormal) \
123#define PCL_XYZL_POINT_TYPES \
125 (pcl::PointXYZRGBL) \
126 (pcl::PointXYZLNormal)
129#define PCL_FEATURE_POINT_TYPES \
130 (pcl::PFHSignature125) \
131 (pcl::PFHRGBSignature250) \
132 (pcl::PPFSignature) \
133 (pcl::CPPFSignature) \
134 (pcl::PPFRGBSignature) \
135 (pcl::NormalBasedSignature12) \
136 (pcl::FPFHSignature33) \
137 (pcl::VFHSignature308) \
138 (pcl::GASDSignature512) \
139 (pcl::GASDSignature984) \
140 (pcl::GASDSignature7992) \
141 (pcl::GRSDSignature21) \
142 (pcl::ESFSignature640) \
143 (pcl::BRISKSignature512) \
147#define PCL_DESCRIPTOR_FEATURE_POINT_TYPES \
148 (pcl::PFHSignature125) \
149 (pcl::PFHRGBSignature250) \
150 (pcl::FPFHSignature33) \
151 (pcl::VFHSignature308) \
152 (pcl::GASDSignature512) \
153 (pcl::GASDSignature984) \
154 (pcl::GASDSignature7992) \
155 (pcl::GRSDSignature21) \
156 (pcl::ESFSignature640) \
157 (pcl::BRISKSignature512) \
188 template<
typename FeaturePo
intT>
197 using Array4fMap = Eigen::Map<Eigen::Array4f, Eigen::Aligned>;
204 using Vector3c = Eigen::Matrix<std::uint8_t, 3, 1>;
207 using Vector4c = Eigen::Matrix<std::uint8_t, 4, 1>;
211#define PCL_ADD_UNION_POINT4D \
212 union EIGEN_ALIGN16 { \
221#define PCL_ADD_EIGEN_MAPS_POINT4D \
222 inline pcl::Vector2fMap getVector2fMap () { return (pcl::Vector2fMap (data)); } \
223 inline pcl::Vector2fMapConst getVector2fMap () const { return (pcl::Vector2fMapConst (data)); } \
224 inline pcl::Vector3fMap getVector3fMap () { return (pcl::Vector3fMap (data)); } \
225 inline pcl::Vector3fMapConst getVector3fMap () const { return (pcl::Vector3fMapConst (data)); } \
226 inline pcl::Vector4fMap getVector4fMap () { return (pcl::Vector4fMap (data)); } \
227 inline pcl::Vector4fMapConst getVector4fMap () const { return (pcl::Vector4fMapConst (data)); } \
228 inline pcl::Array3fMap getArray3fMap () { return (pcl::Array3fMap (data)); } \
229 inline pcl::Array3fMapConst getArray3fMap () const { return (pcl::Array3fMapConst (data)); } \
230 inline pcl::Array4fMap getArray4fMap () { return (pcl::Array4fMap (data)); } \
231 inline pcl::Array4fMapConst getArray4fMap () const { return (pcl::Array4fMapConst (data)); }
233#define PCL_ADD_POINT4D \
234 PCL_ADD_UNION_POINT4D \
235 PCL_ADD_EIGEN_MAPS_POINT4D
237#define PCL_ADD_UNION_NORMAL4D \
238 union EIGEN_ALIGN16 { \
248#define PCL_ADD_EIGEN_MAPS_NORMAL4D \
249 inline pcl::Vector3fMap getNormalVector3fMap () { return (pcl::Vector3fMap (data_n)); } \
250 inline pcl::Vector3fMapConst getNormalVector3fMap () const { return (pcl::Vector3fMapConst (data_n)); } \
251 inline pcl::Vector4fMap getNormalVector4fMap () { return (pcl::Vector4fMap (data_n)); } \
252 inline pcl::Vector4fMapConst getNormalVector4fMap () const { return (pcl::Vector4fMapConst (data_n)); }
254#define PCL_ADD_NORMAL4D \
255 PCL_ADD_UNION_NORMAL4D \
256 PCL_ADD_EIGEN_MAPS_NORMAL4D
258#define PCL_ADD_UNION_RGB \
272 std::uint32_t rgba; \
275#define PCL_ADD_EIGEN_MAPS_RGB \
276 inline Eigen::Vector3i getRGBVector3i () { return (Eigen::Vector3i (r, g, b)); } \
277 inline const Eigen::Vector3i getRGBVector3i () const { return (Eigen::Vector3i (r, g, b)); } \
278 inline Eigen::Vector4i getRGBVector4i () { return (Eigen::Vector4i (r, g, b, a)); } \
279 inline const Eigen::Vector4i getRGBVector4i () const { return (Eigen::Vector4i (r, g, b, a)); } \
280 inline Eigen::Vector4i getRGBAVector4i () { return (Eigen::Vector4i (r, g, b, a)); } \
281 inline const Eigen::Vector4i getRGBAVector4i () const { return (Eigen::Vector4i (r, g, b, a)); } \
282 inline pcl::Vector3cMap getBGRVector3cMap () { return (pcl::Vector3cMap (reinterpret_cast<std::uint8_t*> (&rgba))); } \
283 inline pcl::Vector3cMapConst getBGRVector3cMap () const { return (pcl::Vector3cMapConst (reinterpret_cast<const std::uint8_t*> (&rgba))); } \
284 inline pcl::Vector4cMap getBGRAVector4cMap () { return (pcl::Vector4cMap (reinterpret_cast<std::uint8_t*> (&rgba))); } \
285 inline pcl::Vector4cMapConst getBGRAVector4cMap () const { return (pcl::Vector4cMapConst (reinterpret_cast<const std::uint8_t*> (&rgba))); }
289 PCL_ADD_EIGEN_MAPS_RGB
291#define PCL_ADD_INTENSITY \
297#define PCL_ADD_INTENSITY_8U \
300 std::uint8_t intensity; \
303#define PCL_ADD_INTENSITY_32U \
306 std::uint32_t intensity; \
342 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const RGB& p);
364 inline constexpr RGB (
const _RGB &p) :
RGB{p.r, p.g, p.b, p.a} {}
368 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}}}} {}
370 friend std::ostream& operator << (std::ostream& os,
const RGB& p);
378 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const Intensity& p);
389 friend std::ostream& operator << (std::ostream& os,
const Intensity& p);
398 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const Intensity8u& p);
409#if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101
410 inline constexpr operator unsigned char()
const
416 friend std::ostream& operator << (std::ostream& os,
const Intensity8u& p);
424 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const Intensity32u& p);
435 friend std::ostream& operator << (std::ostream& os,
const Intensity32u& p);
455 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const PointXYZI& p);
462 inline constexpr PointXYZI (
float _x,
float _y,
float _z,
float _intensity = 0.f) :
_PointXYZI{{{_x, _y, _z, 1.0f}}, {{_intensity}}} {}
464 friend std::ostream& operator << (std::ostream& os,
const PointXYZI& p);
475 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const PointXYZL& p);
482 inline constexpr PointXYZL (
float _x,
float _y,
float _z, std::uint32_t _label = 0) :
_PointXYZL{{{_x, _y, _z, 1.0f}}, _label} {}
484 friend std::ostream& operator << (std::ostream& os,
const PointXYZL& p);
488 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const Label& p);
491 std::uint32_t label = 0;
493 inline constexpr Label (std::uint32_t _label = 0): label(_label) {}
495 friend std::ostream& operator << (std::ostream& os,
const Label& p);
506 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const PointXYZRGBA& p);
533 inline constexpr PointXYZRGBA (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a):
539 inline constexpr PointXYZRGBA (
float _x,
float _y,
float _z, std::uint8_t _r,
540 std::uint8_t _g, std::uint8_t _b, std::uint8_t _a) :
_PointXYZRGBA{{{_x, _y, _z, 1.0f}}, {{{_b, _g, _r, _a}}}} {}
542 friend std::ostream& operator << (std::ostream& os,
const PointXYZRGBA& p);
561 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const PointXYZRGB& p);
599 inline constexpr PointXYZRGB (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
606 std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
607 _PointXYZRGB{{{_x, _y, _z, 1.0f}}, {{{_b, _g, _r, 255}}}} {}
609 friend std::ostream& operator << (std::ostream& os,
const PointXYZRGB& p);
614 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const PointXYZRGBL& p);
622 inline constexpr PointXYZRGBL (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
629 std::uint8_t _r, std::uint8_t _g, std::uint8_t _b,
630 std::uint32_t _label = 0, std::uint8_t _a = 255) :
631 _PointXYZRGBL{{{_x, _y, _z, 1.0f}}, {{{_b, _g, _r, _a}}}, _label} {}
633 friend std::ostream& operator << (std::ostream& os,
const PointXYZRGBL& p);
654 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const PointXYZLAB& p);
665 float _l,
float _a,
float _b) :
668 friend std::ostream& operator << (std::ostream& os,
const PointXYZLAB& p);
689 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const PointXYZHSV& p);
703 float _h,
float _s,
float _v) :
706 friend std::ostream& operator << (std::ostream& os,
const PointXYZHSV& p);
710 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const PointXY& p);
727 inline constexpr PointXY(
float _x,
float _y): x(_x), y(_y) {}
728 inline constexpr PointXY(): x(0.0f), y(0.0f) {}
733 friend std::ostream& operator << (std::ostream& os,
const PointXY& p);
737 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const PointUV& p);
749 inline constexpr PointUV(
float _u,
float _v): u(_u), v(_v) {}
751 friend std::ostream& operator << (std::ostream& os,
const PointUV& p);
754 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const InterestPoint& p);
789 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const Normal& p);
797 inline constexpr Normal (
float _curvature = 0.f):
Normal (0.f, 0.f, 0.f, _curvature) {}
799 inline constexpr Normal (
float n_x,
float n_y,
float n_z,
float _curvature = 0.f) :
800 _Normal{{{n_x, n_y, n_z, 0.0f}}, {{_curvature}}} {}
802 friend std::ostream& operator << (std::ostream& os,
const Normal& p);
813 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const Axis& p);
819 inline constexpr Axis (
const _Axis &p) :
Axis{p.normal_x, p.normal_y, p.normal_z} {}
823 inline constexpr Axis (
float n_x,
float n_y,
float n_z) :
_Axis{{{n_x, n_y, n_z, 0.0f}}} {}
825 friend std::ostream& operator << (std::ostream& os,
const Axis& p);
845 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const PointNormal& p);
858 inline constexpr PointNormal (
float _x,
float _y,
float _z,
float n_x,
float n_y,
float n_z,
float _curvature = 0.f) :
859 _PointNormal{{{_x, _y, _z, 1.0f}}, {{n_x, n_y, n_z, 0.0f}}, {{_curvature}}} {}
861 friend std::ostream& operator << (std::ostream& os,
const PointNormal& p);
878 PCL_ADD_EIGEN_MAPS_RGB
915 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} {}
926 inline constexpr PointXYZRGBNormal (
float _x,
float _y,
float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
929 inline constexpr PointXYZRGBNormal (
float _x,
float _y,
float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b,
930 float n_x,
float n_y,
float n_z,
float _curvature = 0.f) :
932 {{_x, _y, _z, 1.0f}},
933 {{n_x, n_y, n_z, 0.0f}},
934 {{ {{{_b, _g, _r, 255u}}}, _curvature }}
938 inline constexpr PointXYZRGBNormal (
float _x,
float _y,
float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b,
939 std::uint8_t _a,
float n_x,
float n_y,
float n_z,
float _curvature = 0.f) :
941 {{_x, _y, _z, 1.0f}},
942 {{n_x, n_y, n_z, 0.0f}},
943 {{ {{{_b, _g, _r, _a}}}, _curvature }}
974 PointXYZINormal {p.x, p.y, p.z, p.intensity, p.normal_x, p.normal_y, p.normal_z, p.curvature} {}
978 inline constexpr PointXYZINormal (
float _x,
float _y,
float _z,
float _intensity = 0.f):
982 float n_x,
float n_y,
float n_z,
float _curvature = 0.f) :
984 {{_x, _y, _z, 1.0f}},
985 {{n_x, n_y, n_z, 0.0f}},
986 {{_intensity, _curvature}}
1017 PointXYZLNormal {p.x, p.y, p.z, p.label, p.normal_x, p.normal_y, p.normal_z, p.curvature} {}
1021 inline constexpr PointXYZLNormal (
float _x,
float _y,
float _z, std::uint32_t _label = 0u) :
1025 float n_x,
float n_y,
float n_z,
float _curvature = 0.f) :
1027 {{_x, _y, _z, 1.0f}},
1028 {{n_x, n_y, n_z, 0.0f}},
1029 {{_label, _curvature}}
1098 inline constexpr PointWithViewpoint (
float _x,
float _y,
float _z,
float _vp_x,
float _vp_y,
float _vp_z) :
1110 float j1 = 0.f, j2 = 0.f, j3 = 0.f;
1114 inline constexpr MomentInvariants (
float _j1,
float _j2,
float _j3): j1 (_j1), j2 (_j2), j3 (_j3) {}
1125 float r_min = 0.f, r_max = 0.f;
1134 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const Boundary& p);
1140 std::uint8_t boundary_point = 0;
1142#if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101
1143 constexpr operator unsigned char()
const
1145 return boundary_point;
1149 inline constexpr Boundary (std::uint8_t _boundary = 0): boundary_point (_boundary) {}
1151 friend std::ostream& operator << (std::ostream& os,
const Boundary& p);
1162 float principal_curvature[3];
1180 principal_curvature_x (_x), principal_curvature_y (_y), principal_curvature_z (_z), pc1 (_pc1), pc2 (_pc2) {}
1191 float histogram[125] = {0.f};
1192 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<PFHSignature125>; }
1206 float histogram[250] = {0.f};
1207 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<PFHRGBSignature250>; }
1214 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const PPFSignature& p);
1220 float f1 = 0.f, f2 = 0.f, f3 = 0.f, f4 = 0.f;
1221 float alpha_m = 0.f;
1225 inline constexpr PPFSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _alpha = 0.f):
1226 f1 (_f1), f2 (_f2), f3 (_f3), f4 (_f4), alpha_m (_alpha) {}
1228 friend std::ostream& operator << (std::ostream& os,
const PPFSignature& p);
1231 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const CPPFSignature& p);
1237 float f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
1241 CPPFSignature (0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, _alpha) {}
1243 inline constexpr CPPFSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _f5,
float _f6,
1244 float _f7,
float _f8,
float _f9,
float _f10,
float _alpha = 0.f):
1245 f1 (_f1), f2 (_f2), f3 (_f3), f4 (_f4), f5 (_f5), f6 (_f6),
1246 f7 (_f7), f8 (_f8), f9 (_f9), f10 (_f10), alpha_m (_alpha) {}
1257 float f1 = 0.f, f2 = 0.f, f3 = 0.f, f4 = 0.f;
1258 float r_ratio = 0.f, g_ratio = 0.f, b_ratio = 0.f;
1259 float alpha_m = 0.f;
1263 inline constexpr PPFRGBSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _alpha = 0.f):
1266 inline constexpr PPFRGBSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _alpha,
float _r,
float _g,
float _b):
1267 f1 (_f1), f2 (_f2), f3 (_f3), f4 (_f4), r_ratio (_r), g_ratio (_g), b_ratio (_b), alpha_m (_alpha) {}
1279 float values[12] = {0.f};
1292 float descriptor[1980] = {0.f};
1293 float rf[9] = {0.f};
1294 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<ShapeContext1980>; }
1307 float descriptor[1960] = {0.f};
1308 float rf[9] = {0.f};
1309 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<UniqueShapeContext1960>; }
1316 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const SHOT352& p);
1322 float descriptor[352] = {0.f};
1323 float rf[9] = {0.f};
1324 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<SHOT352>; }
1328 friend std::ostream& operator << (std::ostream& os,
const SHOT352& p);
1332 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const SHOT1344& p);
1338 float descriptor[1344] = {0.f};
1339 float rf[9] = {0.f};
1340 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<SHOT1344>; }
1344 friend std::ostream& operator << (std::ostream& os,
const SHOT1344& p);
1365 inline const Eigen::Map<const Eigen::Vector3f>
getXAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (x_axis)); }
1367 inline const Eigen::Map<const Eigen::Vector3f>
getYAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (y_axis)); }
1369 inline const Eigen::Map<const Eigen::Vector3f>
getZAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (z_axis)); }
1370 inline Eigen::Map<Eigen::Matrix3f>
getMatrix3fMap () {
return (Eigen::Matrix3f::Map (rf)); }
1371 inline const Eigen::Map<const Eigen::Matrix3f>
getMatrix3fMap ()
const {
return (Eigen::Matrix3f::Map (rf)); }
1395 _ReferenceFrame{ {{_rf[0], _rf[1], _rf[2], _rf[3], _rf[4], _rf[5], _rf[6], _rf[7], _rf[8]}} } {}
1408 float histogram[33] = {0.f};
1409 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<FPFHSignature33>; }
1422 float histogram[308] = {0.f};
1423 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<VFHSignature308>; }
1436 float histogram[21] = {0.f};
1437 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<GRSDSignature21>; }
1451 float orientation = 0.f;
1452 unsigned char descriptor[64] = {0};
1453 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<BRISKSignature512>; }
1457 inline constexpr BRISKSignature512 (
float _scale,
float _orientation): scale (_scale), orientation (_orientation) {}
1468 float histogram[640] = {0.f};
1469 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<ESFSignature640>; }
1482 float histogram[512] = {0.f};
1483 static constexpr int descriptorSize() {
return detail::traits::descriptorSize_v<GASDSignature512>; }
1496 float histogram[984] = {0.f};
1497 static constexpr int descriptorSize() {
return detail::traits::descriptorSize_v<GASDSignature984>; }
1510 float histogram[7992] = {0.f};
1511 static constexpr int descriptorSize() {
return detail::traits::descriptorSize_v<GASDSignature7992>; }
1524 float histogram[16] = {0.f};
1525 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<GFPFHSignature16>; }
1532 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const Narf36& p);
1538 float x = 0.f, y = 0.f, z = 0.f, roll = 0.f, pitch = 0.f, yaw = 0.f;
1539 float descriptor[36] = {0.f};
1540 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<Narf36>; }
1544 inline constexpr Narf36 (
float _x,
float _y,
float _z):
Narf36 (_x, _y, _z, 0.f, 0.f, 0.f) {}
1546 inline constexpr Narf36 (
float _x,
float _y,
float _z,
float _roll,
float _pitch,
float _yaw):
1547 x (_x), y (_y), z (_z), roll (_roll), pitch (_pitch), yaw (_yaw) {}
1549 friend std::ostream& operator << (std::ostream& os,
const Narf36& p);
1589 inline constexpr IntensityGradient (
float _x,
float _y,
float _z): gradient_x (_x), gradient_y (_y), gradient_z (_z) {}
1601 static constexpr int descriptorSize () {
return detail::traits::descriptorSize_v<Histogram<N>>; }
1632 PointWithScale{p.x, p.y, p.z, p.scale, p.angle, p.response, p.octave} {}
1637 float _angle = -1.f,
float _response = 0.f,
int _octave = 0) :
1638 _PointWithScale{{{_x, _y, _z, 1.0f}}, {_scale}, _angle, _response, _octave } {}
1659 PCL_ADD_EIGEN_MAPS_RGB
1663 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const PointSurfel& p);
1670 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} {}
1673 PointSurfel{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0u, 0u, 0u, 0u, 0.0f, 0.0f, 0.0f} {}
1675 inline constexpr PointSurfel (
float _x,
float _y,
float _z,
float _nx,
1676 float _ny,
float _nz, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a,
1677 float _radius,
float _confidence,
float _curvature) :
1679 {{_x, _y, _z, 1.0f}},
1680 {{_nx, _ny, _nz, 0.0f}},
1681 {{{{{_b, _g, _r, _a}}}, _radius, _confidence, _curvature}}
1685 friend std::ostream& operator << (std::ostream& os,
const PointSurfel& p);
1697 PCL_EXPORTS std::ostream& operator << (std::ostream& os,
const PointDEM& p);
1704 PointDEM{p.x, p.y, p.z, p.intensity, p.intensity_variance, p.height_variance} {}
1708 inline constexpr PointDEM (
float _x,
float _y,
float _z):
PointDEM (_x, _y, _z, 0.f, 0.f, 0.f) {}
1710 inline constexpr PointDEM (
float _x,
float _y,
float _z,
float _intensity,
1711 float _intensity_variance,
float _height_variance) :
1712 _PointDEM{{{_x, _y, _z, 1.0f}}, _intensity, _intensity_variance, _height_variance} {}
1714 friend std::ostream& operator << (std::ostream& os,
const PointDEM& p);
1717 template <
int N> std::ostream&
1725 [&os](
const auto& hist) { os <<
", " << hist; });
1733POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_RGB,
1734 (std::uint32_t, rgba, rgba)
1739 (
float, intensity, intensity)
1744 (std::uint8_t, intensity, intensity)
1749 (std::uint32_t, intensity, intensity)
1764 (std::uint32_t, rgba, rgba)
1780 (std::uint32_t, rgba, rgba)
1781 (std::uint32_t, label, label)
1819 (
float, strength, strength)
1826 (
float, intensity, intensity)
1834 (std::uint32_t, label, label)
1837POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::Label,
1838 (std::uint32_t, label, label)
1842 (
float, normal_x, normal_x)
1843 (
float, normal_y, normal_y)
1844 (
float, normal_z, normal_z)
1845 (
float, curvature, curvature)
1849POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_Axis,
1850 (
float, normal_x, normal_x)
1851 (
float, normal_y, normal_y)
1852 (
float, normal_z, normal_z)
1860 (
float, normal_x, normal_x)
1861 (
float, normal_y, normal_y)
1862 (
float, normal_z, normal_z)
1863 (
float, curvature, curvature)
1869 (
float, normal_x, normal_x)
1870 (
float, normal_y, normal_y)
1871 (
float, normal_z, normal_z)
1873 (
float, curvature, curvature)
1880 (
float, normal_x, normal_x)
1881 (
float, normal_y, normal_y)
1882 (
float, normal_z, normal_z)
1883 (
float, intensity, intensity)
1884 (
float, curvature, curvature)
1890 (
float, normal_x, normal_x)
1891 (
float, normal_y, normal_y)
1892 (
float, normal_z, normal_z)
1893 (std::uint32_t, label, label)
1894 (
float, curvature, curvature)
1900 (
float, range, range)
1920 (
float, r_min, r_min)
1921 (
float, r_max, r_max)
1925 (std::uint8_t, boundary_point, boundary_point)
1929 (
float, principal_curvature_x, principal_curvature_x)
1930 (
float, principal_curvature_y, principal_curvature_y)
1931 (
float, principal_curvature_z, principal_curvature_z)
1937 (
float[125], histogram, pfh)
1941 (
float[250], histogram, pfhrgb)
1949 (
float, alpha_m, alpha_m)
1963 (
float, alpha_m, alpha_m)
1971 (
float, r_ratio, r_ratio)
1972 (
float, g_ratio, g_ratio)
1973 (
float, b_ratio, b_ratio)
1974 (
float, alpha_m, alpha_m)
1978 (
float[12], values, values)
1982 (
float[1980], descriptor, shape_context)
1987 (
float[1960], descriptor, shape_context)
1992 (
float[352], descriptor, shot)
1997 (
float[1344], descriptor, shot)
2002 (
float[33], histogram, fpfh)
2006 (
float, scale, brisk_scale)
2007 (
float, orientation, brisk_orientation)
2008 (
unsigned char[64], descriptor, brisk_descriptor512)
2012 (
float[308], histogram, vfh)
2016 (
float[21], histogram, grsd)
2020 (
float[640], histogram, esf)
2024 (
float[512], histogram, gasd)
2028 (
float[984], histogram, gasd)
2032 (
float[7992], histogram, gasd)
2036 (
float[36], descriptor, descriptor)
2040 (
float[16], histogram, gfpfh)
2044 (
float, gradient_x, gradient_x)
2045 (
float, gradient_y, gradient_y)
2046 (
float, gradient_z, gradient_z)
2053 (
float, scale, scale)
2060 (
float, normal_x, normal_x)
2061 (
float, normal_y, normal_y)
2062 (
float, normal_z, normal_z)
2063 (std::uint32_t, rgba, rgba)
2064 (
float, radius, radius)
2065 (
float, confidence, confidence)
2066 (
float, curvature, curvature)
2070 (
float[3], x_axis, x_axis)
2071 (
float[3], y_axis, y_axis)
2072 (
float[3], z_axis, z_axis)
2080 (
float, intensity, intensity)
2081 (
float, intensity_variance, intensity_variance)
2082 (
float, height_variance, height_variance)
2091template<
typename Po
intT>
2092struct FieldMatches<
PointT, ::pcl::fields::rgba>
2096 if (field.
name ==
"rgb")
2106 return (field.
name == traits::name<PointT, fields::rgba>::value &&
2107 field.
datatype == traits::datatype<PointT, fields::rgba>::value &&
2108 field.
count == traits::datatype<PointT, fields::rgba>::size);
2112template<
typename Po
intT>
2113struct FieldMatches<
PointT, fields::rgb>
2117 if (field.
name ==
"rgba")
2125 return (field.
name == traits::name<PointT, fields::rgb>::value &&
2126 (field.
datatype == traits::datatype<PointT, fields::rgb>::value ||
2128 field.
count == traits::datatype<PointT, fields::rgb>::size);
2137 #pragma warning(disable: 4201)
2159 template <
typename Po
intT,
typename Field>
2160 struct has_field : boost::mpl::contains<typename pcl::traits::fieldList<PointT>::type, Field>::type
2164 template <
typename Po
intT,
typename Field>
2165 struct has_all_fields : boost::mpl::fold<Field,
2166 boost::mpl::bool_<true>,
2167 boost::mpl::and_<boost::mpl::_1,
2168 has_field<PointT, boost::mpl::_2> > >::type
2172 template <
typename Po
intT,
typename Field>
2173 struct has_any_field : boost::mpl::fold<Field,
2174 boost::mpl::bool_<false>,
2175 boost::mpl::or_<boost::mpl::_1,
2176 has_field<PointT, boost::mpl::_2> > >::type
2187 template <
typename Po
intT>
2188 struct has_xy : has_all_fields<PointT, boost::mpl::vector<pcl::fields::x,
2192 template <
typename Po
intT>
2193 constexpr auto has_xy_v = has_xy<PointT>::value;
2195 template <
typename Po
intT>
2196 using HasXY = std::enable_if_t<has_xy_v<PointT>,
bool>;
2198 template <
typename Po
intT>
2199 using HasNoXY = std::enable_if_t<!has_xy_v<PointT>,
bool>;
2202 template <
typename Po
intT>
2203 struct has_xyz : has_all_fields<PointT, boost::mpl::vector<pcl::fields::x,
2208 template <
typename Po
intT>
2209 constexpr auto has_xyz_v = has_xyz<PointT>::value;
2211 template <
typename Po
intT>
2212 using HasXYZ = std::enable_if_t<has_xyz_v<PointT>,
bool>;
2214 template <
typename Po
intT>
2215 using HasNoXYZ = std::enable_if_t<!has_xyz_v<PointT>,
bool>;
2219 template <
typename Po
intT>
2220 struct has_normal : has_all_fields<PointT, boost::mpl::vector<pcl::fields::normal_x,
2221 pcl::fields::normal_y,
2222 pcl::fields::normal_z> >
2225 template <
typename Po
intT>
2226 constexpr auto has_normal_v = has_normal<PointT>::value;
2228 template <
typename Po
intT>
2229 using HasNormal = std::enable_if_t<has_normal_v<PointT>,
bool>;
2231 template <
typename Po
intT>
2232 using HasNoNormal = std::enable_if_t<!has_normal_v<PointT>,
bool>;
2235 template <
typename Po
intT>
2236 struct has_curvature : has_field<PointT, pcl::fields::curvature>
2239 template <
typename Po
intT>
2240 constexpr auto has_curvature_v = has_curvature<PointT>::value;
2242 template <
typename Po
intT>
2243 using HasCurvature = std::enable_if_t<has_curvature_v<PointT>,
bool>;
2245 template <
typename Po
intT>
2246 using HasNoCurvature = std::enable_if_t<!has_curvature_v<PointT>,
bool>;
2249 template <
typename Po
intT>
2250 struct has_intensity : has_field<PointT, pcl::fields::intensity>
2253 template <
typename Po
intT>
2254 constexpr auto has_intensity_v = has_intensity<PointT>::value;
2256 template <
typename Po
intT>
2257 using HasIntensity = std::enable_if_t<has_intensity_v<PointT>,
bool>;
2259 template <
typename Po
intT>
2260 using HasNoIntensity = std::enable_if_t<!has_intensity_v<PointT>,
bool>;
2263 template <
typename Po
intT>
2264 struct has_color : has_any_field<PointT, boost::mpl::vector<pcl::fields::rgb,
2265 pcl::fields::rgba> >
2268 template <
typename Po
intT>
2269 constexpr auto has_color_v = has_color<PointT>::value;
2271 template <
typename Po
intT>
2272 using HasColor = std::enable_if_t<has_color_v<PointT>,
bool>;
2274 template <
typename Po
intT>
2275 using HasNoColor = std::enable_if_t<!has_color_v<PointT>,
bool>;
2278 template <
typename Po
intT>
2279 struct has_label : has_field<PointT, pcl::fields::label>
2282 template <
typename Po
intT>
2283 constexpr auto has_label_v = has_label<PointT>::value;
2285 template <
typename Po
intT>
2286 using HasLabel = std::enable_if_t<has_label_v<PointT>,
bool>;
2288 template <
typename Po
intT>
2289 using HasNoLabel = std::enable_if_t<!has_label_v<PointT>,
bool>;
2293 #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
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)
PCL_ADD_POINT4D float intensity
PCL_ADD_UNION_RGB float radius
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.
PCL_ADD_POINT4D std::uint32_t label
PCL_ADD_POINT4D PCL_ADD_RGB std::uint32_t label
PCL_ADD_UNION_RGB float curvature
A structure representing the Local Reference Frame of a point.
Eigen::Map< Eigen::Vector3f > getZAxisVector3fMap()
Eigen::Map< Eigen::Vector3f > getXAxisVector3fMap()
Eigen::Map< Eigen::Vector3f > getYAxisVector3fMap()
const Eigen::Map< const Eigen::Vector3f > getYAxisVector3fMap() const
Eigen::Map< Eigen::Matrix3f > getMatrix3fMap()
const Eigen::Map< const Eigen::Vector3f > getZAxisVector3fMap() const
const Eigen::Map< const Eigen::Vector3f > getXAxisVector3fMap() const
const Eigen::Map< const Eigen::Matrix3f > getMatrix3fMap() const
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