40 #include <Eigen/Geometry>
50 #define NARF_DEFAULT_SURFACE_PATCH_PIXEL_SIZE 10
71 const Narf& operator=(
const Narf& other);
79 extractFromRangeImageAndAddToList (
const RangeImage& range_image,
const Eigen::Vector3f& interest_point,
int descriptor_size,
80 float support_size,
bool rotation_invariant, std::vector<Narf*>& feature_list);
83 extractFromRangeImageAndAddToList (
const RangeImage& range_image,
float image_x,
float image_y,
int descriptor_size,
84 float support_size,
bool rotation_invariant, std::vector<Narf*>& feature_list);
88 int descriptor_size,
float support_size,
bool rotation_invariant, std::vector<Narf*>& feature_list);
91 extractForEveryRangeImagePointAndAddToList (
const RangeImage& range_image,
int descriptor_size,
float support_size,
92 bool rotation_invariant, std::vector<Narf*>& feature_list);
101 extractFromRangeImage (
const RangeImage& range_image,
const Eigen::Affine3f& pose,
int descriptor_size,
float support_size,
106 extractFromRangeImage (
const RangeImage& range_image,
float x,
float y,
int descriptor_size,
float support_size);
110 extractFromRangeImage (
const RangeImage& range_image,
const InterestPoint& interest_point,
int descriptor_size,
float support_size);
114 extractFromRangeImage (
const RangeImage& range_image,
const Eigen::Vector3f& interest_point,
int descriptor_size,
float support_size);
119 extractFromRangeImageWithBestRotation (
const RangeImage& range_image,
const Eigen::Vector3f& interest_point,
120 int descriptor_size,
float support_size);
127 getRotations (std::vector<float>& rotations, std::vector<float>& strengths)
const;
136 getRotatedVersions (
const RangeImage& range_image,
const std::vector<float>& rotations, std::vector<Narf*>& features)
const;
140 getDescriptorDistance (
const Narf& other)
const;
148 copyToNarf36 (
Narf36& narf36)
const;
152 saveBinary (
const std::string& filename)
const;
166 extractDescriptor (
int descriptor_size);
182 inline const Eigen::Vector3f&
185 inline Eigen::Vector3f&
188 inline const Eigen::Affine3f&
191 inline Eigen::Affine3f&
219 freeSurfacePatch () {
delete[] surface_patch_; surface_patch_=NULL; surface_patch_pixel_size_=0; }
246 deepCopy (
const Narf& other);
249 getBlurredSurfacePatch (
int new_pixel_size,
int blur_radius)
const;
253 saveHeader (std::ostream& file)
const;
256 loadHeader (std::istream& file)
const;
259 static const std::string
260 getHeaderKeyword () {
return "NARF"; }
263 const static int VERSION = 1;
266 Eigen::Vector3f position_;
267 Eigen::Affine3f transformation_;
268 float* surface_patch_;
269 int surface_patch_pixel_size_;
270 float surface_patch_world_size_;
271 float surface_patch_rotation_;
273 int descriptor_size_;
278 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
280 #undef NARF_DEFAULT_SURFACE_PATCH_PIXEL_SIZE
286 #endif //#ifndef PCL_NARF_H_