Integrate several clouds into a common mesh. More...
#include <integration.h>
Public Types | |
typedef pcl::PointCloud < PointXYZRGBNormal > | CloudXYZRGBNormal |
typedef CloudXYZRGBNormal::ConstPtr | CloudXYZRGBNormalConstPtr |
typedef CloudXYZRGBNormal::Ptr | CloudXYZRGBNormalPtr |
typedef pcl::ihs::Mesh | Mesh |
typedef pcl::ihs::MeshConstPtr | MeshConstPtr |
typedef pcl::ihs::MeshPtr | MeshPtr |
typedef pcl::PointXYZRGBNormal | PointXYZRGBNormal |
typedef Mesh::VertexIndex | VertexIndex |
typedef Mesh::VertexIndices | VertexIndices |
Public Member Functions | |
void | age (const MeshPtr &mesh, const bool cleanup=true) const |
Outlier rejection. In each merge step points that have not been observed again age by one iteration. Points that are observed again get an age of 0. Once a point reaches the maximum age it is decided if the point is removed or kept in the mesh. A point is removed if it has not been observed from a minimum number of directions. | |
Integration () | |
Constructor. | |
bool | merge (const CloudXYZRGBNormalConstPtr &cloud_data, MeshPtr &mesh_model, const Eigen::Matrix4f &T) const |
Merge the organized cloud into the mesh. | |
bool | reconstructMesh (const CloudXYZRGBNormalConstPtr &cloud_data, MeshPtr &mesh_model) const |
Reconstructs a mesh from an organized cloud. | |
void | removeUnfitVertices (const MeshPtr &mesh, const bool cleanup=true) const |
Removes unfit vertices regardless of their age. Unfit vertices are those that have not been observed from enough directions. | |
void | setMaxSquaredDistance (const float squared_distance) |
Corresponding points are averaged out if their distance is below a distance threshold. Else the points are added to the mesh as new vertices (Set in cm^2). | |
float | getMaxSquaredDistance () const |
void | setMaxAngle (const float angle) |
Corresponding points are only averaged out if the angle between the normals is smaller than an angle threshold. | |
float | getMaxAngle () const |
void | setMaxAge (const unsigned int age) |
Once a point reaches the maximum age it is decided if the point is removed or kept in the mesh. | |
unsigned int | getMaxAge () const |
void | setMinDirections (const unsigned int directions) |
A point is removed if it has not been observed from a minimum number of directions. | |
unsigned int | getMinDirections () const |
Private Types | |
typedef pcl::ihs::CloudIHS | CloudIHS |
typedef pcl::ihs::CloudIHSConstPtr | CloudIHSConstPtr |
typedef pcl::ihs::CloudIHSPtr | CloudIHSPtr |
typedef pcl::PointCloud< PointXYZ > | CloudXYZ |
typedef CloudXYZ::ConstPtr | CloudXYZConstPtr |
typedef CloudXYZ::Ptr | CloudXYZPtr |
typedef pcl::KdTree< PointXYZ > | KdTree |
typedef boost::shared_ptr < const KdTree > | KdTreeConstPtr |
typedef boost::shared_ptr< KdTree > | KdTreePtr |
typedef pcl::ihs::PointIHS | PointIHS |
typedef pcl::PointXYZ | PointXYZ |
Private Member Functions | |
void | addToMesh (const PointIHS &pt_0, const PointIHS &pt_1, const PointIHS &pt_2, const PointIHS &pt_3, VertexIndex &vi_0, VertexIndex &vi_1, VertexIndex &vi_2, VertexIndex &vi_3, const MeshPtr &mesh) const |
Adds two triangles between points 0-1-3 and 1-2-3 to the mesh. | |
void | addToMesh (const PointIHS &pt_0, const PointIHS &pt_1, const PointIHS &pt_2, VertexIndex &vi_0, VertexIndex &vi_1, VertexIndex &vi_2, const MeshPtr &mesh) const |
Adds a triangle between the points 0-1-2 to the mesh. | |
bool | distanceThreshold (const PointIHS &pt_0, const PointIHS &pt_1, const PointIHS &pt_2) const |
Returns true if the distance between the three points is below a threshold. | |
bool | distanceThreshold (const PointIHS &pt_0, const PointIHS &pt_1, const PointIHS &pt_2, const PointIHS &pt_3) const |
Returns true if the distance between the four points is below a threshold. | |
uint8_t | trimRGB (const float val) const |
Private Attributes | |
KdTreePtr | kd_tree_ |
Nearest neighbor search. | |
unsigned int | max_age_ |
Once a point reaches the maximum age it is decided if the point is removed or kept in the mesh. | |
float | max_angle_ |
Maximum angle between normals below which points are averaged out. In degrees. | |
float | max_squared_distance_ |
Maximum squared distance below which points are averaged out. | |
unsigned int | min_directions_ |
A point is removed if it has not been observed from a minimum number of directions. | |
float | min_weight_ |
Minimum weight above which points are added. |
Integrate several clouds into a common mesh.
Definition at line 71 of file integration.h.
typedef pcl::ihs::CloudIHS pcl::ihs::Integration::CloudIHS [private] |
Definition at line 163 of file integration.h.
typedef pcl::ihs::CloudIHSConstPtr pcl::ihs::Integration::CloudIHSConstPtr [private] |
Definition at line 165 of file integration.h.
typedef pcl::ihs::CloudIHSPtr pcl::ihs::Integration::CloudIHSPtr [private] |
Definition at line 164 of file integration.h.
typedef pcl::PointCloud<PointXYZ> pcl::ihs::Integration::CloudXYZ [private] |
Definition at line 158 of file integration.h.
typedef CloudXYZ::ConstPtr pcl::ihs::Integration::CloudXYZConstPtr [private] |
Definition at line 160 of file integration.h.
typedef CloudXYZ::Ptr pcl::ihs::Integration::CloudXYZPtr [private] |
Definition at line 159 of file integration.h.
Definition at line 76 of file integration.h.
Definition at line 78 of file integration.h.
Definition at line 77 of file integration.h.
typedef pcl::KdTree<PointXYZ> pcl::ihs::Integration::KdTree [private] |
Definition at line 167 of file integration.h.
typedef boost::shared_ptr<const KdTree> pcl::ihs::Integration::KdTreeConstPtr [private] |
Definition at line 169 of file integration.h.
typedef boost::shared_ptr<KdTree> pcl::ihs::Integration::KdTreePtr [private] |
Definition at line 168 of file integration.h.
Definition at line 80 of file integration.h.
typedef pcl::ihs::MeshConstPtr pcl::ihs::Integration::MeshConstPtr |
Definition at line 82 of file integration.h.
Definition at line 81 of file integration.h.
typedef pcl::ihs::PointIHS pcl::ihs::Integration::PointIHS [private] |
Definition at line 162 of file integration.h.
typedef pcl::PointXYZ pcl::ihs::Integration::PointXYZ [private] |
Definition at line 157 of file integration.h.
Definition at line 75 of file integration.h.
Definition at line 83 of file integration.h.
Definition at line 84 of file integration.h.
Constructor.
Definition at line 54 of file integration.cpp.
void pcl::ihs::Integration::addToMesh | ( | const PointIHS & | pt_0, |
const PointIHS & | pt_1, | ||
const PointIHS & | pt_2, | ||
const PointIHS & | pt_3, | ||
VertexIndex & | vi_0, | ||
VertexIndex & | vi_1, | ||
VertexIndex & | vi_2, | ||
VertexIndex & | vi_3, | ||
const MeshPtr & | mesh | ||
) | const [private] |
Adds two triangles between points 0-1-3 and 1-2-3 to the mesh.
Definition at line 507 of file integration.cpp.
void pcl::ihs::Integration::addToMesh | ( | const PointIHS & | pt_0, |
const PointIHS & | pt_1, | ||
const PointIHS & | pt_2, | ||
VertexIndex & | vi_0, | ||
VertexIndex & | vi_1, | ||
VertexIndex & | vi_2, | ||
const MeshPtr & | mesh | ||
) | const [private] |
Adds a triangle between the points 0-1-2 to the mesh.
Definition at line 554 of file integration.cpp.
void pcl::ihs::Integration::age | ( | const MeshPtr & | mesh, |
const bool | cleanup = true |
||
) | const |
Outlier rejection. In each merge step points that have not been observed again age by one iteration. Points that are observed again get an age of 0. Once a point reaches the maximum age it is decided if the point is removed or kept in the mesh. A point is removed if it has not been observed from a minimum number of directions.
[in,out] | mesh | The mesh which should be processed. |
[in] | cleanup | Calls mesh.cleanup () if true. |
Definition at line 389 of file integration.cpp.
bool pcl::ihs::Integration::distanceThreshold | ( | const PointIHS & | pt_0, |
const PointIHS & | pt_1, | ||
const PointIHS & | pt_2 | ||
) | const [private] |
Returns true if the distance between the three points is below a threshold.
Definition at line 577 of file integration.cpp.
bool pcl::ihs::Integration::distanceThreshold | ( | const PointIHS & | pt_0, |
const PointIHS & | pt_1, | ||
const PointIHS & | pt_2, | ||
const PointIHS & | pt_3 | ||
) | const [private] |
Returns true if the distance between the four points is below a threshold.
Definition at line 590 of file integration.cpp.
unsigned int pcl::ihs::Integration::getMaxAge | ( | ) | const |
Definition at line 477 of file integration.cpp.
float pcl::ihs::Integration::getMaxAngle | ( | ) | const |
Definition at line 463 of file integration.cpp.
float pcl::ihs::Integration::getMaxSquaredDistance | ( | ) | const |
Definition at line 449 of file integration.cpp.
unsigned int pcl::ihs::Integration::getMinDirections | ( | ) | const |
Definition at line 491 of file integration.cpp.
bool pcl::ihs::Integration::merge | ( | const CloudXYZRGBNormalConstPtr & | cloud_data, |
MeshPtr & | mesh_model, | ||
const Eigen::Matrix4f & | T | ||
) | const |
Merge the organized cloud into the mesh.
[in] | cloud_data | Input cloud. Must be organized. |
[in,out] | mesh_model | Mesh with new points integrated. |
[in] | T | Transformation that aligns the data cloud with the model mesh. |
Definition at line 185 of file integration.cpp.
bool pcl::ihs::Integration::reconstructMesh | ( | const CloudXYZRGBNormalConstPtr & | cloud_data, |
MeshPtr & | mesh_model | ||
) | const |
Reconstructs a mesh from an organized cloud.
[in] | cloud_data | Input cloud. Must be organized. |
[in] | mesh_model | Reconstructed mesh. |
Definition at line 67 of file integration.cpp.
void pcl::ihs::Integration::removeUnfitVertices | ( | const MeshPtr & | mesh, |
const bool | cleanup = true |
||
) | const |
Removes unfit vertices regardless of their age. Unfit vertices are those that have not been observed from enough directions.
[in,out] | mesh | The which should be processed. |
[in] | cleanup | Calls mesh.cleanup () if true. |
Definition at line 423 of file integration.cpp.
void pcl::ihs::Integration::setMaxAge | ( | const unsigned int | age | ) |
Once a point reaches the maximum age it is decided if the point is removed or kept in the mesh.
Definition at line 471 of file integration.cpp.
void pcl::ihs::Integration::setMaxAngle | ( | const float | angle | ) |
Corresponding points are only averaged out if the angle between the normals is smaller than an angle threshold.
Definition at line 457 of file integration.cpp.
void pcl::ihs::Integration::setMaxSquaredDistance | ( | const float | squared_distance | ) |
Corresponding points are averaged out if their distance is below a distance threshold. Else the points are added to the mesh as new vertices (Set in cm^2).
Definition at line 443 of file integration.cpp.
void pcl::ihs::Integration::setMinDirections | ( | const unsigned int | directions | ) |
A point is removed if it has not been observed from a minimum number of directions.
Definition at line 485 of file integration.cpp.
uint8_t pcl::ihs::Integration::trimRGB | ( | const float | val | ) | const [private] |
Definition at line 499 of file integration.cpp.
KdTreePtr pcl::ihs::Integration::kd_tree_ [private] |
Nearest neighbor search.
Definition at line 214 of file integration.h.
unsigned int pcl::ihs::Integration::max_age_ [private] |
Once a point reaches the maximum age it is decided if the point is removed or kept in the mesh.
Definition at line 226 of file integration.h.
float pcl::ihs::Integration::max_angle_ [private] |
Maximum angle between normals below which points are averaged out. In degrees.
Definition at line 220 of file integration.h.
float pcl::ihs::Integration::max_squared_distance_ [private] |
Maximum squared distance below which points are averaged out.
Definition at line 217 of file integration.h.
unsigned int pcl::ihs::Integration::min_directions_ [private] |
A point is removed if it has not been observed from a minimum number of directions.
Definition at line 229 of file integration.h.
float pcl::ihs::Integration::min_weight_ [private] |
Minimum weight above which points are added.
Definition at line 223 of file integration.h.