|
Point Cloud Library (PCL) 1.15.1
|
NARF (Normal Aligned Radial Features) is a point feature descriptor type for 3D data. More...
#include <pcl/features/narf.h>
Classes | |
| struct | FeaturePointRepresentation |
Public Member Functions | |
| Narf () | |
| Constructor. | |
| Narf (const Narf &other) | |
| Copy Constructor. | |
| ~Narf () | |
| Destructor. | |
| const Narf & | operator= (const Narf &other) |
| Assignment operator. | |
| 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. | |
| 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 | extractFromRangeImage (const RangeImage &range_image, const InterestPoint &interest_point, int descriptor_size, float support_size) |
| Same as above. | |
| bool | extractFromRangeImage (const RangeImage &range_image, const Eigen::Vector3f &interest_point, int descriptor_size, float support_size) |
| Same as above. | |
| 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 around the normal. | |
| void | getRotations (std::vector< float > &rotations, std::vector< float > &strengths) const |
| void | getRotatedVersions (const RangeImage &range_image, const std::vector< float > &rotations, std::vector< Narf * > &features) const |
| float | getDescriptorDistance (const Narf &other) const |
| Calculate descriptor distance, value in [0,1] with 0 meaning identical and 1 every cell above maximum distance. | |
| int | getNoOfBeamPoints () const |
| How many points on each beam of the gradient star are used to calculate the descriptor? | |
| void | copyToNarf36 (Narf36 &narf36) const |
| Copy the descriptor and pose to the point struct Narf36. | |
| void | saveBinary (const std::string &filename) const |
| Write to file. | |
| void | saveBinary (std::ostream &file) const |
| Write to output stream. | |
| void | loadBinary (const std::string &filename) |
| Read from file. | |
| void | loadBinary (std::istream &file) |
| Read from input stream. | |
| bool | extractDescriptor (int descriptor_size) |
| Create the descriptor from the already set other members. | |
| const float * | getDescriptor () const |
| Getter (const) for the descriptor. | |
| float * | getDescriptor () |
| Getter for the descriptor. | |
| const int & | getDescriptorSize () const |
| Getter (const) for the descriptor length. | |
| int & | getDescriptorSize () |
| Getter for the descriptor length. | |
| const Eigen::Vector3f & | getPosition () const |
| Getter (const) for the position. | |
| Eigen::Vector3f & | getPosition () |
| Getter for the position. | |
| const Eigen::Affine3f & | getTransformation () const |
| Getter (const) for the 6DoF pose. | |
| Eigen::Affine3f & | getTransformation () |
| Getter for the 6DoF pose. | |
| const int & | getSurfacePatchPixelSize () const |
| Getter (const) for the pixel size of the surface patch (only one dimension). | |
| int & | getSurfacePatchPixelSize () |
| Getter for the pixel size of the surface patch (only one dimension). | |
| const float & | getSurfacePatchWorldSize () const |
| Getter (const) for the world size of the surface patch. | |
| float & | getSurfacePatchWorldSize () |
| Getter for the world size of the surface patch. | |
| const float & | getSurfacePatchRotation () const |
| Getter (const) for the rotation of the surface patch. | |
| float & | getSurfacePatchRotation () |
| Getter for the rotation of the surface patch. | |
| const float * | getSurfacePatch () const |
| Getter (const) for the surface patch. | |
| float * | getSurfacePatch () |
| Getter for the surface patch. | |
| void | freeSurfacePatch () |
| Method to erase the surface patch and free the memory. | |
| void | setDescriptor (float *descriptor) |
| Setter for the descriptor. | |
| void | setSurfacePatch (float *surface_patch) |
| Setter for the surface patch. | |
Static Public Member Functions | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
Static Public Attributes | |
| static int | max_no_of_threads |
| The maximum number of openmp threads that can be used in this class. | |
Protected Member Functions | |
| void | reset () |
| Reset al members to default values and free allocated memory. | |
| void | deepCopy (const Narf &other) |
| Create a deep copy of other. | |
| float * | getBlurredSurfacePatch (int new_pixel_size, int blur_radius) const |
| Get the surface patch with a blur on it. | |
| void | saveHeader (std::ostream &file) const |
| Write header to output stream. | |
| int | loadHeader (std::istream &file) const |
| Read header from input stream. | |
Static Protected Member Functions | |
| static const std::string | getHeaderKeyword () |
Protected Attributes | |
| Eigen::Vector3f | position_ |
| Eigen::Affine3f | transformation_ |
| float * | surface_patch_ {nullptr} |
| int | surface_patch_pixel_size_ {0} |
| float | surface_patch_world_size_ {0.0f} |
| float | surface_patch_rotation_ {0.0f} |
| float * | descriptor_ {nullptr} |
| int | descriptor_size_ {0} |
Static Protected Attributes | |
| static const int | VERSION = 1 |
NARF (Normal Aligned Radial Features) is a point feature descriptor type for 3D data.
Please refer to pcl/features/narf_descriptor.h if you want the class derived from pcl Feature. See B. Steder, R. B. Rusu, K. Konolige, and W. Burgard Point Feature Extraction on 3D Range Scans Taking into Account Object Boundaries In Proc. of the IEEE Int. Conf. on Robotics &Automation (ICRA). 2011.
| pcl::Narf::Narf | ( | ) |
Constructor.
Referenced by deepCopy(), getDescriptorDistance(), getRotatedVersions(), Narf(), and operator=().
| pcl::Narf::Narf | ( | const Narf & | other | ) |
Copy Constructor.
References Narf().
| pcl::Narf::~Narf | ( | ) |
Destructor.
|
inline |
Copy the descriptor and pose to the point struct Narf36.
Definition at line 54 of file narf.hpp.
References pcl::Narf36::descriptor, descriptor_, descriptor_size_, pcl::getTranslationAndEulerAngles(), pcl::Narf36::pitch, pcl::Narf36::roll, transformation_, pcl::Narf36::x, pcl::Narf36::y, pcl::Narf36::yaw, and pcl::Narf36::z.
|
protected |
Create a deep copy of other.
References Narf().
| bool pcl::Narf::extractDescriptor | ( | int | descriptor_size | ) |
Create the descriptor from the already set other members.
|
static |
Extract an NARF for every point in the range image.
|
static |
Get a list of features from the given interest points.
| bool pcl::Narf::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.
pose determines the coordinate system of the feature, whereas it transforms a point from the world into the feature system. This means the interest point at which the feature is extracted will be the inverse application of pose onto (0,0,0). descriptor_size_ determines the size of the descriptor, support_size determines the support size of the feature, meaning the size in the world it covers
| bool pcl::Narf::extractFromRangeImage | ( | const RangeImage & | range_image, |
| const Eigen::Vector3f & | interest_point, | ||
| int | descriptor_size, | ||
| float | support_size ) |
Same as above.
| bool pcl::Narf::extractFromRangeImage | ( | const RangeImage & | range_image, |
| const InterestPoint & | interest_point, | ||
| int | descriptor_size, | ||
| float | support_size ) |
Same as above.
| bool pcl::Narf::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.
|
static |
Add features extracted at the given interest point and add them to the list.
|
static |
Same as above.
| bool pcl::Narf::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 around the normal.
Use extractFromRangeImageAndAddToList if you want to enable the system to return multiple features with different rotations.
|
inline |
Method to erase the surface patch and free the memory.
Definition at line 226 of file narf.h.
References surface_patch_, and surface_patch_pixel_size_.
|
protected |
Get the surface patch with a blur on it.
|
inline |
|
inline |
Getter (const) for the descriptor.
Definition at line 178 of file narf.h.
References descriptor_.
Referenced by pcl::Narf::FeaturePointRepresentation::copyToFloatArray().
|
inline |
Calculate descriptor distance, value in [0,1] with 0 meaning identical and 1 every cell above maximum distance.
Definition at line 46 of file narf.hpp.
References descriptor_, descriptor_size_, pcl::L1_Norm(), and Narf().
Referenced by getRotatedVersions().
|
inline |
Getter for the descriptor length.
Definition at line 187 of file narf.h.
References descriptor_size_.
|
inline |
Getter (const) for the descriptor length.
Definition at line 184 of file narf.h.
References descriptor_size_.
|
inlinestaticprotected |
|
inline |
How many points on each beam of the gradient star are used to calculate the descriptor?
Definition at line 151 of file narf.h.
References pcl_lrint, and surface_patch_pixel_size_.
|
inline |
|
inline |
| void pcl::Narf::getRotatedVersions | ( | const RangeImage & | range_image, |
| const std::vector< float > & | rotations, | ||
| std::vector< Narf * > & | features ) const |
References getDescriptorDistance(), and Narf().
| void pcl::Narf::getRotations | ( | std::vector< float > & | rotations, |
| std::vector< float > & | strengths ) const |
|
inline |
|
inline |
Getter (const) for the surface patch.
Definition at line 220 of file narf.h.
References surface_patch_.
|
inline |
Getter for the pixel size of the surface patch (only one dimension).
Definition at line 205 of file narf.h.
References surface_patch_pixel_size_.
|
inline |
Getter (const) for the pixel size of the surface patch (only one dimension).
Definition at line 202 of file narf.h.
References surface_patch_pixel_size_.
|
inline |
Getter for the rotation of the surface patch.
Definition at line 217 of file narf.h.
References surface_patch_rotation_.
|
inline |
Getter (const) for the rotation of the surface patch.
Definition at line 214 of file narf.h.
References surface_patch_rotation_.
|
inline |
Getter for the world size of the surface patch.
Definition at line 211 of file narf.h.
References surface_patch_world_size_.
|
inline |
Getter (const) for the world size of the surface patch.
Definition at line 208 of file narf.h.
References surface_patch_world_size_.
|
inline |
|
inline |
Getter (const) for the 6DoF pose.
Definition at line 196 of file narf.h.
References transformation_.
| void pcl::Narf::loadBinary | ( | const std::string & | filename | ) |
Read from file.
| void pcl::Narf::loadBinary | ( | std::istream & | file | ) |
Read from input stream.
|
protected |
Read header from input stream.
|
protected |
Reset al members to default values and free allocated memory.
| void pcl::Narf::saveBinary | ( | const std::string & | filename | ) | const |
Write to file.
| void pcl::Narf::saveBinary | ( | std::ostream & | file | ) | const |
Write to output stream.
|
protected |
Write header to output stream.
|
inline |
|
inline |
|
protected |
Definition at line 284 of file narf.h.
Referenced by copyToNarf36(), getDescriptor(), getDescriptor(), getDescriptorDistance(), and setDescriptor().
|
protected |
Definition at line 285 of file narf.h.
Referenced by copyToNarf36(), getDescriptorDistance(), getDescriptorSize(), and getDescriptorSize().
|
static |
|
protected |
Definition at line 278 of file narf.h.
Referenced by getPosition(), and getPosition().
|
protected |
Definition at line 280 of file narf.h.
Referenced by freeSurfacePatch(), getSurfacePatch(), getSurfacePatch(), and setSurfacePatch().
|
protected |
Definition at line 281 of file narf.h.
Referenced by freeSurfacePatch(), getNoOfBeamPoints(), getSurfacePatchPixelSize(), and getSurfacePatchPixelSize().
|
protected |
Definition at line 283 of file narf.h.
Referenced by getSurfacePatchRotation(), and getSurfacePatchRotation().
|
protected |
Definition at line 282 of file narf.h.
Referenced by getSurfacePatchWorldSize(), and getSurfacePatchWorldSize().
|
protected |
Definition at line 279 of file narf.h.
Referenced by copyToNarf36(), getTransformation(), and getTransformation().