Point Cloud Library (PCL)
1.11.0
|
43 #include <pcl/features/eigen.h>
44 #include <pcl/common/common_headers.h>
45 #include <pcl/point_representation.h>
53 #define NARF_DEFAULT_SURFACE_PATCH_PIXEL_SIZE 10
86 float support_size,
bool rotation_invariant, std::vector<Narf*>& feature_list);
90 float support_size,
bool rotation_invariant, std::vector<Narf*>& feature_list);
94 int descriptor_size,
float support_size,
bool rotation_invariant, std::vector<Narf*>& feature_list);
98 bool rotation_invariant, std::vector<Narf*>& feature_list);
108 int surface_patch_world_size=NARF_DEFAULT_SURFACE_PATCH_PIXEL_SIZE);
126 int descriptor_size,
float support_size);
133 getRotations (std::vector<float>& rotations, std::vector<float>& strengths)
const;
146 getDescriptorDistance (
const Narf& other)
const;
154 copyToNarf36 (
Narf36& narf36)
const;
188 inline const Eigen::Vector3f&
191 inline Eigen::Vector3f&
194 inline const Eigen::Affine3f&
197 inline Eigen::Affine3f&
225 freeSurfacePatch () {
delete[] surface_patch_; surface_patch_=
nullptr; surface_patch_pixel_size_=0; }
267 static const std::string
271 const static int VERSION = 1;
288 #undef NARF_DEFAULT_SURFACE_PATCH_PIXEL_SIZE
292 #include <pcl/features/impl/narf.hpp>
void reset()
Reset al members to default values and free allocated memory.
Defines all the PCL and non-PCL macros used.
const float & getSurfacePatchWorldSize() const
Getter (const) for the world size of the surface patch.
Eigen::Vector3f & getPosition()
Getter for the position.
void getRotations(std::vector< float > &rotations, std::vector< float > &strengths) const
Narf(const Narf &other)
Copy Constructor.
bool extractFromRangeImage(const RangeImage &range_image, const Eigen::Vector3f &interest_point, int descriptor_size, float support_size)
Same as above.
static const std::string getHeaderKeyword()
NARF (Normal Aligned Radial Features) is a point feature descriptor type for 3D data.
static void extractForEveryRangeImagePointAndAddToList(const RangeImage &range_image, int descriptor_size, float support_size, bool rotation_invariant, std::vector< Narf * > &feature_list)
Extract an NARF for every point in the range image.
FeaturePointRepresentation(int nr_dimensions)
void loadBinary(const std::string &filename)
Read from file.
int loadHeader(std::istream &file) const
Read header from input stream.
Eigen::Affine3f transformation_
PointCloud represents the base class in PCL for storing collections of 3D points.
const Eigen::Vector3f & getPosition() const
Getter (const) for the position.
float * getDescriptor()
Getter for the descriptor.
void setSurfacePatch(float *surface_patch)
Setter for the surface patch.
RangeImage is derived from pcl/PointCloud and provides functionalities with focus on situations where...
const int & getSurfacePatchPixelSize() const
Getter (const) for the pixel size of the surface patch (only one dimension)
float & getSurfacePatchWorldSize()
Getter for the world size of the surface patch.
void setDescriptor(float *descriptor)
Setter for the descriptor.
static int max_no_of_threads
The maximum number of openmp threads that can be used in this class.
static void extractFromRangeImageAndAddToList(const RangeImage &range_image, const Eigen::Vector3f &interest_point, int descriptor_size, float support_size, bool rotation_invariant, std::vector< Narf * > &feature_list)
Add features extracted at the given interest point and add them to the list.
PointRepresentation provides a set of methods for converting a point structs/object into an n-dimensi...
bool extractFromRangeImage(const RangeImage &range_image, const Eigen::Affine3f &pose, int descriptor_size, float support_size, int surface_patch_world_size=NARF_DEFAULT_SURFACE_PATCH_PIXEL_SIZE)
Method to extract a NARF feature from a certain 3D point using a range image.
const float * getDescriptor() const
Getter (const) for the descriptor.
float & getSurfacePatchRotation()
Getter for the rotation of the surface patch.
const float * getSurfacePatch() const
Getter (const) for the surface patch.
void saveBinary(const std::string &filename) const
Write to file.
const float & getSurfacePatchRotation() const
Getter (const) for the rotation of the surface patch.
const Narf & operator=(const Narf &other)
Assignment operator.
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
void copyToFloatArray(const PointT &p, float *out) const override
A point structure representing an interest point with Euclidean xyz coordinates, and an interest valu...
void deepCopy(const Narf &other)
Create a deep copy of other.
static void extractForInterestPoints(const RangeImage &range_image, const PointCloud< InterestPoint > &interest_points, int descriptor_size, float support_size, bool rotation_invariant, std::vector< Narf * > &feature_list)
Get a list of features from the given interest points.
void saveBinary(std::ostream &file) const
Write to output stream.
int surface_patch_pixel_size_
void saveHeader(std::ostream &file) const
Write header to output stream.
float surface_patch_world_size_
bool extractFromRangeImageWithBestRotation(const RangeImage &range_image, const Eigen::Vector3f &interest_point, int descriptor_size, float support_size)
Same as above, but using the rotational invariant version by choosing the best extracted rotation aro...
float surface_patch_rotation_
A point structure representing the Narf descriptor.
~FeaturePointRepresentation()
Empty destructor.
const int & getDescriptorSize() const
Getter (const) for the descriptor length.
Eigen::Vector3f position_
int & getDescriptorSize()
Getter for the descriptor length.
int getNoOfBeamPoints() const
How many points on each beam of the gradient star are used to calculate the descriptor?
void freeSurfacePatch()
Method to erase the surface patch and free the memory.
static void extractFromRangeImageAndAddToList(const RangeImage &range_image, float image_x, float image_y, int descriptor_size, float support_size, bool rotation_invariant, std::vector< Narf * > &feature_list)
Same as above.
float * getBlurredSurfacePatch(int new_pixel_size, int blur_radius) const
Get the surface patch with a blur on it.
bool extractFromRangeImage(const RangeImage &range_image, float x, float y, int descriptor_size, float support_size)
Same as above, but determines the transformation from the surface in the range image.
bool extractDescriptor(int descriptor_size)
Create the descriptor from the already set other members.
const Eigen::Affine3f & getTransformation() const
Getter (const) for the 6DoF pose.
Eigen::Affine3f & getTransformation()
Getter for the 6DoF pose.
void getRotatedVersions(const RangeImage &range_image, const std::vector< float > &rotations, std::vector< Narf * > &features) const
void loadBinary(std::istream &file)
Read from input stream.
float * getSurfacePatch()
Getter for the surface patch.
Defines functions, macros and traits for allocating and using memory.
int & getSurfacePatchPixelSize()
Getter for the pixel size of the surface patch (only one dimension)
bool extractFromRangeImage(const RangeImage &range_image, const InterestPoint &interest_point, int descriptor_size, float support_size)
Same as above.