43 #include <pcl/features/feature.h>
45 #include <pcl/common/intensity.h>
62 template <
typename PointInT,
69 using Ptr = shared_ptr<BRISK2DEstimation<PointInT, PointOutT, KeypointT, IntensityT> >;
70 using ConstPtr = shared_ptr<const BRISK2DEstimation<PointInT, PointOutT, KeypointT, IntensityT> >;
93 rotation_invariance_enabled_ = enable;
102 scale_invariance_enabled_ = enable;
111 input_cloud_ = cloud;
123 keypoints_ = keypoints;
145 std::vector<int> &number_list,
146 float d_max = 5.85f,
float d_min = 8.2f,
147 std::vector<int> index_change = std::vector<int> ());
152 int image_width,
int image_height,
153 const std::vector<int>& integral_image,
154 const float key_x,
const float key_y,
const unsigned int scale,
155 const unsigned int rot,
const unsigned int point)
const;
160 RoiPredicate (
const float min_x,
const float min_y,
161 const float max_x,
const float max_y,
const KeypointT& key_pt);
164 bool rotation_invariance_enabled_{
true};
167 bool scale_invariance_enabled_{
true};
170 const float pattern_scale_{1.0f};
179 float scale_range_{0.0f};
182 struct BriskPatternPoint
192 struct BriskShortPair
214 BriskPatternPoint* pattern_points_;
217 unsigned int points_{0u};
220 const unsigned int n_rot_{1024};
223 float* scale_list_{
nullptr};
226 unsigned int* size_list_{
nullptr};
229 const unsigned int scales_{64};
232 const float scalerange_{30};
235 const float basic_size_{12.0};
245 BriskShortPair* short_pairs_;
247 BriskLongPair* long_pairs_;
249 unsigned int no_short_pairs_{0};
251 unsigned int no_long_pairs_{0};
254 IntensityT intensity_;
262 #include <pcl/features/impl/brisk_2d.hpp>
Define methods for centroid estimation and covariance matrix calculus.
Implementation of the BRISK-descriptor, based on the original code and paper reference by.
void setRotationInvariance(const bool enable)
Determines whether rotation invariance is enabled.
shared_ptr< BRISK2DEstimation< PointInT, PointOutT, KeypointT, IntensityT > > Ptr
BRISK2DEstimation()
Constructor.
typename PointCloudInT::ConstPtr PointCloudInTConstPtr
typename KeypointPointCloudT::ConstPtr KeypointPointCloudTConstPtr
void setScaleInvariance(const bool enable)
Determines whether scale invariance is enabled.
void setInputCloud(const PointCloudInTConstPtr &cloud)
Sets the input cloud.
virtual ~BRISK2DEstimation()
Destructor.
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...
void compute(PointCloudOutT &output)
Computes the descriptors for the previously specified points and input data.
typename KeypointPointCloudT::Ptr KeypointPointCloudTPtr
void setKeypoints(const KeypointPointCloudTPtr &keypoints)
Sets the input keypoints.
shared_ptr< const BRISK2DEstimation< PointInT, PointOutT, KeypointT, IntensityT > > ConstPtr
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.
pcl::PointCloud< PointOutT > PointCloudOutT
shared_ptr< PointCloud< PointT > > Ptr
shared_ptr< const PointCloud< PointInT > > ConstPtr
A point structure representing the Binary Robust Invariant Scalable Keypoints (BRISK).
A point structure representing a 3-D position and scale.