Point Cloud Library (PCL)
1.10.0
|
43 #include <pcl/point_cloud.h>
45 #include <pcl/keypoints/keypoint.h>
46 #include <pcl/common/intensity.h>
76 const std::size_t height,
77 const double threshold,
81 , threshold_ (threshold)
82 , nr_max_keypoints_ (std::numeric_limits<unsigned int>::max ())
94 detectKeypoints (
const std::vector<unsigned char> &intensity_data,
102 detectKeypoints (
const std::vector<float> &intensity_data,
111 applyNonMaxSuppression (
const std::vector<unsigned char>& intensity_data,
121 applyNonMaxSuppression (
const std::vector<float>& intensity_data,
129 computeCornerScore (
const unsigned char* im)
const = 0;
135 computeCornerScore (
const float* im)
const = 0;
143 threshold_ = threshold;
160 nr_max_keypoints_ = nr_max_keypoints;
167 return (nr_max_keypoints_);
175 detect (
const unsigned char* im,
176 std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const = 0;
182 detect (
const float* im,
183 std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &)
const = 0;
219 const std::vector<ScoreIndex>& scores,
228 computeCornerScores (
const unsigned char* im,
229 const std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > & corners_all,
230 std::vector<ScoreIndex> & scores);
238 computeCornerScores (
const float* im,
239 const std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > & corners_all,
240 std::vector<ScoreIndex> & scores);
278 const std::size_t height,
279 const double threshold,
280 const double bmax = 255)
293 computeCornerScore (
const unsigned char* im)
const override;
299 computeCornerScore (
const float* im)
const override;
306 detect (
const unsigned char* im, std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const override;
313 detect (
const float* im, std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const override;
318 initPattern ()
override;
322 static const int border_width_ = 2;
325 std::array<std::int_fast16_t, 12> offset_;
349 const std::size_t height,
350 const double threshold,
351 const double bmax = 255)
364 computeCornerScore (
const unsigned char* im)
const override;
370 computeCornerScore (
const float* im)
const override;
377 detect (
const unsigned char* im, std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const override;
384 detect (
const float* im, std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const override;
389 initPattern ()
override;
393 static const int border_width_ = 1;
396 std::array<std::int_fast16_t, 8> offset_;
420 const std::size_t height,
421 const double threshold,
422 const double bmax = 255)
435 computeCornerScore (
const unsigned char* im)
const override;
441 computeCornerScore (
const float* im)
const override;
448 detect (
const unsigned char* im, std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const override;
455 detect (
const float* im, std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const override;
460 initPattern ()
override;
464 static const int border_width_ = 3;
467 std::array<std::int_fast16_t, 16> offset_;
480 template <
typename Out>
484 const std::vector<unsigned char> &image_data,
490 detector->applyNonMaxSuppression (image_data, tmp_cloud, output_temp);
500 const std::vector<unsigned char> &image_data,
505 detector->applyNonMaxSuppression (image_data, tmp_cloud, output);
509 template <
typename Out>
513 const std::vector<unsigned char> &image_data,
518 detector->detectKeypoints (image_data, output_temp);
528 const std::vector<unsigned char> &image_data,
532 detector->detectKeypoints (image_data, output);
554 template <
typename Po
intInT,
typename Po
intOutT,
typename IntensityT = pcl::common::IntensityFieldAccessor<Po
intInT> >
717 template <
typename Po
intInT,
typename Po
intOutT = pcl::Po
intUV>
737 name_ =
"AgastKeypoint2D";
781 :
public AgastKeypoint2DBase<pcl::PointXYZ, pcl::PointUV, pcl::common::IntensityFieldAccessor<pcl::PointXYZ> >
787 name_ =
"AgastKeypoint2D";
806 #include <pcl/keypoints/impl/agast_2d.hpp>
A 2D point structure representing pixel image coordinates.
This file defines compatibility wrappers for low level I/O functions.
Detects 2D AGAST corner points.
~OastDetector9_16()
Destructor.
typename PointCloudIn::ConstPtr PointCloudInConstPtr
double getThreshold()
Get the threshold for corner detection, as set by the user.
~AgastKeypoint2D()
Destructor.
double getThreshold()
Get the threshold for corner detection, as set by the user.
Abstract detector class for AGAST corner point detectors.
virtual ~AbstractAgastDetector()
Destructor.
void setNonMaxSuppression(const bool enabled)
Sets whether non-max-suppression is applied or not.
pcl::keypoints::agast::AbstractAgastDetector::Ptr AgastDetectorPtr
PCL_EXPORTS void copyPointCloud(const pcl::PCLPointCloud2 &cloud_in, const std::vector< int > &indices, pcl::PCLPointCloud2 &cloud_out)
Extract the indices of a given point cloud as a new point cloud.
double bmax_
Max image value.
AgastKeypoint2D()
Constructor.
std::size_t height_
Height of the image to process.
unsigned int getMaxKeypoints()
Get the maximum number of keypoints to return, as set by the user.
bool apply_non_max_suppression_
Determines whether non-max-suppression is activated.
unsigned int getMaxKeypoints()
Get the maximum number of keypoints to return, as set by the user.
bool getNonMaxSuppression()
Returns whether non-max-suppression is applied or not.
AgastDetector(const std::vector< unsigned char > &image_data, const pcl::keypoints::agast::AbstractAgastDetector::Ptr &detector, pcl::PointCloud< Out > &output)
void setMaxKeypoints(const unsigned int nr_max_keypoints)
Sets the maximum number of keypoints to return.
void detectKeypoints(PointCloudOut &output) override
Detects the keypoints.
shared_ptr< const AbstractAgastDetector > ConstPtr
~AgastDetector7_12s()
Destructor.
double getMaxDataValue()
Get the bmax image value, as set by the user.
AgastKeypoint2D()
Constructor.
~AgastKeypoint2D()
Destructor.
Detector class for AGAST corner point detector (7_12s).
void setAgastDetector(const AgastDetectorPtr &detector)
AgastKeypoint2DBase()
Constructor.
A point structure representing Euclidean xyz coordinates.
Structure holding an index and the associated keypoint score.
void detectKeypoints(PointCloudOut &output) override=0
Detects the keypoints.
Detector class for AGAST corner point detector (OAST 9_16).
~AgastKeypoint2DBase()
Destructor.
shared_ptr< AbstractAgastDetector > Ptr
bool initCompute() override
Initializes everything and checks whether input data is fine.
std::string name_
The key point detection method's name.
AgastApplyNonMaxSuppresion(const std::vector< unsigned char > &image_data, const pcl::PointCloud< pcl::PointUV > &tmp_cloud, const pcl::keypoints::agast::AbstractAgastDetector::Ptr &detector, pcl::PointCloud< pcl::PointUV > &output)
AgastDetector(const std::vector< unsigned char > &image_data, const pcl::keypoints::agast::AbstractAgastDetector::Ptr &detector, pcl::PointCloud< pcl::PointUV > &output)
std::size_t width_
Width of the image to process.
AgastDetector5_8(const std::size_t width, const std::size_t height, const double threshold, const double bmax=255)
Constructor.
double bmax_
Max image value.
unsigned int nr_max_keypoints_
The maximum number of keypoints to return.
IntensityT intensity_
Intensity field accessor.
void setMaxKeypoints(const unsigned int nr_max_keypoints)
Sets the maximum number of keypoints to return.
Detects 2D AGAST corner points.
void setMaxDataValue(const double bmax)
Sets the max image data value (affects how many iterations AGAST does)
typename Keypoint< PointInT, PointOutT >::PointCloudOut PointCloudOut
unsigned int nr_max_keypoints_
The maximum number of keypoints to return.
double threshold_
Threshold for corner detection.
AbstractAgastDetector(const std::size_t width, const std::size_t height, const double threshold, const double bmax)
Constructor.
shared_ptr< const PointCloud< pcl::PointXYZ > > ConstPtr
AgastDetector7_12s(const std::size_t width, const std::size_t height, const double threshold, const double bmax=255)
Constructor.
AgastDetectorPtr getAgastDetector()
void setThreshold(const double threshold)
Sets the threshold for corner detection.
Keypoint represents the base class for key points.
AgastApplyNonMaxSuppresion(const std::vector< unsigned char > &image_data, const pcl::PointCloud< pcl::PointUV > &tmp_cloud, const pcl::keypoints::agast::AbstractAgastDetector::Ptr &detector, pcl::PointCloud< Out > &output)
double threshold_
Threshold for corner detection.
int k_
The number of K nearest neighbors to use for each point.
void setThreshold(const double threshold)
Sets the threshold for corner detection.
typename Keypoint< PointInT, PointOutT >::PointCloudOut PointCloudOut
OastDetector9_16(const std::size_t width, const std::size_t height, const double threshold, const double bmax=255)
Constructor.
boost::shared_ptr< T > shared_ptr
Alias for boost::shared_ptr.
~AgastDetector5_8()
Destructor.
Detector class for AGAST corner point detector (5_8).
AgastDetectorPtr detector_
The Agast detector to use.