45 #include <pcl/features/feature.h> 59 histogramsPC.points.resize (histograms2D.size ());
60 histogramsPC.width = histograms2D.size ();
61 histogramsPC.height = 1;
62 histogramsPC.is_dense =
true;
64 const int rows = histograms2D.at(0).rows();
65 const int cols = histograms2D.at(0).cols();
68 for (
const Eigen::MatrixXf& h : histograms2D)
70 Eigen::Map<Eigen::MatrixXf> histogram (&(it->histogram[0]), rows, cols);
87 template <
typename Po
intInT,
typename Po
intNT,
typename Po
intOutT> Eigen::MatrixXf
89 const std::vector<int> &indices,
double max_dist,
90 int nr_subdiv,
double plane_radius, PointOutT &radii,
bool compute_histogram =
false);
92 template <
typename Po
intInT,
typename Po
intNT,
typename Po
intOutT>
93 PCL_DEPRECATED(1, 12,
"use computeRSD() overload that takes input point clouds by const reference")
96 const std::vector<
int> &indices,
double max_dist,
97 int nr_subdiv,
double plane_radius, PointOutT &radii,
bool compute_histogram = false)
99 return computeRSD (*surface, *normals, indices, max_dist, nr_subdiv, plane_radius, radii, compute_histogram);
113 template <
typename Po
intNT,
typename Po
intOutT> Eigen::MatrixXf
115 const std::vector<int> &indices,
const std::vector<float> &sqr_dists,
double max_dist,
116 int nr_subdiv,
double plane_radius, PointOutT &radii,
bool compute_histogram =
false);
118 template <
typename Po
intNT,
typename Po
intOutT>
119 PCL_DEPRECATED(1, 12,
"use computeRSD() overload that takes input point cloud by const reference")
122 const std::vector<
int> &indices, const std::vector<
float> &sqr_dists,
double max_dist,
123 int nr_subdiv,
double plane_radius, PointOutT &radii,
bool compute_histogram = false)
125 return computeRSD (*normals, indices, sqr_dists, max_dist, nr_subdiv, plane_radius, radii, compute_histogram);
150 template <
typename Po
intInT,
typename Po
intNT,
typename Po
intOutT>
165 using Ptr = shared_ptr<RSDEstimation<PointInT, PointNT, PointOutT> >;
166 using ConstPtr = shared_ptr<const RSDEstimation<PointInT, PointNT, PointOutT> >;
170 RSDEstimation () : nr_subdiv_ (5), plane_radius_ (0.2), save_histograms_ (false)
205 PCL_ERROR (
"[pcl::%s::setKSearch] RSD does not work with k nearest neighbor search. Use setRadiusSearch() instead!\n",
getClassName ().c_str ());
224 inline shared_ptr<std::vector<Eigen::MatrixXf, Eigen::aligned_allocator<Eigen::MatrixXf> > >
238 shared_ptr<std::vector<Eigen::MatrixXf, Eigen::aligned_allocator<Eigen::MatrixXf> > >
histograms_;
245 double plane_radius_;
248 bool save_histograms_;
255 #ifdef PCL_NO_PRECOMPILE 256 #include <pcl/features/impl/rsd.hpp> Defines functions, macros and traits for allocating and using memory.
std::vector< PointT, Eigen::aligned_allocator< PointT > > points
The point data.
RSDEstimation()
Empty constructor.
std::string feature_name_
The feature name.
void getFeaturePointCloud(const std::vector< Eigen::MatrixXf, Eigen::aligned_allocator< Eigen::MatrixXf > > &histograms2D, PointCloud< Histogram< N > > &histogramsPC)
Transform a list of 2D matrices into a point cloud containing the values in a vector (Histogram<N>)...
void setPlaneRadius(double plane_radius)
Set the maximum radius, above which everything can be considered planar.
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
typename Feature< PointInT, PointOutT >::PointCloudOut PointCloudOut
shared_ptr< const Feature< PointInT, PointOutT > > ConstPtr
const std::string & getClassName() const
Get a string representation of the name of this class.
A point structure representing an N-D histogram.
RSDEstimation estimates the Radius-based Surface Descriptor (minimal and maximal radius of the local ...
int getNrSubdivisions() const
Get the number of subdivisions for the considered distance interval.
PointCloud represents the base class in PCL for storing collections of 3D points. ...
void setKSearch(int)
Disables the setting of the number of k nearest neighbors to use for the feature estimation.
Eigen::MatrixXf computeRSD(const pcl::PointCloud< PointInT > &surface, const pcl::PointCloud< PointNT > &normals, const std::vector< int > &indices, double max_dist, int nr_subdiv, double plane_radius, PointOutT &radii, bool compute_histogram=false)
Estimate the Radius-based Surface Descriptor (RSD) for a given point based on its spatial neighborhoo...
void computeFeature(PointCloudOut &output) override
Estimate the estimates the Radius-based Surface Descriptor (RSD) at a set of points given by <setInpu...
double getPlaneRadius() const
Get the maximum radius, above which everything can be considered planar.
shared_ptr< std::vector< Eigen::MatrixXf, Eigen::aligned_allocator< Eigen::MatrixXf > > > histograms_
The list of full distance-angle histograms for all points.
void setNrSubdivisions(int nr_subdiv)
Set the number of subdivisions for the considered distance interval.
#define PCL_DEPRECATED(Major, Minor, Message)
macro for compatibility across compilers and help remove old deprecated items for the Major...
Feature represents the base feature class.
PCL_EXPORTS int save(const std::string &file_name, const pcl::PCLPointCloud2 &blob, unsigned precision=5)
Save point cloud data to a binary file when available else to ASCII.
bool getSaveHistograms() const
Returns whether the full distance-angle histograms are being saved.
Defines all the PCL and non-PCL macros used.
shared_ptr< Feature< PointInT, PointOutT > > Ptr
shared_ptr< std::vector< Eigen::MatrixXf, Eigen::aligned_allocator< Eigen::MatrixXf > > > getHistograms() const
Returns a pointer to the list of full distance-angle histograms for all points.
void setSaveHistograms(bool save)
Set whether the full distance-angle histograms should be saved.