|
Point Cloud Library (PCL)
1.11.1-dev
|
43 #include <pcl/point_cloud.h>
45 #include <pcl/keypoints/keypoint.h>
46 #include <pcl/common/intensity.h>
47 #include <pcl/common/io.h>
67 using Ptr = shared_ptr<AbstractAgastDetector>;
68 using ConstPtr = shared_ptr<const AbstractAgastDetector>;
77 const std::size_t height,
78 const double threshold,
82 , threshold_ (threshold)
83 , nr_max_keypoints_ (std::numeric_limits<unsigned int>::max ())
95 detectKeypoints (
const std::vector<unsigned char> &intensity_data,
103 detectKeypoints (
const std::vector<float> &intensity_data,
112 applyNonMaxSuppression (
const std::vector<unsigned char>& intensity_data,
122 applyNonMaxSuppression (
const std::vector<float>& intensity_data,
130 computeCornerScore (
const unsigned char* im)
const = 0;
136 computeCornerScore (
const float* im)
const = 0;
144 threshold_ = threshold;
161 nr_max_keypoints_ = nr_max_keypoints;
168 return (nr_max_keypoints_);
176 detect (
const unsigned char* im,
177 std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const = 0;
183 detect (
const float* im,
184 std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &)
const = 0;
220 const std::vector<ScoreIndex>& scores,
229 computeCornerScores (
const unsigned char* im,
230 const std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > & corners_all,
231 std::vector<ScoreIndex> & scores)
const;
239 computeCornerScores (
const float* im,
240 const std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > & corners_all,
241 std::vector<ScoreIndex> & scores)
const;
269 using Ptr = shared_ptr<AgastDetector7_12s>;
270 using ConstPtr = shared_ptr<const AgastDetector7_12s>;
279 const std::size_t height,
280 const double threshold,
281 const double bmax = 255)
294 computeCornerScore (
const unsigned char* im)
const override;
300 computeCornerScore (
const float* im)
const override;
307 detect (
const unsigned char* im, std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const override;
314 detect (
const float* im, std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const override;
319 initPattern ()
override;
323 static const int border_width_ = 2;
326 std::array<std::int_fast16_t, 12> offset_;
340 using Ptr = shared_ptr<AgastDetector5_8>;
341 using ConstPtr = shared_ptr<const AgastDetector5_8>;
350 const std::size_t height,
351 const double threshold,
352 const double bmax = 255)
365 computeCornerScore (
const unsigned char* im)
const override;
371 computeCornerScore (
const float* im)
const override;
378 detect (
const unsigned char* im, std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const override;
385 detect (
const float* im, std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const override;
390 initPattern ()
override;
394 static const int border_width_ = 1;
397 std::array<std::int_fast16_t, 8> offset_;
411 using Ptr = shared_ptr<OastDetector9_16>;
412 using ConstPtr = shared_ptr<const OastDetector9_16>;
421 const std::size_t height,
422 const double threshold,
423 const double bmax = 255)
436 computeCornerScore (
const unsigned char* im)
const override;
442 computeCornerScore (
const float* im)
const override;
449 detect (
const unsigned char* im, std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const override;
456 detect (
const float* im, std::vector<
pcl::PointUV, Eigen::aligned_allocator<pcl::PointUV> > &corners_all)
const override;
461 initPattern ()
override;
465 static const int border_width_ = 3;
468 std::array<std::int_fast16_t, 16> offset_;
481 template <
typename Out>
485 const std::vector<unsigned char> &image_data,
491 detector->applyNonMaxSuppression (image_data, tmp_cloud, output_temp);
501 const std::vector<unsigned char> &image_data,
506 detector->applyNonMaxSuppression (image_data, tmp_cloud, output);
510 template <
typename Out>
514 const std::vector<unsigned char> &image_data,
519 detector->detectKeypoints (image_data, output_temp);
529 const std::vector<unsigned char> &image_data,
533 detector->detectKeypoints (image_data, output);
555 template <
typename Po
intInT,
typename Po
intOutT,
typename IntensityT = pcl::common::IntensityFieldAccessor<Po
intInT> >
718 template <
typename Po
intInT,
typename Po
intOutT = pcl::Po
intUV>
738 name_ =
"AgastKeypoint2D";
782 :
public AgastKeypoint2DBase<pcl::PointXYZ, pcl::PointUV, pcl::common::IntensityFieldAccessor<pcl::PointXYZ> >
788 name_ =
"AgastKeypoint2D";
807 #include <pcl/keypoints/impl/agast_2d.hpp>
A 2D point structure representing pixel image coordinates.
Detects 2D AGAST corner points.
~OastDetector9_16()
Destructor.
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.
int k_
The number of K nearest neighbors to use for each point.
void setNonMaxSuppression(const bool enabled)
Sets whether non-max-suppression is applied or not.
pcl::keypoints::agast::AbstractAgastDetector::Ptr AgastDetectorPtr
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.
void copyPointCloud(const pcl::PointCloud< PointInT > &cloud_in, pcl::PointCloud< PointOutT > &cloud_out)
Copy all the fields from a given point cloud into a new point cloud.
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.
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.
std::string name_
The key point detection method's name.
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< PointInT > > 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.
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.
typename PointCloudIn::ConstPtr PointCloudInConstPtr
~AgastDetector5_8()
Destructor.
Detector class for AGAST corner point detector (5_8).
AgastDetectorPtr detector_
The Agast detector to use.