41 #include <pcl/memory.h>
42 #include <pcl/pcl_config.h>
43 #include <pcl/pcl_macros.h>
44 #include <pcl/PCLPointField.h>
45 #include <pcl/point_types.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>
61 #include <type_traits>
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))); }
287 #define PCL_ADD_RGB \
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; \
325 inline constexpr
PointXYZ (): PointXYZ(0.f, 0.f, 0.f) {}
329 friend std::ostream&
operator << (std::ostream& os,
const PointXYZ& p);
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} {}
366 inline constexpr
RGB (): RGB(0, 0, 0) {}
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);
409 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101
410 inline constexpr
operator unsigned char()
const
455 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PointXYZI& p);
460 inline constexpr
PointXYZI (
float _intensity = 0.f) : PointXYZI(0.f, 0.f, 0.f, _intensity) {}
462 inline constexpr
PointXYZI (
float _x,
float _y,
float _z,
float _intensity = 0.f) :
_PointXYZI{{{_x, _y, _z, 1.0f}}, {{_intensity}}} {}
480 inline constexpr
PointXYZL (std::uint32_t _label = 0) : PointXYZL(0.f, 0.f, 0.f, _label) {}
482 inline constexpr
PointXYZL (
float _x,
float _y,
float _z, std::uint32_t _label = 0) :
_PointXYZL{{{_x, _y, _z, 1.0f}}, _label} {}
488 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const Label& p);
493 inline constexpr
Label (std::uint32_t _label = 0): label(_label) {}
533 inline constexpr
PointXYZRGBA (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a):
534 PointXYZRGBA (0.f, 0.f, 0.f, _r, _g, _b, _a) {}
537 PointXYZRGBA (_x, _y, _z, 0, 0, 0, 255) {}
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);
599 inline constexpr
PointXYZRGB (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
600 PointXYZRGB (0.f, 0.f, 0.f, _r, _g, _b) {}
603 PointXYZRGB (_x, _y, _z, 0, 0, 0) {}
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);
620 PointXYZRGBL (0.f, 0.f, 0.f, 0, 0, 0, _label) {}
622 inline constexpr
PointXYZRGBL (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
623 PointXYZRGBL (0.f, 0.f, 0.f, _r, _g, _b) {}
626 PointXYZRGBL (_x, _y, _z, 0, 0, 0) {}
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);
662 inline constexpr
PointXYZLAB() : PointXYZLAB{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f} {}
665 float _l,
float _a,
float _b) :
689 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PointXYZHSV& p);
693 PointXYZHSV{p.x, p.y, p.z, p.
h, p.
s, p.
v} {}
700 PointXYZHSV (0.f, 0.f, 0.f, _h, _s, _v) {}
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) {}
737 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PointUV& p);
747 inline constexpr
PointUV() =
default;
749 inline constexpr
PointUV(
float _u,
float _v): u(_u), v(_v) {}
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}}} {}
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} {}
821 inline constexpr
Axis (): Axis (0.f, 0.f, 0.f) {}
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);
853 inline constexpr
PointNormal (
float _curvature = 0.f): PointNormal (0.f, 0.f, 0.f, 0.f, 0.f, 0.f, _curvature) {}
856 PointNormal (_x, _y, _z, 0.f, 0.f, 0.f, 0.f) {}
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}}} {}
878 PCL_ADD_EIGEN_MAPS_RGB
882 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PointXYZRGBNormal& p);
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} {}
918 PointXYZRGBNormal (0.f, 0.f, 0.f, 0, 0, 0, 0.f, 0.f, 0.f, _curvature) {}
921 PointXYZRGBNormal (_x, _y, _z, 0, 0, 0) {}
924 PointXYZRGBNormal (0.f, 0.f, 0.f, _r, _g, _b) {}
926 inline constexpr
PointXYZRGBNormal (
float _x,
float _y,
float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
927 PointXYZRGBNormal (_x, _y, _z, _r, _g, _b, 0.f, 0.f, 0.f) {}
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 }}
967 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PointXYZINormal& p);
974 PointXYZINormal {p.x, p.y, p.z, p.
intensity, p.normal_x, p.normal_y, p.normal_z, p.
curvature} {}
976 inline constexpr
PointXYZINormal (
float _intensity = 0.f): PointXYZINormal (0.f, 0.f, 0.f, _intensity) {}
978 inline constexpr
PointXYZINormal (
float _x,
float _y,
float _z,
float _intensity = 0.f):
979 PointXYZINormal (_x, _y, _z, _intensity, 0.f, 0.f, 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}}
1010 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PointXYZLNormal& p);
1017 PointXYZLNormal {p.x, p.y, p.z, p.
label, p.normal_x, p.normal_y, p.normal_z, p.
curvature} {}
1019 inline constexpr
PointXYZLNormal (std::uint32_t _label = 0u): PointXYZLNormal (0.f, 0.f, 0.f, _label) {}
1021 inline constexpr
PointXYZLNormal (
float _x,
float _y,
float _z, std::uint32_t _label = 0u) :
1022 PointXYZLNormal (_x, _y, _z, _label, 0.f, 0.f, 0.f) {}
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}}
1053 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PointWithRange& p);
1061 inline constexpr
PointWithRange (
float _range = 0.f): PointWithRange (0.f, 0.f, 0.f, _range) {}
1086 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PointWithViewpoint& p);
1096 inline constexpr
PointWithViewpoint (
float _x,
float _y,
float _z): PointWithViewpoint (_x, _y, _z, 0.f, 0.f, 0.f) {}
1098 inline constexpr
PointWithViewpoint (
float _x,
float _y,
float _z,
float _vp_x,
float _vp_y,
float _vp_z) :
1101 friend std::ostream&
operator << (std::ostream& os,
const PointWithViewpoint& p);
1104 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const MomentInvariants& p);
1119 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PrincipalRadiiRSD& p);
1134 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const Boundary& p);
1142 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101
1143 constexpr
operator unsigned char()
const
1149 inline constexpr
Boundary (std::uint8_t _boundary = 0): boundary_point (_boundary) {}
1154 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PrincipalCurvatures& p);
1175 inline constexpr
PrincipalCurvatures (
float _pc1,
float _pc2): PrincipalCurvatures (0.f, 0.f, 0.f, _pc1, _pc2) {}
1177 inline constexpr
PrincipalCurvatures (
float _x,
float _y,
float _z): PrincipalCurvatures (_x, _y, _z, 0.f, 0.f) {}
1185 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PFHSignature125& p);
1192 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<PFHSignature125>; }
1200 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PFHRGBSignature250& p);
1207 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<PFHRGBSignature250>; }
1214 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PPFSignature& p);
1223 inline constexpr
PPFSignature (
float _alpha = 0.f): PPFSignature (0.f, 0.f, 0.f, 0.f, _alpha) {}
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) {}
1231 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const CPPFSignature& p);
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) {}
1251 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const PPFRGBSignature& p);
1261 inline constexpr
PPFRGBSignature (
float _alpha = 0.f): PPFRGBSignature (0.f, 0.f, 0.f, 0.f, _alpha) {}
1263 inline constexpr
PPFRGBSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _alpha = 0.f):
1264 PPFRGBSignature (_f1, _f2, _f3, _f4, _alpha, 0.f, 0.f, 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) {}
1272 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const NormalBasedSignature12& p);
1286 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const ShapeContext1980& p);
1294 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<ShapeContext1980>; }
1301 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const UniqueShapeContext1960& p);
1309 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<UniqueShapeContext1960>; }
1316 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const SHOT352& p);
1324 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<SHOT352>; }
1326 inline constexpr
SHOT352 () =
default;
1332 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const SHOT1344& p);
1340 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<SHOT1344>; }
1342 inline constexpr
SHOT1344 () =
default;
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)); }
1376 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const ReferenceFrame& p);
1380 ReferenceFrame{p.
rf}
1395 _ReferenceFrame{ {{_rf[0], _rf[1], _rf[2], _rf[3], _rf[4], _rf[5], _rf[6], _rf[7], _rf[8]}} } {}
1397 friend std::ostream&
operator << (std::ostream& os,
const ReferenceFrame& p);
1402 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const FPFHSignature33& p);
1409 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<FPFHSignature33>; }
1416 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const VFHSignature308& p);
1423 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<VFHSignature308>; }
1430 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const GRSDSignature21& p);
1437 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<GRSDSignature21>; }
1444 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const BRISKSignature512& p);
1453 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<BRISKSignature512>; }
1457 inline constexpr
BRISKSignature512 (
float _scale,
float _orientation): scale (_scale), orientation (_orientation) {}
1462 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const ESFSignature640& p);
1469 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<ESFSignature640>; }
1476 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const GASDSignature512& p);
1483 static constexpr
int descriptorSize() {
return detail::traits::descriptorSize_v<GASDSignature512>; }
1490 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const GASDSignature984& p);
1497 static constexpr
int descriptorSize() {
return detail::traits::descriptorSize_v<GASDSignature984>; }
1504 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const GASDSignature7992& p);
1511 static constexpr
int descriptorSize() {
return detail::traits::descriptorSize_v<GASDSignature7992>; }
1518 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const GFPFHSignature16& p);
1525 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<GFPFHSignature16>; }
1532 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const Narf36& p);
1540 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<Narf36>; }
1542 inline constexpr
Narf36 () =
default;
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) {}
1552 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const BorderDescription& p);
1570 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const IntensityGradient& p);
1601 static constexpr
int descriptorSize () {
return detail::traits::descriptorSize_v<Histogram<N>>; }
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}}
1706 inline constexpr
PointDEM (): PointDEM (0.f, 0.f, 0.f) {}
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} {}
1717 template <
int N> std::ostream&
1718 operator << (std::ostream& os, const Histogram<N>& p)
1721 PCL_IF_CONSTEXPR(N > 0)
1723 os <<
"(" << p.histogram[0];
1724 std::for_each(p.histogram + 1, std::end(p.histogram),
1725 [&os](
const auto& hist) { os <<
", " << hist; });
1733 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_RGB,
1734 (std::uint32_t, rgba, rgba)
1736 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::RGB,
pcl::_RGB)
1738 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_Intensity,
1739 (
float, intensity, intensity)
1741 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::Intensity,
pcl::_Intensity)
1743 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_Intensity8u,
1744 (std::uint8_t, intensity, intensity)
1746 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::Intensity8u,
pcl::_Intensity8u)
1748 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_Intensity32u,
1749 (std::uint32_t, intensity, intensity)
1751 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::Intensity32u,
pcl::_Intensity32u)
1753 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_PointXYZ,
1758 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZ,
pcl::_PointXYZ)
1760 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_PointXYZRGBA,
1764 (std::uint32_t, rgba, rgba)
1766 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZRGBA,
pcl::_PointXYZRGBA)
1768 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_PointXYZRGB,
1774 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZRGB,
pcl::_PointXYZRGB)
1776 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_PointXYZRGBL,
1780 (std::uint32_t, rgba, rgba)
1781 (std::uint32_t, label, label)
1783 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZRGBL,
pcl::_PointXYZRGBL)
1785 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_PointXYZLAB,
1793 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZLAB,
pcl::_PointXYZLAB)
1795 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_PointXYZHSV,
1803 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZHSV,
pcl::_PointXYZHSV)
1805 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PointXY,
1810 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PointUV,
1815 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::InterestPoint,
1819 (
float, strength, strength)
1822 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_PointXYZI,
1826 (
float, intensity, intensity)
1828 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZI,
pcl::_PointXYZI)
1830 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PointXYZL,
1834 (std::uint32_t, label, label)
1837 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::Label,
1838 (std::uint32_t, label, label)
1841 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_Normal,
1842 (
float, normal_x, normal_x)
1843 (
float, normal_y, normal_y)
1844 (
float, normal_z, normal_z)
1845 (
float, curvature, curvature)
1847 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::Normal,
pcl::_Normal)
1849 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_Axis,
1850 (
float, normal_x, normal_x)
1851 (
float, normal_y, normal_y)
1852 (
float, normal_z, normal_z)
1854 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::Axis,
pcl::_Axis)
1856 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PointNormal,
1860 (
float, normal_x, normal_x)
1861 (
float, normal_y, normal_y)
1862 (
float, normal_z, normal_z)
1863 (
float, curvature, curvature)
1865 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_PointXYZRGBNormal,
1869 (
float, normal_x, normal_x)
1870 (
float, normal_y, normal_y)
1871 (
float, normal_z, normal_z)
1873 (
float, curvature, curvature)
1875 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZRGBNormal,
pcl::_PointXYZRGBNormal)
1876 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PointXYZINormal,
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)
1886 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PointXYZLNormal,
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)
1896 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PointWithRange,
1900 (
float, range, range)
1903 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_PointWithViewpoint,
1911 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointWithViewpoint,
pcl::_PointWithViewpoint)
1913 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::MomentInvariants,
1919 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PrincipalRadiiRSD,
1920 (
float, r_min, r_min)
1921 (
float, r_max, r_max)
1924 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::Boundary,
1925 (std::uint8_t, boundary_point, boundary_point)
1928 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PrincipalCurvatures,
1929 (
float, principal_curvature_x, principal_curvature_x)
1930 (
float, principal_curvature_y, principal_curvature_y)
1931 (
float, principal_curvature_z, principal_curvature_z)
1936 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PFHSignature125,
1937 (
float[125], histogram, pfh)
1940 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PFHRGBSignature250,
1941 (
float[250], histogram, pfhrgb)
1944 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PPFSignature,
1949 (
float, alpha_m, alpha_m)
1952 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::CPPFSignature,
1963 (
float, alpha_m, alpha_m)
1966 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PPFRGBSignature,
1971 (
float, r_ratio, r_ratio)
1972 (
float, g_ratio, g_ratio)
1973 (
float, b_ratio, b_ratio)
1974 (
float, alpha_m, alpha_m)
1977 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::NormalBasedSignature12,
1978 (
float[12], values, values)
1981 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::ShapeContext1980,
1982 (
float[1980], descriptor, shape_context)
1986 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::UniqueShapeContext1960,
1987 (
float[1960], descriptor, shape_context)
1991 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::SHOT352,
1992 (
float[352], descriptor, shot)
1996 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::SHOT1344,
1997 (
float[1344], descriptor, shot)
2001 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::FPFHSignature33,
2002 (
float[33], histogram, fpfh)
2005 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::BRISKSignature512,
2006 (
float, scale, brisk_scale)
2007 (
float, orientation, brisk_orientation)
2008 (
unsigned char[64], descriptor, brisk_descriptor512)
2011 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::VFHSignature308,
2012 (
float[308], histogram, vfh)
2015 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::GRSDSignature21,
2016 (
float[21], histogram, grsd)
2019 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::ESFSignature640,
2020 (
float[640], histogram, esf)
2023 POINT_CLOUD_REGISTER_POINT_STRUCT(
pcl::GASDSignature512,
2024 (
float[512], histogram, gasd)
2027 POINT_CLOUD_REGISTER_POINT_STRUCT(
pcl::GASDSignature984,
2028 (
float[984], histogram, gasd)
2031 POINT_CLOUD_REGISTER_POINT_STRUCT(
pcl::GASDSignature7992,
2032 (
float[7992], histogram, gasd)
2035 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::Narf36,
2036 (
float[36], descriptor, descriptor)
2039 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::GFPFHSignature16,
2040 (
float[16], histogram, gfpfh)
2043 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::IntensityGradient,
2044 (
float, gradient_x, gradient_x)
2045 (
float, gradient_y, gradient_y)
2046 (
float, gradient_z, gradient_z)
2049 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::PointWithScale,
2053 (
float, scale, scale)
2056 POINT_CLOUD_REGISTER_POINT_STRUCT(
pcl::PointSurfel,
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)
2069 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_ReferenceFrame,
2070 (
float[3], x_axis, x_axis)
2071 (
float[3], y_axis, y_axis)
2072 (
float[3], z_axis, z_axis)
2074 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::ReferenceFrame,
pcl::_ReferenceFrame)
2076 POINT_CLOUD_REGISTER_POINT_STRUCT (
pcl::_PointDEM,
2080 (
float, intensity, intensity)
2081 (
float, intensity_variance, intensity_variance)
2082 (
float, height_variance, height_variance)
2084 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointDEM,
pcl::_PointDEM)
2091 template<
typename Po
intT>
2092 struct 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);
2112 template<
typename Po
intT>
2113 struct 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);
2136 #if defined _MSC_VER
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>;
2292 #if defined _MSC_VER
2293 #pragma warning(default: 4201)
constexpr PointXYZI(const _PointXYZI &p)
constexpr PointXYZLNormal(const _PointXYZLNormal &p)
A point structure representing normal coordinates and the surface curvature estimate.
Eigen::Map< Eigen::Vector3f > Vector3fMap
static constexpr int descriptorSize()
constexpr Narf36()=default
constexpr BorderDescription(int _x, int _y)
A point structure representing the grayscale intensity in single-channel images.
friend std::ostream & operator<<(std::ostream &os, const CPPFSignature &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)
A point structure representing a Shape Context.
constexpr PointXYZRGBA(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a)
constexpr PointXYZRGBL(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
constexpr PointXYZI(float _intensity=0.f)
Eigen::Map< Eigen::Vector3f > getXAxisVector3fMap()
constexpr ReferenceFrame(const _ReferenceFrame &p)
std::bitset< 32 > BorderTraits
Data type to store extended information about a transition from foreground to backgroundSpecification...
friend std::ostream & operator<<(std::ostream &os, const UniqueShapeContext1960 &p)
constexpr Normal(float _curvature=0.f)
A point structure representing a description of whether a point is lying on a surface boundary or not...
friend std::ostream & operator<<(std::ostream &os, const GASDSignature7992 &p)
constexpr PointXYZRGB(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
A point structure representing Euclidean xyz coordinates, a label, together with normal coordinates a...
constexpr ESFSignature640()=default
friend std::ostream & operator<<(std::ostream &os, const PointDEM &p)
A point structure representing Euclidean xyz coordinates, padded with an extra range float...
PCL_ADD_POINT4D PCL_ADD_RGB std::uint32_t label
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)
constexpr PointXYZRGB(float _x, float _y, float _z)
constexpr ReferenceFrame(const float(&_rf)[9])
constexpr PointXYZLAB(float _x, float _y, float _z, float _l, float _a, float _b)
friend std::ostream & operator<<(std::ostream &os, const Normal &p)
constexpr RGB(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a=255)
constexpr Intensity(float _intensity=0.f)
const Eigen::Map< const Eigen::Vector4f, Eigen::Aligned > Vector4fMapConst
constexpr PrincipalRadiiRSD(float _r_min, float _r_max)
float scale
Diameter of the meaningful keypoint neighborhood.
constexpr VFHSignature308()=default
constexpr PointDEM(const _PointDEM &p)
A point structure representing the Normal Based Signature for a feature matrix of 4-by-3...
float principal_curvature[3]
constexpr PrincipalCurvatures(float _x, float _y, float _z)
A point structure representing a Unique Shape Context.
static constexpr int descriptorSize()
constexpr UniqueShapeContext1960()=default
constexpr Axis(const _Axis &p)
constexpr PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha, float _r, float _g, float _b)
Eigen::Map< Eigen::Vector3f > getZAxisVector3fMap()
constexpr PointWithViewpoint(float _x, float _y, float _z)
A structure representing the Local Reference Frame of a point.
unsigned char descriptor[64]
constexpr PointWithViewpoint(const _PointWithViewpoint &p)
constexpr PointXYZRGB(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
constexpr PointXYZRGBNormal(const _PointXYZRGBNormal &p)
friend std::ostream & operator<<(std::ostream &os, const PointXY &p)
constexpr IntensityGradient()
float angle
Computed orientation of the keypoint (-1 if not applicable).
Eigen::Map< Eigen::Vector2f > Vector2fMap
constexpr PointXYZL(std::uint32_t _label=0)
static constexpr int descriptorSize()
static constexpr int descriptorSize()
PCL_ADD_UNION_RGB float radius
constexpr PointXYZRGB(const _PointXYZRGB &p)
constexpr GASDSignature7992()=default
constexpr SHOT1344()=default
constexpr Intensity8u(std::uint8_t _intensity=0)
friend std::ostream & operator<<(std::ostream &os, const GASDSignature512 &p)
const Eigen::Map< const Eigen::Vector3f > getZAxisVector3fMap() const
A point structure representing Digital Elevation Map.
constexpr PointXYZHSV(float _x, float _y, float _z, float _h, float _s, float _v)
friend std::ostream & operator<<(std::ostream &os, const MomentInvariants &p)
constexpr Intensity8u(const _Intensity8u &p)
constexpr PointWithScale(float _x, float _y, float _z, float _scale=1.f, float _angle=-1.f, float _response=0.f, int _octave=0)
friend std::ostream & operator<<(std::ostream &os, const GFPFHSignature16 &p)
A point structure representing the Binary Robust Invariant Scalable Keypoints (BRISK).
constexpr GRSDSignature21()=default
friend std::ostream & operator<<(std::ostream &os, const Intensity8u &p)
constexpr PointXY(float _x, float _y)
friend std::ostream & operator<<(std::ostream &os, const PointXYZI &p)
float response
The response by which the most strong keypoints have been selected.
Eigen::Map< Vector3c > Vector3cMap
constexpr Label(std::uint32_t _label=0)
A point structure representing an Axis using its normal coordinates.
static constexpr int descriptorSize()
constexpr PointXYZRGBL(float _x, float _y, float _z)
constexpr PointXYZINormal(float _intensity=0.f)
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
friend std::ostream & operator<<(std::ostream &os, const FPFHSignature33 &p)
constexpr MomentInvariants(float _j1, float _j2, float _j3)
pcl::Vector2fMap getVector2fMap()
friend std::ostream & operator<<(std::ostream &os, const PrincipalCurvatures &p)
A point structure representing Euclidean xyz coordinates, and the RGBA color.
A point structure representing the grayscale intensity in single-channel images.
static constexpr int descriptorSize()
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 PointXYZLNormal(float _x, float _y, float _z, std::uint32_t _label, float n_x, float n_y, float n_z, float _curvature=0.f)
std::ostream & operator<<(std::ostream &os, const BivariatePolynomialT< real > &p)
A point structure representing the Fast Point Feature Histogram (FPFH).
constexpr Boundary(std::uint8_t _boundary=0)
A 2D point structure representing Euclidean xy coordinates.
constexpr PrincipalRadiiRSD()=default
constexpr PointXYZI(float _x, float _y, float _z, float _intensity=0.f)
constexpr PointXYZINormal(float _x, float _y, float _z, float _intensity, float n_x, float n_y, float n_z, float _curvature=0.f)
constexpr PointDEM(float _x, float _y, float _z)
friend std::ostream & operator<<(std::ostream &os, const ShapeContext1980 &p)
constexpr PointWithScale()
friend std::ostream & operator<<(std::ostream &os, const PointSurfel &p)
friend std::ostream & operator<<(std::ostream &os, const PointNormal &p)
constexpr Normal(float n_x, float n_y, float n_z, float _curvature=0.f)
static constexpr int descriptorSize()
A structure representing RGB color information.
friend std::ostream & operator<<(std::ostream &os, const Boundary &p)
A point structure representing an N-D histogram.
A point structure representing Euclidean xyz coordinates, and the CIELAB color.
static constexpr int descriptorSize()
static constexpr int descriptorSize()
A 2D point structure representing pixel image coordinates.
constexpr PFHRGBSignature250()=default
constexpr Narf36(float _x, float _y, float _z, float _roll, float _pitch, float _yaw)
friend std::ostream & operator<<(std::ostream &os, const PointXYZLAB &p)
constexpr PointNormal(float _curvature=0.f)
constexpr PointXYZRGBNormal(float _curvature=0.f)
A point structure representing the GFPFH descriptor with 16 bins.
friend std::ostream & operator<<(std::ostream &os, const SHOT352 &p)
constexpr RGB(const _RGB &p)
const Eigen::Map< const Eigen::Vector3f > getXAxisVector3fMap() const
friend std::ostream & operator<<(std::ostream &os, const PointWithScale &p)
constexpr PointXYZL(const _PointXYZL &p)
A point structure representing the Point Feature Histogram with colors (PFHRGB).
constexpr PointWithRange(const _PointWithRange &p)
static constexpr int descriptorSize()
constexpr PointXYZRGBA(float _x, float _y, float _z)
float principal_curvature_z
A point structure representing Euclidean xyz coordinates, and the intensity value.
constexpr PointXYZRGBL(const _PointXYZRGBL &p)
Eigen::Map< Eigen::Array3f > Array3fMap
constexpr PointNormal(float _x, float _y, float _z, float n_x, float n_y, float n_z, float _curvature=0.f)
friend std::ostream & operator<<(std::ostream &os, const PointUV &p)
constexpr PointUV()=default
float principal_curvature_x
float principal_curvature_y
constexpr BRISKSignature512(float _scale, float _orientation)
PCL_ADD_UNION_RGB float curvature
friend std::ostream & operator<<(std::ostream &os, const ESFSignature640 &p)
constexpr Intensity32u(const _Intensity32u &p)
constexpr PrincipalCurvatures(float _pc1, float _pc2)
constexpr Narf36(float _x, float _y, float _z)
constexpr ShapeContext1980()=default
friend std::ostream & operator<<(std::ostream &os, const PPFSignature &p)
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)
constexpr PointWithScale(const _PointWithScale &p)
constexpr SHOT352()=default
A point structure representing Euclidean xyz coordinates.
A point structure representing Euclidean xyz coordinates, intensity, together with normal coordinates...
static constexpr int descriptorSize()
constexpr Normal(const _Normal &p)
PCL_ADD_POINT4D std::uint32_t label
constexpr PrincipalCurvatures()
constexpr FPFHSignature33()=default
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 PointXYZINormal(float _x, float _y, float _z, float _intensity=0.f)
constexpr GASDSignature512()=default
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
constexpr PointWithRange(float _x, float _y, float _z, float _range=0.f)
static constexpr int descriptorSize()
constexpr PointXYZHSV(float _h, float _s, float _v)
A point structure representing an interest point with Euclidean xyz coordinates, and an interest valu...
friend std::ostream & operator<<(std::ostream &os, const GASDSignature984 &p)
const Eigen::Map< const Vector4c, Eigen::Aligned > Vector4cMapConst
A point structure representing the three moment invariants.
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)
pcl::Vector2fMapConst getVector2fMap() const
constexpr PointWithViewpoint()
const Eigen::Map< const Eigen::Vector3f > Vector3fMapConst
PCL_ADD_POINT4D float intensity
friend std::ostream & operator<<(std::ostream &os, const Intensity32u &p)
constexpr PointXYZRGBNormal(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
Eigen::Map< Eigen::Vector3f > getYAxisVector3fMap()
constexpr PointNormal(float _x, float _y, float _z)
constexpr PointWithRange(float _range=0.f)
const Eigen::Map< const Eigen::Matrix3f > getMatrix3fMap() const
friend std::ostream & operator<<(std::ostream &os, const PointXYZINormal &p)
A point structure representing the grayscale intensity in single-channel images.
friend std::ostream & operator<<(std::ostream &os, const PointXYZLNormal &p)
constexpr PointXYZ(float _x, float _y, float _z)
std::uint8_t boundary_point
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape onl...
constexpr Intensity32u(std::uint32_t _intensity=0)
friend std::ostream & operator<<(std::ostream &os, const RGB &p)
friend std::ostream & operator<<(std::ostream &os, const GRSDSignature21 &p)
int octave
octave (pyramid layer) from which the keypoint has been extracted.
A structure to store if a point in a range image lies on a border between an obstacle and the backgro...
constexpr PointXYZRGBA(const _PointXYZRGBA &p)
constexpr PointXYZLNormal(float _x, float _y, float _z, std::uint32_t _label=0u)
constexpr PrincipalCurvatures(float _x, float _y, float _z, float _pc1, float _pc2)
constexpr PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
friend std::ostream & operator<<(std::ostream &os, const PointWithRange &p)
constexpr GASDSignature984()=default
friend std::ostream & operator<<(std::ostream &os, const BorderDescription &p)
constexpr PointXYZRGBL(std::uint32_t _label=0)
constexpr PointXYZLAB(const _PointXYZLAB &p)
A point structure representing Euclidean xyz coordinates, together with normal coordinates and the su...
Eigen::Map< Eigen::Array4f, Eigen::Aligned > Array4fMap
friend std::ostream & operator<<(std::ostream &os, const PPFRGBSignature &p)
constexpr Intensity(const _Intensity &p)
const Eigen::Map< const Eigen::Array4f, Eigen::Aligned > Array4fMapConst
friend std::ostream & operator<<(std::ostream &os, const IntensityGradient &p)
static constexpr int descriptorSize_v
friend std::ostream & operator<<(std::ostream &os, const PointXYZL &p)
constexpr MomentInvariants()=default
constexpr PointUV(float _u, float _v)
friend std::ostream & operator<<(std::ostream &os, const Narf36 &p)
const Eigen::Map< const Eigen::Vector2f > Vector2fMapConst
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
A point structure for storing the Point Pair Feature (CPPF) values.
A point structure representing Euclidean xyz coordinates together with the viewpoint from which it wa...
friend std::ostream & operator<<(std::ostream &os, const PrincipalRadiiRSD &p)
constexpr ReferenceFrame()
A point structure representing the intensity gradient of an XYZI point cloud.
constexpr PPFSignature(float _alpha=0.f)
friend std::ostream & operator<<(std::ostream &os, const PFHSignature125 &p)
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape+col...
constexpr PointXYZ(const _PointXYZ &p)
constexpr GFPFHSignature16()=default
static constexpr int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const BRISKSignature512 &p)
friend std::ostream & operator<<(std::ostream &os, const PointXYZRGBNormal &p)
friend std::ostream & operator<<(std::ostream &os, const SHOT1344 &p)
A point structure representing the Viewpoint Feature Histogram (VFH).
constexpr PointXYZRGBNormal(float _x, float _y, float _z)
friend std::ostream & operator<<(std::ostream &os, const PFHRGBSignature250 &p)
A point structure representing a 3-D position and scale.
A point structure representing the minimum and maximum surface radii (in meters) computed using RSD...
static constexpr int descriptorSize()
Eigen::Matrix< std::uint8_t, 4, 1 > Vector4c
A point structure representing the Narf descriptor.
const Eigen::Map< const Vector3c > Vector3cMapConst
A point structure representing Euclidean xyz coordinates, and the RGB color.
A point structure representing the principal curvatures and their magnitudes.
constexpr PPFRGBSignature(float _alpha=0.f)
Eigen::Map< Vector4c, Eigen::Aligned > Vector4cMap
constexpr PointDEM(float _x, float _y, float _z, float _intensity, float _intensity_variance, float _height_variance)
static constexpr int descriptorSize()
constexpr PointWithViewpoint(float _x, float _y, float _z, float _vp_x, float _vp_y, float _vp_z)
friend std::ostream & operator<<(std::ostream &os, const VFHSignature308 &p)
A point structure representing the Point Feature Histogram (PFH).
constexpr NormalBasedSignature12()=default
A point structure representing the Ensemble of Shape Functions (ESF).
constexpr PointNormal(const _PointNormal &p)
const Eigen::Map< const Eigen::Array3f > Array3fMapConst
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape descriptor...
friend std::ostream & operator<<(std::ostream &os, const Label &p)
constexpr PPFSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
A point structure representing the Global Radius-based Surface Descriptor (GRSD). ...
constexpr IntensityGradient(float _x, float _y, float _z)
constexpr PointSurfel(const _PointSurfel &p)
friend std::ostream & operator<<(std::ostream &os, const NormalBasedSignature12 &p)
constexpr PointXYZL(float _x, float _y, float _z, std::uint32_t _label=0)
constexpr BRISKSignature512()=default
constexpr PointXYZINormal(const _PointXYZINormal &p)
A surfel, that is, a point structure representing Euclidean xyz coordinates, together with normal coo...
constexpr PointXYZHSV(const _PointXYZHSV &p)
constexpr BorderDescription()=default
Eigen::Map< Eigen::Vector4f, Eigen::Aligned > Vector4fMap
Eigen::Matrix< std::uint8_t, 3, 1 > Vector3c
friend std::ostream & operator<<(std::ostream &os, const Intensity &p)
constexpr Axis(float n_x, float n_y, float n_z)
A point structure representing Euclidean xyz coordinates, and the RGB color, together with normal coo...
constexpr PointXYZLNormal(std::uint32_t _label=0u)
A point structure for storing the Point Pair Feature (PPF) values.
constexpr PFHSignature125()=default
constexpr PointXYZRGBNormal(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
static constexpr int descriptorSize()
constexpr CPPFSignature(float _alpha=0.f)
static constexpr int descriptorSize()
const Eigen::Map< const Eigen::Vector3f > getYAxisVector3fMap() const
Eigen::Map< Eigen::Matrix3f > getMatrix3fMap()
A point structure for storing the Point Pair Color Feature (PPFRGB) values.