Point Cloud Library (PCL)
1.14.1-dev
|
The marching cubes surface reconstruction algorithm, using a signed distance function based on the distance from tangent planes, proposed by Hoppe et. More...
#include <pcl/surface/marching_cubes_hoppe.h>
Public Types | |
using | Ptr = shared_ptr< MarchingCubesHoppe< PointNT > > |
using | ConstPtr = shared_ptr< const MarchingCubesHoppe< PointNT > > |
using | PointCloudPtr = typename pcl::PointCloud< PointNT >::Ptr |
using | KdTree = pcl::KdTree< PointNT > |
using | KdTreePtr = typename KdTree::Ptr |
Public Types inherited from pcl::MarchingCubes< PointNT > | |
using | Ptr = shared_ptr< MarchingCubes< PointNT > > |
using | ConstPtr = shared_ptr< const MarchingCubes< PointNT > > |
using | PointCloudPtr = typename pcl::PointCloud< PointNT >::Ptr |
using | KdTree = pcl::KdTree< PointNT > |
using | KdTreePtr = typename KdTree::Ptr |
Public Types inherited from pcl::SurfaceReconstruction< PointNT > | |
using | Ptr = shared_ptr< SurfaceReconstruction< PointNT > > |
using | ConstPtr = shared_ptr< const SurfaceReconstruction< PointNT > > |
Public Types inherited from pcl::PCLSurfaceBase< PointInT > | |
using | Ptr = shared_ptr< PCLSurfaceBase< PointInT > > |
using | ConstPtr = shared_ptr< const PCLSurfaceBase< PointInT > > |
using | KdTree = pcl::search::Search< PointInT > |
using | KdTreePtr = typename KdTree::Ptr |
Public Types inherited from pcl::PCLBase< PointInT > | |
using | PointCloud = pcl::PointCloud< PointInT > |
using | PointCloudPtr = typename PointCloud::Ptr |
using | PointCloudConstPtr = typename PointCloud::ConstPtr |
using | PointIndicesPtr = PointIndices::Ptr |
using | PointIndicesConstPtr = PointIndices::ConstPtr |
Public Member Functions | |
MarchingCubesHoppe (const float dist_ignore=-1.0f, const float percentage_extend_grid=0.0f, const float iso_level=0.0f) | |
Constructor. More... | |
~MarchingCubesHoppe () override | |
Destructor. More... | |
void | voxelizeData () override |
Convert the point cloud into voxel data. More... | |
void | setDistanceIgnore (const float dist_ignore) |
Method that sets the distance for ignoring voxels which are far from point cloud. More... | |
float | getDistanceIgnore () const |
get the distance for ignoring voxels which are far from point cloud. More... | |
Public Member Functions inherited from pcl::MarchingCubes< PointNT > | |
MarchingCubes (const float percentage_extend_grid=0.0f, const float iso_level=0.0f) | |
Constructor. More... | |
~MarchingCubes () override | |
Destructor. More... | |
void | setIsoLevel (float iso_level) |
Method that sets the iso level of the surface to be extracted. More... | |
float | getIsoLevel () |
Method that returns the iso level of the surface to be extracted. More... | |
void | setGridResolution (int res_x, int res_y, int res_z) |
Method that sets the marching cubes grid resolution. More... | |
void | getGridResolution (int &res_x, int &res_y, int &res_z) |
Method to get the marching cubes grid resolution. More... | |
void | setPercentageExtendGrid (float percentage) |
Method that sets the parameter that defines how much free space should be left inside the grid between the bounding box of the point cloud and the grid limits. More... | |
float | getPercentageExtendGrid () |
Method that gets the parameter that defines how much free space should be left inside the grid between the bounding box of the point cloud and the grid limits, as a percentage of the bounding box. More... | |
Public Member Functions inherited from pcl::SurfaceReconstruction< PointNT > | |
SurfaceReconstruction ()=default | |
Constructor. More... | |
~SurfaceReconstruction () override=default | |
Destructor. More... | |
void | reconstruct (pcl::PolygonMesh &output) override |
Base method for surface reconstruction for all points given in <setInputCloud (), setIndices ()> More... | |
virtual void | reconstruct (pcl::PointCloud< PointNT > &points, std::vector< pcl::Vertices > &polygons) |
Base method for surface reconstruction for all points given in <setInputCloud (), setIndices ()> More... | |
Public Member Functions inherited from pcl::PCLSurfaceBase< PointInT > | |
PCLSurfaceBase () | |
Empty constructor. More... | |
~PCLSurfaceBase () override=default | |
Empty destructor. More... | |
void | setSearchMethod (const KdTreePtr &tree) |
Provide an optional pointer to a search object. More... | |
KdTreePtr | getSearchMethod () |
Get a pointer to the search method used. More... | |
Public Member Functions inherited from pcl::PCLBase< PointInT > | |
PCLBase () | |
Empty constructor. More... | |
PCLBase (const PCLBase &base) | |
Copy constructor. More... | |
virtual | ~PCLBase ()=default |
Destructor. More... | |
virtual void | setInputCloud (const PointCloudConstPtr &cloud) |
Provide a pointer to the input dataset. More... | |
PointCloudConstPtr const | getInputCloud () const |
Get a pointer to the input point cloud dataset. More... | |
virtual void | setIndices (const IndicesPtr &indices) |
Provide a pointer to the vector of indices that represents the input data. More... | |
virtual void | setIndices (const IndicesConstPtr &indices) |
Provide a pointer to the vector of indices that represents the input data. More... | |
virtual void | setIndices (const PointIndicesConstPtr &indices) |
Provide a pointer to the vector of indices that represents the input data. More... | |
virtual void | setIndices (std::size_t row_start, std::size_t col_start, std::size_t nb_rows, std::size_t nb_cols) |
Set the indices for the points laying within an interest region of the point cloud. More... | |
IndicesPtr | getIndices () |
Get a pointer to the vector of indices used. More... | |
IndicesConstPtr const | getIndices () const |
Get a pointer to the vector of indices used. More... | |
const PointInT & | operator[] (std::size_t pos) const |
Override PointCloud operator[] to shorten code. More... | |
Protected Attributes | |
float | dist_ignore_ |
ignore the distance function if it is negative or distance between voxel centroid and point are larger that it. More... | |
Protected Attributes inherited from pcl::MarchingCubes< PointNT > | |
std::vector< float > | grid_ |
The data structure storing the 3D grid. More... | |
int | res_x_ = 32 |
The grid resolution. More... | |
int | res_y_ = 32 |
int | res_z_ = 32 |
Eigen::Array3f | upper_boundary_ |
bounding box More... | |
Eigen::Array3f | lower_boundary_ |
Eigen::Array3f | size_voxel_ |
size of voxels More... | |
float | percentage_extend_grid_ |
Parameter that defines how much free space should be left inside the grid between the bounding box of the point cloud and the grid limits, as a percentage of the bounding box. More... | |
float | iso_level_ |
The iso level to be extracted. More... | |
Protected Attributes inherited from pcl::SurfaceReconstruction< PointNT > | |
bool | check_tree_ |
A flag specifying whether or not the derived reconstruction algorithm needs the search object tree. More... | |
Protected Attributes inherited from pcl::PCLSurfaceBase< PointInT > | |
KdTreePtr | tree_ |
A pointer to the spatial search object. More... | |
Protected Attributes inherited from pcl::PCLBase< PointInT > | |
PointCloudConstPtr | input_ |
The input point cloud dataset. More... | |
IndicesPtr | indices_ |
A pointer to the vector of point indices to use. More... | |
bool | use_indices_ |
Set to true if point indices are used. More... | |
bool | fake_indices_ |
If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from pcl::MarchingCubes< PointNT > | |
void | interpolateEdge (Eigen::Vector3f &p1, Eigen::Vector3f &p2, float val_p1, float val_p2, Eigen::Vector3f &output) |
Interpolate along the voxel edge. More... | |
void | createSurface (const std::vector< float > &leaf_node, const Eigen::Vector3i &index_3d, pcl::PointCloud< PointNT > &cloud) |
Calculate out the corresponding polygons in the leaf node. More... | |
void | getBoundingBox () |
Get the bounding box for the input data points. More... | |
virtual float | getGridValue (Eigen::Vector3i pos) |
Method that returns the scalar value at the given grid position. More... | |
void | getNeighborList1D (std::vector< float > &leaf, Eigen::Vector3i &index3d) |
Method that returns the scalar values of the neighbors of a given 3D position in the grid. More... | |
std::string | getClassName () const override |
Class get name method. More... | |
void | performReconstruction (pcl::PolygonMesh &output) override |
Extract the surface. More... | |
void | performReconstruction (pcl::PointCloud< PointNT > &points, std::vector< pcl::Vertices > &polygons) override |
Extract the surface. More... | |
Protected Member Functions inherited from pcl::PCLBase< PointInT > | |
bool | initCompute () |
This method should get called before starting the actual computation. More... | |
bool | deinitCompute () |
This method should get called after finishing the actual computation. More... | |
The marching cubes surface reconstruction algorithm, using a signed distance function based on the distance from tangent planes, proposed by Hoppe et.
al. in: Hoppe H., DeRose T., Duchamp T., MC-Donald J., Stuetzle W., "Surface reconstruction from unorganized points", SIGGRAPH '92
PointNT | Use pcl::PointNormal or pcl::PointXYZRGBNormal or pcl::PointXYZINormal |
Definition at line 53 of file marching_cubes_hoppe.h.
using pcl::MarchingCubesHoppe< PointNT >::ConstPtr = shared_ptr<const MarchingCubesHoppe<PointNT> > |
Definition at line 57 of file marching_cubes_hoppe.h.
using pcl::MarchingCubesHoppe< PointNT >::KdTree = pcl::KdTree<PointNT> |
Definition at line 71 of file marching_cubes_hoppe.h.
using pcl::MarchingCubesHoppe< PointNT >::KdTreePtr = typename KdTree::Ptr |
Definition at line 72 of file marching_cubes_hoppe.h.
using pcl::MarchingCubesHoppe< PointNT >::PointCloudPtr = typename pcl::PointCloud<PointNT>::Ptr |
Definition at line 69 of file marching_cubes_hoppe.h.
using pcl::MarchingCubesHoppe< PointNT >::Ptr = shared_ptr<MarchingCubesHoppe<PointNT> > |
Definition at line 56 of file marching_cubes_hoppe.h.
|
inline |
Constructor.
Definition at line 76 of file marching_cubes_hoppe.h.
|
overridedefault |
Destructor.
|
inline |
get the distance for ignoring voxels which are far from point cloud.
Definition at line 105 of file marching_cubes_hoppe.h.
References pcl::MarchingCubesHoppe< PointNT >::dist_ignore_.
|
inline |
Method that sets the distance for ignoring voxels which are far from point cloud.
If the distance is negative, then the distance functions would be calculated in all voxels; otherwise, only voxels with distance lower than dist_ignore would be involved in marching cube.
[in] | dist_ignore | threshold of distance. Default value is -1.0. Set to negative if all voxels are to be involved. |
Definition at line 99 of file marching_cubes_hoppe.h.
References pcl::MarchingCubesHoppe< PointNT >::dist_ignore_.
|
overridevirtual |
Convert the point cloud into voxel data.
Implements pcl::MarchingCubes< PointNT >.
Definition at line 48 of file marching_cubes_hoppe.hpp.
|
protected |
ignore the distance function if it is negative or distance between voxel centroid and point are larger that it.
Definition at line 112 of file marching_cubes_hoppe.h.
Referenced by pcl::MarchingCubesHoppe< PointNT >::getDistanceIgnore(), and pcl::MarchingCubesHoppe< PointNT >::setDistanceIgnore().