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) {}
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_
Keypoint< PointWithRange, int >::PointCloudOut PointCloudOut
Parameters used in this class.
RangeImage is derived from pcl/PointCloud and provides functionalities with focus on situations where...
This file defines compatibility wrappers for low level I/O functions.
bool use_recursive_scale_reduction
Try to decrease runtime by extracting interest points at lower reolution in areas that contain enough...
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.
bool no_of_polynomial_approximations_per_point
If this is >0, the exact position of the interest point is determined using bivariate polynomial appr...
boost::shared_ptr< const NarfKeypoint > ConstPtr
RangeImageBorderExtractor * range_image_border_extractor_
float min_surface_change_score
The minimum value of the surface change score to consider a point.
Keypoint< PointWithRange, int > BaseClass
std::ostream & operator<<(std::ostream &os, const BivariatePolynomialT< real > &p)
Keypoint represents the base class for key points.
int max_no_of_interest_points
The maximum number of interest points that will be returned.
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_
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)
int max_no_of_threads
The maximum number of threads this code is allowed to use with OPNEMP.
boost::shared_ptr< NarfKeypoint > Ptr
std::vector< float * > interest_image_scale_space_
PointCloud represents the base class in PCL for storing collections of 3D points. ...
::pcl::PointCloud< InterestPoint > * interest_points_
std::vector< RangeImageBorderExtractor * > border_extractor_scale_space_
bool add_points_on_straight_edges
If this is set to true, there will also be interest points on straight edges, e.g., just indicating an area of high surface change.
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...
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...
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...
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_
bool calculate_sparse_interest_image
Use some heuristics to decide which areas of the interest image can be left out to improve the runtim...