ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
cloudViewer::pipelines::integration::ScalableTSDFVolume Class Reference

#include <ScalableTSDFVolume.h>

Inheritance diagram for cloudViewer::pipelines::integration::ScalableTSDFVolume:
Collaboration diagram for cloudViewer::pipelines::integration::ScalableTSDFVolume:

Classes

struct  VolumeUnit
 

Public Member Functions

 ScalableTSDFVolume (double voxel_length, double sdf_trunc, TSDFVolumeColorType color_type, int volume_unit_resolution=16, int depth_sampling_stride=4)
 
 ~ScalableTSDFVolume () override
 
void Reset () override
 Function to reset the TSDFVolume. More...
 
void Integrate (const geometry::RGBDImage &image, const camera::PinholeCameraIntrinsic &intrinsic, const Eigen::Matrix4d &extrinsic) override
 Function to integrate an RGB-D image into the volume. More...
 
std::shared_ptr< ccPointCloudExtractPointCloud () override
 Function to extract a point cloud with normals. More...
 
std::shared_ptr< ccMeshExtractTriangleMesh () override
 Function to extract a triangle mesh, using the marching cubes algorithm. (https://en.wikipedia.org/wiki/Marching_cubes) More...
 
std::shared_ptr< ccPointCloudExtractVoxelPointCloud ()
 Debug function to extract the voxel data into a point cloud. More...
 
- Public Member Functions inherited from cloudViewer::pipelines::integration::TSDFVolume
 TSDFVolume (double voxel_length, double sdf_trunc, TSDFVolumeColorType color_type)
 Default Constructor. More...
 
virtual ~TSDFVolume ()
 

Public Attributes

int volume_unit_resolution_
 
double volume_unit_length_
 
int depth_sampling_stride_
 
std::unordered_map< Eigen::Vector3i, VolumeUnit, utility::hash_eigen< Eigen::Vector3i > > volume_units_
 
- Public Attributes inherited from cloudViewer::pipelines::integration::TSDFVolume
double voxel_length_
 Length of the voxel in meters. More...
 
double sdf_trunc_
 Truncation value for signed distance function (SDF). More...
 
TSDFVolumeColorType color_type_
 Color type of the TSDF volume. More...
 

Detailed Description

The ScalableTSDFVolume implements a more memory efficient data structure for volumetric integration.

This implementation is based on the following repository: https://github.com/qianyizh/ElasticReconstruction/tree/master/Integrate The reference is: Q.-Y. Zhou and V. Koltun Dense Scene Reconstruction with Points of Interest In SIGGRAPH 2013

An observed depth pixel gives two types of information: (a) an approximation of the nearby surface, and (b) empty space from the camera to the surface. They induce two core concepts of volumetric integration: weighted average of a truncated signed distance function (TSDF), and carving. The weighted average of TSDF is great in addressing the Gaussian noise along surface normal and producing a smooth surface output. The carving is great in removing outlier structures like floating noise pixels and bumps along structure edges.

Definition at line 41 of file ScalableTSDFVolume.h.

Constructor & Destructor Documentation

◆ ScalableTSDFVolume()

cloudViewer::pipelines::integration::ScalableTSDFVolume::ScalableTSDFVolume ( double  voxel_length,
double  sdf_trunc,
TSDFVolumeColorType  color_type,
int  volume_unit_resolution = 16,
int  depth_sampling_stride = 4 
)

Definition at line 24 of file ScalableTSDFVolume.cpp.

◆ ~ScalableTSDFVolume()

cloudViewer::pipelines::integration::ScalableTSDFVolume::~ScalableTSDFVolume ( )
override

Definition at line 34 of file ScalableTSDFVolume.cpp.

Member Function Documentation

◆ ExtractPointCloud()

◆ ExtractTriangleMesh()

◆ ExtractVoxelPointCloud()

std::shared_ptr< ccPointCloud > cloudViewer::pipelines::integration::ScalableTSDFVolume::ExtractVoxelPointCloud ( )

Debug function to extract the voxel data into a point cloud.

Definition at line 390 of file ScalableTSDFVolume.cpp.

References volume_units_.

Referenced by cloudViewer::pipelines::integration::pybind_integration_classes().

◆ Integrate()

◆ Reset()

void cloudViewer::pipelines::integration::ScalableTSDFVolume::Reset ( )
overridevirtual

Function to reset the TSDFVolume.

Implements cloudViewer::pipelines::integration::TSDFVolume.

Definition at line 36 of file ScalableTSDFVolume.cpp.

References volume_units_.

Member Data Documentation

◆ depth_sampling_stride_

int cloudViewer::pipelines::integration::ScalableTSDFVolume::depth_sampling_stride_

Definition at line 73 of file ScalableTSDFVolume.h.

Referenced by Integrate().

◆ volume_unit_length_

double cloudViewer::pipelines::integration::ScalableTSDFVolume::volume_unit_length_

Definition at line 72 of file ScalableTSDFVolume.h.

Referenced by ExtractPointCloud().

◆ volume_unit_resolution_

int cloudViewer::pipelines::integration::ScalableTSDFVolume::volume_unit_resolution_

Definition at line 71 of file ScalableTSDFVolume.h.

Referenced by ExtractTriangleMesh().

◆ volume_units_

std::unordered_map<Eigen::Vector3i, VolumeUnit, utility::hash_eigen<Eigen::Vector3i> > cloudViewer::pipelines::integration::ScalableTSDFVolume::volume_units_

Assume the index of the volume unit is (x, y, z), then the unit spans from (x, y, z) * volume_unit_length_ to (x + 1, y + 1, z + 1) * volume_unit_length_

Definition at line 81 of file ScalableTSDFVolume.h.

Referenced by ExtractPointCloud(), ExtractTriangleMesh(), ExtractVoxelPointCloud(), and Reset().


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