pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT > Class Template Reference
[Module outofcore]

OutofcoreOctreeBaseNode Class internally representing nodes of an outofcore octree, with accessors to its data via the octree_disk_container class or octree_ram_container class, whichever it is templated against. More...

#include <pcl/outofcore/octree_base_node.h>

Inheritance diagram for pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >:
Inheritance graph
[legend]
Collaboration diagram for pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef OutofcoreOctreeBase
< OutofcoreOctreeDiskContainer
< PointT >, PointT
octree_disk
typedef
OutofcoreOctreeBaseNode
< OutofcoreOctreeDiskContainer
< PointT >, PointT
octree_disk_node
typedef std::vector< PointT,
Eigen::aligned_allocator
< PointT > > 
AlignedPointTVector
typedef pcl::octree::node_type_t node_type_t

Public Member Functions

 OutofcoreOctreeBaseNode ()
 Empty constructor; sets pointers for children and for bounding boxes to 0.
 OutofcoreOctreeBaseNode (const Eigen::Vector3d &bb_min, const Eigen::Vector3d &bb_max, OutofcoreOctreeBase< ContainerT, PointT > *const tree, const boost::filesystem::path &root_name)
 Create root node and directory.
virtual ~OutofcoreOctreeBaseNode ()
 Will recursively delete all children calling recFreeChildrein.
virtual void getBoundingBox (Eigen::Vector3d &min_bb, Eigen::Vector3d &max_bb) const
 gets the minimum and maximum corner of the bounding box represented by this node
const boost::filesystem::path & getPCDFilename () const
const boost::filesystem::path & getMetadataFilename () const
void queryFrustum (const double planes[24], std::list< std::string > &file_names)
void queryFrustum (const double planes[24], std::list< std::string > &file_names, const boost::uint32_t query_depth, const bool skip_vfc_check=false)
void queryFrustum (const double planes[24], const Eigen::Vector3d &eye, const Eigen::Matrix4d &view_projection_matrix, std::list< std::string > &file_names, const boost::uint32_t query_depth, const bool skip_vfc_check=false)
virtual void queryBBIncludes (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, size_t query_depth, AlignedPointTVector &dst)
 Recursively add points that fall into the queried bounding box up to the query_depth.
virtual void queryBBIncludes (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, size_t query_depth, const pcl::PCLPointCloud2::Ptr &dst_blob)
 Recursively add points that fall into the queried bounding box up to the query_depth.
virtual void queryBBIncludes_subsample (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, boost::uint64_t query_depth, const double percent, AlignedPointTVector &v)
 Recursively add points that fall into the queried bounding box up to the query_depth.
virtual void queryBBIncludes_subsample (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, boost::uint64_t query_depth, const pcl::PCLPointCloud2::Ptr &dst_blob, double percent=1.0)
virtual void queryBBIntersects (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, const boost::uint32_t query_depth, std::list< std::string > &file_names)
 Recursive acquires PCD paths to any node with which the queried bounding box intersects (at query_depth only).
virtual void printBoundingBox (const size_t query_depth) const
 Write the voxel size to stdout at query_depth.
virtual boost::uint64_t addDataToLeaf (const AlignedPointTVector &p, const bool skip_bb_check=true)
 add point to this node if we are a leaf, or find the leaf below us that is supposed to take the point
virtual boost::uint64_t addDataToLeaf (const std::vector< const PointT * > &p, const bool skip_bb_check=true)
virtual boost::uint64_t addPointCloud (const pcl::PCLPointCloud2::Ptr &input_cloud, const bool skip_bb_check=false)
 Add a single PCLPointCloud2 object into the octree.
virtual boost::uint64_t addPointCloud_and_genLOD (const pcl::PCLPointCloud2::Ptr input_cloud)
 Add a single PCLPointCloud2 into the octree and build the subsampled LOD during construction; this method of LOD construction is not multiresolution.
virtual boost::uint64_t addDataToLeaf_and_genLOD (const AlignedPointTVector &p, const bool skip_bb_check)
 Recursively add points to the leaf and children subsampling LODs on the way down.
void writeVPythonVisual (std::ofstream &file)
 Write a python visual script to file.
virtual int read (pcl::PCLPointCloud2::Ptr &output_cloud)
virtual node_type_t getNodeType () const
 Pure virtual method for receiving the type of octree node (branch or leaf).
virtual OutofcoreOctreeBaseNodedeepCopy () const
 Pure virtual method to perform a deep copy of the octree.
virtual size_t getDepth () const
virtual size_t getNumChildren () const
 Returns the total number of children on disk.
virtual size_t getNumLoadedChildren () const
 Count loaded chilren.
virtual OutofcoreOctreeBaseNodegetChildPtr (size_t index_arg) const
 Returns a pointer to the child in octant index_arg.
virtual boost::uint64_t getDataSize () const
 Gets the number of points available in the PCD file.
virtual void clearData ()

Static Public Attributes

static const std::string node_index_basename = "node"
static const std::string node_container_basename = "node"
static const std::string node_index_extension = ".oct_idx"
static const std::string node_container_extension = ".oct_dat"
static const double sample_percent_ = .125

Protected Member Functions

 OutofcoreOctreeBaseNode (const boost::filesystem::path &directory_path, OutofcoreOctreeBaseNode< ContainerT, PointT > *super, bool load_all)
 Load from disk If creating root, path is full name.
void init_root_node (const Eigen::Vector3d &bb_min, const Eigen::Vector3d &bb_max, OutofcoreOctreeBase< ContainerT, PointT > *const tree, const boost::filesystem::path &rootname)
 Create root node and directory.
 OutofcoreOctreeBaseNode (const OutofcoreOctreeBaseNode &rval)
 no copy construction right now
OutofcoreOctreeBaseNodeoperator= (const OutofcoreOctreeBaseNode &rval)
 Operator= is not implemented.
virtual size_t countNumChildren () const
 Counts the number of child directories on disk; used to update num_children_.
virtual size_t countNumLoadedChildren () const
 Counts the number of loaded chilren by testing the children_ array; used to update num_loaded_chilren_ internally.
void saveIdx (bool recursive)
 Save node's metadata to file.
void randomSample (const AlignedPointTVector &p, AlignedPointTVector &insertBuff, const bool skip_bb_check)
 Randomly sample point data.
void subdividePoints (const AlignedPointTVector &p, std::vector< AlignedPointTVector > &c, const bool skip_bb_check)
 Subdivide points to pass to child nodes.
void subdividePoint (const PointT &point, std::vector< AlignedPointTVector > &c)
 Subdivide a single point into a specific child node.
boost::uint64_t addDataAtMaxDepth (const AlignedPointTVector &p, const bool skip_bb_check=true)
 Add data to the leaf when at max depth of tree.
boost::uint64_t addDataAtMaxDepth (const pcl::PCLPointCloud2::Ptr input_cloud, const bool skip_bb_check=true)
 Add data to the leaf when at max depth of tree.
bool intersectsWithBoundingBox (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb) const
 Tests whether the input bounding box intersects with the current node's bounding box.
bool inBoundingBox (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb) const
 Tests whether the input bounding box falls inclusively within this node's bounding box.
bool pointInBoundingBox (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, const Eigen::Vector3d &point)
 Tests whether point falls within the input bounding box.
bool pointInBoundingBox (const PointT &p) const
 Tests if specified point is within bounds of current node's bounding box.
void createChild (const std::size_t idx)
 Creates child node idx.
void saveMetadataToFile (const boost::filesystem::path &path)
 Write JSON metadata for this node to file.
void recFreeChildren ()
 Method which recursively free children of this node.
boost::uint64_t size () const
 Number of points in the payload.
void flushToDiskRecursive ()
void loadFromFile (const boost::filesystem::path &path, OutofcoreOctreeBaseNode *super)
 Loads the nodes metadata from the JSON file.
void convertToXYZRecursive ()
 Recursively converts data files to ascii XZY files.
 OutofcoreOctreeBaseNode (const Eigen::Vector3d &bb_min, const Eigen::Vector3d &bb_max, const char *dir, OutofcoreOctreeBaseNode< ContainerT, PointT > *super)
 Private constructor used for children.
void copyAllCurrentAndChildPointsRec (std::list< PointT > &v)
 Copies points from this and all children into a single point container (std::list).
void copyAllCurrentAndChildPointsRec_sub (std::list< PointT > &v, const double percent)
bool hasUnloadedChildren () const
 Returns whether or not a node has unloaded children data.
virtual void loadChildren (bool recursive)
 Load nodes child data creating new nodes for each.
void getOccupiedVoxelCentersRecursive (AlignedPointTVector &voxel_centers, const size_t query_depth)
 Gets a vector of occupied voxel centers.
void getOccupiedVoxelCentersRecursive (std::vector< Eigen::Vector3d, Eigen::aligned_allocator< Eigen::Vector3d > > &voxel_centers, const size_t query_depth)
 Gets a vector of occupied voxel centers.
void sortOctantIndices (const pcl::PCLPointCloud2::Ptr &input_cloud, std::vector< std::vector< int > > &indices, const Eigen::Vector3d &mid_xyz)
 Sorts the indices based on x,y,z fields and pushes the index into the proper octant's vector; This could be overloaded with a parallelized implementation.
void enlargeToCube (Eigen::Vector3d &bb_min, Eigen::Vector3d &bb_max)
 Enlarges the shortest two sidelengths of the bounding box to a cubic shape; operation is done in place.

Static Protected Member Functions

static bool pointInBoundingBox (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, const PointT &p)
 Tests whether p falls within the input bounding box.
static bool pointInBoundingBox (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, const double x, const double y, const double z)
 Tests whether x, y, and z fall within the input bounding box.

Protected Attributes

OutofcoreOctreeBase
< ContainerT, PointT > * 
m_tree_
 The tree we belong to.
OutofcoreOctreeBaseNoderoot_node_
 The root node of the tree we belong to.
OutofcoreOctreeBaseNodeparent_
 super-node
size_t depth_
 Depth in the tree, root is 0, root's children are 1, .
std::vector
< OutofcoreOctreeBaseNode * > 
children_
 The children of this node.
uint64_t num_children_
 Number of children on disk.
uint64_t num_loaded_children_
 Number of loaded children this node has.
boost::shared_ptr< ContainerT > payload_
 what holds the points.
OutofcoreOctreeNodeMetadata::Ptr node_metadata_

Static Protected Attributes

static boost::mutex rng_mutex_
 Random number generator mutex.
static boost::mt19937 rand_gen_
 Mersenne Twister: A 623-dimensionally equidistributed uniform pseudo-random number generator.
static const boost::uint32_t rngseed = 0xAABBCCDD
 Random number generator seed.
static const std::string pcd_extension = ".pcd"
 Extension for this class to find the pcd files on disk.

Friends

class OutofcoreOctreeBase< ContainerT, PointT >
OutofcoreOctreeBaseNode
< ContainerT, PointT > * 
makenode_norec (const boost::filesystem::path &path, OutofcoreOctreeBaseNode< ContainerT, PointT > *super)
void queryBBIntersects_noload (const boost::filesystem::path &rootnode, const Eigen::Vector3d &min, const Eigen::Vector3d &max, const boost::uint32_t query_depth, std::list< std::string > &bin_name)
 Non-class method which performs a bounding box query without loading any of the point cloud data from disk.
void queryBBIntersects_noload (OutofcoreOctreeBaseNode< ContainerT, PointT > *current, const Eigen::Vector3d &min, const Eigen::Vector3d &max, const boost::uint32_t query_depth, std::list< std::string > &bin_name)

Detailed Description

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
class pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >

OutofcoreOctreeBaseNode Class internally representing nodes of an outofcore octree, with accessors to its data via the octree_disk_container class or octree_ram_container class, whichever it is templated against.

Note:
Code was adapted from the Urban Robotics out of core octree implementation. Contact Jacob Schloss <jacob.schloss@urbanrobotics.net> with any questions. http://www.urbanrobotics.net/
Author:
Jacob Schloss (jacob.schloss@urbanrobotics.net)

Definition at line 92 of file octree_base_node.h.


Member Typedef Documentation

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
typedef std::vector<PointT, Eigen::aligned_allocator<PointT> > pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::AlignedPointTVector

Definition at line 110 of file octree_base_node.h.

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
typedef pcl::octree::node_type_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_type_t

Definition at line 112 of file octree_base_node.h.

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
typedef OutofcoreOctreeBase<OutofcoreOctreeDiskContainer < PointT > , PointT > pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::octree_disk

Definition at line 107 of file octree_base_node.h.

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
typedef OutofcoreOctreeBaseNode<OutofcoreOctreeDiskContainer < PointT > , PointT > pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::octree_disk_node

Definition at line 108 of file octree_base_node.h.


Constructor & Destructor Documentation

template<typename ContainerT , typename PointT >
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode (  )  [inline]

Empty constructor; sets pointers for children and for bounding boxes to 0.

Definition at line 90 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_.

template<typename ContainerT , typename PointT >
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode ( const Eigen::Vector3d &  bb_min,
const Eigen::Vector3d &  bb_max,
OutofcoreOctreeBase< ContainerT, PointT > *const   tree,
const boost::filesystem::path &  root_name 
) [inline]
template<typename ContainerT , typename PointT >
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::~OutofcoreOctreeBaseNode (  )  [inline, virtual]

Will recursively delete all children calling recFreeChildrein.

Definition at line 269 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::recFreeChildren().

template<typename ContainerT , typename PointT >
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode ( const boost::filesystem::path &  directory_path,
OutofcoreOctreeBaseNode< ContainerT, PointT > *  super,
bool  load_all 
) [inline, protected]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode ( const OutofcoreOctreeBaseNode< ContainerT, PointT > &  rval  )  [protected]

no copy construction right now

template<typename ContainerT , typename PointT >
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode ( const Eigen::Vector3d &  bb_min,
const Eigen::Vector3d &  bb_max,
const char *  dir,
OutofcoreOctreeBaseNode< ContainerT, PointT > *  super 
) [inline, protected]

Member Function Documentation

template<typename ContainerT , typename PointT >
boost::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataAtMaxDepth ( const pcl::PCLPointCloud2::Ptr  input_cloud,
const bool  skip_bb_check = true 
) [inline, protected]

Add data to the leaf when at max depth of tree.

If skip_bb_check is true, adds to the node regardless of the bounding box it represents; otherwise only adds points that fall within the bounding box

Parameters:
[in] input_cloud PCLPointCloud2 points to attempt to add to the tree;
Warning:
PCLPointCloud2 inserted into the tree must have x,y,z fields, and must be of same type of any other points inserted in the tree
Parameters:
[in] skip_bb_check (default true) if true, doesn't check that points are in the proper bounding box; if false, only adds the points that fall into the bounding box to this node
Returns:
number of points successfully added

Definition at line 676 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::depth_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::m_tree_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::payload_, and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::root_node_.

template<typename ContainerT , typename PointT >
boost::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataAtMaxDepth ( const AlignedPointTVector p,
const bool  skip_bb_check = true 
) [inline, protected]

Add data to the leaf when at max depth of tree.

If skip_bb_check is true, adds to the node regardless of the bounding box it represents; otherwise only adds points that fall within the bounding box

Parameters:
[in] p vector of points to attempt to add to the tree
[in] skip_bb_check if true, doesn't check that points are in the proper bounding box; if false, only adds the points that fall into the bounding box to this node
Returns:
number of points successfully added

Definition at line 635 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::depth_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::m_tree_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::payload_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::root_node_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf_and_genLOD(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud_and_genLOD().

template<typename ContainerT , typename PointT >
boost::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf ( const std::vector< const PointT * > &  p,
const bool  skip_bb_check = true 
) [inline, virtual]
template<typename ContainerT , typename PointT >
uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf ( const AlignedPointTVector p,
const bool  skip_bb_check = true 
) [inline, virtual]
template<typename ContainerT , typename PointT >
boost::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf_and_genLOD ( const AlignedPointTVector p,
const bool  skip_bb_check 
) [inline, virtual]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
virtual boost::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud ( const pcl::PCLPointCloud2::Ptr input_cloud,
const bool  skip_bb_check = false 
) [virtual]

Add a single PCLPointCloud2 object into the octree.

Parameters:
[in] input_cloud 
[in] skip_bb_check (default = false)

Referenced by pcl::outofcore::OutofcoreOctreeBase< ContainerT, PointT >::addPointCloud().

template<typename ContainerT , typename PointT >
boost::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud_and_genLOD ( const pcl::PCLPointCloud2::Ptr  input_cloud  )  [inline, virtual]

Add a single PCLPointCloud2 into the octree and build the subsampled LOD during construction; this method of LOD construction is not multiresolution.

Rather, there are no redundant data.

Definition at line 730 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataAtMaxDepth(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::children_, pcl::copyPointCloud(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::createChild(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::depth_, pcl::FilterIndices< pcl::PCLPointCloud2 >::filter(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::hasUnloadedChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::m_tree_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::num_children_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::payload_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::root_node_, pcl::PCLBase< pcl::PCLPointCloud2 >::setIndices(), pcl::PCLBase< pcl::PCLPointCloud2 >::setInputCloud(), pcl::FilterIndices< pcl::PCLPointCloud2 >::setNegative(), pcl::RandomSample< pcl::PCLPointCloud2 >::setSample(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::size(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::sortOctantIndices().

Referenced by pcl::outofcore::OutofcoreOctreeBase< ContainerT, PointT >::addPointCloud_and_genLOD().

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
virtual void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::clearData (  )  [inline, virtual]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::convertToXYZRecursive (  )  [inline, protected]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec ( std::list< PointT > &  v  )  [inline, protected]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec_sub ( std::list< PointT > &  v,
const double  percent 
) [inline, protected]
template<typename ContainerT , typename PointT >
size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::countNumChildren (  )  const [inline, protected, virtual]
template<typename ContainerT , typename PointT >
size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::countNumLoadedChildren (  )  const [inline, protected, virtual]

Counts the number of loaded chilren by testing the children_ array; used to update num_loaded_chilren_ internally.

Definition at line 1955 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::children_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getNumLoadedChildren().

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::createChild ( const std::size_t  idx  )  [protected]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
virtual OutofcoreOctreeBaseNode* pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::deepCopy (  )  const [inline, virtual]

Pure virtual method to perform a deep copy of the octree.

Implements pcl::octree::OctreeNode.

Definition at line 263 of file octree_base_node.h.

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::enlargeToCube ( Eigen::Vector3d &  bb_min,
Eigen::Vector3d &  bb_max 
) [protected]

Enlarges the shortest two sidelengths of the bounding box to a cubic shape; operation is done in place.

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::flushToDiskRecursive (  )  [inline, protected]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
virtual void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getBoundingBox ( Eigen::Vector3d &  min_bb,
Eigen::Vector3d &  max_bb 
) const [inline, virtual]

gets the minimum and maximum corner of the bounding box represented by this node

Parameters:
[out] minCoord returns the minimum corner of the bounding box indexed by 0-->X, 1-->Y, 2-->Z
[out] maxCoord returns the maximum corner of the bounding box indexed by 0-->X, 1-->Y, 2-->Z

Definition at line 137 of file octree_base_node.h.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_.

Referenced by pcl::outofcore::OutofcoreOctreeBase< ContainerT, PointT >::getBoundingBox().

template<typename ContainerT , typename PointT >
OutofcoreOctreeBaseNode< ContainerT, PointT > * pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getChildPtr ( size_t  index_arg  )  const [inline, virtual]
template<typename ContainerT , typename PointT >
boost::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getDataSize (  )  const [inline, virtual]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
virtual size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getDepth (  )  const [inline, virtual]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const boost::filesystem::path& pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getMetadataFilename (  )  const [inline]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
virtual node_type_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getNodeType (  )  const [inline, virtual]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
virtual size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getNumChildren (  )  const [inline, virtual]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
virtual size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getNumLoadedChildren (  )  const [inline, virtual]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getOccupiedVoxelCentersRecursive ( std::vector< Eigen::Vector3d, Eigen::aligned_allocator< Eigen::Vector3d > > &  voxel_centers,
const size_t  query_depth 
) [inline, protected]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getOccupiedVoxelCentersRecursive ( AlignedPointTVector voxel_centers,
const size_t  query_depth 
) [inline, protected]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const boost::filesystem::path& pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getPCDFilename (  )  const [inline]
template<typename ContainerT , typename PointT >
bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::hasUnloadedChildren (  )  const [inline, protected]
template<typename ContainerT , typename PointT >
bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::inBoundingBox ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb 
) const [inline, protected]

Tests whether the input bounding box falls inclusively within this node's bounding box.

Parameters:
[in] min_bb The minimum corner of the input bounding box
[in] max_bb The maximum corner of the input bounding box
Returns:
bool True if the input bounding box falls inclusively within the boundaries of this node's bounding box

Definition at line 1868 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes_subsample().

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::init_root_node ( const Eigen::Vector3d &  bb_min,
const Eigen::Vector3d &  bb_max,
OutofcoreOctreeBase< ContainerT, PointT > *const   tree,
const boost::filesystem::path &  rootname 
) [inline, protected]

Create root node and directory.

Initializes the root node and performs initial filesystem checks for the octree; throws OctreeException::OCT_BAD_PATH if root directory is an existing file

Parameters:
bb_min triple of x,y,z minima for bounding box
bb_max triple of x,y,z maxima for bounding box
tree adress of the tree data structure that will hold this initial root node
rootname Root directory for location of on-disk octree storage; if directory doesn't exist, it is created; if "rootname" is an existing file,
Exceptions:
PCLException if the specified path already exists

Definition at line 207 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::depth_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::m_tree_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_container_basename, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::num_children_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::parent_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::payload_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pcd_extension, and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::root_node_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode().

template<typename ContainerT , typename PointT >
bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::intersectsWithBoundingBox ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb 
) const [inline, protected]

Tests whether the input bounding box intersects with the current node's bounding box.

Parameters:
[in] min_bb The minimum corner of the input bounding box
[in] min_bb The maximum corner of the input bounding box
Returns:
bool True if any portion of the bounding box intersects with this node's bounding box; false otherwise

Definition at line 1846 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes_subsample(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIntersects().

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadChildren ( bool  recursive  )  [inline, protected, virtual]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadFromFile ( const boost::filesystem::path &  path,
OutofcoreOctreeBaseNode< ContainerT, PointT > *  super 
) [inline, protected]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
OutofcoreOctreeBaseNode& pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::operator= ( const OutofcoreOctreeBaseNode< ContainerT, PointT > &  rval  )  [protected]

Operator= is not implemented.

template<typename ContainerT , typename PointT >
bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox ( const PointT p  )  const [inline, protected]

Tests if specified point is within bounds of current node's bounding box.

Definition at line 956 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_.

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
static bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
const double  x,
const double  y,
const double  z 
) [static, protected]

Tests whether x, y, and z fall within the input bounding box.

Parameters:
[in] min_bb The minimum corner of the input bounding box
[in] max_bb The maximum corner of the input bounding box
template<typename ContainerT , typename PointT >
bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
const PointT p 
) [inline, static, protected]

Tests whether p falls within the input bounding box.

Parameters:
[in] min_bb The minimum corner of the input bounding box
[in] max_bb The maximum corner of the input bounding box
[in] p The point to be tested

Definition at line 1890 of file octree_base_node.hpp.

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
const Eigen::Vector3d &  point 
) [protected]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::printBoundingBox ( const size_t  query_depth  )  const [inline, virtual]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
size_t  query_depth,
const pcl::PCLPointCloud2::Ptr dst_blob 
) [inline, virtual]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
size_t  query_depth,
AlignedPointTVector dst 
) [inline, virtual]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes_subsample ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
boost::uint64_t  query_depth,
const pcl::PCLPointCloud2::Ptr dst_blob,
double  percent = 1.0 
) [inline, virtual]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes_subsample ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
boost::uint64_t  query_depth,
const double  percent,
AlignedPointTVector v 
) [inline, virtual]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIntersects ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
const boost::uint32_t  query_depth,
std::list< std::string > &  file_names 
) [inline, virtual]
template<typename Container , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< Container, PointT >::queryFrustum ( const double  planes[24],
const Eigen::Vector3d &  eye,
const Eigen::Matrix4d &  view_projection_matrix,
std::list< std::string > &  file_names,
const boost::uint32_t  query_depth,
const bool  skip_vfc_check = false 
) [inline]
template<typename Container , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< Container, PointT >::queryFrustum ( const double  planes[24],
std::list< std::string > &  file_names,
const boost::uint32_t  query_depth,
const bool  skip_vfc_check = false 
) [inline]
template<typename Container , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< Container, PointT >::queryFrustum ( const double  planes[24],
std::list< std::string > &  file_names 
) [inline]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::randomSample ( const AlignedPointTVector p,
AlignedPointTVector insertBuff,
const bool  skip_bb_check 
) [inline, protected]
template<typename ContainerT , typename PointT >
int pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::read ( pcl::PCLPointCloud2::Ptr output_cloud  )  [inline, virtual]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::recFreeChildren (  )  [inline, protected]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::saveIdx ( bool  recursive  )  [inline, protected]

Save node's metadata to file.

Parameters:
[in] recursive,: if false, save only this node's metadata to file; if true, recursively save all children's metadata to files as well

Definition at line 294 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::children_, and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode().

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::saveMetadataToFile ( const boost::filesystem::path &  path  )  [protected]

Write JSON metadata for this node to file.

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
boost::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::size (  )  const [inline, protected]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::sortOctantIndices ( const pcl::PCLPointCloud2::Ptr input_cloud,
std::vector< std::vector< int > > &  indices,
const Eigen::Vector3d &  mid_xyz 
) [inline, protected]

Sorts the indices based on x,y,z fields and pushes the index into the proper octant's vector; This could be overloaded with a parallelized implementation.

Definition at line 2022 of file octree_base_node.hpp.

References pcl::getFieldIndex(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox().

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud_and_genLOD().

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::subdividePoint ( const PointT point,
std::vector< AlignedPointTVector > &  c 
) [inline, protected]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::subdividePoints ( const AlignedPointTVector p,
std::vector< AlignedPointTVector > &  c,
const bool  skip_bb_check 
) [inline, protected]
template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::writeVPythonVisual ( std::ofstream &  file  )  [inline]

Friends And Related Function Documentation

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
OutofcoreOctreeBaseNode<ContainerT, PointT>* makenode_norec ( const boost::filesystem::path &  path,
OutofcoreOctreeBaseNode< ContainerT, PointT > *  super 
) [friend]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
friend class OutofcoreOctreeBase< ContainerT, PointT > [friend]

Definition at line 94 of file octree_base_node.h.

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
void queryBBIntersects_noload ( OutofcoreOctreeBaseNode< ContainerT, PointT > *  current,
const Eigen::Vector3d &  min,
const Eigen::Vector3d &  max,
const boost::uint32_t  query_depth,
std::list< std::string > &  bin_name 
) [friend]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
void queryBBIntersects_noload ( const boost::filesystem::path &  rootnode,
const Eigen::Vector3d &  min,
const Eigen::Vector3d &  max,
const boost::uint32_t  query_depth,
std::list< std::string > &  bin_name 
) [friend]

Non-class method which performs a bounding box query without loading any of the point cloud data from disk.


Member Data Documentation

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
std::vector<OutofcoreOctreeBaseNode*> pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::children_ [protected]

The children of this node.

Definition at line 538 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf_and_genLOD(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud_and_genLOD(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::convertToXYZRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec_sub(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::countNumLoadedChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::flushToDiskRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getChildPtr(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getOccupiedVoxelCentersRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::printBoundingBox(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes_subsample(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIntersects(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryFrustum(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::recFreeChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::saveIdx(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::writeVPythonVisual().

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::depth_ [protected]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
OutofcoreOctreeBase<ContainerT, PointT>* pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::m_tree_ [protected]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_container_basename = "node" [inline, static]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_container_extension = ".oct_dat" [inline, static]

Definition at line 117 of file octree_base_node.h.

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_index_basename = "node" [inline, static]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_index_extension = ".oct_idx" [inline, static]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
OutofcoreOctreeNodeMetadata::Ptr pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_ [protected]

Definition at line 568 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud_and_genLOD(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::convertToXYZRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::countNumChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getBoundingBox(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getMetadataFilename(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getOccupiedVoxelCentersRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getPCDFilename(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::inBoundingBox(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::init_root_node(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::intersectsWithBoundingBox(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadFromFile(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::printBoundingBox(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIntersects(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryFrustum(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::saveIdx(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::subdividePoint(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::writeVPythonVisual().

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::num_children_ [protected]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::num_loaded_children_ [protected]

Number of loaded children this node has.

"Loaded" means child OctreeBaseNodes have been allocated, and their metadata files have been loaded into memory. num_loaded_children_ <= num_children_

Definition at line 549 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadChildren().

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
OutofcoreOctreeBaseNode* pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::parent_ [protected]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
boost::shared_ptr<ContainerT> pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::payload_ [protected]

what holds the points.

currently a custom class, but in theory you could use an stl container if you rewrote some of this class. I used to use deques for this...

Definition at line 554 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataAtMaxDepth(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf_and_genLOD(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud_and_genLOD(), pcl::outofcore::OutofcoreOctreeBase< ContainerT, PointT >::buildLODRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::clearData(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::convertToXYZRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec_sub(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getDataSize(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::init_root_node(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadFromFile(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes_subsample(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIntersects(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryFrustum(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::read(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::size().

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pcd_extension = ".pcd" [inline, static, protected]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
boost::mt19937 pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::rand_gen_ [inline, static, protected]

Mersenne Twister: A 623-dimensionally equidistributed uniform pseudo-random number generator.

Definition at line 561 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::randomSample().

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
boost::mutex pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::rng_mutex_ [inline, static, protected]

Random number generator mutex.

Definition at line 557 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::randomSample().

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const boost::uint32_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::rngseed = 0xAABBCCDD [static, protected]

Random number generator seed.

Definition at line 564 of file octree_base_node.h.

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
OutofcoreOctreeBaseNode* pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::root_node_ [protected]
template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const double pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::sample_percent_ = .125 [inline, static]

The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends