Point Cloud Library (PCL)
1.14.1-dev
|
VoxelGrid to estimate occluded space in the scene. More...
#include <pcl/filters/voxel_grid_occlusion_estimation.h>
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 PointT & | operator[] (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 |
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:
Definition at line 63 of file voxel_grid_occlusion_estimation.h.
|
protected |
Definition at line 72 of file voxel_grid_occlusion_estimation.h.
|
protected |
Definition at line 74 of file voxel_grid_occlusion_estimation.h.
|
protected |
Definition at line 73 of file voxel_grid_occlusion_estimation.h.
|
inline |
Empty constructor.
Definition at line 81 of file voxel_grid_occlusion_estimation.h.
References pcl::VoxelGridOcclusionEstimation< PointT >::initialized_, and pcl::VoxelGrid< PointT >::setSaveLeafLayout().
|
overridedefault |
Destructor.
|
inline |
Returns the corresponding centroid (x,y,z) coordinates in the grid of voxel (i,j,k).
[in] | ijk | the coordinate (i, j, k) of the voxel |
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_.
|
inline |
Returns the voxel grid filtered point cloud.
Definition at line 135 of file voxel_grid_occlusion_estimation.h.
References pcl::VoxelGridOcclusionEstimation< PointT >::filtered_cloud_.
|
inlineprotected |
Returns the corresponding (i,j,k) coordinates in the grid of point (x,y,z).
[in] | x | the X point coordinate to get the (i, j, k) index at |
[in] | y | the Y point coordinate to get the (i, j, k) index at |
[in] | z | the 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().
|
inline |
Returns the maximum bounding of coordinates of the voxel grid (x,y,z).
Definition at line 148 of file voxel_grid_occlusion_estimation.h.
References pcl::VoxelGridOcclusionEstimation< PointT >::b_max_.
|
inline |
Returns the minimum bounding of coordinates of the voxel grid (x,y,z).
Definition at line 142 of file voxel_grid_occlusion_estimation.h.
References pcl::VoxelGridOcclusionEstimation< PointT >::b_min_.
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.
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.
[out] | out_state | The state of the voxel. |
[in] | in_target_voxel | The target voxel coordinate (i, j, k) of the voxel. |
Definition at line 76 of file voxel_grid_occlusion_estimation.hpp.
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.
[out] | out_state | The state of the voxel. |
[out] | out_ray | The voxels penetrated of the ray-traversal algorithm. |
[in] | in_target_voxel | The target voxel coordinate (i, j, k) of the voxel. |
Definition at line 107 of file voxel_grid_occlusion_estimation.hpp.
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.
[out] | occluded_voxels | the coordinates (i, j, k) of all occluded voxels |
Definition at line 139 of file voxel_grid_occlusion_estimation.hpp.
|
protected |
Returns the scaling value (tmin) were the ray intersects with the voxel grid bounding box.
(p_entry = origin + tmin * orientation)
[in] | origin | The sensor origin |
[in] | direction | The sensor orientation |
Definition at line 182 of file voxel_grid_occlusion_estimation.hpp.
|
protected |
Returns the state of the target voxel (0 = visible, 1 = occupied) using a ray traversal algorithm.
[in] | target_voxel | The target voxel in the voxel grid with coordinate (i, j, k). |
[in] | origin | The sensor origin. |
[in] | direction | The sensor orientation |
[in] | t_min | The scaling value (tmin). |
Definition at line 248 of file voxel_grid_occlusion_estimation.hpp.
|
protected |
Returns the state of the target voxel (0 = visible, 1 = occupied) and the voxels penetrated by the ray using a ray traversal algorithm.
[out] | out_ray | The voxels penetrated by the ray in (i, j, k) coordinates |
[in] | target_voxel | The target voxel in the voxel grid with coordinate (i, j, k). |
[in] | origin | The sensor origin. |
[in] | direction | The sensor orientation |
[in] | t_min | The scaling value (tmin). |
Definition at line 341 of file voxel_grid_occlusion_estimation.hpp.
|
inlineprotected |
Returns a value rounded to the nearest integer.
[in] | d |
Definition at line 224 of file voxel_grid_occlusion_estimation.h.
Referenced by pcl::VoxelGridOcclusionEstimation< PointT >::getGridCoordinatesRound().
|
protected |
Definition at line 249 of file voxel_grid_occlusion_estimation.h.
Referenced by pcl::VoxelGridOcclusionEstimation< PointT >::getMaxBoundCoordinates().
|
protected |
Definition at line 249 of file voxel_grid_occlusion_estimation.h.
Referenced by pcl::VoxelGridOcclusionEstimation< PointT >::getCentroidCoordinate(), and pcl::VoxelGridOcclusionEstimation< PointT >::getMinBoundCoordinates().
|
protected |
Definition at line 252 of file voxel_grid_occlusion_estimation.h.
Referenced by pcl::VoxelGridOcclusionEstimation< PointT >::getFilteredPointCloud().
|
protected |
Definition at line 243 of file voxel_grid_occlusion_estimation.h.
Referenced by pcl::VoxelGridOcclusionEstimation< PointT >::VoxelGridOcclusionEstimation().
|
protected |
Definition at line 246 of file voxel_grid_occlusion_estimation.h.
|
protected |
Definition at line 245 of file voxel_grid_occlusion_estimation.h.