|
Point Cloud Library (PCL)
1.15.1-dev
|
The texture mapping algorithm. More...
#include <pcl/surface/texture_mapping.h>
Collaboration diagram for pcl::TextureMapping< PointInT >:Public Types | |
| using | Ptr = shared_ptr< TextureMapping< PointInT > > |
| using | ConstPtr = shared_ptr< const TextureMapping< PointInT > > |
| using | PointCloud = pcl::PointCloud< PointInT > |
| using | PointCloudPtr = typename PointCloud::Ptr |
| using | PointCloudConstPtr = typename PointCloud::ConstPtr |
| using | Octree = pcl::octree::OctreePointCloudSearch< PointInT > |
| using | OctreePtr = typename Octree::Ptr |
| using | OctreeConstPtr = typename Octree::ConstPtr |
| using | Camera = pcl::texture_mapping::Camera |
| using | UvIndex = pcl::texture_mapping::UvIndex |
Public Member Functions | |
| TextureMapping ()=default | |
| Constructor. More... | |
| ~TextureMapping ()=default | |
| Destructor. More... | |
| void | setF (float f) |
| Set mesh scale control. More... | |
| void | setVectorField (float x, float y, float z) |
| Set vector field. More... | |
| void | setTextureFiles (std::vector< std::string > tex_files) |
| Set texture files. More... | |
| void | setTextureMaterials (TexMaterial tex_material) |
| Set texture materials. More... | |
| void | mapTexture2Mesh (pcl::TextureMesh &tex_mesh) |
| Map texture to a mesh synthesis algorithm. More... | |
| void | mapTexture2MeshUV (pcl::TextureMesh &tex_mesh) |
| Map texture to a mesh UV mapping. More... | |
| void | mapMultipleTexturesToMeshUV (pcl::TextureMesh &tex_mesh, pcl::texture_mapping::CameraVector &cams) |
| Map textures acquired from a set of cameras onto a mesh. More... | |
| bool | getPointUVCoordinates (const PointInT &pt, const Camera &cam, Eigen::Vector2f &UV_coordinates) |
| computes UV coordinates of point, observed by one particular camera More... | |
| bool | isPointOccluded (const PointInT &pt, const OctreePtr octree) |
| Check if a point is occluded using raycasting on octree. More... | |
| void | removeOccludedPoints (const PointCloudPtr &input_cloud, PointCloudPtr &filtered_cloud, const double octree_voxel_size, pcl::Indices &visible_indices, pcl::Indices &occluded_indices) |
| Remove occluded points from a point cloud. More... | |
| void | removeOccludedPoints (const pcl::TextureMesh &tex_mesh, pcl::TextureMesh &cleaned_mesh, const double octree_voxel_size) |
| Remove occluded points from a textureMesh. More... | |
| void | removeOccludedPoints (const pcl::TextureMesh &tex_mesh, PointCloudPtr &filtered_cloud, const double octree_voxel_size) |
| Remove occluded points from a textureMesh. More... | |
| int | sortFacesByCamera (pcl::TextureMesh &tex_mesh, pcl::TextureMesh &sorted_mesh, const pcl::texture_mapping::CameraVector &cameras, const double octree_voxel_size, PointCloud &visible_pts) |
| Segment faces by camera visibility. More... | |
| void | showOcclusions (const PointCloudPtr &input_cloud, pcl::PointCloud< pcl::PointXYZI >::Ptr &colored_cloud, const double octree_voxel_size, const bool show_nb_occlusions=true, const int max_occlusions=4) |
| Colors a point cloud, depending on its occlusions. More... | |
| void | showOcclusions (pcl::TextureMesh &tex_mesh, pcl::PointCloud< pcl::PointXYZI >::Ptr &colored_cloud, double octree_voxel_size, bool show_nb_occlusions=true, int max_occlusions=4) |
| Colors the point cloud of a Mesh, depending on its occlusions. More... | |
| void | textureMeshwithMultipleCameras (pcl::TextureMesh &mesh, const pcl::texture_mapping::CameraVector &cameras) |
| Segment and texture faces by camera visibility. More... | |
Protected Member Functions | |
| std::vector< Eigen::Vector2f, Eigen::aligned_allocator< Eigen::Vector2f > > | mapTexture2Face (const Eigen::Vector3f &p1, const Eigen::Vector3f &p2, const Eigen::Vector3f &p3) |
| Map texture to a face. More... | |
| void | getTriangleCircumcenterAndSize (const pcl::PointXY &p1, const pcl::PointXY &p2, const pcl::PointXY &p3, pcl::PointXY &circumcenter, double &radius) |
| Returns the circumcenter of a triangle and the circle's radius. More... | |
| void | getTriangleCircumcscribedCircleCentroid (const pcl::PointXY &p1, const pcl::PointXY &p2, const pcl::PointXY &p3, pcl::PointXY &circumcenter, double &radius) |
| Returns the centroid of a triangle and the corresponding circumscribed circle's radius. More... | |
| bool | getPointUVCoordinates (const PointInT &pt, const Camera &cam, pcl::PointXY &UV_coordinates) |
| computes UV coordinates of point, observed by one particular camera More... | |
| bool | isFaceProjected (const Camera &camera, const PointInT &p1, const PointInT &p2, const PointInT &p3, pcl::PointXY &proj1, pcl::PointXY &proj2, pcl::PointXY &proj3) |
| Returns true if all the vertices of one face are projected on the camera's image plane. More... | |
| bool | checkPointInsideTriangle (const pcl::PointXY &p1, const pcl::PointXY &p2, const pcl::PointXY &p3, const pcl::PointXY &pt) |
| Returns True if a point lays within a triangle. More... | |
| std::string | getClassName () const |
| Class get name method. More... | |
Protected Attributes | |
| float | f_ {0.0f} |
| mesh scale control. More... | |
| Eigen::Vector3f | vector_field_ |
| vector field More... | |
| std::vector< std::string > | tex_files_ |
| list of texture files More... | |
| TexMaterial | tex_material_ |
| list of texture materials More... | |
The texture mapping algorithm.
Definition at line 99 of file texture_mapping.h.
| using pcl::TextureMapping< PointInT >::Camera = pcl::texture_mapping::Camera |
Definition at line 114 of file texture_mapping.h.
| using pcl::TextureMapping< PointInT >::ConstPtr = shared_ptr<const TextureMapping<PointInT> > |
Definition at line 104 of file texture_mapping.h.
| using pcl::TextureMapping< PointInT >::Octree = pcl::octree::OctreePointCloudSearch<PointInT> |
Definition at line 110 of file texture_mapping.h.
| using pcl::TextureMapping< PointInT >::OctreeConstPtr = typename Octree::ConstPtr |
Definition at line 112 of file texture_mapping.h.
| using pcl::TextureMapping< PointInT >::OctreePtr = typename Octree::Ptr |
Definition at line 111 of file texture_mapping.h.
| using pcl::TextureMapping< PointInT >::PointCloud = pcl::PointCloud<PointInT> |
Definition at line 106 of file texture_mapping.h.
| using pcl::TextureMapping< PointInT >::PointCloudConstPtr = typename PointCloud::ConstPtr |
Definition at line 108 of file texture_mapping.h.
| using pcl::TextureMapping< PointInT >::PointCloudPtr = typename PointCloud::Ptr |
Definition at line 107 of file texture_mapping.h.
| using pcl::TextureMapping< PointInT >::Ptr = shared_ptr<TextureMapping<PointInT> > |
Definition at line 103 of file texture_mapping.h.
| using pcl::TextureMapping< PointInT >::UvIndex = pcl::texture_mapping::UvIndex |
Definition at line 115 of file texture_mapping.h.
|
default |
Constructor.
|
default |
Destructor.
|
inlineprotected |
Returns True if a point lays within a triangle.
see http://www.blackpawn.com/texts/pointinpoly/default.html
| [in] | p1 | first point of the triangle. |
| [in] | p2 | second point of the triangle. |
| [in] | p3 | third point of the triangle. |
| [in] | pt | the query point. |
Definition at line 1037 of file texture_mapping.hpp.
References pcl::PointXY::x, and pcl::PointXY::y.
|
inlineprotected |
Class get name method.
Definition at line 412 of file texture_mapping.h.
|
inline |
computes UV coordinates of point, observed by one particular camera
| [in] | pt | XYZ point to project on camera plane |
| [in] | cam | the camera used for projection |
| [out] | UV_coordinates | the resulting uv coordinates. Set to (-1.0,-1.0) if the point is not visible by the camera |
Definition at line 192 of file texture_mapping.h.
References pcl::texture_mapping::Camera::center_h, pcl::texture_mapping::Camera::center_w, pcl::texture_mapping::Camera::focal_length, pcl::texture_mapping::Camera::focal_length_h, pcl::texture_mapping::Camera::focal_length_w, pcl::texture_mapping::Camera::height, and pcl::texture_mapping::Camera::width.
|
inlineprotected |
computes UV coordinates of point, observed by one particular camera
| [in] | pt | XYZ point to project on camera plane |
| [in] | cam | the camera used for projection |
| [out] | UV_coordinates | the resulting UV coordinates. Set to (-1.0,-1.0) if the point is not visible by the camera |
Definition at line 993 of file texture_mapping.hpp.
References pcl::texture_mapping::Camera::center_h, pcl::texture_mapping::Camera::center_w, pcl::texture_mapping::Camera::focal_length, pcl::texture_mapping::Camera::focal_length_h, pcl::texture_mapping::Camera::focal_length_w, pcl::texture_mapping::Camera::height, pcl::texture_mapping::Camera::width, pcl::PointXY::x, and pcl::PointXY::y.
|
inlineprotected |
Returns the circumcenter of a triangle and the circle's radius.
see https://en.wikipedia.org/wiki/Circumcenter for formulas.
| [in] | p1 | first point of the triangle. |
| [in] | p2 | second point of the triangle. |
| [in] | p3 | third point of the triangle. |
| [out] | circumcenter | resulting circumcenter |
| [out] | radius | the radius of the circumscribed circle. |
Definition at line 944 of file texture_mapping.hpp.
References pcl::PointXY::x, and pcl::PointXY::y.
|
inlineprotected |
Returns the centroid of a triangle and the corresponding circumscribed circle's radius.
yield a tighter circle than getTriangleCircumcenterAndSize.
| [in] | p1 | first point of the triangle. |
| [in] | p2 | second point of the triangle. |
| [in] | p3 | third point of the triangle. |
| [out] | circumcenter | resulting circumcenter |
| [out] | radius | the radius of the circumscribed circle. |
Definition at line 977 of file texture_mapping.hpp.
References pcl::PointXY::x, and pcl::PointXY::y.
|
inlineprotected |
Returns true if all the vertices of one face are projected on the camera's image plane.
| [in] | camera | camera on which to project the face. |
| [in] | p1 | first point of the face. |
| [in] | p2 | second point of the face. |
| [in] | p3 | third point of the face. |
| [out] | proj1 | UV coordinates corresponding to p1. |
| [out] | proj2 | UV coordinates corresponding to p2. |
| [out] | proj3 | UV coordinates corresponding to p3. |
Definition at line 1063 of file texture_mapping.hpp.
|
inline |
Check if a point is occluded using raycasting on octree.
| [in] | pt | XYZ from which the ray will start (toward the camera) |
| [in] | octree | the octree used for raycasting. It must be initialized with a cloud transformed into the camera's frame |
Definition at line 360 of file texture_mapping.hpp.
| void pcl::TextureMapping< PointInT >::mapMultipleTexturesToMeshUV | ( | pcl::TextureMesh & | tex_mesh, |
| pcl::texture_mapping::CameraVector & | cams | ||
| ) |
Map textures acquired from a set of cameras onto a mesh.
With UV mapping, the mesh must be divided into NbCamera + 1 sub-meshes. Each sub-mesh corresponding to the faces visible by one camera. The last submesh containing all non-visible faces
| [in] | tex_mesh | texture mesh |
| [in] | cams | cameras used for UV mapping |
Definition at line 282 of file texture_mapping.hpp.
References pcl::TextureMesh::cloud, pcl::fromPCLPointCloud2(), pcl::texture_mapping::Camera::pose, pcl::TextureMesh::tex_coordinates, pcl::TextureMesh::tex_materials, pcl::TextureMesh::tex_polygons, pcl::texture_mapping::Camera::texture_file, and pcl::transformPointCloud().
|
protected |
Map texture to a face.
| [in] | p1 | the first point |
| [in] | p2 | the second point |
| [in] | p3 | the third point |
Definition at line 48 of file texture_mapping.hpp.
| void pcl::TextureMapping< PointInT >::mapTexture2Mesh | ( | pcl::TextureMesh & | tex_mesh | ) |
Map texture to a mesh synthesis algorithm.
| [in] | tex_mesh | texture mesh |
Definition at line 146 of file texture_mapping.hpp.
References pcl::TextureMesh::cloud, pcl::PCLPointCloud2::data, pcl::PCLPointCloud2::fields, pcl::PCLPointCloud2::height, pcl::TextureMesh::tex_coordinates, pcl::TextureMesh::tex_materials, pcl::TextureMesh::tex_polygons, and pcl::PCLPointCloud2::width.
| void pcl::TextureMapping< PointInT >::mapTexture2MeshUV | ( | pcl::TextureMesh & | tex_mesh | ) |
Map texture to a mesh UV mapping.
| [in] | tex_mesh | texture mesh |
Definition at line 198 of file texture_mapping.hpp.
References pcl::TextureMesh::cloud, pcl::PCLPointCloud2::data, pcl::PCLPointCloud2::fields, pcl::PCLPointCloud2::height, pcl::TextureMesh::tex_coordinates, pcl::TextureMesh::tex_materials, pcl::TextureMesh::tex_polygons, and pcl::PCLPointCloud2::width.
| void pcl::TextureMapping< PointInT >::removeOccludedPoints | ( | const pcl::TextureMesh & | tex_mesh, |
| pcl::TextureMesh & | cleaned_mesh, | ||
| const double | octree_voxel_size | ||
| ) |
Remove occluded points from a textureMesh.
| [in] | tex_mesh | input mesh, on witch to perform occlusion detection |
| [out] | cleaned_mesh | resulting mesh, containing only visible points |
| [in] | octree_voxel_size | octree resolution (in meters) |
Definition at line 463 of file texture_mapping.hpp.
References pcl::TextureMesh::cloud, pcl::fromPCLPointCloud2(), and pcl::TextureMesh::tex_polygons.
| void pcl::TextureMapping< PointInT >::removeOccludedPoints | ( | const pcl::TextureMesh & | tex_mesh, |
| PointCloudPtr & | filtered_cloud, | ||
| const double | octree_voxel_size | ||
| ) |
Remove occluded points from a textureMesh.
| [in] | tex_mesh | input mesh, on witch to perform occlusion detection |
| [out] | filtered_cloud | resulting cloud, containing only visible points |
| [in] | octree_voxel_size | octree resolution (in meters) |
Definition at line 516 of file texture_mapping.hpp.
References pcl::TextureMesh::cloud, and pcl::fromPCLPointCloud2().
| void pcl::TextureMapping< PointInT >::removeOccludedPoints | ( | const PointCloudPtr & | input_cloud, |
| PointCloudPtr & | filtered_cloud, | ||
| const double | octree_voxel_size, | ||
| pcl::Indices & | visible_indices, | ||
| pcl::Indices & | occluded_indices | ||
| ) |
Remove occluded points from a point cloud.
| [in] | input_cloud | the cloud on which to perform occlusion detection |
| [out] | filtered_cloud | resulting cloud, containing only visible points |
| [in] | octree_voxel_size | octree resolution (in meters) |
| [out] | visible_indices | will contain indices of visible points |
| [out] | occluded_indices | will contain indices of occluded points |
Definition at line 399 of file texture_mapping.hpp.
References pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT >::addPointsFromInputCloud(), pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT >::defineBoundingBox(), pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::getIntersectedVoxelIndices(), and pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT >::setInputCloud().
|
inline |
Set mesh scale control.
| [in] | f |
Definition at line 127 of file texture_mapping.h.
References pcl::TextureMapping< PointInT >::f_.
|
inline |
Set texture files.
| [in] | tex_files | list of texture files |
Definition at line 149 of file texture_mapping.h.
References pcl::TextureMapping< PointInT >::tex_files_.
|
inline |
Set texture materials.
| [in] | tex_material | texture material |
Definition at line 158 of file texture_mapping.h.
References pcl::TextureMapping< PointInT >::tex_material_.
|
inline |
Set vector field.
| [in] | x | data point x |
| [in] | y | data point y |
| [in] | z | data point z |
Definition at line 138 of file texture_mapping.h.
References pcl::TextureMapping< PointInT >::vector_field_.
| void pcl::TextureMapping< PointInT >::showOcclusions | ( | const PointCloudPtr & | input_cloud, |
| pcl::PointCloud< pcl::PointXYZI >::Ptr & | colored_cloud, | ||
| const double | octree_voxel_size, | ||
| const bool | show_nb_occlusions = true, |
||
| const int | max_occlusions = 4 |
||
| ) |
Colors a point cloud, depending on its occlusions.
If showNbOcclusions is set to True, each point is colored depending on the number of points occluding it. Else, each point is given a different a 0 value is not occluded, 1 if occluded. By default, the number of occlusions is bounded to 4.
| [in] | input_cloud | input cloud on which occlusions will be computed. |
| [out] | colored_cloud | resulting colored cloud showing the number of occlusions per point. |
| [in] | octree_voxel_size | octree resolution (in meters). |
| [in] | show_nb_occlusions | If false, color information will only represent. |
| [in] | max_occlusions | Limit the number of occlusions per point. |
Definition at line 617 of file texture_mapping.hpp.
References pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT >::addPointsFromInputCloud(), pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT >::defineBoundingBox(), pcl::euclideanDistance(), pcl::octree::OctreePointCloudSearch< PointT, LeafContainerT, BranchContainerT >::getIntersectedVoxelIndices(), pcl::_PointXYZI::intensity, pcl::PointCloud< PointT >::points, and pcl::octree::OctreePointCloud< PointT, LeafContainerT, BranchContainerT, OctreeT >::setInputCloud().
| void pcl::TextureMapping< PointInT >::showOcclusions | ( | pcl::TextureMesh & | tex_mesh, |
| pcl::PointCloud< pcl::PointXYZI >::Ptr & | colored_cloud, | ||
| double | octree_voxel_size, | ||
| bool | show_nb_occlusions = true, |
||
| int | max_occlusions = 4 |
||
| ) |
Colors the point cloud of a Mesh, depending on its occlusions.
If showNbOcclusions is set to True, each point is colored depending on the number of points occluding it. Else, each point is given a different a 0 value is not occluded, 1 if occluded. By default, the number of occlusions is bounded to 4.
| [in] | tex_mesh | input mesh on which occlusions will be computed. |
| [out] | colored_cloud | resulting colored cloud showing the number of occlusions per point. |
| [in] | octree_voxel_size | octree resolution (in meters). |
| [in] | show_nb_occlusions | If false, color information will only represent. |
| [in] | max_occlusions | Limit the number of occlusions per point. |
Definition at line 691 of file texture_mapping.hpp.
References pcl::TextureMesh::cloud, and pcl::fromPCLPointCloud2().
| int pcl::TextureMapping< PointInT >::sortFacesByCamera | ( | pcl::TextureMesh & | tex_mesh, |
| pcl::TextureMesh & | sorted_mesh, | ||
| const pcl::texture_mapping::CameraVector & | cameras, | ||
| const double | octree_voxel_size, | ||
| PointCloud & | visible_pts | ||
| ) |
Segment faces by camera visibility.
Point-based segmentation.
With N camera, faces will be arranged into N+1 groups: 1 for each camera, plus 1 for faces not visible from any camera.
| [in] | tex_mesh | input mesh that needs sorting. Must contain only 1 sub-mesh. |
| [in] | sorted_mesh | resulting mesh, will contain nbCamera + 1 sub-mesh. |
| [in] | cameras | vector containing the cameras used for texture mapping. |
| [in] | octree_voxel_size | octree resolution (in meters) |
| [out] | visible_pts | cloud containing only visible points |
Definition at line 531 of file texture_mapping.hpp.
References pcl::TextureMesh::cloud, pcl::fromPCLPointCloud2(), pcl::TextureMesh::tex_polygons, and pcl::transformPointCloud().
| void pcl::TextureMapping< PointInT >::textureMeshwithMultipleCameras | ( | pcl::TextureMesh & | mesh, |
| const pcl::texture_mapping::CameraVector & | cameras | ||
| ) |
Segment and texture faces by camera visibility.
Face-based segmentation.
With N camera, faces will be arranged into N+1 groups: 1 for each camera, plus 1 for faces not visible from any camera. The mesh will also contain uv coordinates for each face
| mesh | input mesh that needs sorting. Should contain only 1 sub-mesh. | |
| [in] | cameras | vector containing the cameras used for texture mapping. |
Definition at line 703 of file texture_mapping.hpp.
References pcl::TextureMesh::cloud, pcl::fromPCLPointCloud2(), pcl::texture_mapping::UvIndex::idx_cloud, pcl::texture_mapping::UvIndex::idx_face, pcl::PointCloud< PointT >::points, pcl::KdTreeFLANN< PointT, Dist >::radiusSearch(), pcl::KdTreeFLANN< PointT, Dist >::setInputCloud(), pcl::TextureMesh::tex_coordinates, pcl::TextureMesh::tex_polygons, pcl::transformPointCloud(), pcl::PointXY::x, and pcl::PointXY::y.
|
protected |
mesh scale control.
Definition at line 334 of file texture_mapping.h.
Referenced by pcl::TextureMapping< PointInT >::setF().
|
protected |
list of texture files
Definition at line 340 of file texture_mapping.h.
Referenced by pcl::TextureMapping< PointInT >::setTextureFiles().
|
protected |
list of texture materials
Definition at line 343 of file texture_mapping.h.
Referenced by pcl::TextureMapping< PointInT >::setTextureMaterials().
|
protected |
vector field
Definition at line 337 of file texture_mapping.h.
Referenced by pcl::TextureMapping< PointInT >::setVectorField().