43 #include <pcl/features/feature.h>
44 #include <pcl/common/eigen.h>
45 #include <pcl/common/centroid.h>
46 #include <pcl/common/intensity.h>
63 template <
typename PointInT,
70 using Ptr = shared_ptr<BRISK2DEstimation<PointInT, PointOutT, KeypointT, IntensityT> >;
71 using ConstPtr = shared_ptr<const BRISK2DEstimation<PointInT, PointOutT, KeypointT, IntensityT> >;
94 rotation_invariance_enabled_ = enable;
103 scale_invariance_enabled_ = enable;
112 input_cloud_ = cloud;
124 keypoints_ = keypoints;
146 std::vector<int> &number_list,
147 float d_max = 5.85f,
float d_min = 8.2f,
148 std::vector<int> index_change = std::vector<int> ());
153 int image_width,
int image_height,
154 const std::vector<int>& integral_image,
155 const float key_x,
const float key_y,
const unsigned int scale,
156 const unsigned int rot,
const unsigned int point)
const;
161 RoiPredicate (
const float min_x,
const float min_y,
162 const float max_x,
const float max_y,
const KeypointT& key_pt);
165 bool rotation_invariance_enabled_;
168 bool scale_invariance_enabled_;
171 const float pattern_scale_;
183 struct BriskPatternPoint
193 struct BriskShortPair
215 BriskPatternPoint* pattern_points_;
218 unsigned int points_;
221 const unsigned int n_rot_;
227 unsigned int* size_list_;
230 const unsigned int scales_;
233 const float scalerange_;
236 const float basic_size_;
246 BriskShortPair* short_pairs_;
248 BriskLongPair* long_pairs_;
250 unsigned int no_short_pairs_;
252 unsigned int no_long_pairs_;
255 IntensityT intensity_;
263 #include <pcl/features/impl/brisk_2d.hpp>
void compute(PointCloudOutT &output)
Computes the descriptors for the previously specified points and input data.
int smoothedIntensity(const std::vector< unsigned char > &image, int image_width, int image_height, const std::vector< int > &integral_image, const float key_x, const float key_y, const unsigned int scale, const unsigned int rot, const unsigned int point) const
Compute the smoothed intensity for a given x/y position in the image.
shared_ptr< PointCloud< PointT > > Ptr
void setRotationInvariance(const bool enable)
Determines whether rotation invariance is enabled.
typename KeypointPointCloudT::ConstPtr KeypointPointCloudTConstPtr
void setScaleInvariance(const bool enable)
Determines whether scale invariance is enabled.
A point structure representing the Binary Robust Invariant Scalable Keypoints (BRISK).
Implementation of the BRISK-descriptor, based on the original code and paper reference by...
void setKeypoints(const KeypointPointCloudTPtr &keypoints)
Sets the input keypoints.
typename KeypointPointCloudT::Ptr KeypointPointCloudTPtr
void setInputCloud(const PointCloudInTConstPtr &cloud)
Sets the input cloud.
pcl::PointCloud< PointOutT > PointCloudOutT
shared_ptr< const BRISK2DEstimation< PointInT, PointOutT, KeypointT, IntensityT > > ConstPtr
typename PointCloudInT::ConstPtr PointCloudInTConstPtr
virtual ~BRISK2DEstimation()
Destructor.
shared_ptr< const PointCloud< PointInT > > ConstPtr
A point structure representing a 3-D position and scale.
BRISK2DEstimation()
Constructor.
void generateKernel(std::vector< float > &radius_list, std::vector< int > &number_list, float d_max=5.85f, float d_min=8.2f, std::vector< int > index_change=std::vector< int >())
Call this to generate the kernel: circle of radius r (pixels), with n points; short pairings with dMa...
shared_ptr< BRISK2DEstimation< PointInT, PointOutT, KeypointT, IntensityT > > Ptr