38 #include <pcl/keypoints/keypoint.h>
39 #include <pcl/octree/octree_search.h>
84 template <
typename Po
intInT,
typename Po
intOutT,
typename NormalT = pcl::Normal>
88 using Ptr = shared_ptr<ISSKeypoint3D<PointInT, PointOutT, NormalT> >;
89 using ConstPtr = shared_ptr<const ISSKeypoint3D<PointInT, PointOutT, NormalT> >;
117 name_ =
"ISSKeypoint3D";
266 #include <pcl/keypoints/impl/iss_3d.hpp>
ISSKeypoint3D detects the Intrinsic Shape Signatures keypoints for a given point cloud.
typename OctreeSearchIn::Ptr OctreeSearchInPtr
double * third_eigen_value_
Store the third eigen value associated to each point in the input cloud.
typename PointCloudN::ConstPtr PointCloudNConstPtr
void setNumberOfThreads(unsigned int nr_threads=0)
Initialize the scheduler and set the number of threads to use.
typename Keypoint< PointInT, PointOutT >::PointCloudIn PointCloudIn
void setNormals(const PointCloudNConstPtr &normals)
Set the normals if pre-calculated normals are available.
shared_ptr< ISSKeypoint3D< PointInT, PointOutT, NormalT > > Ptr
double gamma_32_
The upper bound on the ratio between the third and the second eigenvalue returned by the EVD.
void setBorderRadius(double border_radius)
Set the radius used for the estimation of the boundary points.
void setSalientRadius(double salient_radius)
Set the radius of the spherical neighborhood used to compute the scatter matrix.
void getScatterMatrix(const int ¤t_index, Eigen::Matrix3d &cov_m)
Compute the scatter matrix for a point index.
double salient_radius_
The radius of the spherical neighborhood used to compute the scatter matrix.
bool * edge_points_
Store the information about the boundary points of the input cloud.
void setThreshold21(double gamma_21)
Set the upper bound on the ratio between the second and the first eigenvalue.
void setAngleThreshold(float angle)
Set the decision boundary (angle threshold) that marks points as boundary or regular.
void setMinNeighbors(int min_neighbors)
Set the minimum number of neighbors that has to be found while applying the non maxima suppression al...
double gamma_21_
The upper bound on the ratio between the second and the first eigenvalue returned by the EVD.
void setNormalRadius(double normal_radius)
Set the radius used for the estimation of the surface normals of the input cloud.
double non_max_radius_
The non maxima suppression radius.
void setThreshold32(double gamma_32)
Set the upper bound on the ratio between the third and the second eigenvalue.
PointCloudNConstPtr normals_
The cloud of normals related to the input surface.
unsigned int threads_
The number of threads that has to be used by the scheduler.
float angle_threshold_
The decision boundary (angle threshold) that marks points as boundary or regular.
bool initCompute() override
Perform the initial checks before computing the keypoints.
~ISSKeypoint3D() override
Destructor.
ISSKeypoint3D(double salient_radius=0.0001)
Constructor.
double normal_radius_
The radius used to compute the normals of the input cloud.
double border_radius_
The radius used to compute the boundary points of the input cloud.
typename PointCloudN::Ptr PointCloudNPtr
void setNonMaxRadius(double non_max_radius)
Set the radius for the application of the non maxima suppression algorithm.
int min_neighbors_
Minimum number of neighbors that has to be found while applying the non maxima suppression algorithm.
bool * getBoundaryPoints(PointCloudIn &input, double border_radius, float angle_threshold)
Compute the boundary points for the given input cloud.
shared_ptr< const ISSKeypoint3D< PointInT, PointOutT, NormalT > > ConstPtr
void detectKeypoints(PointCloudOut &output) override
Detect the keypoints by performing the EVD of the scatter matrix.
typename Keypoint< PointInT, PointOutT >::PointCloudOut PointCloudOut
Keypoint represents the base class for key points.
std::string name_
The key point detection method's name.
double search_radius_
The nearest neighbors search radius for each point.
shared_ptr< PointCloud< NormalT > > Ptr
shared_ptr< const PointCloud< NormalT > > ConstPtr
Octree pointcloud search class
shared_ptr< OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT > > Ptr
A point structure representing normal coordinates and the surface curvature estimate.