VoxelGrid assembles a local 3D grid over a given PointCloud, and downsamples + filters the data. More...
#include <voxel_grid.h>
Public Member Functions | |
int | getCentroidIndex (const PointT &p) |
Returns the index in the resulting downsampled cloud of the specified point. | |
int | getCentroidIndexAt (const Eigen::Vector3i &ijk) |
Returns the index in the downsampled cloud corresponding to a given set of coordinates. | |
Eigen::Vector3i | getDivisionMultiplier () |
Get the multipliers to be applied to the grid coordinates in order to find the centroid index (after filtering is performed). | |
bool | getDownsampleAllData () |
Get the state of the internal downsampling parameter (true if all fields need to be downsampled, false if just XYZ). | |
std::string const | getFilterFieldName () |
Get the name of the field used for filtering. | |
void | getFilterLimits (double &limit_min, double &limit_max) |
Get the field filter limits (min/max) set by the user. The default values are -FLT_MAX, FLT_MAX. | |
void | getFilterLimitsNegative (bool &limit_negative) |
Get whether the data outside the interval (min/max) is to be returned (true) or inside (false). | |
bool | getFilterLimitsNegative () |
Get whether the data outside the interval (min/max) is to be returned (true) or inside (false). | |
Eigen::Vector3i | getGridCoordinates (float x, float y, float z) |
Returns the corresponding (i,j,k) coordinates in the grid of point (x,y,z). | |
std::vector< int > | getLeafLayout () |
Returns the layout of the leafs for fast access to cells relative to current position. | |
Eigen::Vector3f | getLeafSize () |
Get the voxel grid leaf size. | |
Eigen::Vector3i | getMaxBoxCoordinates () |
Get the minimum coordinates of the bounding box (after filtering is performed). | |
Eigen::Vector3i | getMinBoxCoordinates () |
Get the minimum coordinates of the bounding box (after filtering is performed). | |
std::vector< int > | getNeighborCentroidIndices (const PointT &reference_point, const Eigen::MatrixXi &relative_coordinates) |
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). | |
Eigen::Vector3i | getNrDivisions () |
Get the number of divisions along all 3 axes (after filtering is performed). | |
bool | getSaveLeafLayout () |
Returns true if leaf layout information will to be saved for later access. | |
void | setDownsampleAllData (bool downsample) |
Set to true if all fields need to be downsampled, or false if just XYZ. | |
void | setFilterFieldName (const std::string &field_name) |
Provide the name of the field to be used for filtering data. In conjunction with setFilterLimits, points having values outside this interval will be discarded. | |
void | setFilterLimits (const double &limit_min, const double &limit_max) |
Set the field filter limits. All points having field values outside this interval will be discarded. | |
void | setFilterLimitsNegative (const bool limit_negative) |
Set to true if we want to return the data outside the interval specified by setFilterLimits (min, max). Default: false. | |
void | setLeafSize (const Eigen::Vector4f &leaf_size) |
Set the voxel grid leaf size. | |
void | setLeafSize (float lx, float ly, float lz) |
Set the voxel grid leaf size. | |
void | setSaveLeafLayout (bool save_leaf_layout) |
Set to true if leaf layout information needs to be saved for later access. | |
VoxelGrid () | |
Empty constructor. | |
virtual | ~VoxelGrid () |
Destructor. | |
Protected Types | |
typedef boost::shared_ptr < const VoxelGrid< PointT > > | ConstPtr |
typedef pcl::traits::fieldList < PointT >::type | FieldList |
typedef Filter< PointT > ::PointCloud | PointCloud |
typedef PointCloud::ConstPtr | PointCloudConstPtr |
typedef PointCloud::Ptr | PointCloudPtr |
typedef boost::shared_ptr < VoxelGrid< PointT > > | Ptr |
Protected Member Functions | |
void | applyFilter (PointCloud &output) |
Downsample a Point Cloud using a voxelized grid approach. | |
Protected Attributes | |
Eigen::Vector4i | div_b_ |
Eigen::Vector4i | divb_mul_ |
bool | downsample_all_data_ |
Set to true if all fields need to be downsampled, or false if just XYZ. | |
std::string | filter_field_name_ |
The desired user filter field name. | |
double | filter_limit_max_ |
The maximum allowed filter value a point will be considered from. | |
double | filter_limit_min_ |
The minimum allowed filter value a point will be considered from. | |
bool | filter_limit_negative_ |
Set to true if we want to return the data outside (filter_limit_min_;filter_limit_max_). Default: false. | |
Eigen::Array4f | inverse_leaf_size_ |
Internal leaf sizes stored as 1/leaf_size_ for efficiency reasons. | |
std::vector< int > | leaf_layout_ |
The leaf layout information for fast access to cells relative to current position. | |
Eigen::Vector4f | leaf_size_ |
The size of a leaf. | |
Eigen::Vector4i | max_b_ |
Eigen::Vector4i | min_b_ |
The minimum and maximum bin coordinates, the number of divisions, and the division multiplier. | |
bool | save_leaf_layout_ |
Set to true if leaf layout information needs to be saved in leaf_layout_. |
VoxelGrid assembles a local 3D grid over a given PointCloud, and downsamples + filters the data.
The VoxelGrid class creates a *3D voxel grid* (think about a voxel grid as a set of tiny 3D boxes in space) over the input point cloud data. Then, in each *voxel* (i.e., 3D box), all the points present will be approximated (i.e., *downsampled*) with their centroid. This approach is a bit slower than approximating them with the center of the voxel, but it represents the underlying surface more accurately.
Definition at line 178 of file voxel_grid.h.
typedef boost::shared_ptr< const VoxelGrid<PointT> > pcl::VoxelGrid< PointT >::ConstPtr [protected] |
Reimplemented from pcl::Filter< PointT >.
Reimplemented in pcl::VoxelGridCovariance< PointT >, pcl::VoxelGridCovariance< PointTarget >, and pcl::VoxelGridLabel.
Definition at line 190 of file voxel_grid.h.
typedef pcl::traits::fieldList<PointT>::type pcl::VoxelGrid< PointT >::FieldList [protected] |
Reimplemented in pcl::VoxelGridCovariance< PointT >, and pcl::VoxelGridCovariance< PointTarget >.
Definition at line 474 of file voxel_grid.h.
typedef Filter<PointT>::PointCloud pcl::VoxelGrid< PointT >::PointCloud [protected] |
Reimplemented from pcl::Filter< PointT >.
Reimplemented in pcl::VoxelGridCovariance< PointT >, pcl::VoxelGridCovariance< PointTarget >, and pcl::VoxelGridOcclusionEstimation< PointT >.
Definition at line 186 of file voxel_grid.h.
typedef PointCloud::ConstPtr pcl::VoxelGrid< PointT >::PointCloudConstPtr [protected] |
Reimplemented from pcl::Filter< PointT >.
Reimplemented in pcl::VoxelGridCovariance< PointT >, pcl::VoxelGridCovariance< PointTarget >, and pcl::VoxelGridOcclusionEstimation< PointT >.
Definition at line 188 of file voxel_grid.h.
typedef PointCloud::Ptr pcl::VoxelGrid< PointT >::PointCloudPtr [protected] |
Reimplemented from pcl::Filter< PointT >.
Reimplemented in pcl::VoxelGridCovariance< PointT >, pcl::VoxelGridCovariance< PointTarget >, and pcl::VoxelGridOcclusionEstimation< PointT >.
Definition at line 187 of file voxel_grid.h.
typedef boost::shared_ptr< VoxelGrid<PointT> > pcl::VoxelGrid< PointT >::Ptr [protected] |
Reimplemented from pcl::Filter< PointT >.
Reimplemented in pcl::VoxelGridCovariance< PointT >, pcl::VoxelGridCovariance< PointTarget >, and pcl::VoxelGridLabel.
Definition at line 189 of file voxel_grid.h.
pcl::VoxelGrid< PointT >::VoxelGrid | ( | ) | [inline] |
Empty constructor.
Definition at line 195 of file voxel_grid.h.
virtual pcl::VoxelGrid< PointT >::~VoxelGrid | ( | ) | [inline, virtual] |
Destructor.
Definition at line 214 of file voxel_grid.h.
void pcl::VoxelGrid< PointT >::applyFilter | ( | PointCloud & | output | ) | [protected, virtual] |
Downsample a Point Cloud using a voxelized grid approach.
[out] | output | the resultant point cloud message |
Implements pcl::Filter< PointT >.
Reimplemented in pcl::VoxelGridCovariance< PointT >, pcl::VoxelGridCovariance< PointTarget >, and pcl::VoxelGridLabel.
Definition at line 213 of file voxel_grid.hpp.
int pcl::VoxelGrid< PointT >::getCentroidIndex | ( | const PointT & | p | ) | [inline] |
Returns the index in the resulting downsampled cloud of the specified point.
[in] | p | the point to get the index at |
Definition at line 307 of file voxel_grid.h.
int pcl::VoxelGrid< PointT >::getCentroidIndexAt | ( | const Eigen::Vector3i & | ijk | ) | [inline] |
Returns the index in the downsampled cloud corresponding to a given set of coordinates.
[in] | ijk | the coordinates (i,j,k) in the grid (-1 if empty) |
Definition at line 364 of file voxel_grid.h.
Eigen::Vector3i pcl::VoxelGrid< PointT >::getDivisionMultiplier | ( | ) | [inline] |
Get the multipliers to be applied to the grid coordinates in order to find the centroid index (after filtering is performed).
Definition at line 296 of file voxel_grid.h.
bool pcl::VoxelGrid< PointT >::getDownsampleAllData | ( | ) | [inline] |
Get the state of the internal downsampling parameter (true if all fields need to be downsampled, false if just XYZ).
Definition at line 262 of file voxel_grid.h.
std::string const pcl::VoxelGrid< PointT >::getFilterFieldName | ( | ) | [inline] |
Get the name of the field used for filtering.
Definition at line 388 of file voxel_grid.h.
void pcl::VoxelGrid< PointT >::getFilterLimits | ( | double & | limit_min, |
double & | limit_max | ||
) | [inline] |
Get the field filter limits (min/max) set by the user. The default values are -FLT_MAX, FLT_MAX.
[out] | limit_min | the minimum allowed field value |
[out] | limit_max | the maximum allowed field value |
Definition at line 409 of file voxel_grid.h.
void pcl::VoxelGrid< PointT >::getFilterLimitsNegative | ( | bool & | limit_negative | ) | [inline] |
Get whether the data outside the interval (min/max) is to be returned (true) or inside (false).
[out] | limit_negative | true if data outside the interval [min; max] is to be returned, false otherwise |
Definition at line 429 of file voxel_grid.h.
bool pcl::VoxelGrid< PointT >::getFilterLimitsNegative | ( | ) | [inline] |
Get whether the data outside the interval (min/max) is to be returned (true) or inside (false).
Definition at line 438 of file voxel_grid.h.
Eigen::Vector3i pcl::VoxelGrid< PointT >::getGridCoordinates | ( | float | x, |
float | y, | ||
float | z | ||
) | [inline] |
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 353 of file voxel_grid.h.
std::vector<int> pcl::VoxelGrid< PointT >::getLeafLayout | ( | ) | [inline] |
Returns the layout of the leafs for fast access to cells relative to current position.
Definition at line 345 of file voxel_grid.h.
Eigen::Vector3f pcl::VoxelGrid< PointT >::getLeafSize | ( | ) | [inline] |
Get the voxel grid leaf size.
Definition at line 250 of file voxel_grid.h.
Eigen::Vector3i pcl::VoxelGrid< PointT >::getMaxBoxCoordinates | ( | ) | [inline] |
Get the minimum coordinates of the bounding box (after filtering is performed).
Definition at line 284 of file voxel_grid.h.
Eigen::Vector3i pcl::VoxelGrid< PointT >::getMinBoxCoordinates | ( | ) | [inline] |
Get the minimum coordinates of the bounding box (after filtering is performed).
Definition at line 278 of file voxel_grid.h.
std::vector<int> pcl::VoxelGrid< PointT >::getNeighborCentroidIndices | ( | const PointT & | reference_point, |
const Eigen::MatrixXi & | relative_coordinates | ||
) | [inline] |
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).
[in] | reference_point | the coordinates of the reference point (corresponding cell is allowed to be empty/out of bounds) |
[in] | relative_coordinates | matrix with the columns being the coordinates of the requested cells, relative to the reference point's cell |
Definition at line 321 of file voxel_grid.h.
Eigen::Vector3i pcl::VoxelGrid< PointT >::getNrDivisions | ( | ) | [inline] |
Get the number of divisions along all 3 axes (after filtering is performed).
Definition at line 290 of file voxel_grid.h.
bool pcl::VoxelGrid< PointT >::getSaveLeafLayout | ( | ) | [inline] |
Returns true if leaf layout information will to be saved for later access.
Definition at line 272 of file voxel_grid.h.
void pcl::VoxelGrid< PointT >::setDownsampleAllData | ( | bool | downsample | ) | [inline] |
Set to true if all fields need to be downsampled, or false if just XYZ.
[in] | downsample | the new value (true/false) |
Definition at line 256 of file voxel_grid.h.
void pcl::VoxelGrid< PointT >::setFilterFieldName | ( | const std::string & | field_name | ) | [inline] |
Provide the name of the field to be used for filtering data. In conjunction with setFilterLimits, points having values outside this interval will be discarded.
[in] | field_name | the name of the field that contains values used for filtering |
Definition at line 381 of file voxel_grid.h.
void pcl::VoxelGrid< PointT >::setFilterLimits | ( | const double & | limit_min, |
const double & | limit_max | ||
) | [inline] |
Set the field filter limits. All points having field values outside this interval will be discarded.
[in] | limit_min | the minimum allowed field value |
[in] | limit_max | the maximum allowed field value |
Definition at line 398 of file voxel_grid.h.
void pcl::VoxelGrid< PointT >::setFilterLimitsNegative | ( | const bool | limit_negative | ) | [inline] |
Set to true if we want to return the data outside the interval specified by setFilterLimits (min, max). Default: false.
[in] | limit_negative | return data inside the interval (false) or outside (true) |
Definition at line 420 of file voxel_grid.h.
void pcl::VoxelGrid< PointT >::setLeafSize | ( | const Eigen::Vector4f & | leaf_size | ) | [inline] |
Set the voxel grid leaf size.
[in] | leaf_size | the voxel grid leaf size |
Definition at line 222 of file voxel_grid.h.
void pcl::VoxelGrid< PointT >::setLeafSize | ( | float | lx, |
float | ly, | ||
float | lz | ||
) | [inline] |
Set the voxel grid leaf size.
[in] | lx | the leaf size for X |
[in] | ly | the leaf size for Y |
[in] | lz | the leaf size for Z |
Definition at line 238 of file voxel_grid.h.
void pcl::VoxelGrid< PointT >::setSaveLeafLayout | ( | bool | save_leaf_layout | ) | [inline] |
Set to true if leaf layout information needs to be saved for later access.
[in] | save_leaf_layout | the new value (true/false) |
Definition at line 268 of file voxel_grid.h.
Eigen::Vector4i pcl::VoxelGrid< PointT >::div_b_ [protected] |
Definition at line 460 of file voxel_grid.h.
Eigen::Vector4i pcl::VoxelGrid< PointT >::divb_mul_ [protected] |
Definition at line 460 of file voxel_grid.h.
bool pcl::VoxelGrid< PointT >::downsample_all_data_ [protected] |
Set to true if all fields need to be downsampled, or false if just XYZ.
Definition at line 451 of file voxel_grid.h.
std::string pcl::VoxelGrid< PointT >::filter_field_name_ [protected] |
The desired user filter field name.
Definition at line 463 of file voxel_grid.h.
double pcl::VoxelGrid< PointT >::filter_limit_max_ [protected] |
The maximum allowed filter value a point will be considered from.
Definition at line 469 of file voxel_grid.h.
double pcl::VoxelGrid< PointT >::filter_limit_min_ [protected] |
The minimum allowed filter value a point will be considered from.
Definition at line 466 of file voxel_grid.h.
bool pcl::VoxelGrid< PointT >::filter_limit_negative_ [protected] |
Set to true if we want to return the data outside (filter_limit_min_;filter_limit_max_). Default: false.
Definition at line 472 of file voxel_grid.h.
Eigen::Array4f pcl::VoxelGrid< PointT >::inverse_leaf_size_ [protected] |
Internal leaf sizes stored as 1/leaf_size_ for efficiency reasons.
Definition at line 448 of file voxel_grid.h.
std::vector<int> pcl::VoxelGrid< PointT >::leaf_layout_ [protected] |
The leaf layout information for fast access to cells relative to current position.
Definition at line 457 of file voxel_grid.h.
Eigen::Vector4f pcl::VoxelGrid< PointT >::leaf_size_ [protected] |
The size of a leaf.
Definition at line 445 of file voxel_grid.h.
Eigen::Vector4i pcl::VoxelGrid< PointT >::max_b_ [protected] |
Definition at line 460 of file voxel_grid.h.
Eigen::Vector4i pcl::VoxelGrid< PointT >::min_b_ [protected] |
The minimum and maximum bin coordinates, the number of divisions, and the division multiplier.
Definition at line 460 of file voxel_grid.h.
bool pcl::VoxelGrid< PointT >::save_leaf_layout_ [protected] |
Set to true if leaf layout information needs to be saved in leaf_layout_.
Definition at line 454 of file voxel_grid.h.