42 #include <pcl/point_cloud.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};
138 const ::pcl::PointCloud<InterestPoint>&
142 const std::vector<bool>&
176 using BaseClass::name_;
179 float* interest_image_{
nullptr};
Keypoint represents the base class for key points.
NARF (Normal Aligned Radial Feature) keypoints.
const RangeImage & getRangeImage()
Getter for the range image of range_image_border_extractor_.
Keypoint< PointWithRange, int >::PointCloudOut PointCloudOut
Parameters & getParameters()
Getter for the parameter struct.
shared_ptr< NarfKeypoint > Ptr
void calculateInterestPoints()
const ::pcl::PointCloud< InterestPoint > & getInterestPoints()
Extract maxima from an interest image.
void detectKeypoints(PointCloudOut &output) override
Detect key points.
void compute(PointCloudOut &output)
Overwrite the compute function of the base class.
std::vector< float * > interest_image_scale_space_
void calculateInterestImage()
NarfKeypoint(RangeImageBorderExtractor *range_image_border_extractor=nullptr, float support_size=-1.0f)
void calculateCompleteInterestImage()
void setRangeImage(const RangeImage *range_image)
Set the RangeImage member of the RangeImageBorderExtractor.
void setRangeImageBorderExtractor(RangeImageBorderExtractor *range_image_border_extractor)
Set the RangeImageBorderExtractor member (required)
void clearData()
Erase all data calculated for the current range image.
float * getInterestImage()
Extract interest value per image point.
std::vector< RangeImageBorderExtractor * > border_extractor_scale_space_
shared_ptr< const NarfKeypoint > ConstPtr
RangeImageBorderExtractor * getRangeImageBorderExtractor()
Get the RangeImageBorderExtractor member.
void calculateSparseInterestImage()
const std::vector< bool > & getIsInterestPointImage()
Set all points in the image that are interest points to true, the rest to false.
std::vector< bool > is_interest_point_image_
void calculateScaleSpace()
RangeImageBorderExtractor * range_image_border_extractor_
std::vector< RangeImage * > range_image_scale_space_
PointCloud represents the base class in PCL for storing collections of 3D points.
RangeImage is derived from pcl/PointCloud and provides functionalities with focus on situations where...
Defines all the PCL implemented PointT point type structures.
Defines functions, macros and traits for allocating and using memory.
std::ostream & operator<<(std::ostream &os, const BivariatePolynomialT< real > &p)
Defines all the PCL and non-PCL macros used.
Parameters used in this class.
float min_distance_between_interest_points
Minimum distance between maximas (this is a factor for support_size, i.e.
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...
float min_interest_value
The minimum value to consider a point as an interest point.
float support_size
This defines the area 'covered' by an interest point (in meters)