43 #include <pcl/PCLPointField.h>
45 #include <pcl/register_point_struct.h>
47 #include <boost/mpl/and.hpp>
48 #include <boost/mpl/bool.hpp>
49 #include <boost/mpl/contains.hpp>
50 #include <boost/mpl/fold.hpp>
51 #include <boost/mpl/or.hpp>
52 #include <boost/mpl/placeholders.hpp>
53 #include <boost/mpl/vector.hpp>
60 #include <type_traits>
63 #define PCL_POINT_TYPES \
73 (pcl::InterestPoint) \
77 (pcl::PointXYZRGBNormal) \
78 (pcl::PointXYZINormal) \
79 (pcl::PointXYZLNormal) \
80 (pcl::PointWithRange) \
81 (pcl::PointWithViewpoint) \
82 (pcl::MomentInvariants) \
83 (pcl::PrincipalRadiiRSD) \
85 (pcl::PrincipalCurvatures) \
86 (pcl::PFHSignature125) \
87 (pcl::PFHRGBSignature250) \
89 (pcl::CPPFSignature) \
90 (pcl::PPFRGBSignature) \
91 (pcl::NormalBasedSignature12) \
92 (pcl::FPFHSignature33) \
93 (pcl::VFHSignature308) \
94 (pcl::GASDSignature512) \
95 (pcl::GASDSignature984) \
96 (pcl::GASDSignature7992) \
97 (pcl::GRSDSignature21) \
98 (pcl::ESFSignature640) \
99 (pcl::BRISKSignature512) \
101 (pcl::IntensityGradient) \
102 (pcl::PointWithScale) \
104 (pcl::ShapeContext1980) \
105 (pcl::UniqueShapeContext1960) \
109 (pcl::ReferenceFrame) \
113 #define PCL_RGB_POINT_TYPES \
114 (pcl::PointXYZRGBA) \
116 (pcl::PointXYZRGBL) \
117 (pcl::PointXYZRGBNormal) \
121 #define PCL_XYZ_POINT_TYPES \
125 (pcl::PointXYZRGBA) \
127 (pcl::PointXYZRGBL) \
129 (pcl::InterestPoint) \
131 (pcl::PointXYZRGBNormal) \
132 (pcl::PointXYZINormal) \
133 (pcl::PointXYZLNormal) \
134 (pcl::PointWithRange) \
135 (pcl::PointWithViewpoint) \
136 (pcl::PointWithScale) \
141 #define PCL_XYZL_POINT_TYPES \
143 (pcl::PointXYZRGBL) \
144 (pcl::PointXYZLNormal)
147 #define PCL_NORMAL_POINT_TYPES \
150 (pcl::PointXYZRGBNormal) \
151 (pcl::PointXYZINormal) \
152 (pcl::PointXYZLNormal) \
156 #define PCL_FEATURE_POINT_TYPES \
157 (pcl::PFHSignature125) \
158 (pcl::PFHRGBSignature250) \
159 (pcl::PPFSignature) \
160 (pcl::CPPFSignature) \
161 (pcl::PPFRGBSignature) \
162 (pcl::NormalBasedSignature12) \
163 (pcl::FPFHSignature33) \
164 (pcl::VFHSignature308) \
165 (pcl::GASDSignature512) \
166 (pcl::GASDSignature984) \
167 (pcl::GASDSignature7992) \
168 (pcl::GRSDSignature21) \
169 (pcl::ESFSignature640) \
170 (pcl::BRISKSignature512) \
178 using Array4fMap = Eigen::Map<Eigen::Array4f, Eigen::Aligned>;
185 using Vector3c = Eigen::Matrix<std::uint8_t, 3, 1>;
188 using Vector4c = Eigen::Matrix<std::uint8_t, 4, 1>;
192 #define PCL_ADD_UNION_POINT4D \
193 union EIGEN_ALIGN16 { \
202 #define PCL_ADD_EIGEN_MAPS_POINT4D \
203 inline pcl::Vector3fMap getVector3fMap () { return (pcl::Vector3fMap (data)); } \
204 inline pcl::Vector3fMapConst getVector3fMap () const { return (pcl::Vector3fMapConst (data)); } \
205 inline pcl::Vector4fMap getVector4fMap () { return (pcl::Vector4fMap (data)); } \
206 inline pcl::Vector4fMapConst getVector4fMap () const { return (pcl::Vector4fMapConst (data)); } \
207 inline pcl::Array3fMap getArray3fMap () { return (pcl::Array3fMap (data)); } \
208 inline pcl::Array3fMapConst getArray3fMap () const { return (pcl::Array3fMapConst (data)); } \
209 inline pcl::Array4fMap getArray4fMap () { return (pcl::Array4fMap (data)); } \
210 inline pcl::Array4fMapConst getArray4fMap () const { return (pcl::Array4fMapConst (data)); }
212 #define PCL_ADD_POINT4D \
213 PCL_ADD_UNION_POINT4D \
214 PCL_ADD_EIGEN_MAPS_POINT4D
216 #define PCL_ADD_UNION_NORMAL4D \
217 union EIGEN_ALIGN16 { \
227 #define PCL_ADD_EIGEN_MAPS_NORMAL4D \
228 inline pcl::Vector3fMap getNormalVector3fMap () { return (pcl::Vector3fMap (data_n)); } \
229 inline pcl::Vector3fMapConst getNormalVector3fMap () const { return (pcl::Vector3fMapConst (data_n)); } \
230 inline pcl::Vector4fMap getNormalVector4fMap () { return (pcl::Vector4fMap (data_n)); } \
231 inline pcl::Vector4fMapConst getNormalVector4fMap () const { return (pcl::Vector4fMapConst (data_n)); }
233 #define PCL_ADD_NORMAL4D \
234 PCL_ADD_UNION_NORMAL4D \
235 PCL_ADD_EIGEN_MAPS_NORMAL4D
237 #define PCL_ADD_UNION_RGB \
251 std::uint32_t rgba; \
254 #define PCL_ADD_EIGEN_MAPS_RGB \
255 inline Eigen::Vector3i getRGBVector3i () { return (Eigen::Vector3i (r, g, b)); } \
256 inline const Eigen::Vector3i getRGBVector3i () const { return (Eigen::Vector3i (r, g, b)); } \
257 inline Eigen::Vector4i getRGBVector4i () { return (Eigen::Vector4i (r, g, b, a)); } \
258 inline const Eigen::Vector4i getRGBVector4i () const { return (Eigen::Vector4i (r, g, b, a)); } \
259 inline Eigen::Vector4i getRGBAVector4i () { return (Eigen::Vector4i (r, g, b, a)); } \
260 inline const Eigen::Vector4i getRGBAVector4i () const { return (Eigen::Vector4i (r, g, b, a)); } \
261 inline pcl::Vector3cMap getBGRVector3cMap () { return (pcl::Vector3cMap (reinterpret_cast<std::uint8_t*> (&rgba))); } \
262 inline pcl::Vector3cMapConst getBGRVector3cMap () const { return (pcl::Vector3cMapConst (reinterpret_cast<const std::uint8_t*> (&rgba))); } \
263 inline pcl::Vector4cMap getBGRAVector4cMap () { return (pcl::Vector4cMap (reinterpret_cast<std::uint8_t*> (&rgba))); } \
264 inline pcl::Vector4cMapConst getBGRAVector4cMap () const { return (pcl::Vector4cMapConst (reinterpret_cast<const std::uint8_t*> (&rgba))); }
266 #define PCL_ADD_RGB \
268 PCL_ADD_EIGEN_MAPS_RGB
270 #define PCL_ADD_INTENSITY \
276 #define PCL_ADD_INTENSITY_8U \
279 std::uint8_t intensity; \
282 #define PCL_ADD_INTENSITY_32U \
285 std::uint32_t intensity; \
308 x = _x; y = _y; z = _z;
356 r = _r; g = _g; b = _b;
377 intensity = p.intensity;
382 intensity = _intensity;
403 intensity = p.intensity;
408 intensity = _intensity;
411 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101
412 operator unsigned char()
const
435 intensity = p.intensity;
440 intensity = _intensity;
468 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
474 inline PointXYZI (
float _x,
float _y,
float _z,
float _intensity = 0.f)
476 x = _x; y = _y; z = _z;
497 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
505 x = _x; y = _y; z = _z;
557 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
572 x = _x; y = _y; z = _z;
574 r = _r; g = _g; b = _b; a = _a;
632 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
647 x = _x; y = _y; z = _z;
649 r = _r; g = _g; b = _b;
663 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
681 x = _x; y = _y; z = _z;
683 r = _r; g = _g; b = _b;
714 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
715 h = p.
h; s = p.
s; v = p.
v;
726 float _h,
float _s,
float _v)
728 x = _x; y = _y; z = _z;
730 h = _h; s = _s; v = _v;
816 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z;
821 inline Normal (
float _curvature = 0.f):
Normal (0.f, 0.f, 0.f, _curvature) {}
823 inline Normal (
float n_x,
float n_y,
float n_z,
float _curvature = 0.f)
825 normal_x = n_x; normal_y = n_y; normal_z = n_z;
849 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z;
855 inline Axis (
float n_x,
float n_y,
float n_z)
857 normal_x = n_x; normal_y = n_y; normal_z = n_z;
889 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
890 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
899 inline PointNormal (
float _x,
float _y,
float _z,
float n_x,
float n_y,
float n_z,
float _curvature = 0.f)
901 x = _x; y = _y; z = _z;
903 normal_x = n_x; normal_y = n_y; normal_z = n_z;
963 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
964 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
982 float n_x,
float n_y,
float n_z,
float _curvature = 0.f)
984 x = _x; y = _y; z = _z;
986 r = _r; g = _g; b = _b;
988 normal_x = n_x; normal_y = n_y; normal_z = n_z;
1020 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1021 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
1032 float n_x,
float n_y,
float n_z,
float _curvature = 0.f)
1034 x = _x; y = _y; z = _z;
1037 normal_x = n_x; normal_y = n_y; normal_z = n_z;
1070 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1071 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
1082 float n_x,
float n_y,
float n_z,
float _curvature = 0.f)
1084 x = _x; y = _y; z = _z;
1087 normal_x = n_x; normal_y = n_y; normal_z = n_z;
1120 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1128 x = _x; y = _y; z = _z;
1161 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1167 PCL_DEPRECATED(1, 12,
"Use ctor accepting all position (x, y, z) data")
1171 PCL_DEPRECATED(1, 12,
"Use ctor accepting all viewpoint (vp_x, vp_y, vp_z) data")
1179 x = _x; y = _y; z = _z;
1181 vp_x = _vp_x; vp_y = _vp_y; vp_z = _vp_z;
1225 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101
1226 operator unsigned char()
const
1307 inline PPFSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _alpha = 0.f):
1323 CPPFSignature (0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, _alpha) {}
1325 inline CPPFSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _f5,
float _f6,
1326 float _f7,
float _f8,
float _f9,
float _f10,
float _alpha = 0.f):
1327 f1 (_f1),
f2 (_f2),
f3 (_f3),
f4 (_f4),
f5 (_f5),
f6 (_f6),
1348 inline PPFRGBSignature (
float _f1,
float _f2,
float _f3,
float _f4,
float _alpha,
float _r,
float _g,
float _b):
1447 inline const Eigen::Map<const Eigen::Vector3f>
getXAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (x_axis)); }
1449 inline const Eigen::Map<const Eigen::Vector3f>
getYAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (y_axis)); }
1451 inline const Eigen::Map<const Eigen::Vector3f>
getZAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (z_axis)); }
1452 inline Eigen::Map<Eigen::Matrix3f>
getMatrix3fMap () {
return (Eigen::Matrix3f::Map (rf)); }
1453 inline const Eigen::Map<const Eigen::Matrix3f>
getMatrix3fMap ()
const {
return (Eigen::Matrix3f::Map (rf)); }
1463 std::copy_n(p.
rf, 9, rf);
1468 std::fill_n(x_axis, 3, 0.f);
1469 std::fill_n(y_axis, 3, 0.f);
1470 std::fill_n(z_axis, 3, 0.f);
1622 inline Narf36 (
float _x,
float _y,
float _z):
Narf36 (_x, _y, _z, 0.f, 0.f, 0.f) {}
1624 inline Narf36 (
float _x,
float _y,
float _z,
float _roll,
float _pitch,
float _yaw):
1712 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1722 float _angle = -1.f,
float _response = 0.f,
int _octave = 0)
1724 x = _x; y = _y; z = _z;
1763 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1774 normal_x = normal_y = normal_z = data_n[3] = 0.0f;
1802 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1812 inline PointDEM (
float _x,
float _y,
float _z,
float _intensity,
1813 float _intensity_variance,
float _height_variance)
1815 x = _x; y = _y; z = _z;
1825 template <
int N> std::ostream&
1833 [&os](
const auto& hist) { os <<
", " << hist; });
1847 (
float, intensity, intensity)
1917 (
float, strength, strength)
1924 (
float, intensity, intensity)
1940 (
float, normal_x, normal_x)
1941 (
float, normal_y, normal_y)
1942 (
float, normal_z, normal_z)
1943 (
float, curvature, curvature)
1948 (
float, normal_x, normal_x)
1949 (
float, normal_y, normal_y)
1950 (
float, normal_z, normal_z)
1958 (
float, normal_x, normal_x)
1959 (
float, normal_y, normal_y)
1960 (
float, normal_z, normal_z)
1961 (
float, curvature, curvature)
1968 (
float, normal_x, normal_x)
1969 (
float, normal_y, normal_y)
1970 (
float, normal_z, normal_z)
1971 (
float, curvature, curvature)
1978 (
float, intensity, intensity)
1979 (
float, normal_x, normal_x)
1980 (
float, normal_y, normal_y)
1981 (
float, normal_z, normal_z)
1982 (
float, curvature, curvature)
1989 (
float, normal_x, normal_x)
1990 (
float, normal_y, normal_y)
1991 (
float, normal_z, normal_z)
1992 (
float, curvature, curvature)
1998 (
float, range, range)
2018 (
float, r_min, r_min)
2019 (
float, r_max, r_max)
2027 (
float, principal_curvature_x, principal_curvature_x)
2028 (
float, principal_curvature_y, principal_curvature_y)
2029 (
float, principal_curvature_z, principal_curvature_z)
2035 (
float[125], histogram, pfh)
2039 (
float[250], histogram, pfhrgb)
2047 (
float, alpha_m, alpha_m)
2061 (
float, alpha_m, alpha_m)
2069 (
float, r_ratio, r_ratio)
2070 (
float, g_ratio, g_ratio)
2071 (
float, b_ratio, b_ratio)
2072 (
float, alpha_m, alpha_m)
2076 (
float[12], values, values)
2080 (
float[1980], descriptor, shape_context)
2085 (
float[1960], descriptor, shape_context)
2090 (
float[352], descriptor, shot)
2095 (
float[1344], descriptor, shot)
2100 (
float[33], histogram, fpfh)
2104 (
float, scale, brisk_scale)
2105 (
float, orientation, brisk_orientation)
2106 (
unsigned char[64], descriptor, brisk_descriptor512)
2110 (
float[308], histogram, vfh)
2114 (
float[21], histogram, grsd)
2118 (
float[640], histogram, esf)
2122 (
float[512], histogram, gasd)
2126 (
float[984], histogram, gasd)
2130 (
float[7992], histogram, gasd)
2134 (
float[36], descriptor, descriptor)
2138 (
float[16], histogram, gfpfh)
2142 (
float, gradient_x, gradient_x)
2143 (
float, gradient_y, gradient_y)
2144 (
float, gradient_z, gradient_z)
2151 (
float, scale, scale)
2158 (
float, normal_x, normal_x)
2159 (
float, normal_y, normal_y)
2160 (
float, normal_z, normal_z)
2162 (
float, radius, radius)
2163 (
float, confidence, confidence)
2164 (
float, curvature, curvature)
2168 (
float[3], x_axis, x_axis)
2169 (
float[3], y_axis, y_axis)
2170 (
float[3], z_axis, z_axis)
2178 (
float, intensity, intensity)
2179 (
float, intensity_variance, intensity_variance)
2180 (
float, height_variance, height_variance)
2189 template<
typename Po
intT>
2190 struct FieldMatches<
PointT, ::pcl::fields::rgba>
2194 if (field.
name ==
"rgb")
2204 return (field.
name == traits::name<PointT, fields::rgba>::value &&
2205 field.
datatype == traits::datatype<PointT, fields::rgba>::value &&
2206 field.
count == traits::datatype<PointT, fields::rgba>::size);
2210 template<
typename Po
intT>
2211 struct FieldMatches<
PointT, fields::rgb>
2215 if (field.
name ==
"rgba")
2223 return (field.
name == traits::name<PointT, fields::rgb>::value &&
2224 (field.
datatype == traits::datatype<PointT, fields::rgb>::value ||
2226 field.
count == traits::datatype<PointT, fields::rgb>::size);
2234 #if defined _MSC_VER
2235 #pragma warning(disable: 4201)
2257 template <
typename Po
intT,
typename Field>
2258 struct has_field : boost::mpl::contains<typename pcl::traits::fieldList<PointT>::type, Field>::type
2262 template <
typename Po
intT,
typename Field>
2263 struct has_all_fields : boost::mpl::fold<Field,
2264 boost::mpl::bool_<true>,
2265 boost::mpl::and_<boost::mpl::_1,
2266 has_field<PointT, boost::mpl::_2> > >::type
2270 template <
typename Po
intT,
typename Field>
2271 struct has_any_field : boost::mpl::fold<Field,
2272 boost::mpl::bool_<false>,
2273 boost::mpl::or_<boost::mpl::_1,
2274 has_field<PointT, boost::mpl::_2> > >::type
2285 template <
typename Po
intT>
2286 struct has_xy : has_all_fields<PointT, boost::mpl::vector<pcl::fields::x,
2290 template <
typename Po
intT>
2291 constexpr
auto has_xy_v = has_xy<PointT>::value;
2293 template <
typename Po
intT>
2294 using HasXY = std::enable_if_t<has_xy_v<PointT>,
bool>;
2296 template <
typename Po
intT>
2297 using HasNoXY = std::enable_if_t<!has_xy_v<PointT>,
bool>;
2300 template <
typename Po
intT>
2301 struct has_xyz : has_all_fields<PointT, boost::mpl::vector<pcl::fields::x,
2306 template <
typename Po
intT>
2307 constexpr
auto has_xyz_v = has_xyz<PointT>::value;
2309 template <
typename Po
intT>
2310 using HasXYZ = std::enable_if_t<has_xyz_v<PointT>,
bool>;
2312 template <
typename Po
intT>
2313 using HasNoXYZ = std::enable_if_t<!has_xyz_v<PointT>,
bool>;
2317 template <
typename Po
intT>
2318 struct has_normal : has_all_fields<PointT, boost::mpl::vector<pcl::fields::normal_x,
2319 pcl::fields::normal_y,
2320 pcl::fields::normal_z> >
2323 template <
typename Po
intT>
2324 constexpr
auto has_normal_v = has_normal<PointT>::value;
2326 template <
typename Po
intT>
2327 using HasNormal = std::enable_if_t<has_normal_v<PointT>,
bool>;
2329 template <
typename Po
intT>
2330 using HasNoNormal = std::enable_if_t<!has_normal_v<PointT>,
bool>;
2333 template <
typename Po
intT>
2334 struct has_curvature : has_field<PointT, pcl::fields::curvature>
2337 template <
typename Po
intT>
2338 constexpr
auto has_curvature_v = has_curvature<PointT>::value;
2340 template <
typename Po
intT>
2341 using HasCurvature = std::enable_if_t<has_curvature_v<PointT>,
bool>;
2343 template <
typename Po
intT>
2344 using HasNoCurvature = std::enable_if_t<!has_curvature_v<PointT>,
bool>;
2347 template <
typename Po
intT>
2348 struct has_intensity : has_field<PointT, pcl::fields::intensity>
2351 template <
typename Po
intT>
2352 constexpr
auto has_intensity_v = has_intensity<PointT>::value;
2354 template <
typename Po
intT>
2355 using HasIntensity = std::enable_if_t<has_intensity_v<PointT>,
bool>;
2357 template <
typename Po
intT>
2358 using HasNoIntensity = std::enable_if_t<!has_intensity_v<PointT>,
bool>;
2361 template <
typename Po
intT>
2362 struct has_color : has_any_field<PointT, boost::mpl::vector<pcl::fields::rgb,
2363 pcl::fields::rgba> >
2366 template <
typename Po
intT>
2367 constexpr
auto has_color_v = has_color<PointT>::value;
2369 template <
typename Po
intT>
2370 using HasColor = std::enable_if_t<has_color_v<PointT>,
bool>;
2372 template <
typename Po
intT>
2373 using HasNoColor = std::enable_if_t<!has_color_v<PointT>,
bool>;
2376 template <
typename Po
intT>
2377 struct has_label : has_field<PointT, pcl::fields::label>
2380 template <
typename Po
intT>
2381 constexpr
auto has_label_v = has_label<PointT>::value;
2383 template <
typename Po
intT>
2384 using HasLabel = std::enable_if_t<has_label_v<PointT>,
bool>;
2386 template <
typename Po
intT>
2387 using HasNoLabel = std::enable_if_t<!has_label_v<PointT>,
bool>;
2390 #if defined _MSC_VER
2391 #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...
POINT_CLOUD_REGISTER_POINT_STRUCT(pcl::_PointXYZLAB,(float, x, x)(float, y, y)(float, z, z)(float, L, L)(float, a, a)(float, b, b)) namespace pcl
Defines functions, macros and traits for allocating and using memory.
Eigen::Map< Eigen::Vector4f, Eigen::Aligned > Vector4fMap
const Eigen::Map< const Vector4c, Eigen::Aligned > Vector4cMapConst
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_DEPRECATED(Major, Minor, Message)
macro for compatibility across compilers and help remove old deprecated items for the Major....
float angle
Computed orientation of the keypoint (-1 if not applicable).
float response
The response by which the most strong keypoints have been selected.
int octave
octave (pyramid layer) from which the keypoint has been extracted.
float scale
Diameter of the meaningful keypoint neighborhood.
A point structure representing Euclidean xyz coordinates, and the intensity value.
A structure representing the Local Reference Frame of a point.
const Eigen::Map< const Eigen::Matrix3f > getMatrix3fMap() const
const Eigen::Map< const Eigen::Vector3f > getYAxisVector3fMap() const
Eigen::Map< Eigen::Vector3f > getXAxisVector3fMap()
Eigen::Map< Eigen::Vector3f > getYAxisVector3fMap()
const Eigen::Map< const Eigen::Vector3f > getZAxisVector3fMap() const
Eigen::Map< Eigen::Vector3f > getZAxisVector3fMap()
const Eigen::Map< const Eigen::Vector3f > getXAxisVector3fMap() const
Eigen::Map< Eigen::Matrix3f > getMatrix3fMap()
A point structure representing an Axis using its normal coordinates.
Axis(float n_x, float n_y, float n_z)
A point structure representing the Binary Robust Invariant Scalable Keypoints (BRISK).
BRISKSignature512()=default
static int descriptorSize()
BRISKSignature512(float _scale, float _orientation)
friend std::ostream & operator<<(std::ostream &os, const BRISKSignature512 &p)
unsigned char descriptor[64]
A structure to store if a point in a range image lies on a border between an obstacle and the backgro...
friend std::ostream & operator<<(std::ostream &os, const BorderDescription &p)
BorderDescription()=default
A point structure representing a description of whether a point is lying on a surface boundary or not...
Boundary(std::uint8_t _boundary=0)
std::uint8_t boundary_point
friend std::ostream & operator<<(std::ostream &os, const Boundary &p)
A point structure for storing the Point Pair Feature (CPPF) values.
friend std::ostream & operator<<(std::ostream &os, const CPPFSignature &p)
CPPFSignature(float _alpha=0.f)
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 int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const ESFSignature640 &p)
ESFSignature640()=default
A point structure representing the Fast Point Feature Histogram (FPFH).
FPFHSignature33()=default
static int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const FPFHSignature33 &p)
bool operator()(const PCLPointField &field)
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape descriptor.
GASDSignature512()=default
friend std::ostream & operator<<(std::ostream &os, const GASDSignature512 &p)
static int descriptorSize()
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
GASDSignature7992()=default
static int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const GASDSignature7992 &p)
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
static int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const GASDSignature984 &p)
GASDSignature984()=default
A point structure representing the GFPFH descriptor with 16 bins.
friend std::ostream & operator<<(std::ostream &os, const GFPFHSignature16 &p)
GFPFHSignature16()=default
static int descriptorSize()
A point structure representing the Global Radius-based Surface Descriptor (GRSD).
GRSDSignature21()=default
static int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const GRSDSignature21 &p)
A point structure representing an N-D histogram.
static int descriptorSize()
A point structure representing the grayscale intensity in single-channel images.
friend std::ostream & operator<<(std::ostream &os, const Intensity32u &p)
Intensity32u(std::uint32_t _intensity=0)
Intensity32u(const _Intensity32u &p)
A point structure representing the grayscale intensity in single-channel images.
friend std::ostream & operator<<(std::ostream &os, const Intensity8u &p)
Intensity8u(const _Intensity8u &p)
Intensity8u(std::uint8_t _intensity=0)
A point structure representing the intensity gradient of an XYZI point cloud.
friend std::ostream & operator<<(std::ostream &os, const IntensityGradient &p)
IntensityGradient(float _x, float _y, float _z)
A point structure representing the grayscale intensity in single-channel images.
friend std::ostream & operator<<(std::ostream &os, const Intensity &p)
Intensity(float _intensity=0.f)
Intensity(const _Intensity &p)
A point structure representing an interest point with Euclidean xyz coordinates, and an interest valu...
friend std::ostream & operator<<(std::ostream &os, const Label &p)
Label(std::uint32_t _label=0)
A point structure representing the three moment invariants.
MomentInvariants(float _j1, float _j2, float _j3)
friend std::ostream & operator<<(std::ostream &os, const MomentInvariants &p)
MomentInvariants()=default
A point structure representing the Narf descriptor.
static int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const Narf36 &p)
Narf36(float _x, float _y, float _z)
Narf36(float _x, float _y, float _z, float _roll, float _pitch, float _yaw)
A point structure representing the Normal Based Signature for a feature matrix of 4-by-3.
NormalBasedSignature12()=default
friend std::ostream & operator<<(std::ostream &os, const NormalBasedSignature12 &p)
A point structure representing normal coordinates and the surface curvature estimate.
Normal(float _curvature=0.f)
friend std::ostream & operator<<(std::ostream &os, const Normal &p)
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).
static int descriptorSize()
PFHRGBSignature250()=default
friend std::ostream & operator<<(std::ostream &os, const PFHRGBSignature250 &p)
A point structure representing the Point Feature Histogram (PFH).
static int descriptorSize()
PFHSignature125()=default
friend std::ostream & operator<<(std::ostream &os, const PFHSignature125 &p)
A point structure for storing the Point Pair Color Feature (PPFRGB) values.
PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha, float _r, float _g, float _b)
PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
friend std::ostream & operator<<(std::ostream &os, const PPFRGBSignature &p)
PPFRGBSignature(float _alpha=0.f)
A point structure for storing the Point Pair Feature (PPF) values.
friend std::ostream & operator<<(std::ostream &os, const PPFSignature &p)
PPFSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
PPFSignature(float _alpha=0.f)
A point structure representing Digital Elevation Map.
friend std::ostream & operator<<(std::ostream &os, const PointDEM &p)
PointDEM(const _PointDEM &p)
PointDEM(float _x, float _y, float _z, float _intensity, float _intensity_variance, float _height_variance)
PointDEM(float _x, float _y, float _z)
A point structure representing Euclidean xyz coordinates, together with normal coordinates and the su...
PointNormal(float _x, float _y, float _z)
PointNormal(float _curvature=0.f)
PointNormal(const _PointNormal &p)
friend std::ostream & operator<<(std::ostream &os, const PointNormal &p)
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...
friend std::ostream & operator<<(std::ostream &os, const PointSurfel &p)
PointSurfel(const _PointSurfel &p)
A 2D point structure representing pixel image coordinates.
friend std::ostream & operator<<(std::ostream &os, const PointUV &p)
PointUV(float _u, float _v)
A point structure representing Euclidean xyz coordinates, padded with an extra range float.
PointWithRange(const _PointWithRange &p)
PointWithRange(float _x, float _y, float _z, float _range=0.f)
friend std::ostream & operator<<(std::ostream &os, const PointWithRange &p)
PointWithRange(float _range=0.f)
A point structure representing a 3-D position and scale.
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 PointWithScale &p)
PointWithScale(const _PointWithScale &p)
A point structure representing Euclidean xyz coordinates together with the viewpoint from which it wa...
PointWithViewpoint(float _x, float _y, float _z, float _vp_x, float _vp_y, float _vp_z)
PointWithViewpoint(float _x, float _y, float _z)
PointWithViewpoint(const _PointWithViewpoint &p)
A 2D point structure representing Euclidean xy coordinates.
friend std::ostream & operator<<(std::ostream &os, const PointXY &p)
PointXY(float _x, float _y)
PointXYZHSV(const _PointXYZHSV &p)
PointXYZHSV(float _x, float _y, float _z, float _h, float _s, float _v)
PointXYZHSV(float _h, float _s, float _v)
A point structure representing Euclidean xyz coordinates.
PointXYZ(const _PointXYZ &p)
PointXYZ(float _x, float _y, float _z)
PointXYZI(float _x, float _y, float _z, float _intensity=0.f)
friend std::ostream & operator<<(std::ostream &os, const PointXYZI &p)
PointXYZI(const _PointXYZI &p)
PointXYZI(float _intensity=0.f)
A point structure representing Euclidean xyz coordinates, intensity, together with normal coordinates...
PointXYZINormal(float _x, float _y, float _z, float _intensity=0.f)
friend std::ostream & operator<<(std::ostream &os, const PointXYZINormal &p)
PointXYZINormal(float _x, float _y, float _z, float _intensity, float n_x, float n_y, float n_z, float _curvature=0.f)
PointXYZINormal(const _PointXYZINormal &p)
PointXYZINormal(float _intensity=0.f)
PointXYZL(float _x, float _y, float _z, std::uint32_t _label=0)
friend std::ostream & operator<<(std::ostream &os, const PointXYZL &p)
PointXYZL(const _PointXYZL &p)
PointXYZL(std::uint32_t _label=0)
A point structure representing Euclidean xyz coordinates, a label, together with normal coordinates a...
PointXYZLNormal(float _x, float _y, float _z, std::uint32_t _label=0.f)
PointXYZLNormal(float _x, float _y, float _z, std::uint32_t _label, float n_x, float n_y, float n_z, float _curvature=0.f)
PointXYZLNormal(const _PointXYZLNormal &p)
friend std::ostream & operator<<(std::ostream &os, const PointXYZLNormal &p)
PointXYZLNormal(std::uint32_t _label=0)
A point structure representing Euclidean xyz coordinates, and the RGBA color.
PointXYZRGBA(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a)
PointXYZRGBA(const _PointXYZRGBA &p)
PointXYZRGBA(float _x, float _y, float _z)
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 Euclidean xyz coordinates, and the RGB color.
PointXYZRGB(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
PointXYZRGB(const _PointXYZRGB &p)
PointXYZRGB(float _x, float _y, float _z)
PointXYZRGB(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
PointXYZRGBL(std::uint32_t _label=0)
PointXYZRGBL(const _PointXYZRGBL &p)
PointXYZRGBL(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint32_t _label=0)
PointXYZRGBL(float _x, float _y, float _z)
PointXYZRGBL(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
A point structure representing Euclidean xyz coordinates, and the RGB color, together with normal coo...
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)
PointXYZRGBNormal(float _x, float _y, float _z)
PointXYZRGBNormal(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
PointXYZRGBNormal(float _curvature=0.f)
PointXYZRGBNormal(const _PointXYZRGBNormal &p)
friend std::ostream & operator<<(std::ostream &os, const PointXYZRGBNormal &p)
PointXYZRGBNormal(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
A point structure representing the principal curvatures and their magnitudes.
friend std::ostream & operator<<(std::ostream &os, const PrincipalCurvatures &p)
PrincipalCurvatures(float _x, float _y, float _z, float _pc1, float _pc2)
PrincipalCurvatures(float _pc1, float _pc2)
PrincipalCurvatures(float _x, float _y, float _z)
float principal_curvature_x
float principal_curvature_z
float principal_curvature_y
float principal_curvature[3]
A point structure representing the minimum and maximum surface radii (in meters) computed using RSD.
PrincipalRadiiRSD()=default
PrincipalRadiiRSD(float _r_min, float _r_max)
friend std::ostream & operator<<(std::ostream &os, const PrincipalRadiiRSD &p)
A structure representing RGB color information.
friend std::ostream & operator<<(std::ostream &os, const RGB &p)
RGB(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
ReferenceFrame(const _ReferenceFrame &p)
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape+col...
friend std::ostream & operator<<(std::ostream &os, const SHOT1344 &p)
static int descriptorSize()
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape onl...
static int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const SHOT352 &p)
A point structure representing a Shape Context.
friend std::ostream & operator<<(std::ostream &os, const ShapeContext1980 &p)
static int descriptorSize()
ShapeContext1980()=default
A point structure representing a Unique Shape Context.
friend std::ostream & operator<<(std::ostream &os, const UniqueShapeContext1960 &p)
UniqueShapeContext1960()=default
static int descriptorSize()
A point structure representing the Viewpoint Feature Histogram (VFH).
static int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const VFHSignature308 &p)
VFHSignature308()=default