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;
360 friend std::ostream&
operator << (std::ostream& os,
const RGB& p);
377 intensity = p.intensity;
382 intensity = _intensity;
403 intensity = p.intensity;
408 intensity = _intensity;
411 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101 412 operator unsigned char()
const 435 intensity = p.intensity;
440 intensity = _intensity;
468 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
474 inline PointXYZI (
float _x,
float _y,
float _z,
float _intensity = 0.f)
476 x = _x; y = _y; z = _z;
497 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
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);
1620 inline Narf36 () =
default;
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&
1826 operator << (std::ostream& os, const Histogram<N>& p)
1831 os <<
"(" << p.histogram[0];
1832 std::for_each(p.histogram + 1, std::end(p.histogram),
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) PFHRGBSignature250()=default
A point structure representing normal coordinates and the surface curvature estimate.
Eigen::Map< Eigen::Vector3f > Vector3fMap
A point structure representing the grayscale intensity in single-channel images.
friend std::ostream & operator<<(std::ostream &os, const CPPFSignature &p)
A point structure representing a Shape Context.
PointXYZRGBNormal(float _x, float _y, float _z)
PointWithViewpoint(float _x, float _y, float _z)
PrincipalRadiiRSD(float _r_min, float _r_max)
Eigen::Map< Eigen::Vector3f > getXAxisVector3fMap()
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)
PointNormal(float _x, float _y, float _z)
GASDSignature512()=default
Label(std::uint32_t _label=0)
A point structure representing a description of whether a point is lying on a surface boundary or not...
PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha, float _r, float _g, float _b)
friend std::ostream & operator<<(std::ostream &os, const GASDSignature7992 &p)
Defines functions, macros and traits for allocating and using memory.
A point structure representing Euclidean xyz coordinates, a label, together with normal coordinates a...
static int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const PointDEM &p)
A point structure representing Euclidean xyz coordinates, padded with an extra range float...
PointDEM(const _PointDEM &p)
PointXYZI(float _x, float _y, float _z, float _intensity=0.f)
friend std::ostream & operator<<(std::ostream &os, const Normal &p)
const Eigen::Map< const Eigen::Vector4f, Eigen::Aligned > Vector4fMapConst
PrincipalCurvatures(float _pc1, float _pc2)
PointXYZRGBA(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a)
static int descriptorSize()
PointXYZRGBL(float _x, float _y, float _z)
const Eigen::Map< const Eigen::Vector3f > getXAxisVector3fMap() const
float scale
Diameter of the meaningful keypoint neighborhood.
A point structure representing the Normal Based Signature for a feature matrix of 4-by-3...
float principal_curvature[3]
A point structure representing a Unique Shape Context.
PointXYZL(float _x, float _y, float _z, std::uint32_t _label=0)
PointXYZI(float _intensity=0.f)
PointXYZRGB(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
GASDSignature7992()=default
Eigen::Map< Eigen::Vector3f > getZAxisVector3fMap()
A structure representing the Local Reference Frame of a point.
unsigned char descriptor[64]
friend std::ostream & operator<<(std::ostream &os, const PointXY &p)
float angle
Computed orientation of the keypoint (-1 if not applicable).
PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
PPFSignature(float _alpha=0.f)
PointXYZRGBNormal(const _PointXYZRGBNormal &p)
static int descriptorSize()
PrincipalCurvatures(float _x, float _y, float _z, float _pc1, float _pc2)
friend std::ostream & operator<<(std::ostream &os, const GASDSignature512 &p)
PointXYZRGBL(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
A point structure representing Digital Elevation Map.
friend std::ostream & operator<<(std::ostream &os, const MomentInvariants &p)
static int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const GFPFHSignature16 &p)
Intensity(float _intensity=0.f)
UniqueShapeContext1960()=default
A point structure representing the Binary Robust Invariant Scalable Keypoints (BRISK).
PointXYZ(float _x, float _y, float _z)
friend std::ostream & operator<<(std::ostream &os, const Intensity8u &p)
PointXYZRGBA(const _PointXYZRGBA &p)
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
static int descriptorSize()
PointWithViewpoint(float _x, float _y, float _z, float _vp_x, float _vp_y, float _vp_z)
Normal(float n_x, float n_y, float n_z, float _curvature=0.f)
A point structure representing an Axis using its normal coordinates.
#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)
PointXYZRGB(float _x, float _y, float _z)
friend std::ostream & operator<<(std::ostream &os, const PrincipalCurvatures &p)
PointNormal(float _x, float _y, float _z, float n_x, float n_y, float n_z, float _curvature=0.f)
GASDSignature984()=default
A point structure representing Euclidean xyz coordinates, and the RGBA color.
Intensity8u(const _Intensity8u &p)
PointXYZINormal(float _intensity=0.f)
A point structure representing the grayscale intensity in single-channel images.
VFHSignature308()=default
PointXYZRGBA(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a)
std::ostream & operator<<(std::ostream &os, const BivariatePolynomialT< real > &p)
A point structure representing the Fast Point Feature Histogram (FPFH).
PointWithRange(float _x, float _y, float _z, float _range=0.f)
A 2D point structure representing Euclidean xy coordinates.
PointXYZRGBNormal(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
friend std::ostream & operator<<(std::ostream &os, const ShapeContext1980 &p)
PointWithScale(float _x, float _y, float _z, float _scale=1.f, float _angle=-1.f, float _response=0.f, int _octave=0)
Narf36(float _x, float _y, float _z)
PointXYZ(const _PointXYZ &p)
PointXYZRGBNormal(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
friend std::ostream & operator<<(std::ostream &os, const PointSurfel &p)
friend std::ostream & operator<<(std::ostream &os, const PointNormal &p)
PointWithRange(float _range=0.f)
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 2D point structure representing pixel image coordinates.
A point structure representing the GFPFH descriptor with 16 bins.
friend std::ostream & operator<<(std::ostream &os, const SHOT352 &p)
const Eigen::Map< const Eigen::Matrix3f > getMatrix3fMap() const
friend std::ostream & operator<<(std::ostream &os, const PointWithScale &p)
A point structure representing the Point Feature Histogram with colors (PFHRGB).
float principal_curvature_z
A point structure representing Euclidean xyz coordinates, and the intensity value.
Eigen::Map< Eigen::Array3f > Array3fMap
friend std::ostream & operator<<(std::ostream &os, const PointUV &p)
PointXYZINormal(float _x, float _y, float _z, float _intensity=0.f)
PointXYZLNormal(float _x, float _y, float _z, std::uint32_t _label=0.f)
static int descriptorSize()
float principal_curvature_x
float principal_curvature_y
friend std::ostream & operator<<(std::ostream &os, const ESFSignature640 &p)
Defines all the PCL implemented PointT point type structures.
PointXYZRGBL(const _PointXYZRGBL &p)
PointXYZHSV(float _h, float _s, float _v)
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
friend std::ostream & operator<<(std::ostream &os, const PPFSignature &p)
PointXYZRGBA(float _x, float _y, float _z)
A point structure representing Euclidean xyz coordinates.
A point structure representing Euclidean xyz coordinates, intensity, together with normal coordinates...
const Eigen::Map< const Eigen::Vector3f > getYAxisVector3fMap() const
MomentInvariants()=default
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
static int descriptorSize()
A point structure representing an interest point with Euclidean xyz coordinates, and an interest valu...
PointXYZINormal(const _PointXYZINormal &p)
PointDEM(float _x, float _y, float _z, float _intensity, float _intensity_variance, float _height_variance)
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.
PointXYZLNormal(const _PointXYZLNormal &p)
const Eigen::Map< const Eigen::Vector3f > Vector3fMapConst
BRISKSignature512()=default
friend std::ostream & operator<<(std::ostream &os, const Intensity32u &p)
PointXYZL(std::uint32_t _label=0)
Eigen::Map< Eigen::Vector3f > getYAxisVector3fMap()
PointXYZI(const _PointXYZI &p)
static int descriptorSize()
friend std::ostream & operator<<(std::ostream &os, const PointXYZINormal &p)
MomentInvariants(float _j1, float _j2, float _j3)
A point structure representing the grayscale intensity in single-channel images.
PointUV(float _u, float _v)
CPPFSignature(float _alpha=0.f)
GRSDSignature21()=default
friend std::ostream & operator<<(std::ostream &os, const PointXYZLNormal &p)
PointXYZHSV(const _PointXYZHSV &p)
static int descriptorSize()
std::uint8_t boundary_point
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape onl...
static int descriptorSize()
PointXYZLNormal(float _x, float _y, float _z, std::uint32_t _label, float n_x, float n_y, float n_z, float _curvature=0.f)
Axis(float n_x, float n_y, float n_z)
PointSurfel(const _PointSurfel &p)
friend std::ostream & operator<<(std::ostream &os, const RGB &p)
friend std::ostream & operator<<(std::ostream &os, const GRSDSignature21 &p)
static int descriptorSize()
PointXYZRGBL(std::uint32_t _label=0)
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...
friend std::ostream & operator<<(std::ostream &os, const PointWithRange &p)
friend std::ostream & operator<<(std::ostream &os, const BorderDescription &p)
ReferenceFrame(const _ReferenceFrame &p)
A point structure representing Euclidean xyz coordinates, together with normal coordinates and the su...
Eigen::Map< Eigen::Array4f, Eigen::Aligned > Array4fMap
PPFRGBSignature(float _alpha=0.f)
friend std::ostream & operator<<(std::ostream &os, const PPFRGBSignature &p)
const Eigen::Map< const Eigen::Array4f, Eigen::Aligned > Array4fMapConst
friend std::ostream & operator<<(std::ostream &os, const IntensityGradient &p)
PFHSignature125()=default
friend std::ostream & operator<<(std::ostream &os, const PointXYZL &p)
PrincipalRadiiRSD()=default
Intensity32u(std::uint32_t _intensity=0)
friend std::ostream & operator<<(std::ostream &os, const Narf36 &p)
Intensity32u(const _Intensity32u &p)
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 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)
PointDEM(float _x, float _y, float _z)
A point structure representing the intensity gradient of an XYZI point cloud.
const Eigen::Map< const Eigen::Vector3f > getZAxisVector3fMap() const
PointXYZRGBNormal(float _curvature=0.f)
bool operator()(const PCLPointField &field)
friend std::ostream & operator<<(std::ostream &os, const PFHSignature125 &p)
PPFSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
ESFSignature640()=default
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape+col...
static int descriptorSize()
Normal(float _curvature=0.f)
PointXYZRGB(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
PointXYZINormal(float _x, float _y, float _z, float _intensity, float n_x, float n_y, float n_z, float _curvature=0.f)
PointXYZRGBL(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint32_t _label=0)
BRISKSignature512(float _scale, float _orientation)
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)
friend std::ostream & operator<<(std::ostream &os, const BRISKSignature512 &p)
friend std::ostream & operator<<(std::ostream &os, const PointXYZRGBNormal &p)
GFPFHSignature16()=default
friend std::ostream & operator<<(std::ostream &os, const SHOT1344 &p)
PointXYZRGB(const _PointXYZRGB &p)
A point structure representing the Viewpoint Feature Histogram (VFH).
#define PCL_DEPRECATED(Major, Minor, Message)
macro for compatibility across compilers and help remove old deprecated items for the Major...
friend std::ostream & operator<<(std::ostream &os, const PFHRGBSignature250 &p)
ShapeContext1980()=default
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...
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.
PointWithRange(const _PointWithRange &p)
Eigen::Map< Vector4c, Eigen::Aligned > Vector4cMap
PointWithScale(const _PointWithScale &p)
PointXYZHSV(float _x, float _y, float _z, float _h, float _s, float _v)
friend std::ostream & operator<<(std::ostream &os, const VFHSignature308 &p)
A point structure representing the Point Feature Histogram (PFH).
static int descriptorSize()
Narf36(float _x, float _y, float _z, float _roll, float _pitch, float _yaw)
PointWithViewpoint(const _PointWithViewpoint &p)
PointNormal(float _curvature=0.f)
Intensity8u(std::uint8_t _intensity=0)
A point structure representing the Ensemble of Shape Functions (ESF).
FPFHSignature33()=default
static int descriptorSize()
const Eigen::Map< const Eigen::Array3f > Array3fMapConst
PrincipalCurvatures(float _x, float _y, float _z)
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape descriptor...
Intensity(const _Intensity &p)
friend std::ostream & operator<<(std::ostream &os, const Label &p)
PointXYZLNormal(std::uint32_t _label=0)
static int descriptorSize()
A point structure representing the Global Radius-based Surface Descriptor (GRSD). ...
friend std::ostream & operator<<(std::ostream &os, const NormalBasedSignature12 &p)
Boundary(std::uint8_t _boundary=0)
PointXYZL(const _PointXYZL &p)
IntensityGradient(float _x, float _y, float _z)
RGB(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
A surfel, that is, a point structure representing Euclidean xyz coordinates, together with normal coo...
Eigen::Map< Eigen::Vector4f, Eigen::Aligned > Vector4fMap
Eigen::Matrix< std::uint8_t, 3, 1 > Vector3c
PointNormal(const _PointNormal &p)
friend std::ostream & operator<<(std::ostream &os, const Intensity &p)
Defines all the PCL and non-PCL macros used.
static int descriptorSize()
A point structure representing Euclidean xyz coordinates, and the RGB color, together with normal coo...
A point structure for storing the Point Pair Feature (PPF) values.
static int descriptorSize()
PointXY(float _x, float _y)
NormalBasedSignature12()=default
BorderDescription()=default
Eigen::Map< Eigen::Matrix3f > getMatrix3fMap()
A point structure for storing the Point Pair Color Feature (PPFRGB) values.