Point Cloud Library (PCL)
1.14.1-dev
|
Simple triangulation/surface reconstruction for organized point clouds. More...
#include <pcl/surface/organized_fast_mesh.h>
Public Member Functions | |
OrganizedFastMesh () | |
Constructor. More... | |
~OrganizedFastMesh () override=default | |
Destructor. More... | |
void | setMaxEdgeLength (float a, float b=0.0f, float c=0.0f) |
Set a maximum edge length. More... | |
void | unsetMaxEdgeLength () |
void | setTrianglePixelSize (int triangle_size) |
Set the edge length (in pixels) used for constructing the fixed mesh. More... | |
void | setTrianglePixelSizeRows (int triangle_size) |
Set the edge length (in pixels) used for iterating over rows when constructing the fixed mesh. More... | |
void | setTrianglePixelSizeColumns (int triangle_size) |
Set the edge length (in pixels) used for iterating over columns when constructing the fixed mesh. More... | |
void | setTriangulationType (TriangulationType type) |
Set the triangulation type (see TriangulationType) More... | |
void | setViewpoint (const Eigen::Vector3f &viewpoint) |
Set the viewpoint from where the input point cloud has been acquired. More... | |
const Eigen::Vector3f & | getViewpoint () const |
Get the viewpoint from where the input point cloud has been acquired. More... | |
void | storeShadowedFaces (bool enable) |
Store shadowed faces or not. More... | |
void | setAngleTolerance (float angle_tolerance) |
Set the angle tolerance used for checking whether or not an edge is occluded. More... | |
void | setDistanceTolerance (float distance_tolerance, bool depth_dependent=false) |
void | useDepthAsDistance (bool enable) |
Use the points' depths (z-coordinates) instead of measured distances (points' distances to the viewpoint). More... | |
Public Member Functions inherited from pcl::MeshConstruction< PointInT > | |
MeshConstruction ()=default | |
Constructor. More... | |
~MeshConstruction () 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 (std::vector< pcl::Vertices > &polygons) |
Base method for mesh construction 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 Member Functions | |
void | reconstructPolygons (std::vector< pcl::Vertices > &polygons) |
Perform the actual polygonal reconstruction. More... | |
void | performReconstruction (std::vector< pcl::Vertices > &polygons) override |
Create the surface. More... | |
void | performReconstruction (pcl::PolygonMesh &output) override |
Create the surface. More... | |
void | addTriangle (int a, int b, int c, int idx, std::vector< pcl::Vertices > &polygons) |
Add a new triangle to the current polygon mesh. More... | |
void | addQuad (int a, int b, int c, int d, int idx, std::vector< pcl::Vertices > &polygons) |
Add a new quad to the current polygon mesh. More... | |
void | resetPointData (const int &point_index, pcl::PolygonMesh &mesh, const float &value=0.0f, int field_x_idx=0, int field_y_idx=1, int field_z_idx=2) |
Set (all) coordinates of a particular point to the specified value. More... | |
bool | isShadowed (const PointInT &point_a, const PointInT &point_b) |
Check if a point is shadowed by another point. More... | |
bool | isValidTriangle (const int &a, const int &b, const int &c) |
Check if a triangle is valid. More... | |
bool | isShadowedTriangle (const int &a, const int &b, const int &c) |
Check if a triangle is shadowed. More... | |
bool | isValidQuad (const int &a, const int &b, const int &c, const int &d) |
Check if a quad is valid. More... | |
bool | isShadowedQuad (const int &a, const int &b, const int &c, const int &d) |
Check if a triangle is shadowed. More... | |
void | makeQuadMesh (std::vector< pcl::Vertices > &polygons) |
Create a quad mesh. More... | |
void | makeRightCutMesh (std::vector< pcl::Vertices > &polygons) |
Create a right cut mesh. More... | |
void | makeLeftCutMesh (std::vector< pcl::Vertices > &polygons) |
Create a left cut mesh. More... | |
void | makeAdaptiveCutMesh (std::vector< pcl::Vertices > &polygons) |
Create an adaptive cut mesh. More... | |
Protected Member Functions inherited from pcl::PCLSurfaceBase< PointInT > | |
virtual std::string | getClassName () const |
Abstract class get name method. 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... | |
Protected Attributes | |
float | max_edge_length_a_ {0.0f} |
max length of edge, scalar component More... | |
float | max_edge_length_b_ {0.0f} |
max length of edge, scalar component More... | |
float | max_edge_length_c_ {0.0f} |
max length of edge, scalar component More... | |
bool | max_edge_length_set_ {false} |
flag whether or not edges are limited in length More... | |
bool | max_edge_length_dist_dependent_ {false} |
flag whether or not max edge length is distance dependent. More... | |
int | triangle_pixel_size_rows_ {1} |
size of triangle edges (in pixels) for iterating over rows. More... | |
int | triangle_pixel_size_columns_ {1} |
size of triangle edges (in pixels) for iterating over columns More... | |
TriangulationType | triangulation_type_ {QUAD_MESH} |
Type of meshing scheme (quads vs. More... | |
Eigen::Vector3f | viewpoint_ {Eigen::Vector3f::Zero ()} |
Viewpoint from which the point cloud has been acquired (in the same coordinate frame as the data). More... | |
bool | store_shadowed_faces_ {false} |
Whether or not shadowed faces are stored, e.g., for exploration. More... | |
float | cos_angle_tolerance_ {std::abs (std::cos (pcl::deg2rad (12.5f)))} |
(Cosine of the) angle tolerance used when checking whether or not an edge between two points is shadowed. More... | |
float | distance_tolerance_ {-1.0f} |
distance tolerance for filtering out shadowed/occluded edges More... | |
bool | distance_dependent_ {false} |
flag whether or not distance_tolerance_ is distance dependent (multiplied by the squared distance to the point) or not. More... | |
bool | use_depth_as_distance_ {false} |
flag whether or not the points' depths are used instead of measured distances (points' distances to the viewpoint). More... | |
Protected Attributes inherited from pcl::MeshConstruction< PointInT > | |
bool | check_tree_ {true} |
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... | |
Simple triangulation/surface reconstruction for organized point clouds.
Neighboring points (pixels in image space) are connected to construct a triangular (or quad) mesh.
Definition at line 66 of file organized_fast_mesh.h.
using pcl::OrganizedFastMesh< PointInT >::ConstPtr = shared_ptr<const OrganizedFastMesh<PointInT> > |
Definition at line 70 of file organized_fast_mesh.h.
using pcl::OrganizedFastMesh< PointInT >::PointCloudPtr = typename pcl::PointCloud<PointInT>::Ptr |
Definition at line 75 of file organized_fast_mesh.h.
using pcl::OrganizedFastMesh< PointInT >::Polygons = std::vector<pcl::Vertices> |
Definition at line 77 of file organized_fast_mesh.h.
using pcl::OrganizedFastMesh< PointInT >::Ptr = shared_ptr<OrganizedFastMesh<PointInT> > |
Definition at line 69 of file organized_fast_mesh.h.
enum pcl::OrganizedFastMesh::TriangulationType |
Enumerator | |
---|---|
TRIANGLE_RIGHT_CUT | |
TRIANGLE_LEFT_CUT | |
TRIANGLE_ADAPTIVE_CUT | |
QUAD_MESH |
Definition at line 79 of file organized_fast_mesh.h.
|
inline |
Constructor.
Triangulation type defaults to QUAD_MESH.
Definition at line 88 of file organized_fast_mesh.h.
References pcl::MeshConstruction< PointInT >::check_tree_.
|
overridedefault |
Destructor.
|
inlineprotected |
Add a new quad to the current polygon mesh.
[in] | a | index of the first vertex |
[in] | b | index of the second vertex |
[in] | c | index of the third vertex |
[in] | d | index of the fourth vertex |
[in] | idx | the index in the set of polygon vertices (assumes idx is valid in polygons) |
[out] | polygons | the polygon mesh to be updated |
Definition at line 305 of file organized_fast_mesh.h.
|
inlineprotected |
Add a new triangle to the current polygon mesh.
[in] | a | index of the first vertex |
[in] | b | index of the second vertex |
[in] | c | index of the third vertex |
[in] | idx | the index in the set of polygon vertices (assumes idx is valid in polygons) |
[out] | polygons | the polygon mesh to be updated |
Definition at line 287 of file organized_fast_mesh.h.
|
inline |
Get the viewpoint from where the input point cloud has been acquired.
Definition at line 168 of file organized_fast_mesh.h.
References pcl::OrganizedFastMesh< PointInT >::viewpoint_.
|
inlineprotected |
Check if a point is shadowed by another point.
[in] | point_a | the first point |
[in] | point_b | the second point |
Definition at line 338 of file organized_fast_mesh.h.
References pcl::OrganizedFastMesh< PointInT >::cos_angle_tolerance_, pcl::OrganizedFastMesh< PointInT >::distance_dependent_, pcl::OrganizedFastMesh< PointInT >::distance_tolerance_, pcl::OrganizedFastMesh< PointInT >::max_edge_length_a_, pcl::OrganizedFastMesh< PointInT >::max_edge_length_b_, pcl::OrganizedFastMesh< PointInT >::max_edge_length_c_, pcl::OrganizedFastMesh< PointInT >::max_edge_length_set_, pcl::OrganizedFastMesh< PointInT >::use_depth_as_distance_, and pcl::OrganizedFastMesh< PointInT >::viewpoint_.
Referenced by pcl::OrganizedFastMesh< PointInT >::isShadowedQuad(), and pcl::OrganizedFastMesh< PointInT >::isShadowedTriangle().
|
inlineprotected |
Check if a triangle is shadowed.
[in] | a | index of the first vertex |
[in] | b | index of the second vertex |
[in] | c | index of the third vertex |
[in] | d | index of the fourth vertex |
Definition at line 437 of file organized_fast_mesh.h.
References pcl::PCLBase< PointInT >::input_, and pcl::OrganizedFastMesh< PointInT >::isShadowed().
|
inlineprotected |
Check if a triangle is shadowed.
[in] | a | index of the first vertex |
[in] | b | index of the second vertex |
[in] | c | index of the third vertex |
Definition at line 406 of file organized_fast_mesh.h.
References pcl::PCLBase< PointInT >::input_, and pcl::OrganizedFastMesh< PointInT >::isShadowed().
|
inlineprotected |
Check if a quad is valid.
[in] | a | index of the first vertex |
[in] | b | index of the second vertex |
[in] | c | index of the third vertex |
[in] | d | index of the fourth vertex |
Definition at line 421 of file organized_fast_mesh.h.
References pcl::PCLBase< PointInT >::input_, and pcl::isFinite().
|
inlineprotected |
Check if a triangle is valid.
[in] | a | index of the first vertex |
[in] | b | index of the second vertex |
[in] | c | index of the third vertex |
Definition at line 392 of file organized_fast_mesh.h.
References pcl::PCLBase< PointInT >::input_, and pcl::isFinite().
|
protected |
Create an adaptive cut mesh.
[out] | polygons | the resultant mesh |
Definition at line 218 of file organized_fast_mesh.hpp.
|
protected |
Create a left cut mesh.
[out] | polygons | the resultant mesh |
Definition at line 177 of file organized_fast_mesh.hpp.
|
protected |
Create a quad mesh.
[out] | polygons | the resultant mesh |
Definition at line 99 of file organized_fast_mesh.hpp.
|
protected |
Create a right cut mesh.
[out] | polygons | the resultant mesh |
Definition at line 136 of file organized_fast_mesh.hpp.
|
overrideprotectedvirtual |
Create the surface.
Simply uses image indices to create an initial polygonal mesh for organized point clouds. indices_ are ignored!
[out] | output | the resultant polygonal mesh |
Implements pcl::MeshConstruction< PointInT >.
Definition at line 49 of file organized_fast_mesh.hpp.
References pcl::PolygonMesh::cloud, pcl::getFieldIndex(), pcl::isFinite(), and pcl::PolygonMesh::polygons.
|
overrideprotectedvirtual |
Create the surface.
[out] | polygons | the resultant polygons, as a set of vertices. The Vertices structure contains an array of point indices. |
Implements pcl::MeshConstruction< PointInT >.
Definition at line 74 of file organized_fast_mesh.hpp.
|
protected |
Perform the actual polygonal reconstruction.
[out] | polygons | the resultant polygons |
Definition at line 85 of file organized_fast_mesh.hpp.
|
inlineprotected |
Set (all) coordinates of a particular point to the specified value.
[in] | point_index | index of point |
[out] | mesh | to modify |
[in] | value | value to use when re-setting |
[in] | field_x_idx | the X coordinate of the point |
[in] | field_y_idx | the Y coordinate of the point |
[in] | field_z_idx | the Z coordinate of the point |
Definition at line 324 of file organized_fast_mesh.h.
References pcl::PolygonMesh::cloud, pcl::PCLPointCloud2::data, pcl::PCLPointCloud2::fields, and pcl::PCLPointCloud2::point_step.
|
inline |
Set the angle tolerance used for checking whether or not an edge is occluded.
Standard values are 5deg to 15deg (input in rad!). Set a value smaller than zero to disable the check for shadowed edges.
[in] | angle_tolerance | Angle tolerance (in rad). Set a value <0 to disable. |
Definition at line 188 of file organized_fast_mesh.h.
References pcl::OrganizedFastMesh< PointInT >::cos_angle_tolerance_.
|
inline |
Definition at line 197 of file organized_fast_mesh.h.
References pcl::OrganizedFastMesh< PointInT >::distance_dependent_, and pcl::OrganizedFastMesh< PointInT >::distance_tolerance_.
|
inline |
Set a maximum edge length.
Using not only the scalar a, but also b and c, allows for using a distance threshold in the form of: threshold(x) = c*x*x + b*x + a
[in] | a | scalar coefficient of the (distance-dependent polynom) threshold |
[in] | b | linear coefficient of the (distance-dependent polynom) threshold |
[in] | c | quadratic coefficient of the (distance-dependent polynom) threshold |
Definition at line 104 of file organized_fast_mesh.h.
References pcl::OrganizedFastMesh< PointInT >::max_edge_length_a_, pcl::OrganizedFastMesh< PointInT >::max_edge_length_b_, pcl::OrganizedFastMesh< PointInT >::max_edge_length_c_, and pcl::OrganizedFastMesh< PointInT >::max_edge_length_set_.
|
inline |
Set the edge length (in pixels) used for constructing the fixed mesh.
[in] | triangle_size | edge length in pixels (Default: 1 = neighboring pixels are connected) |
Definition at line 123 of file organized_fast_mesh.h.
References pcl::OrganizedFastMesh< PointInT >::setTrianglePixelSizeColumns(), and pcl::OrganizedFastMesh< PointInT >::setTrianglePixelSizeRows().
|
inline |
Set the edge length (in pixels) used for iterating over columns when constructing the fixed mesh.
[in] | triangle_size | edge length in pixels (Default: 1 = neighboring pixels are connected) |
Definition at line 144 of file organized_fast_mesh.h.
References pcl::OrganizedFastMesh< PointInT >::triangle_pixel_size_columns_.
Referenced by pcl::OrganizedFastMesh< PointInT >::setTrianglePixelSize().
|
inline |
Set the edge length (in pixels) used for iterating over rows when constructing the fixed mesh.
[in] | triangle_size | edge length in pixels (Default: 1 = neighboring pixels are connected) |
Definition at line 134 of file organized_fast_mesh.h.
References pcl::OrganizedFastMesh< PointInT >::triangle_pixel_size_rows_.
Referenced by pcl::OrganizedFastMesh< PointInT >::setTrianglePixelSize().
|
inline |
Set the triangulation type (see TriangulationType)
[in] | type | quad mesh, triangle mesh with fixed left, right cut, or adaptive cut (splits a quad w.r.t. the depth (z) of the points) |
Definition at line 154 of file organized_fast_mesh.h.
References pcl::OrganizedFastMesh< PointInT >::triangulation_type_.
|
inline |
Set the viewpoint from where the input point cloud has been acquired.
[in] | viewpoint | Vector containing the viewpoint coordinates (in the coordinate system of the data) |
Definition at line 162 of file organized_fast_mesh.h.
References pcl::OrganizedFastMesh< PointInT >::viewpoint_.
|
inline |
Store shadowed faces or not.
[in] | enable | set to true to store shadowed faces |
Definition at line 177 of file organized_fast_mesh.h.
References pcl::OrganizedFastMesh< PointInT >::store_shadowed_faces_.
|
inline |
Definition at line 113 of file organized_fast_mesh.h.
References pcl::OrganizedFastMesh< PointInT >::max_edge_length_set_.
|
inline |
Use the points' depths (z-coordinates) instead of measured distances (points' distances to the viewpoint).
[in] | enable | Set to true skips comptations and further speeds up computation by using depth instead of computing distance. false to disable. |
Definition at line 210 of file organized_fast_mesh.h.
References pcl::OrganizedFastMesh< PointInT >::use_depth_as_distance_.
|
protected |
(Cosine of the) angle tolerance used when checking whether or not an edge between two points is shadowed.
Definition at line 244 of file organized_fast_mesh.h.
Referenced by pcl::OrganizedFastMesh< PointInT >::isShadowed(), and pcl::OrganizedFastMesh< PointInT >::setAngleTolerance().
|
protected |
flag whether or not distance_tolerance_ is distance dependent (multiplied by the squared distance to the point) or not.
Definition at line 250 of file organized_fast_mesh.h.
Referenced by pcl::OrganizedFastMesh< PointInT >::isShadowed(), and pcl::OrganizedFastMesh< PointInT >::setDistanceTolerance().
|
protected |
distance tolerance for filtering out shadowed/occluded edges
Definition at line 247 of file organized_fast_mesh.h.
Referenced by pcl::OrganizedFastMesh< PointInT >::isShadowed(), and pcl::OrganizedFastMesh< PointInT >::setDistanceTolerance().
|
protected |
max length of edge, scalar component
Definition at line 217 of file organized_fast_mesh.h.
Referenced by pcl::OrganizedFastMesh< PointInT >::isShadowed(), and pcl::OrganizedFastMesh< PointInT >::setMaxEdgeLength().
|
protected |
max length of edge, scalar component
Definition at line 219 of file organized_fast_mesh.h.
Referenced by pcl::OrganizedFastMesh< PointInT >::isShadowed(), and pcl::OrganizedFastMesh< PointInT >::setMaxEdgeLength().
|
protected |
max length of edge, scalar component
Definition at line 221 of file organized_fast_mesh.h.
Referenced by pcl::OrganizedFastMesh< PointInT >::isShadowed(), and pcl::OrganizedFastMesh< PointInT >::setMaxEdgeLength().
|
protected |
flag whether or not max edge length is distance dependent.
Definition at line 226 of file organized_fast_mesh.h.
|
protected |
flag whether or not edges are limited in length
Definition at line 223 of file organized_fast_mesh.h.
Referenced by pcl::OrganizedFastMesh< PointInT >::isShadowed(), pcl::OrganizedFastMesh< PointInT >::setMaxEdgeLength(), and pcl::OrganizedFastMesh< PointInT >::unsetMaxEdgeLength().
|
protected |
Whether or not shadowed faces are stored, e.g., for exploration.
Definition at line 241 of file organized_fast_mesh.h.
Referenced by pcl::OrganizedFastMesh< PointInT >::storeShadowedFaces().
|
protected |
size of triangle edges (in pixels) for iterating over columns
Definition at line 232 of file organized_fast_mesh.h.
Referenced by pcl::OrganizedFastMesh< PointInT >::setTrianglePixelSizeColumns().
|
protected |
size of triangle edges (in pixels) for iterating over rows.
Definition at line 229 of file organized_fast_mesh.h.
Referenced by pcl::OrganizedFastMesh< PointInT >::setTrianglePixelSizeRows().
|
protected |
Type of meshing scheme (quads vs.
triangles, left cut vs. right cut ...
Definition at line 235 of file organized_fast_mesh.h.
Referenced by pcl::OrganizedFastMesh< PointInT >::setTriangulationType().
|
protected |
flag whether or not the points' depths are used instead of measured distances (points' distances to the viewpoint).
This flag may be set using useDepthAsDistance(true) for (RGB-)Depth cameras to skip computations and gain additional speed up.
Definition at line 254 of file organized_fast_mesh.h.
Referenced by pcl::OrganizedFastMesh< PointInT >::isShadowed(), and pcl::OrganizedFastMesh< PointInT >::useDepthAsDistance().
|
protected |
Viewpoint from which the point cloud has been acquired (in the same coordinate frame as the data).
Definition at line 238 of file organized_fast_mesh.h.
Referenced by pcl::OrganizedFastMesh< PointInT >::getViewpoint(), pcl::OrganizedFastMesh< PointInT >::isShadowed(), and pcl::OrganizedFastMesh< PointInT >::setViewpoint().