Open3D (C++ API)
0.18.0+fcc396e
|
#include <ScalableTSDFVolume.h>
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::PointCloud > | ExtractPointCloud () override |
Function to extract a point cloud with normals. More... | |
std::shared_ptr< geometry::TriangleMesh > | ExtractTriangleMesh () override |
Function to extract a triangle mesh, using the marching cubes algorithm. (https://en.wikipedia.org/wiki/Marching_cubes) More... | |
std::shared_ptr< geometry::PointCloud > | ExtractVoxelPointCloud () |
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... | |
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.
open3d::pipelines::integration::ScalableTSDFVolume::ScalableTSDFVolume | ( | double | voxel_length, |
double | sdf_trunc, | ||
TSDFVolumeColorType | color_type, | ||
int | volume_unit_resolution = 16 , |
||
int | depth_sampling_stride = 4 |
||
) |
|
override |
|
overridevirtual |
Function to extract a point cloud with normals.
Implements open3d::pipelines::integration::TSDFVolume.
|
overridevirtual |
Function to extract a triangle mesh, using the marching cubes algorithm. (https://en.wikipedia.org/wiki/Marching_cubes)
Implements open3d::pipelines::integration::TSDFVolume.
std::shared_ptr< geometry::PointCloud > open3d::pipelines::integration::ScalableTSDFVolume::ExtractVoxelPointCloud | ( | ) |
Debug function to extract the voxel data into a point cloud.
|
overridevirtual |
Function to integrate an RGB-D image into the volume.
Implements open3d::pipelines::integration::TSDFVolume.
|
overridevirtual |
Function to reset the TSDFVolume.
Implements open3d::pipelines::integration::TSDFVolume.
int open3d::pipelines::integration::ScalableTSDFVolume::depth_sampling_stride_ |
double open3d::pipelines::integration::ScalableTSDFVolume::volume_unit_length_ |
int open3d::pipelines::integration::ScalableTSDFVolume::volume_unit_resolution_ |
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_