Open3D (C++ API)  0.18.0
Data Structures | Public Member Functions | Data Fields
open3d::pipelines::integration::ScalableTSDFVolume Class Reference

#include <ScalableTSDFVolume.h>

Inheritance diagram for open3d::pipelines::integration::ScalableTSDFVolume:
open3d::pipelines::integration::TSDFVolume

Data Structures

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< geometry::PointCloudExtractPointCloud () override
 Function to extract a point cloud with normals. More...
 
std::shared_ptr< geometry::TriangleMeshExtractTriangleMesh () override
 Function to extract a triangle mesh, using the marching cubes algorithm. (https://en.wikipedia.org/wiki/Marching_cubes) More...
 
std::shared_ptr< geometry::PointCloudExtractVoxelPointCloud ()
 Debug function to extract the voxel data into a point cloud. More...
 
- Public Member Functions inherited from open3d::pipelines::integration::TSDFVolume
 TSDFVolume (double voxel_length, double sdf_trunc, TSDFVolumeColorType color_type)
 Default Constructor. More...
 
virtual ~TSDFVolume ()
 

Data Fields

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_
 
- Data Fields inherited from open3d::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.

Constructor & Destructor Documentation

◆ ScalableTSDFVolume()

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

◆ ~ScalableTSDFVolume()

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

Member Function Documentation

◆ ExtractPointCloud()

std::shared_ptr< geometry::PointCloud > open3d::pipelines::integration::ScalableTSDFVolume::ExtractPointCloud ( )
overridevirtual

Function to extract a point cloud with normals.

Implements open3d::pipelines::integration::TSDFVolume.

◆ ExtractTriangleMesh()

std::shared_ptr< geometry::TriangleMesh > open3d::pipelines::integration::ScalableTSDFVolume::ExtractTriangleMesh ( )
overridevirtual

Function to extract a triangle mesh, using the marching cubes algorithm. (https://en.wikipedia.org/wiki/Marching_cubes)

Implements open3d::pipelines::integration::TSDFVolume.

◆ ExtractVoxelPointCloud()

std::shared_ptr< geometry::PointCloud > open3d::pipelines::integration::ScalableTSDFVolume::ExtractVoxelPointCloud ( )

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

◆ Integrate()

void open3d::pipelines::integration::ScalableTSDFVolume::Integrate ( const geometry::RGBDImage image,
const camera::PinholeCameraIntrinsic intrinsic,
const Eigen::Matrix4d &  extrinsic 
)
overridevirtual

Function to integrate an RGB-D image into the volume.

Implements open3d::pipelines::integration::TSDFVolume.

◆ Reset()

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

Function to reset the TSDFVolume.

Implements open3d::pipelines::integration::TSDFVolume.

Field Documentation

◆ depth_sampling_stride_

int open3d::pipelines::integration::ScalableTSDFVolume::depth_sampling_stride_

◆ volume_unit_length_

double open3d::pipelines::integration::ScalableTSDFVolume::volume_unit_length_

◆ volume_unit_resolution_

int open3d::pipelines::integration::ScalableTSDFVolume::volume_unit_resolution_

◆ volume_units_

std::unordered_map<Eigen::Vector3i, VolumeUnit, utility::hash_eigen<Eigen::Vector3i> > open3d::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_


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