Point Cloud Library (PCL)
1.11.1
|
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>;
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(false),
80 max_no_of_threads(1), use_recursive_scale_reduction(false),
81 calculate_sparse_interest_image(true) {}
144 const ::pcl::PointCloud<InterestPoint>&
148 const std::vector<bool>&
182 using BaseClass::name_;
void calculateInterestImage()
float min_surface_change_score
The minimum value of the surface change score to consider a point.
Defines all the PCL and non-PCL macros used.
RangeImageBorderExtractor * getRangeImageBorderExtractor()
Get the RangeImageBorderExtractor member.
const RangeImage & getRangeImage()
Getter for the range image of range_image_border_extractor_.
float * getInterestImage()
Extract interest value per image point.
const std::vector< bool > & getIsInterestPointImage()
Set all points in the image that are interest points to true, the rest to false.
void calculateCompleteInterestImage()
int optimal_range_image_patch_size
The size (in pixels) of the image patches from which the interest value should be computed.
float support_size
This defines the area 'covered' by an interest point (in meters)
void compute(PointCloudOut &output)
Overwrite the compute function of the base class.
float optimal_distance_to_high_surface_change
The distance we want keep between keypoints and areas of high surface change (this is a factor for su...
void setRangeImage(const RangeImage *range_image)
Set the RangeImage member of the RangeImageBorderExtractor.
PointCloud represents the base class in PCL for storing collections of 3D points.
void clearData()
Erase all data calculated for the current range image.
void detectKeypoints(PointCloudOut &output) override
Detect key points.
std::vector< float * > interest_image_scale_space_
RangeImage is derived from pcl/PointCloud and provides functionalities with focus on situations where...
void calculateInterestPoints()
Parameters used in this class.
std::ostream & operator<<(std::ostream &os, const BivariatePolynomialT< real > &p)
int max_no_of_threads
The maximum number of threads this code is allowed to use with OPNEMP.
bool do_non_maximum_suppression
If this is set to false there will be much more points (can be used to spread points over the whole s...
bool add_points_on_straight_edges
If this is set to true, there will also be interest points on straight edges, e.g....
std::vector< RangeImageBorderExtractor * > border_extractor_scale_space_
void calculateSparseInterestImage()
Keypoint< PointWithRange, int >::PointCloudOut PointCloudOut
shared_ptr< NarfKeypoint > Ptr
Parameters & getParameters()
Getter for the parameter struct.
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...
void calculateScaleSpace()
float min_interest_value
The minimum value to consider a point as an interest point.
std::vector< bool > is_interest_point_image_
bool use_recursive_scale_reduction
Try to decrease runtime by extracting interest points at lower reolution in areas that contain enough...
shared_ptr< const NarfKeypoint > ConstPtr
::pcl::PointCloud< InterestPoint > * interest_points_
bool no_of_polynomial_approximations_per_point
If this is >0, the exact position of the interest point is determined using bivariate polynomial appr...
void setRangeImageBorderExtractor(RangeImageBorderExtractor *range_image_border_extractor)
Set the RangeImageBorderExtractor member (required)
bool calculate_sparse_interest_image
Use some heuristics to decide which areas of the interest image can be left out to improve the runtim...
const ::pcl::PointCloud< InterestPoint > & getInterestPoints()
Extract maxima from an interest image.
std::vector< RangeImage * > range_image_scale_space_
float min_distance_between_interest_points
Minimum distance between maximas (this is a factor for support_size, i.e.
NARF (Normal Aligned Radial Feature) keypoints.
Keypoint represents the base class for key points.
int max_no_of_interest_points
The maximum number of interest points that will be returned.
NarfKeypoint(RangeImageBorderExtractor *range_image_border_extractor=nullptr, float support_size=-1.0f)
Defines functions, macros and traits for allocating and using memory.
RangeImageBorderExtractor * range_image_border_extractor_