Point Cloud Library (PCL)  1.14.0-dev
List of all members | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
pcl::VoxelGridOcclusionEstimation< PointT > Class Template Reference

VoxelGrid to estimate occluded space in the scene. More...

#include <pcl/filters/voxel_grid_occlusion_estimation.h>

+ Inheritance diagram for pcl::VoxelGridOcclusionEstimation< PointT >:
+ Collaboration diagram for pcl::VoxelGridOcclusionEstimation< PointT >:

Public Member Functions

PCL_MAKE_ALIGNED_OPERATOR_NEW VoxelGridOcclusionEstimation ()
 Empty constructor. More...
 
 ~VoxelGridOcclusionEstimation () override=default
 Destructor. More...
 
void initializeVoxelGrid ()
 Initialize the voxel grid, needs to be called first Builts the voxel grid and computes additional values for the ray traversal algorithm. More...
 
int occlusionEstimation (int &out_state, const Eigen::Vector3i &in_target_voxel)
 Computes the state (free = 0, occluded = 1) of the voxel after utilizing a ray traversal algorithm to a target voxel in (i, j, k) coordinates. More...
 
int occlusionEstimation (int &out_state, std::vector< Eigen::Vector3i, Eigen::aligned_allocator< Eigen::Vector3i > > &out_ray, const Eigen::Vector3i &in_target_voxel)
 Computes the state (free = 0, occluded = 1) of the voxel after utilizing a ray traversal algorithm to a target voxel in (i, j, k) coordinates. More...
 
int occlusionEstimationAll (std::vector< Eigen::Vector3i, Eigen::aligned_allocator< Eigen::Vector3i > > &occluded_voxels)
 Computes the voxel coordinates (i, j, k) of all occluded voxels in the voxel grid. More...
 
PointCloud getFilteredPointCloud ()
 Returns the voxel grid filtered point cloud. More...
 
Eigen::Vector3f getMinBoundCoordinates ()
 Returns the minimum bounding of coordinates of the voxel grid (x,y,z). More...
 
Eigen::Vector3f getMaxBoundCoordinates ()
 Returns the maximum bounding of coordinates of the voxel grid (x,y,z). More...
 
Eigen::Vector4f getCentroidCoordinate (const Eigen::Vector3i &ijk)
 Returns the corresponding centroid (x,y,z) coordinates in the grid of voxel (i,j,k). More...
 
- Public Member Functions inherited from pcl::VoxelGrid< PointT >
PCL_MAKE_ALIGNED_OPERATOR_NEW VoxelGrid ()
 Empty constructor. More...
 
 ~VoxelGrid () override=default
 Destructor. More...
 
void setLeafSize (const Eigen::Vector4f &leaf_size)
 Set the voxel grid leaf size. More...
 
void setLeafSize (float lx, float ly, float lz)
 Set the voxel grid leaf size. More...
 
Eigen::Vector3f getLeafSize () const
 Get the voxel grid leaf size. More...
 
void setDownsampleAllData (bool downsample)
 Set to true if all fields need to be downsampled, or false if just XYZ. More...
 
bool getDownsampleAllData () const
 Get the state of the internal downsampling parameter (true if all fields need to be downsampled, false if just XYZ). More...
 
void setMinimumPointsNumberPerVoxel (unsigned int min_points_per_voxel)
 Set the minimum number of points required for a voxel to be used. More...
 
unsigned int getMinimumPointsNumberPerVoxel () const
 Return the minimum number of points required for a voxel to be used. More...
 
void setSaveLeafLayout (bool save_leaf_layout)
 Set to true if leaf layout information needs to be saved for later access. More...
 
bool getSaveLeafLayout () const
 Returns true if leaf layout information will to be saved for later access. More...
 
Eigen::Vector3i getMinBoxCoordinates () const
 Get the minimum coordinates of the bounding box (after filtering is performed). More...
 
Eigen::Vector3i getMaxBoxCoordinates () const
 Get the minimum coordinates of the bounding box (after filtering is performed). More...
 
Eigen::Vector3i getNrDivisions () const
 Get the number of divisions along all 3 axes (after filtering is performed). More...
 
Eigen::Vector3i getDivisionMultiplier () const
 Get the multipliers to be applied to the grid coordinates in order to find the centroid index (after filtering is performed). More...
 
int getCentroidIndex (const PointT &p) const
 Returns the index in the resulting downsampled cloud of the specified point. More...
 
std::vector< int > getNeighborCentroidIndices (const PointT &reference_point, const Eigen::MatrixXi &relative_coordinates) const
 Returns the indices in the resulting downsampled cloud of the points at the specified grid coordinates, relative to the grid coordinates of the specified point (or -1 if the cell was empty/out of bounds). More...
 
std::vector< int > getLeafLayout () const
 Returns the layout of the leafs for fast access to cells relative to current position. More...
 
Eigen::Vector3i getGridCoordinates (float x, float y, float z) const
 Returns the corresponding (i,j,k) coordinates in the grid of point (x,y,z). More...
 
int getCentroidIndexAt (const Eigen::Vector3i &ijk) const
 Returns the index in the downsampled cloud corresponding to a given set of coordinates. More...
 
void setFilterFieldName (const std::string &field_name)
 Provide the name of the field to be used for filtering data. More...
 
std::string const getFilterFieldName () const
 Get the name of the field used for filtering. More...
 
void setFilterLimits (const double &limit_min, const double &limit_max)
 Set the field filter limits. More...
 
void getFilterLimits (double &limit_min, double &limit_max) const
 Get the field filter limits (min/max) set by the user. More...
 
void setFilterLimitsNegative (const bool limit_negative)
 Set to true if we want to return the data outside the interval specified by setFilterLimits (min, max). More...
 
void getFilterLimitsNegative (bool &limit_negative) const
 Get whether the data outside the interval (min/max) is to be returned (true) or inside (false). More...
 
bool getFilterLimitsNegative () const
 Get whether the data outside the interval (min/max) is to be returned (true) or inside (false). More...
 
- Public Member Functions inherited from pcl::Filter< PointT >
 Filter (bool extract_removed_indices=false)
 Empty constructor. More...
 
IndicesConstPtr const getRemovedIndices () const
 Get the point indices being removed. More...
 
void getRemovedIndices (PointIndices &pi)
 Get the point indices being removed. More...
 
void filter (PointCloud &output)
 Calls the filtering method and returns the filtered dataset in output. More...
 
- Public Member Functions inherited from pcl::PCLBase< PointT >
 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 PointToperator[] (std::size_t pos) const
 Override PointCloud operator[] to shorten code. More...
 

Protected Types

using PointCloud = typename Filter< PointT >::PointCloud
 
using PointCloudPtr = typename PointCloud::Ptr
 
using PointCloudConstPtr = typename PointCloud::ConstPtr
 
- Protected Types inherited from pcl::VoxelGrid< PointT >
using PointCloud = typename Filter< PointT >::PointCloud
 
using PointCloudPtr = typename PointCloud::Ptr
 
using PointCloudConstPtr = typename PointCloud::ConstPtr
 
using FieldList = typename pcl::traits::fieldList< PointT >::type
 

Protected Member Functions

float rayBoxIntersection (const Eigen::Vector4f &origin, const Eigen::Vector4f &direction)
 Returns the scaling value (tmin) were the ray intersects with the voxel grid bounding box. More...
 
int rayTraversal (const Eigen::Vector3i &target_voxel, const Eigen::Vector4f &origin, const Eigen::Vector4f &direction, const float t_min)
 Returns the state of the target voxel (0 = visible, 1 = occupied) using a ray traversal algorithm. More...
 
int rayTraversal (std::vector< Eigen::Vector3i, Eigen::aligned_allocator< Eigen::Vector3i > > &out_ray, const Eigen::Vector3i &target_voxel, const Eigen::Vector4f &origin, const Eigen::Vector4f &direction, const float t_min)
 Returns the state of the target voxel (0 = visible, 1 = occupied) and the voxels penetrated by the ray using a ray traversal algorithm. More...
 
float round (float d)
 Returns a value rounded to the nearest integer. More...
 
Eigen::Vector3i getGridCoordinatesRound (float x, float y, float z)
 Returns the corresponding (i,j,k) coordinates in the grid of point (x,y,z). More...
 
- Protected Member Functions inherited from pcl::VoxelGrid< PointT >
void applyFilter (PointCloud &output) override
 Downsample a Point Cloud using a voxelized grid approach. More...
 
- Protected Member Functions inherited from pcl::Filter< PointT >
const std::string & getClassName () const
 Get a string representation of the name of this class. More...
 
- Protected Member Functions inherited from pcl::PCLBase< PointT >
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

bool initialized_
 
Eigen::Vector4f sensor_origin_
 
Eigen::Quaternionf sensor_orientation_
 
Eigen::Vector4f b_min_
 
Eigen::Vector4f b_max_
 
PointCloud filtered_cloud_
 
- Protected Attributes inherited from pcl::VoxelGrid< PointT >
Eigen::Vector4f leaf_size_
 The size of a leaf. More...
 
Eigen::Array4f inverse_leaf_size_
 Internal leaf sizes stored as 1/leaf_size_ for efficiency reasons. More...
 
bool downsample_all_data_ {true}
 Set to true if all fields need to be downsampled, or false if just XYZ. More...
 
bool save_leaf_layout_ {false}
 Set to true if leaf layout information needs to be saved in leaf_layout_. More...
 
std::vector< int > leaf_layout_
 The leaf layout information for fast access to cells relative to current position. More...
 
Eigen::Vector4i min_b_
 The minimum and maximum bin coordinates, the number of divisions, and the division multiplier. More...
 
Eigen::Vector4i max_b_
 
Eigen::Vector4i div_b_
 
Eigen::Vector4i divb_mul_
 
std::string filter_field_name_
 The desired user filter field name. More...
 
double filter_limit_min_ {std::numeric_limits<float>::lowest()}
 The minimum allowed filter value a point will be considered from. More...
 
double filter_limit_max_ {std::numeric_limits<float>::max()}
 The maximum allowed filter value a point will be considered from. More...
 
bool filter_limit_negative_ {false}
 Set to true if we want to return the data outside (filter_limit_min_;filter_limit_max_). More...
 
unsigned int min_points_per_voxel_ {0}
 Minimum number of points per voxel for the centroid to be computed. More...
 
- Protected Attributes inherited from pcl::Filter< PointT >
IndicesPtr removed_indices_
 Indices of the points that are removed. More...
 
std::string filter_name_
 The filter name. More...
 
bool extract_removed_indices_
 Set to true if we want to return the indices of the removed points. More...
 
- Protected Attributes inherited from pcl::PCLBase< PointT >
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

- Public Types inherited from pcl::VoxelGrid< PointT >
using Ptr = shared_ptr< VoxelGrid< PointT > >
 
using ConstPtr = shared_ptr< const VoxelGrid< PointT > >
 
- Public Types inherited from pcl::Filter< PointT >
using Ptr = shared_ptr< Filter< PointT > >
 
using ConstPtr = shared_ptr< const Filter< PointT > >
 
using PointCloud = pcl::PointCloud< PointT >
 
using PointCloudPtr = typename PointCloud::Ptr
 
using PointCloudConstPtr = typename PointCloud::ConstPtr
 
- Public Types inherited from pcl::PCLBase< PointT >
using PointCloud = pcl::PointCloud< PointT >
 
using PointCloudPtr = typename PointCloud::Ptr
 
using PointCloudConstPtr = typename PointCloud::ConstPtr
 
using PointIndicesPtr = PointIndices::Ptr
 
using PointIndicesConstPtr = PointIndices::ConstPtr
 

Detailed Description

template<typename PointT>
class pcl::VoxelGridOcclusionEstimation< PointT >

VoxelGrid to estimate occluded space in the scene.

The ray traversal algorithm is implemented by the work of 'John Amanatides and Andrew Woo, A Fast Voxel Traversal Algorithm for Ray Tracing' Example code:

vg.setInputCloud (input_cloud);
vg.setLeafSize (leaf_x, leaf_y, leaf_z);
std::vector<Eigen::Vector3i, Eigen::aligned_allocator<Eigen::Vector3i> > occluded_voxels;
vg.occlusionEstimationAll (occluded_voxels);
virtual void setInputCloud(const PointCloudConstPtr &cloud)
Provide a pointer to the input dataset.
Definition: pcl_base.hpp:65
void setLeafSize(const Eigen::Vector4f &leaf_size)
Set the voxel grid leaf size.
Definition: voxel_grid.h:247
VoxelGrid to estimate occluded space in the scene.
void initializeVoxelGrid()
Initialize the voxel grid, needs to be called first Builts the voxel grid and computes additional val...
int occlusionEstimationAll(std::vector< Eigen::Vector3i, Eigen::aligned_allocator< Eigen::Vector3i > > &occluded_voxels)
Computes the voxel coordinates (i, j, k) of all occluded voxels in the voxel grid.
Author
Christian Potthast

Definition at line 63 of file voxel_grid_occlusion_estimation.h.

Member Typedef Documentation

◆ PointCloud

template<typename PointT >
using pcl::VoxelGridOcclusionEstimation< PointT >::PointCloud = typename Filter<PointT>::PointCloud
protected

Definition at line 72 of file voxel_grid_occlusion_estimation.h.

◆ PointCloudConstPtr

template<typename PointT >
using pcl::VoxelGridOcclusionEstimation< PointT >::PointCloudConstPtr = typename PointCloud::ConstPtr
protected

Definition at line 74 of file voxel_grid_occlusion_estimation.h.

◆ PointCloudPtr

template<typename PointT >
using pcl::VoxelGridOcclusionEstimation< PointT >::PointCloudPtr = typename PointCloud::Ptr
protected

Definition at line 73 of file voxel_grid_occlusion_estimation.h.

Constructor & Destructor Documentation

◆ VoxelGridOcclusionEstimation()

◆ ~VoxelGridOcclusionEstimation()

template<typename PointT >
pcl::VoxelGridOcclusionEstimation< PointT >::~VoxelGridOcclusionEstimation ( )
overridedefault

Destructor.

Member Function Documentation

◆ getCentroidCoordinate()

template<typename PointT >
Eigen::Vector4f pcl::VoxelGridOcclusionEstimation< PointT >::getCentroidCoordinate ( const Eigen::Vector3i &  ijk)
inline

Returns the corresponding centroid (x,y,z) coordinates in the grid of voxel (i,j,k).

Parameters
[in]ijkthe coordinate (i, j, k) of the voxel
Returns
the (x,y,z) coordinate of the voxel centroid

Definition at line 156 of file voxel_grid_occlusion_estimation.h.

References pcl::VoxelGridOcclusionEstimation< PointT >::b_min_, pcl::VoxelGrid< PointT >::leaf_size_, and pcl::VoxelGrid< PointT >::min_b_.

◆ getFilteredPointCloud()

template<typename PointT >
PointCloud pcl::VoxelGridOcclusionEstimation< PointT >::getFilteredPointCloud ( )
inline

Returns the voxel grid filtered point cloud.

Returns
The voxel grid filtered point cloud

Definition at line 135 of file voxel_grid_occlusion_estimation.h.

References pcl::VoxelGridOcclusionEstimation< PointT >::filtered_cloud_.

◆ getGridCoordinatesRound()

template<typename PointT >
Eigen::Vector3i pcl::VoxelGridOcclusionEstimation< PointT >::getGridCoordinatesRound ( float  x,
float  y,
float  z 
)
inlineprotected

Returns the corresponding (i,j,k) coordinates in the grid of point (x,y,z).

Parameters
[in]xthe X point coordinate to get the (i, j, k) index at
[in]ythe Y point coordinate to get the (i, j, k) index at
[in]zthe Z point coordinate to get the (i, j, k) index at

Definition at line 235 of file voxel_grid_occlusion_estimation.h.

References pcl::VoxelGrid< PointT >::inverse_leaf_size_, and pcl::VoxelGridOcclusionEstimation< PointT >::round().

◆ getMaxBoundCoordinates()

template<typename PointT >
Eigen::Vector3f pcl::VoxelGridOcclusionEstimation< PointT >::getMaxBoundCoordinates ( )
inline

Returns the maximum bounding of coordinates of the voxel grid (x,y,z).

Returns
the maximum coordinates (x,y,z)

Definition at line 148 of file voxel_grid_occlusion_estimation.h.

References pcl::VoxelGridOcclusionEstimation< PointT >::b_max_.

◆ getMinBoundCoordinates()

template<typename PointT >
Eigen::Vector3f pcl::VoxelGridOcclusionEstimation< PointT >::getMinBoundCoordinates ( )
inline

Returns the minimum bounding of coordinates of the voxel grid (x,y,z).

Returns
the minimum coordinates (x,y,z)

Definition at line 142 of file voxel_grid_occlusion_estimation.h.

References pcl::VoxelGridOcclusionEstimation< PointT >::b_min_.

◆ initializeVoxelGrid()

template<typename PointT >
void pcl::VoxelGridOcclusionEstimation< PointT >::initializeVoxelGrid

Initialize the voxel grid, needs to be called first Builts the voxel grid and computes additional values for the ray traversal algorithm.

Definition at line 46 of file voxel_grid_occlusion_estimation.hpp.

◆ occlusionEstimation() [1/2]

template<typename PointT >
int pcl::VoxelGridOcclusionEstimation< PointT >::occlusionEstimation ( int &  out_state,
const Eigen::Vector3i &  in_target_voxel 
)

Computes the state (free = 0, occluded = 1) of the voxel after utilizing a ray traversal algorithm to a target voxel in (i, j, k) coordinates.

Parameters
[out]out_stateThe state of the voxel.
[in]in_target_voxelThe target voxel coordinate (i, j, k) of the voxel.
Returns
0 upon success and -1 if an error occurs

Definition at line 76 of file voxel_grid_occlusion_estimation.hpp.

◆ occlusionEstimation() [2/2]

template<typename PointT >
int pcl::VoxelGridOcclusionEstimation< PointT >::occlusionEstimation ( int &  out_state,
std::vector< Eigen::Vector3i, Eigen::aligned_allocator< Eigen::Vector3i > > &  out_ray,
const Eigen::Vector3i &  in_target_voxel 
)

Computes the state (free = 0, occluded = 1) of the voxel after utilizing a ray traversal algorithm to a target voxel in (i, j, k) coordinates.

Additionally, this function returns the voxels penetrated of the ray-traversal algorithm till reaching the target voxel.

Parameters
[out]out_stateThe state of the voxel.
[out]out_rayThe voxels penetrated of the ray-traversal algorithm.
[in]in_target_voxelThe target voxel coordinate (i, j, k) of the voxel.
Returns
0 upon success and -1 if an error occurs

Definition at line 107 of file voxel_grid_occlusion_estimation.hpp.

◆ occlusionEstimationAll()

template<typename PointT >
int pcl::VoxelGridOcclusionEstimation< PointT >::occlusionEstimationAll ( std::vector< Eigen::Vector3i, Eigen::aligned_allocator< Eigen::Vector3i > > &  occluded_voxels)

Computes the voxel coordinates (i, j, k) of all occluded voxels in the voxel grid.

Parameters
[out]occluded_voxelsthe coordinates (i, j, k) of all occluded voxels
Returns
0 upon success and -1 if an error occurs

Definition at line 139 of file voxel_grid_occlusion_estimation.hpp.

◆ rayBoxIntersection()

template<typename PointT >
float pcl::VoxelGridOcclusionEstimation< PointT >::rayBoxIntersection ( const Eigen::Vector4f &  origin,
const Eigen::Vector4f &  direction 
)
protected

Returns the scaling value (tmin) were the ray intersects with the voxel grid bounding box.

(p_entry = origin + tmin * orientation)

Parameters
[in]originThe sensor origin
[in]directionThe sensor orientation
Returns
the scaling value

Definition at line 182 of file voxel_grid_occlusion_estimation.hpp.

◆ rayTraversal() [1/2]

template<typename PointT >
int pcl::VoxelGridOcclusionEstimation< PointT >::rayTraversal ( const Eigen::Vector3i &  target_voxel,
const Eigen::Vector4f &  origin,
const Eigen::Vector4f &  direction,
const float  t_min 
)
protected

Returns the state of the target voxel (0 = visible, 1 = occupied) using a ray traversal algorithm.

Parameters
[in]target_voxelThe target voxel in the voxel grid with coordinate (i, j, k).
[in]originThe sensor origin.
[in]directionThe sensor orientation
[in]t_minThe scaling value (tmin).
Returns
The estimated voxel state.

Definition at line 248 of file voxel_grid_occlusion_estimation.hpp.

◆ rayTraversal() [2/2]

template<typename PointT >
int pcl::VoxelGridOcclusionEstimation< PointT >::rayTraversal ( std::vector< Eigen::Vector3i, Eigen::aligned_allocator< Eigen::Vector3i > > &  out_ray,
const Eigen::Vector3i &  target_voxel,
const Eigen::Vector4f &  origin,
const Eigen::Vector4f &  direction,
const float  t_min 
)
protected

Returns the state of the target voxel (0 = visible, 1 = occupied) and the voxels penetrated by the ray using a ray traversal algorithm.

Parameters
[out]out_rayThe voxels penetrated by the ray in (i, j, k) coordinates
[in]target_voxelThe target voxel in the voxel grid with coordinate (i, j, k).
[in]originThe sensor origin.
[in]directionThe sensor orientation
[in]t_minThe scaling value (tmin).
Returns
The estimated voxel state.

Definition at line 341 of file voxel_grid_occlusion_estimation.hpp.

◆ round()

template<typename PointT >
float pcl::VoxelGridOcclusionEstimation< PointT >::round ( float  d)
inlineprotected

Returns a value rounded to the nearest integer.

Parameters
[in]d
Returns
rounded value

Definition at line 224 of file voxel_grid_occlusion_estimation.h.

Referenced by pcl::VoxelGridOcclusionEstimation< PointT >::getGridCoordinatesRound().

Member Data Documentation

◆ b_max_

template<typename PointT >
Eigen::Vector4f pcl::VoxelGridOcclusionEstimation< PointT >::b_max_
protected

◆ b_min_

template<typename PointT >
Eigen::Vector4f pcl::VoxelGridOcclusionEstimation< PointT >::b_min_
protected

◆ filtered_cloud_

template<typename PointT >
PointCloud pcl::VoxelGridOcclusionEstimation< PointT >::filtered_cloud_
protected

◆ initialized_

template<typename PointT >
bool pcl::VoxelGridOcclusionEstimation< PointT >::initialized_
protected

◆ sensor_orientation_

template<typename PointT >
Eigen::Quaternionf pcl::VoxelGridOcclusionEstimation< PointT >::sensor_orientation_
protected

Definition at line 246 of file voxel_grid_occlusion_estimation.h.

◆ sensor_origin_

template<typename PointT >
Eigen::Vector4f pcl::VoxelGridOcclusionEstimation< PointT >::sensor_origin_
protected

Definition at line 245 of file voxel_grid_occlusion_estimation.h.


The documentation for this class was generated from the following files: