39 #ifndef PCL_IMPL_POINT_TYPES_HPP_ 40 #define PCL_IMPL_POINT_TYPES_HPP_ 43 # pragma GCC system_header 50 #define PCL_POINT_TYPES \ 60 (pcl::InterestPoint) \ 64 (pcl::PointXYZRGBNormal) \ 65 (pcl::PointXYZINormal) \ 66 (pcl::PointXYZLNormal) \ 67 (pcl::PointWithRange) \ 68 (pcl::PointWithViewpoint) \ 69 (pcl::MomentInvariants) \ 70 (pcl::PrincipalRadiiRSD) \ 72 (pcl::PrincipalCurvatures) \ 73 (pcl::PFHSignature125) \ 74 (pcl::PFHRGBSignature250) \ 76 (pcl::CPPFSignature) \ 77 (pcl::PPFRGBSignature) \ 78 (pcl::NormalBasedSignature12) \ 79 (pcl::FPFHSignature33) \ 80 (pcl::VFHSignature308) \ 81 (pcl::GASDSignature512) \ 82 (pcl::GASDSignature984) \ 83 (pcl::GASDSignature7992) \ 84 (pcl::GRSDSignature21) \ 85 (pcl::ESFSignature640) \ 86 (pcl::BRISKSignature512) \ 88 (pcl::IntensityGradient) \ 89 (pcl::PointWithScale) \ 91 (pcl::ShapeContext1980) \ 92 (pcl::UniqueShapeContext1960) \ 96 (pcl::ReferenceFrame) \ 100 #define PCL_RGB_POINT_TYPES \ 101 (pcl::PointXYZRGBA) \ 103 (pcl::PointXYZRGBL) \ 104 (pcl::PointXYZRGBNormal) \ 108 #define PCL_XYZ_POINT_TYPES \ 112 (pcl::PointXYZRGBA) \ 114 (pcl::PointXYZRGBL) \ 116 (pcl::InterestPoint) \ 118 (pcl::PointXYZRGBNormal) \ 119 (pcl::PointXYZINormal) \ 120 (pcl::PointXYZLNormal) \ 121 (pcl::PointWithRange) \ 122 (pcl::PointWithViewpoint) \ 123 (pcl::PointWithScale) \ 128 #define PCL_XYZL_POINT_TYPES \ 130 (pcl::PointXYZRGBL) \ 131 (pcl::PointXYZLNormal) 134 #define PCL_NORMAL_POINT_TYPES \ 137 (pcl::PointXYZRGBNormal) \ 138 (pcl::PointXYZINormal) \ 139 (pcl::PointXYZLNormal) \ 143 #define PCL_FEATURE_POINT_TYPES \ 144 (pcl::PFHSignature125) \ 145 (pcl::PFHRGBSignature250) \ 146 (pcl::PPFSignature) \ 147 (pcl::CPPFSignature) \ 148 (pcl::PPFRGBSignature) \ 149 (pcl::NormalBasedSignature12) \ 150 (pcl::FPFHSignature33) \ 151 (pcl::VFHSignature308) \ 152 (pcl::GASDSignature512) \ 153 (pcl::GASDSignature984) \ 154 (pcl::GASDSignature7992) \ 155 (pcl::GRSDSignature21) \ 156 (pcl::ESFSignature640) \ 157 (pcl::BRISKSignature512) \ 165 typedef Eigen::Map<Eigen::Array4f, Eigen::Aligned>
Array4fMap;
179 #define PCL_ADD_UNION_POINT4D \ 180 union EIGEN_ALIGN16 { \ 189 #define PCL_ADD_EIGEN_MAPS_POINT4D \ 190 inline pcl::Vector3fMap getVector3fMap () { return (pcl::Vector3fMap (data)); } \ 191 inline pcl::Vector3fMapConst getVector3fMap () const { return (pcl::Vector3fMapConst (data)); } \ 192 inline pcl::Vector4fMap getVector4fMap () { return (pcl::Vector4fMap (data)); } \ 193 inline pcl::Vector4fMapConst getVector4fMap () const { return (pcl::Vector4fMapConst (data)); } \ 194 inline pcl::Array3fMap getArray3fMap () { return (pcl::Array3fMap (data)); } \ 195 inline pcl::Array3fMapConst getArray3fMap () const { return (pcl::Array3fMapConst (data)); } \ 196 inline pcl::Array4fMap getArray4fMap () { return (pcl::Array4fMap (data)); } \ 197 inline pcl::Array4fMapConst getArray4fMap () const { return (pcl::Array4fMapConst (data)); } 199 #define PCL_ADD_POINT4D \ 200 PCL_ADD_UNION_POINT4D \ 201 PCL_ADD_EIGEN_MAPS_POINT4D 203 #define PCL_ADD_UNION_NORMAL4D \ 204 union EIGEN_ALIGN16 { \ 214 #define PCL_ADD_EIGEN_MAPS_NORMAL4D \ 215 inline pcl::Vector3fMap getNormalVector3fMap () { return (pcl::Vector3fMap (data_n)); } \ 216 inline pcl::Vector3fMapConst getNormalVector3fMap () const { return (pcl::Vector3fMapConst (data_n)); } \ 217 inline pcl::Vector4fMap getNormalVector4fMap () { return (pcl::Vector4fMap (data_n)); } \ 218 inline pcl::Vector4fMapConst getNormalVector4fMap () const { return (pcl::Vector4fMapConst (data_n)); } 220 #define PCL_ADD_NORMAL4D \ 221 PCL_ADD_UNION_NORMAL4D \ 222 PCL_ADD_EIGEN_MAPS_NORMAL4D 224 #define PCL_ADD_UNION_RGB \ 241 #define PCL_ADD_EIGEN_MAPS_RGB \ 242 inline Eigen::Vector3i getRGBVector3i () { return (Eigen::Vector3i (r, g, b)); } \ 243 inline const Eigen::Vector3i getRGBVector3i () const { return (Eigen::Vector3i (r, g, b)); } \ 244 inline Eigen::Vector4i getRGBVector4i () { return (Eigen::Vector4i (r, g, b, a)); } \ 245 inline const Eigen::Vector4i getRGBVector4i () const { return (Eigen::Vector4i (r, g, b, a)); } \ 246 inline Eigen::Vector4i getRGBAVector4i () { return (Eigen::Vector4i (r, g, b, a)); } \ 247 inline const Eigen::Vector4i getRGBAVector4i () const { return (Eigen::Vector4i (r, g, b, a)); } \ 248 inline pcl::Vector3cMap getBGRVector3cMap () { return (pcl::Vector3cMap (reinterpret_cast<uint8_t*> (&rgba))); } \ 249 inline pcl::Vector3cMapConst getBGRVector3cMap () const { return (pcl::Vector3cMapConst (reinterpret_cast<const uint8_t*> (&rgba))); } \ 250 inline pcl::Vector4cMap getBGRAVector4cMap () { return (pcl::Vector4cMap (reinterpret_cast<uint8_t*> (&rgba))); } \ 251 inline pcl::Vector4cMapConst getBGRAVector4cMap () const { return (pcl::Vector4cMapConst (reinterpret_cast<const uint8_t*> (&rgba))); } 253 #define PCL_ADD_RGB \ 255 PCL_ADD_EIGEN_MAPS_RGB 257 #define PCL_ADD_INTENSITY \ 263 #define PCL_ADD_INTENSITY_8U \ 269 #define PCL_ADD_INTENSITY_32U \ 272 uint32_t intensity; \ 280 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
291 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
302 x = _x; y = _y; z = _z;
307 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
319 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const RGB& p);
352 inline RGB (uint8_t _r, uint8_t _g, uint8_t _b)
360 friend std::ostream&
operator << (std::ostream& os,
const RGB& p);
377 intensity = p.intensity;
403 intensity = p.intensity;
411 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101 412 operator unsigned char()
const 435 intensity = p.intensity;
460 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
468 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
482 intensity = _intensity;
492 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
500 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
528 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
556 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
576 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
584 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
623 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
645 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
654 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
667 inline PointXYZRGBL (uint8_t _r, uint8_t _g, uint8_t _b, uint32_t _label)
679 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
696 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
704 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
705 h = p.
h; s = p.
s; v = p.
v;
712 h = s = v = data_c[3] = 0;
718 h = _h; v = _v; s = _s;
723 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
768 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
784 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
795 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z;
802 normal_x = normal_y = normal_z = data_n[3] = 0.0f;
806 inline Normal (
float n_x,
float n_y,
float n_z)
808 normal_x = n_x; normal_y = n_y; normal_z = n_z;
814 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
821 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
824 PCL_EXPORTS std::ostream&
operator << (std::ostream& os,
const Axis& p);
832 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z;
838 normal_x = normal_y = normal_z = data_n[3] = 0.0f;
841 inline Axis (
float n_x,
float n_y,
float n_z)
843 normal_x = n_x; normal_y = n_y; normal_z = n_z;
848 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
864 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
875 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
876 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
884 normal_x = normal_y = normal_z = data_n[3] = 0.0f;
905 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
942 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
943 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
954 normal_x = normal_y = normal_z = data_n[3] = 0.0f;
974 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
985 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
986 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
995 normal_x = normal_y = normal_z = data_n[3] = 0.0f;
1017 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
1028 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1029 normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
1038 normal_x = normal_y = normal_z = data_n[3] = 0.0f;
1060 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
1071 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1099 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
1110 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1115 float _vp_x = 0.0f,
float _vp_y = 0.0f,
float _vp_z = 0.0f)
1117 x = _x; y = _y; z = _z;
1119 vp_x = _vp_x; vp_y = _vp_y; vp_z = _vp_z;
1155 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101 1156 operator unsigned char()
const 1158 return boundary_point;
1173 float principal_curvature[3];
1193 float histogram[125];
1205 float histogram[250];
1229 float f1, f2, f3, f4, f5, f6, f7, f8,
f9, f10;
1266 float descriptor[1980];
1279 float descriptor[1960];
1292 float descriptor[352];
1306 float descriptor[1344];
1331 inline const Eigen::Map<const Eigen::Vector3f>
getXAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (x_axis)); }
1333 inline const Eigen::Map<const Eigen::Vector3f>
getYAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (y_axis)); }
1335 inline const Eigen::Map<const Eigen::Vector3f>
getZAxisVector3fMap ()
const {
return (Eigen::Vector3f::Map (z_axis)); }
1336 inline Eigen::Map<Eigen::Matrix3f>
getMatrix3fMap () {
return (Eigen::Matrix3f::Map (rf)); }
1337 inline const Eigen::Map<const Eigen::Matrix3f>
getMatrix3fMap ()
const {
return (Eigen::Matrix3f::Map (rf)); }
1339 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
1347 for (
int d = 0; d < 9; ++d)
1353 for (
int d = 0; d < 3; ++d)
1354 x_axis[d] = y_axis[d] = z_axis[d] = 0;
1358 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
1368 float histogram[33];
1380 float histogram[308];
1392 float histogram[21];
1406 unsigned char descriptor[64];
1418 float histogram[640];
1430 float histogram[512];
1442 float histogram[984];
1454 float histogram[7992];
1466 float histogram[16];
1478 float x, y,
z, roll, pitch, yaw;
1479 float descriptor[36];
1547 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
1558 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1587 inline PointWithScale (
float _x,
float _y,
float _z,
float _scale,
float _angle,
float _response,
int _octave)
1594 response = _response;
1619 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
1630 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1641 normal_x = normal_y = normal_z = data_n[3] = 0.0f;
1644 radius = confidence = curvature = 0.0f;
1656 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
1667 x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1675 x = y = z = 0.0f; data[3] = 1.0f;
1677 intensity_variance = height_variance = 0.0f;
1683 template <
int N> std::ostream&
1684 operator << (std::ostream& os, const Histogram<N>& p)
1686 for (
int i = 0; i < N; ++i)
1687 os << (i == 0 ?
"(" :
"") << p.histogram[i] << (i < N-1 ?
", " :
")");
1693 #include <pcl/common/point_tests.h>
PointXYZI(float _intensity)
A point structure representing normal coordinates and the surface curvature estimate.
const Eigen::Map< const Eigen::Array4f, Eigen::Aligned > Array4fMapConst
A point structure representing the grayscale intensity in single-channel images.
A point structure representing a Shape Context.
Eigen::Map< Eigen::Vector3f > getXAxisVector3fMap()
A point structure representing a description of whether a point is lying on a surface boundary or not...
A point structure representing Euclidean xyz coordinates, a label, together with normal coordinates a...
static int descriptorSize()
A point structure representing Euclidean xyz coordinates, padded with an extra range float...
PointDEM(const _PointDEM &p)
struct pcl::PointXYZIEdge EIGEN_ALIGN16
static int descriptorSize()
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...
A point structure representing a Unique Shape Context.
PointWithScale(float _x, float _y, float _z, float _scale)
This file defines compatibility wrappers for low level I/O functions.
Eigen::Map< Eigen::Vector3f > getZAxisVector3fMap()
A structure representing the Local Reference Frame of a point.
const Eigen::Map< const Vector4c, Eigen::Aligned > Vector4cMapConst
float angle
Computed orientation of the keypoint (-1 if not applicable).
Eigen::Map< Eigen::Vector3f > Vector3fMap
PointXYZRGBNormal(const _PointXYZRGBNormal &p)
static int descriptorSize()
A point structure representing Digital Elevation Map.
static int descriptorSize()
A point structure representing the Binary Robust Invariant Scalable Keypoints (BRISK).
PointXYZ(float _x, float _y, float _z)
PointXYZRGBA(const _PointXYZRGBA &p)
float response
The response by which the most strong keypoints have been selected.
static int descriptorSize()
PointWithScale(float _x, float _y, float _z, float _scale, float _angle, float _response, int _octave)
PointXYZRGB(uint8_t _r, uint8_t _g, uint8_t _b)
A point structure representing an Axis using its normal coordinates.
const Eigen::Map< const Eigen::Vector4f, Eigen::Aligned > Vector4fMapConst
A point structure representing Euclidean xyz coordinates, and the RGBA color.
Intensity8u(const _Intensity8u &p)
A point structure representing the grayscale intensity in single-channel images.
std::ostream & operator<<(std::ostream &os, const BivariatePolynomialT< real > &p)
A point structure representing the Fast Point Feature Histogram (FPFH).
A 2D point structure representing Euclidean xy coordinates.
Eigen::Map< Vector3c > Vector3cMap
PointXYZ(const _PointXYZ &p)
A structure representing RGB color information.
A point structure representing an N-D histogram.
A 2D point structure representing pixel image coordinates.
PointXYZRGBL(uint8_t _r, uint8_t _g, uint8_t _b, uint32_t _label)
A point structure representing the GFPFH descriptor with 16 bins.
const Eigen::Map< const Eigen::Matrix3f > getMatrix3fMap() const
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.
static int descriptorSize()
float principal_curvature_x
float principal_curvature_y
PointXYZRGBL(const _PointXYZRGBL &p)
const Eigen::Map< const Eigen::Vector3f > Vector3fMapConst
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
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)
A point structure representing the three moment invariants.
Eigen::Map< Eigen::Array4f, Eigen::Aligned > Array4fMap
PointXYZLNormal(const _PointXYZLNormal &p)
RGB(uint8_t _r, uint8_t _g, uint8_t _b)
Eigen::Map< Eigen::Vector3f > getYAxisVector3fMap()
PointXYZI(const _PointXYZI &p)
static int descriptorSize()
A point structure representing the grayscale intensity in single-channel images.
PointXYZHSV(const _PointXYZHSV &p)
static int descriptorSize()
Normal(float n_x, float n_y, float n_z)
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape onl...
static int descriptorSize()
Axis(float n_x, float n_y, float n_z)
PointSurfel(const _PointSurfel &p)
static int descriptorSize()
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...
ReferenceFrame(const _ReferenceFrame &p)
A point structure representing Euclidean xyz coordinates, together with normal coordinates and the su...
Intensity32u(const _Intensity32u &p)
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.
Eigen::Matrix< uint8_t, 4, 1 > Vector4c
A point structure representing Euclidean xyz coordinates together with the viewpoint from which it wa...
A point structure representing the intensity gradient of an XYZI point cloud.
const Eigen::Map< const Eigen::Vector3f > getZAxisVector3fMap() const
Eigen::Map< Eigen::Array3f > Array3fMap
const Eigen::Map< const Vector3c > Vector3cMapConst
Eigen::Map< Eigen::Vector4f, Eigen::Aligned > Vector4fMap
Eigen::Map< Vector4c, Eigen::Aligned > Vector4cMap
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape+col...
static int descriptorSize()
PointXYZRGB(const _PointXYZRGB &p)
A point structure representing the Viewpoint Feature Histogram (VFH).
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...
A point structure representing the Narf descriptor.
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)
PointWithScale(const _PointWithScale &p)
A point structure representing the Point Feature Histogram (PFH).
static int descriptorSize()
PointWithViewpoint(const _PointWithViewpoint &p)
A point structure representing the Ensemble of Shape Functions (ESF).
static int descriptorSize()
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape descriptor...
Intensity(const _Intensity &p)
static int descriptorSize()
PointXYZHSV(float _h, float _v, float _s)
A point structure representing the Global Radius-based Surface Descriptor (GRSD). ...
Eigen::Matrix< uint8_t, 3, 1 > Vector3c
const Eigen::Map< const Eigen::Array3f > Array3fMapConst
PointXYZL(const _PointXYZL &p)
A surfel, that is, a point structure representing Euclidean xyz coordinates, together with normal coo...
PointNormal(const _PointNormal &p)
std::bitset< 32 > BorderTraits
Data type to store extended information about a transition from foreground to backgroundSpecification...
PointWithViewpoint(float _x=0.0f, float _y=0.0f, float _z=0.0f, float _vp_x=0.0f, float _vp_y=0.0f, float _vp_z=0.0f)
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()
Eigen::Map< Eigen::Matrix3f > getMatrix3fMap()
A point structure for storing the Point Pair Color Feature (PPFRGB) values.