40 #include <pcl/memory.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 using Ptr = shared_ptr<NarfKeypoint>;
64 using ConstPtr = shared_ptr<const NarfKeypoint>;
77 float support_size{-1.0f};
78 int max_no_of_interest_points{-1};
79 float min_distance_between_interest_points{0.25f};
82 float optimal_distance_to_high_surface_change{0.25};
86 float min_interest_value{0.45f};
87 float min_surface_change_score{0.2f};
88 int optimal_range_image_patch_size{10};
93 float distance_for_additional_points{0.0f};
97 bool add_points_on_straight_edges{
false};
99 bool do_non_maximum_suppression{
true};
102 bool no_of_polynomial_approximations_per_point{
false};
105 int max_no_of_threads{1};
106 bool use_recursive_scale_reduction{
false};
108 bool calculate_sparse_interest_image{
true};
131 setRangeImage (
const RangeImage* range_image);
138 const ::pcl::PointCloud<InterestPoint>&
142 const std::vector<bool>&
155 compute (PointCloudOut& output);
160 calculateScaleSpace ();
162 calculateInterestImage ();
164 calculateCompleteInterestImage ();
166 calculateSparseInterestImage ();
168 calculateInterestPoints ();
173 detectKeypoints (PointCloudOut& output)
override;
176 using BaseClass::name_;
179 float* interest_image_{
nullptr};
shared_ptr< const NarfKeypoint > ConstPtr
Parameters used in this class.
RangeImage is derived from pcl/PointCloud and provides functionalities with focus on situations where...
Keypoint< PointWithRange, int >::PointCloudOut PointCloudOut
const ::pcl::PointCloud< InterestPoint > & getInterestPoints()
Extract maxima from an interest image.
const std::vector< bool > & getIsInterestPointImage()
Set all points in the image that are interest points to true, the rest to false.
RangeImageBorderExtractor * range_image_border_extractor_
std::ostream & operator<<(std::ostream &os, const BivariatePolynomialT< real > &p)
Keypoint represents the base class for key points.
float min_distance_between_interest_points
Minimum distance between maximas (this is a factor for support_size, i.e.
std::vector< RangeImage * > range_image_scale_space_
float support_size
This defines the area 'covered' by an interest point (in meters)
shared_ptr< NarfKeypoint > Ptr
PointCloud represents the base class in PCL for storing collections of 3D points. ...
std::vector< float * > interest_image_scale_space_
std::vector< RangeImageBorderExtractor * > border_extractor_scale_space_
float distance_for_additional_points
All points in this distance to a found maximum, that are above min_interest_value are also added as i...
NARF (Normal Aligned Radial Feature) keypoints.
float min_interest_value
The minimum value to consider a point as an interest point.
Parameters & getParameters()
Getter for the parameter struct.
RangeImageBorderExtractor * getRangeImageBorderExtractor()
Get the RangeImageBorderExtractor member.
float * getInterestImage()
Extract interest value per image point.
std::vector< bool > is_interest_point_image_