W3cubDocs

/PointCloudLibrary

That's a very specialized and simple octree class. More...

#include <pcl/recognition/ransac_based/orr_octree.h>

Classes

class Node

Public Types

using PointCloudIn = pcl::PointCloud< pcl::PointXYZ >
using PointCloudOut = pcl::PointCloud< pcl::PointXYZ >
using PointCloudN = pcl::PointCloud< pcl::Normal >

Public Member Functions

ORROctree ()
virtual ~ORROctree ()
void clear ()
void build (const PointCloudIn &points, float voxel_size, const PointCloudN *normals=nullptr, float enlarge_bounds=0.00001f)
Creates an octree which encloses 'points' and with leaf size equal to 'voxel_size'. More...
void build (const float *bounds, float voxel_size)
Creates an empty octree with bounds at least as large as the ones provided as input and with leaf size equal to 'voxel_size'. More...
ORROctree::Node * createLeaf (float x, float y, float z)
Creates the leaf containing p = (x, y, z) and returns a pointer to it, however, only if p lies within the octree bounds! A more general version which allows p to be out of bounds is not implemented yet. More...
void getFullLeavesIntersectedBySphere (const float *p, float radius, std::list< ORROctree::Node * > &out) const
This method returns a super set of the full leavess which are intersected by the sphere with radius 'radius' and centered at 'p'. More...
ORROctree::Node * getRandomFullLeafOnSphere (const float *p, float radius) const
Randomly chooses and returns a full leaf that is intersected by the sphere with center 'p' and 'radius'. More...
ORROctree::Node * getLeaf (int i, int j, int k)
Since the leaves are aligned in a rectilinear grid, each leaf has a unique id. More...
ORROctree::Node * getLeaf (float x, float y, float z)
Returns a pointer to the leaf containing p = (x, y, z) or NULL if no such leaf exists. More...
void deleteBranch (Node *node)
Deletes the branch 'node' is part of. More...
std::vector< ORROctree::Node * > & getFullLeaves ()
Returns a vector with all octree leaves which contain at least one point. More...
const std::vector< ORROctree::Node * > & getFullLeaves () const
void getFullLeavesPoints (PointCloudOut &out) const
void getNormalsOfFullLeaves (PointCloudN &out) const
ORROctree::Node * getRoot ()
const float * getBounds () const
void getBounds (float b[6]) const
float getVoxelSize () const
void insertNeighbors (Node *node)

Protected Attributes

float voxel_size_
float bounds_ [6]
int tree_levels_
Node * root_
std::vector< Node * > full_leaves_

Detailed Description

That's a very specialized and simple octree class.

That's the way it is intended to be, that's why no templates and stuff like this.

Author
Chavdar Papazov

Definition at line 68 of file orr_octree.h.

Member Typedef Documentation

PointCloudIn

PointCloudN

PointCloudOut

Constructor & Destructor Documentation

ORROctree()

pcl::recognition::ORROctree::ORROctree ( )

~ORROctree()

virtual pcl::recognition::ORROctree::~ORROctree ( )
inlinevirtual

Definition at line 273 of file orr_octree.h.

Member Function Documentation

build() [1/2]

void pcl::recognition::ORROctree::build ( const float * bounds,
float voxel_size
)

Creates an empty octree with bounds at least as large as the ones provided as input and with leaf size equal to 'voxel_size'.

build() [2/2]

void pcl::recognition::ORROctree::build ( const PointCloudIn & points,
float voxel_size,
const PointCloudN * normals = nullptr,
float enlarge_bounds = 0.00001f
)

Creates an octree which encloses 'points' and with leaf size equal to 'voxel_size'.

'enlarge_bounds' makes sure that no points from the input will lie on the octree boundary by enlarging the bounds by that factor. For example, enlarge_bounds = 1 means that the bounds will be enlarged by 100%. The default value is fine.

clear()

void pcl::recognition::ORROctree::clear ( )

createLeaf()

ORROctree::Node* pcl::recognition::ORROctree::createLeaf ( float x,
float y,
float z
)
inline

Creates the leaf containing p = (x, y, z) and returns a pointer to it, however, only if p lies within the octree bounds! A more general version which allows p to be out of bounds is not implemented yet.

The method returns NULL if p is not within the root bounds. If the leaf containing p already exists nothing happens and method just returns a pointer to the leaf.

Definition at line 295 of file orr_octree.h.

References pcl::recognition::ORROctree::Node::createChildren(), pcl::recognition::ORROctree::Node::getCenter(), pcl::recognition::ORROctree::Node::getChild(), pcl::recognition::ORROctree::Node::getData(), and pcl::recognition::ORROctree::Node::setData().

deleteBranch()

void pcl::recognition::ORROctree::deleteBranch ( Node * node )

Deletes the branch 'node' is part of.

getBounds() [1/2]

const float* pcl::recognition::ORROctree::getBounds ( ) const
inline

Definition at line 422 of file orr_octree.h.

getBounds() [2/2]

void pcl::recognition::ORROctree::getBounds ( float b[6] ) const
inline

Definition at line 428 of file orr_octree.h.

getFullLeaves() [1/2]

std::vector<ORROctree::Node*>& pcl::recognition::ORROctree::getFullLeaves ( )
inline

Returns a vector with all octree leaves which contain at least one point.

Definition at line 407 of file orr_octree.h.

getFullLeaves() [2/2]

const std::vector<ORROctree::Node*>& pcl::recognition::ORROctree::getFullLeaves ( ) const
inline

Definition at line 410 of file orr_octree.h.

getFullLeavesIntersectedBySphere()

void pcl::recognition::ORROctree::getFullLeavesIntersectedBySphere ( const float * p,
float radius,
std::list< ORROctree::Node * > & out
) const

This method returns a super set of the full leavess which are intersected by the sphere with radius 'radius' and centered at 'p'.

Pointers to the intersected full leaves are saved in 'out'. The method computes a super set in the sense that in general not all leaves saved in 'out' are really intersected by the sphere. The intersection test is based on the leaf radius (since its faster than checking all leaf corners and sides), so we report more leaves than we should, but still, this is a fair approximation.

getFullLeavesPoints()

void pcl::recognition::ORROctree::getFullLeavesPoints ( PointCloudOut & out ) const

getLeaf() [1/2]

ORROctree::Node* pcl::recognition::ORROctree::getLeaf ( float x,
float y,
float z
)
inline

Returns a pointer to the leaf containing p = (x, y, z) or NULL if no such leaf exists.

Definition at line 368 of file orr_octree.h.

References pcl::recognition::ORROctree::Node::getCenter(), pcl::recognition::ORROctree::Node::getChild(), and pcl::recognition::ORROctree::Node::hasChildren().

getLeaf() [2/2]

ORROctree::Node* pcl::recognition::ORROctree::getLeaf ( int i,
int j,
int k
)
inline

Since the leaves are aligned in a rectilinear grid, each leaf has a unique id.

The method returns the leaf with id [i, j, k] or NULL is no such leaf exists.

Definition at line 356 of file orr_octree.h.

getNormalsOfFullLeaves()

void pcl::recognition::ORROctree::getNormalsOfFullLeaves ( PointCloudN & out ) const

getRandomFullLeafOnSphere()

ORROctree::Node* pcl::recognition::ORROctree::getRandomFullLeafOnSphere ( const float * p,
float radius
) const

Randomly chooses and returns a full leaf that is intersected by the sphere with center 'p' and 'radius'.

Returns NULL if no leaf is intersected by that sphere.

getRoot()

ORROctree::Node* pcl::recognition::ORROctree::getRoot ( )
inline

Definition at line 419 of file orr_octree.h.

getVoxelSize()

float pcl::recognition::ORROctree::getVoxelSize ( ) const
inline

Definition at line 434 of file orr_octree.h.

insertNeighbors()

void pcl::recognition::ORROctree::insertNeighbors ( Node * node )
inline

Member Data Documentation

bounds_

float pcl::recognition::ORROctree::bounds_[6]
protected

Definition at line 475 of file orr_octree.h.

full_leaves_

std::vector<Node*> pcl::recognition::ORROctree::full_leaves_
protected

Definition at line 478 of file orr_octree.h.

root_

Node* pcl::recognition::ORROctree::root_
protected

Definition at line 477 of file orr_octree.h.

tree_levels_

int pcl::recognition::ORROctree::tree_levels_
protected

Definition at line 476 of file orr_octree.h.

voxel_size_

float pcl::recognition::ORROctree::voxel_size_
protected

Definition at line 475 of file orr_octree.h.


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

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1recognition_1_1_o_r_r_octree.html