Point Cloud Library (PCL)
1.14.1-dev
|
FrustumCulling filters points inside a frustum given by pose and field of view of the camera. More...
#include <pcl/filters/frustum_culling.h>
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. More... | |
Eigen::Matrix4f | getCameraPose () const |
Get the pose of the camera w.r.t the origin. More... | |
void | setHorizontalFOV (float hfov) |
Set the horizontal field of view for the camera in degrees. More... | |
void | setHorizontalFOV (float fov_left_bound, float fov_right_bound) |
Set the horizontal field of view for the camera in degrees. More... | |
float | getHorizontalFOV () const |
Get the horizontal field of view for the camera in degrees. More... | |
void | getHorizontalFOV (float &fov_left_bound, float &fov_right_bound) const |
Get the horizontal field of view for the camera in degrees. More... | |
void | setVerticalFOV (float vfov) |
Set the vertical field of view for the camera in degrees. More... | |
void | setVerticalFOV (float fov_lower_bound, float fov_upper_bound) |
Set the vertical field of view for the camera in degrees. More... | |
float | getVerticalFOV () const |
Get the vertical field of view for the camera in degrees. More... | |
void | getVerticalFOV (float &fov_lower_bound, float &fov_upper_bound) const |
Get the vertical field of view for the camera in degrees. More... | |
void | setNearPlaneDistance (float np_dist) |
Set the near plane distance. More... | |
float | getNearPlaneDistance () const |
Get the near plane distance. More... | |
void | setFarPlaneDistance (float fp_dist) |
Set the far plane distance. More... | |
float | getFarPlaneDistance () const |
Get the far plane distance. More... | |
void | setRegionOfInterest (float roi_x, float roi_y, float roi_w, float roi_h) |
Set the region of interest (ROI) in normalized values. More... | |
void | getRegionOfInterest (float &roi_x, float &roi_y, float &roi_w, float &roi_h) const |
Get the region of interest (ROI) in normalized values. More... | |
Public Member Functions inherited from pcl::FilterIndices< PointT > | |
FilterIndices (bool extract_removed_indices=false) | |
Constructor. More... | |
void | filter (Indices &indices) |
Calls the filtering method and returns the filtered point cloud indices. More... | |
void | setNegative (bool negative) |
Set whether the regular conditions for points filtering should apply, or the inverted conditions. More... | |
bool | getNegative () const |
Get whether the regular conditions for points filtering should apply, or the inverted conditions. More... | |
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. More... | |
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. More... | |
void | setUserFilterValue (float value) |
Provide a value that the filtered points should be set to instead of removing them. 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 Member Functions | |
void | applyFilter (Indices &indices) override |
Sample of point indices. More... | |
Protected Member Functions inherited from pcl::FilterIndices< PointT > | |
void | applyFilter (PointCloud &output) override |
Abstract filter method for point cloud. 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... | |
Additional Inherited Members | |
Protected Attributes inherited from pcl::FilterIndices< PointT > | |
bool | negative_ {false} |
False = normal filter behavior (default), true = inverted behavior. More... | |
bool | keep_organized_ {false} |
False = remove points (default), true = redefine points, keep structure. More... | |
float | user_filter_value_ |
The user given value that the filtered point dimensions should be set to (default = NaN). 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... | |
FrustumCulling filters points inside a frustum given by pose and field of view of the camera.
Code example:
Definition at line 76 of file frustum_culling.h.
using pcl::FrustumCulling< PointT >::ConstPtr = shared_ptr<const FrustumCulling<PointT> > |
Definition at line 85 of file frustum_culling.h.
using pcl::FrustumCulling< PointT >::Ptr = shared_ptr<FrustumCulling<PointT> > |
Definition at line 84 of file frustum_culling.h.
|
inline |
Definition at line 90 of file frustum_culling.h.
References pcl::Filter< PointT >::filter_name_.
|
overrideprotectedvirtual |
Sample of point indices.
[out] | indices | the resultant point cloud indices |
Implements pcl::FilterIndices< PointT >.
Definition at line 46 of file frustum_culling.hpp.
References M_PI.
|
inline |
Get the pose of the camera w.r.t the origin.
Definition at line 123 of file frustum_culling.h.
|
inline |
Get the far plane distance.
Definition at line 286 of file frustum_culling.h.
|
inline |
Get the horizontal field of view for the camera in degrees.
Definition at line 169 of file frustum_culling.h.
|
inline |
Get the horizontal field of view for the camera in degrees.
Definition at line 182 of file frustum_culling.h.
|
inline |
Get the near plane distance.
Definition at line 264 of file frustum_culling.h.
|
inline |
Get the region of interest (ROI) in normalized values.
[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.
|
inline |
Get the vertical field of view for the camera in degrees.
Definition at line 229 of file frustum_culling.h.
|
inline |
Get the vertical field of view for the camera in degrees.
Definition at line 242 of file frustum_culling.h.
|
inline |
Set the pose of the camera w.r.t the origin.
[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:
Definition at line 116 of file frustum_culling.h.
|
inline |
Set the far plane distance.
[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.
|
inline |
Set the horizontal field of view for the camera in degrees.
[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.
|
inline |
Set the horizontal field of view for the camera in degrees.
[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.
|
inline |
Set the near plane distance.
[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.
|
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.
[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.
|
inline |
Set the vertical field of view for the camera in degrees.
[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.
|
inline |
Set the vertical field of view for the camera in degrees.
[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.