38 #ifndef PCL_NARF_KEYPOINT_H_
39 #define PCL_NARF_KEYPOINT_H_
41 #include <pcl/pcl_macros.h>
42 #include <pcl/point_cloud.h>
43 #include <pcl/point_types.h>
44 #include <pcl/keypoints/keypoint.h>
50 class RangeImageBorderExtractor;
63 typedef boost::shared_ptr<NarfKeypoint>
Ptr;
64 typedef boost::shared_ptr<const NarfKeypoint>
ConstPtr;
75 Parameters() : support_size(-1.0f), max_no_of_interest_points(-1), min_distance_between_interest_points(0.25f),
76 optimal_distance_to_high_surface_change(0.25), min_interest_value(0.45f),
77 min_surface_change_score(0.2f), optimal_range_image_patch_size(10),
78 distance_for_additional_points(0.0f), add_points_on_straight_edges(false),
79 do_non_maximum_suppression(true), no_of_polynomial_approximations_per_point(0),
80 max_no_of_threads(1), use_recursive_scale_reduction(false),
81 calculate_sparse_interest_image(true) {}
85 float min_distance_between_interest_points;
88 float optimal_distance_to_high_surface_change;
94 int optimal_range_image_patch_size;
99 float distance_for_additional_points;
103 bool add_points_on_straight_edges;
105 bool do_non_maximum_suppression;
108 bool no_of_polynomial_approximations_per_point;
112 bool use_recursive_scale_reduction;
114 bool calculate_sparse_interest_image;
137 setRangeImage (
const RangeImage* range_image);
144 const ::pcl::PointCloud<InterestPoint>&
148 const std::vector<bool>&
161 compute (PointCloudOut& output);
166 calculateScaleSpace ();
168 calculateInterestImage ();
170 calculateCompleteInterestImage ();
172 calculateSparseInterestImage ();
174 calculateInterestPoints ();
179 detectKeypoints (PointCloudOut& output);
182 using BaseClass::name_;
206 #endif //#ifndef PCL_NARF_KEYPOINT_H_