Loading...
Searching...
No Matches
pcl::FrustumCulling< PointT > Class Template Reference
Module filters

FrustumCulling filters points inside a frustum given by pose and field of view of the camera. More...

`#include <pcl/filters/frustum_culling.h>`

Inheritance diagram for pcl::FrustumCulling< PointT >:

## Public Types

using | Ptr = shared_ptr<FrustumCulling<PointT> >
using | ConstPtr = shared_ptr<const FrustumCulling<PointT> >
Public Types inherited from pcl::FilterIndices< PointT >
using | PointCloud = pcl::PointCloud<PointT>
using | Ptr = shared_ptr<FilterIndices<PointT> >
using | ConstPtr = shared_ptr<const FilterIndices<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

## Public Member Functions

| FrustumCulling (bool extract_removed_indices=false)
void | setCameraPose (const Eigen::Matrix4f &camera_pose)
| Set the pose of the camera w.r.t the origin.
Eigen::Matrix4f | getCameraPose () const
| Get the pose of the camera w.r.t the origin.
void | setHorizontalFOV (float hfov)
| Set the horizontal field of view for the camera in degrees.
void | setHorizontalFOV (float fov_left_bound, float fov_right_bound)
| Set the horizontal field of view for the camera in degrees.
float | getHorizontalFOV () const
| Get the horizontal field of view for the camera in degrees.
void | getHorizontalFOV (float &fov_left_bound, float &fov_right_bound) const
| Get the horizontal field of view for the camera in degrees.
void | setVerticalFOV (float vfov)
| Set the vertical field of view for the camera in degrees.
void | setVerticalFOV (float fov_lower_bound, float fov_upper_bound)
| Set the vertical field of view for the camera in degrees.
float | getVerticalFOV () const
| Get the vertical field of view for the camera in degrees.
void | getVerticalFOV (float &fov_lower_bound, float &fov_upper_bound) const
| Get the vertical field of view for the camera in degrees.
void | setNearPlaneDistance (float np_dist)
| Set the near plane distance.
float | getNearPlaneDistance () const
| Get the near plane distance.
void | setFarPlaneDistance (float fp_dist)
| Set the far plane distance.
float | getFarPlaneDistance () const
| Get the far plane distance.
void | setRegionOfInterest (float roi_x, float roi_y, float roi_w, float roi_h)
| Set the region of interest (ROI) in normalized values.
void | getRegionOfInterest (float &roi_x, float &roi_y, float &roi_w, float &roi_h) const
| Get the region of interest (ROI) in normalized values.
Public Member Functions inherited from pcl::FilterIndices< PointT >
| FilterIndices (bool extract_removed_indices=false)
| Constructor.
void | filter (Indices &indices)
| Calls the filtering method and returns the filtered point cloud indices.
void | setNegative (bool negative)
| Set whether the regular conditions for points filtering should apply, or the inverted conditions.
bool | getNegative () const
| Get whether the regular conditions for points filtering should apply, or the inverted conditions.
void | setKeepOrganized (bool keep_organized)
| Set whether the filtered points should be kept and set to the value given through setUserFilterValue (default: NaN), or removed from the PointCloud, thus potentially breaking its organized structure.
bool | getKeepOrganized () const
| Get whether the filtered points should be kept and set to the value given through setUserFilterValue (default = NaN), or removed from the PointCloud, thus potentially breaking its organized structure.
void | setUserFilterValue (float value)
| Provide a value that the filtered points should be set to instead of removing them.
Public Member Functions inherited from pcl::Filter< PointT >
| Filter (bool extract_removed_indices=false)
| Empty constructor.
IndicesConstPtr const | getRemovedIndices () const
| Get the point indices being removed.
void | getRemovedIndices (PointIndices &pi)
| Get the point indices being removed.
void | filter (PointCloud &output)
| Calls the filtering method and returns the filtered dataset in output.
Public Member Functions inherited from pcl::PCLBase< PointT >
| PCLBase ()
| Empty constructor.
| PCLBase (const PCLBase &base)
| Copy constructor.
virtual | ~PCLBase ()=default
| Destructor.
virtual void | setInputCloud (const PointCloudConstPtr &cloud)
| Provide a pointer to the input dataset.
PointCloudConstPtr const | getInputCloud () const
| Get a pointer to the input point cloud dataset.
virtual void | setIndices (const IndicesPtr &indices)
| Provide a pointer to the vector of indices that represents the input data.
virtual void | setIndices (const IndicesConstPtr &indices)
| Provide a pointer to the vector of indices that represents the input data.
virtual void | setIndices (const PointIndicesConstPtr &indices)
| Provide a pointer to the vector of indices that represents the input data.
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.
IndicesPtr | getIndices ()
| Get a pointer to the vector of indices used.
IndicesConstPtr const | getIndices () const
| Get a pointer to the vector of indices used.
const PointT & | operator[] (std::size_t pos) const
| Override PointCloud operator[] to shorten code.

## Protected Member Functions

void | applyFilter (Indices &indices) override
| Sample of point indices.
Protected Member Functions inherited from pcl::FilterIndices< PointT >
void | applyFilter (PointCloud &output) override
| Abstract filter method for point cloud.
Protected Member Functions inherited from pcl::Filter< PointT >
const std::string & | getClassName () const
| Get a string representation of the name of this class.
Protected Member Functions inherited from pcl::PCLBase< PointT >
bool | initCompute ()
| This method should get called before starting the actual computation.
bool | deinitCompute ()
| This method should get called after finishing the actual computation.

## Additional Inherited Members

Protected Attributes inherited from pcl::FilterIndices< PointT >
bool | negative_ {false}
| False = normal filter behavior (default), true = inverted behavior.
bool | keep_organized_ {false}
| False = remove points (default), true = redefine points, keep structure.
float | user_filter_value_
| The user given value that the filtered point dimensions should be set to (default = NaN).
Protected Attributes inherited from pcl::Filter< PointT >
IndicesPtr | removed_indices_
| Indices of the points that are removed.
std::string | filter_name_
| The filter name.
bool | extract_removed_indices_
| Set to true if we want to return the indices of the removed points.
Protected Attributes inherited from pcl::PCLBase< PointT >
PointCloudConstPtr | input_
| The input point cloud dataset.
IndicesPtr | indices_
| A pointer to the vector of point indices to use.
bool | use_indices_
| Set to true if point indices are used.
bool | fake_indices_
| If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud.

## Detailed Description

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

FrustumCulling filters points inside a frustum given by pose and field of view of the camera.

Code example:

pcl::PointCloud <pcl::PointXYZ>::Ptr source;
// .. read or fill the source cloud
pcl::FrustumCulling<pcl::PointXYZ> fc;
fc.setInputCloud (source);
fc.setVerticalFOV (45);
fc.setHorizontalFOV (60);
fc.setNearPlaneDistance (5.0);
fc.setFarPlaneDistance (15);
Eigen::Matrix4f camera_pose;
// .. read or input the camera pose from a registration algorithm.
fc.setCameraPose (camera_pose);
pcl::PointCloud <pcl::PointXYZ> target;
fc.filter (target);
pcl::FilterIndices::filter
void filter(Indices &indices)
Calls the filtering method and returns the filtered point cloud indices.
Definition filter_indices.h:100
pcl::FrustumCulling
FrustumCulling filters points inside a frustum given by pose and field of view of the camera.
Definition frustum_culling.h:77
pcl::FrustumCulling::setNearPlaneDistance
void setNearPlaneDistance(float np_dist)
Set the near plane distance.
Definition frustum_culling.h:252
pcl::FrustumCulling::setVerticalFOV
void setVerticalFOV(float vfov)
Set the vertical field of view for the camera in degrees.
Definition frustum_culling.h:193
pcl::FrustumCulling::setFarPlaneDistance
void setFarPlaneDistance(float fp_dist)
Set the far plane distance.
Definition frustum_culling.h:274
pcl::FrustumCulling::setHorizontalFOV
void setHorizontalFOV(float hfov)
Set the horizontal field of view for the camera in degrees.
Definition frustum_culling.h:133
pcl::FrustumCulling::setCameraPose
void setCameraPose(const Eigen::Matrix4f &camera_pose)
Set the pose of the camera w.r.t the origin.
Definition frustum_culling.h:116
pcl::PCLBase::setInputCloud
virtual void setInputCloud(const PointCloudConstPtr &cloud)
Provide a pointer to the input dataset.
Definition pcl_base.hpp:65
pcl::PointCloud::Ptr
shared_ptr< PointCloud< PointT > > Ptr
Definition point_cloud.h:414

Author
  Aravindhan K Krishnan

Definition at line 76 of file frustum_culling.h.

## Member Typedef Documentation

## ConstPtr

template<typename PointT>

using pcl::FrustumCulling< PointT >::ConstPtr = shared_ptr<const FrustumCulling<PointT> >

Definition at line 85 of file frustum_culling.h.

## Ptr

template<typename PointT>

using pcl::FrustumCulling< PointT >::Ptr = shared_ptr<FrustumCulling<PointT> >

Definition at line 84 of file frustum_culling.h.

## Constructor & Destructor Documentation

## FrustumCulling()

template<typename PointT>

pcl::FrustumCulling< PointT >::FrustumCulling | ( | bool | extract_removed_indices = false | ) |

inline

Definition at line 90 of file frustum_culling.h.

References pcl::Filter< PointT >::filter_name_, and pcl::FilterIndices< PointT >::FilterIndices().

## Member Function Documentation

## applyFilter()

template<typename PointT>

void pcl::FrustumCulling< PointT >::applyFilter | ( | Indices & | indices | ) |

override protected virtual

Sample of point indices.

Parameters

  [out] | indices | the resultant point cloud indices

Implements pcl::FilterIndices< PointT >.

Definition at line 46 of file frustum_culling.hpp.

References pcl::Filter< PointT >::extract_removed_indices_, pcl::PCLBase< PointT >::indices_, pcl::PCLBase< PointT >::input_, M_PI, pcl::FilterIndices< PointT >::negative_, and pcl::Filter< PointT >::removed_indices_.

## getCameraPose()

template<typename PointT>

Eigen::Matrix4f pcl::FrustumCulling< PointT >::getCameraPose | ( |  | ) | const

inline

Get the pose of the camera w.r.t the origin.

Definition at line 123 of file frustum_culling.h.

## getFarPlaneDistance()

template<typename PointT>

float pcl::FrustumCulling< PointT >::getFarPlaneDistance | ( |  | ) | const

inline

Get the far plane distance.

Definition at line 286 of file frustum_culling.h.

## getHorizontalFOV() [1/2]

template<typename PointT>

float pcl::FrustumCulling< PointT >::getHorizontalFOV | ( |  | ) | const

inline

Get the horizontal field of view for the camera in degrees.

Definition at line 169 of file frustum_culling.h.

## getHorizontalFOV() [2/2]

template<typename PointT>

void pcl::FrustumCulling< PointT >::getHorizontalFOV | ( | float & | fov_left_bound,
|  | float & | fov_right_bound ) const

inline

Get the horizontal field of view for the camera in degrees.

Definition at line 182 of file frustum_culling.h.

## getNearPlaneDistance()

template<typename PointT>

float pcl::FrustumCulling< PointT >::getNearPlaneDistance | ( |  | ) | const

inline

Get the near plane distance.

Definition at line 264 of file frustum_culling.h.

## getRegionOfInterest()

template<typename PointT>

void pcl::FrustumCulling< PointT >::getRegionOfInterest | ( | float & | roi_x,
|  | float & | roi_y,
|  | float & | roi_w,
|  | float & | roi_h ) const

inline

Get the region of interest (ROI) in normalized values.

Parameters

  [in] | roi_x | X center position of ROI
  [in] | roi_y | Y center position of ROI
  [in] | roi_w | Width of ROI
  [in] | roi_h | Height of ROI

Definition at line 327 of file frustum_culling.h.

## getVerticalFOV() [1/2]

template<typename PointT>

float pcl::FrustumCulling< PointT >::getVerticalFOV | ( |  | ) | const

inline

Get the vertical field of view for the camera in degrees.

Definition at line 229 of file frustum_culling.h.

## getVerticalFOV() [2/2]

template<typename PointT>

void pcl::FrustumCulling< PointT >::getVerticalFOV | ( | float & | fov_lower_bound,
|  | float & | fov_upper_bound ) const

inline

Get the vertical field of view for the camera in degrees.

Definition at line 242 of file frustum_culling.h.

## setCameraPose()

template<typename PointT>

void pcl::FrustumCulling< PointT >::setCameraPose | ( | const Eigen::Matrix4f & | camera_pose | ) |

inline

Set the pose of the camera w.r.t the origin.

Parameters

  [in] | camera_pose | the camera pose

Note: This assumes a coordinate system where X is forward, Y is up, and Z is right. To convert from the traditional camera coordinate system (X right, Y down, Z forward), one can use:

Eigen::Matrix4f pose_orig = //pose in camera coordinates
Eigen::Matrix4f cam2robot;
cam2robot << 0, 0, 1, 0
0,-1, 0, 0
1, 0, 0, 0
0, 0, 0, 1;
Eigen::Matrix4f pose_new = pose_orig * cam2robot;
fc.setCameraPose (pose_new);

Definition at line 116 of file frustum_culling.h.

## setFarPlaneDistance()

template<typename PointT>

void pcl::FrustumCulling< PointT >::setFarPlaneDistance | ( | float | fp_dist | ) |

inline

Set the far plane distance.

Parameters

  [in] | fp_dist | the far plane distance. You can set this to std::numeric_limits<float>::max(), then points will not be filtered by the far plane.

Definition at line 274 of file frustum_culling.h.

## setHorizontalFOV() [1/2]

template<typename PointT>

void pcl::FrustumCulling< PointT >::setHorizontalFOV | ( | float | fov_left_bound,
|  | float | fov_right_bound )

inline

Set the horizontal field of view for the camera in degrees.

Parameters

  [in] | fov_left_bound | the left bound of horizontal field of view

  [in]

  fov_right_bound

  the right bound of horizontal field of view Note: Bounds can be either positive or negative values. Negative value means the camera would look to its left, and positive value means the camera would look to its right. In general cases, fov_left_bound should be set to a negative value, if it is set to a positive value, the camera would only look to its right. Also note that setHorizontalFOV(-30.0, 30.0) is equivalent to setHorizontalFOV(60.0).

Definition at line 155 of file frustum_culling.h.

## setHorizontalFOV() [2/2]

template<typename PointT>

void pcl::FrustumCulling< PointT >::setHorizontalFOV | ( | float | hfov | ) |

inline

Set the horizontal field of view for the camera in degrees.

Parameters

  [in] | hfov | the field of view Note: setHorizontalFOV(60.0) is equivalent to setHorizontalFOV(-30.0, 30.0).

Definition at line 133 of file frustum_culling.h.

## setNearPlaneDistance()

template<typename PointT>

void pcl::FrustumCulling< PointT >::setNearPlaneDistance | ( | float | np_dist | ) |

inline

Set the near plane distance.

Parameters

  [in] | np_dist | the near plane distance. You can set this to 0 to disable near-plane filtering and extract a rectangular pyramid instead of a frustum.

Definition at line 252 of file frustum_culling.h.

## setRegionOfInterest()

template<typename PointT>

void pcl::FrustumCulling< PointT >::setRegionOfInterest | ( | float | roi_x,
|  | float | roi_y,
|  | float | roi_w,
|  | float | roi_h )

inline

Set the region of interest (ROI) in normalized values.

Default value of ROI: roi_{x, y} = 0.5, roi_{w, h} = 1.0 This corresponds to maximal FoV and returns all the points in the frustum Can be used to cut out objects based on 2D bounding boxes by object detection.

Parameters

  [in] | roi_x | X center position of ROI
  [in] | roi_y | Y center position of ROI
  [in] | roi_w | Width of ROI
  [in] | roi_h | Height of ROI

Definition at line 303 of file frustum_culling.h.

## setVerticalFOV() [1/2]

template<typename PointT>

void pcl::FrustumCulling< PointT >::setVerticalFOV | ( | float | fov_lower_bound,
|  | float | fov_upper_bound )

inline

Set the vertical field of view for the camera in degrees.

Parameters

  [in] | fov_lower_bound | the lower bound of vertical field of view

  [in]

  fov_upper_bound

  the upper bound of vertical field of view Note: Bounds can be either positive or negative values. Negative value means the camera would look down, and positive value means the camera would look up. In general cases, fov_lower_bound should be set to a negative value, if it is set to a positive value, the camera would only look up. Also note that setVerticalFOV(-30.0, 30.0) is equivalent to setVerticalFOV(60.0).

Definition at line 215 of file frustum_culling.h.

## setVerticalFOV() [2/2]

template<typename PointT>

void pcl::FrustumCulling< PointT >::setVerticalFOV | ( | float | vfov | ) |

inline

Set the vertical field of view for the camera in degrees.

Parameters

  [in] | vfov | the field of view Note: setVerticalFOV(60.0) is equivalent to setVerticalFOV(-30.0, 30.0).

Definition at line 193 of file frustum_culling.h.

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

- pcl/filters/frustum_culling.h
- pcl/filters/impl/frustum_culling.hpp