ImFusion SDK 4.3
SurfaceReconstructionData Class Reference

#include <RGBD/Include/ImFusion/RGBD/SurfaceReconstructionData.h>

Data model for surface reconstruction. More...

+ Inheritance diagram for SurfaceReconstructionData:

Detailed Description

Data model for surface reconstruction.

This class encapsulates all configuration parameters for RGB-D surface reconstruction. It provides settings for volume size and resolution, preprocessing, registration (ICP), integration, prediction, rendering, texturing, and multi-sensor setups.

Usage:

  • Set volume, sensor, and algorithm parameters before starting reconstruction.
  • Use getter and setter methods to configure all aspects of the reconstruction process.
  • Add listeners to react to parameter changes.
  • Use configure() and configuration() for serialization.

Important aspects:

  • Per-sensor configuration for multi-sensor setups.
  • Not thread-safe.

Example:

SurfaceReconstructionData data;
data.setVolumeResolution(vec3i(256,256,256));
data.setVolumeSize(vec3(1000,1000,1000));
data.setIcpLevels(3);
data.setIntegrationMaxWeight(100);
data.setSensorCount(1);

Public Types

enum class  ReconstructionMethod { VolumetricFusion }
 

Public Member Functions

void reset (bool partial=false)
 Set default values.
 
void setVolumeResolution (const vec3i &value)
 Set volume resolution in voxels in each spatial dimension.
 
vec3i volumeResolution () const
 
void setUnlimitedVolumeSize (bool value)
 Set unlimited volume size.
 
bool unlimitedVolumeSize () const
 
void setVolumeSize (const vec3 &value)
 Set volume size in world units (usually mm) in each spatial dimension.
 
vec3 volumeSize () const
 
void setVolumeTransform (const mat4 &value)
 Set initial transformation for moving reconstruction volume (centered on world origin) to reference sensor camera coordinate system.
 
mat4 volumeTransform () const
 Get transformation from world to local camera system.
 
void setVolumeIncludeColor (bool value)
 Control whether to include color in reconstruction.
 
bool volumeIncludeColor () const
 
void setPreprocessingComputeCameraNormals (bool value)
 Control whether to compute cam normals.
 
bool preprocessingComputeCameraNormals () const
 
void setPreprocessingUseBilateralFilter (bool use)
 Control whether to use the bilateral filter.
 
bool preprocessingUseBilateralFilter () const
 
void setPreprocessingBilateralFilterSize (int value)
 Set size of bilateral filter kernel applied to depth image before integrating it.
 
int preprocessingBilateralFilterSize () const
 
void setPreprocessingBilateralFilterSpaceSigma (double value)
 Set spatial sigma of bilateral filter in pixels.
 
double preprocessingBilateralFilterSpaceSigma () const
 
void setPreprocessingBilateralFilterDepthSigma (double value)
 Set depth sigma of bilateral filter in world units (usually mm)
 
double preprocessingBilateralFilterDepthSigma () const
 
void setIcpLevels (int value)
 Set number of pyramid levels for ICP alignment. Each pyramid level is downsampled from the previous level by a factor of two.
 
int icpLevels () const
 
void setIcpMaxIterations (const std::vector< int > &value)
 Set maximum iterations for each pyramid level. Levels are sorted in increasing size, i.e. first entry refers to lowest resolution level.
 
std::vector< int > icpMaxIterations () const
 
void setIcpMinMatches (int value)
 Set minimum number of matches required to compute ICP.
 
int icpMinMatches () const
 
void setIcpDistanceThreshold (double value)
 Set distance threshold in world units (usually mm) between points to be considered for matching.
 
double icpDistanceThreshold () const
 
void setIcpMatchNeighborhoodHalfWinSize (int value)
 Set half of the window size of neighborhood in px when searching for the best matching point for ICP.
 
int icpMatchNeighborhoodHalfWinSize () const
 
void setIcpAngleThreshold (double value)
 Set minimum angle in degrees between point normals to be considered for matching.
 
double icpAngleThreshold () const
 
void setIcpUpdateThreshold (double value)
 Set threhsold for change in error function between two ICP iterations.
 
double icpUpdateThreshold () const
 
void setIcpUseCurvature (bool value)
 Only use high curvature points for ICP alignment. Experimental.
 
bool icpUseCurvature () const
 
void setIcpCurvatureThreshold (double value)
 Set threshold for curvature when using curvature-based point removal When set to smaller zero the ICP point threshold is used for selecting the curvature threshold.
 
double icpCurvatureThreshold () const
 
void setIcpPointThreshold (double value)
 Sorts curvate and takes curvature at passed in percentile (normalized to [0;1]) as curvature threshold.
 
double icpPointThreshold () const
 
void setIcpRotationThreshold (double value)
 Set threshold of rotation in degrees of ICP output after which the estimated pose is considered wrong.
 
double icpRotationThreshold () const
 
void setIcpTranslationThreshold (double value)
 Set threshold of translation in world units (usually mm) of ICP output after which the estimated pose is considered wrong.
 
double icpTranslationThreshold () const
 
void setIcpOptimizationParameters (const Eigen::Matrix< int, 6, 1 > &value)
 Set ICP optimization parameters (rx, ry, rz, tx, ty, tz)
 
Eigen::Matrix< int, 6, 1 > icpOptimizationParameters () const
 
void setIntegrationMaxDepthDiff (float value)
 Set maximum depth difference used in integration (in depth discontinuity map computation)
 
float integrationMaxDepthDiff () const
 
void setIntegrationMaxWeight (int value)
 Set maximum weight used in integration.
 
int integrationMaxWeight () const
 
void setIntegrationMinTruncation (double value)
 Set distance in front of current surface estimate until which new measurements will be integrated.
 
double integrationMinTruncation () const
 
void setIntegrationMaxTruncation (double value)
 Set distance behind current surface estimate until which new measurements will be integrated.
 
double integrationMaxTruncation () const
 
void setIntegrationMovementBasedUpdate (bool value)
 Control whether new frames with only small pose changes will be integrated.
 
bool integrationMovementBasedUpdate () const
 
void setPredictionTruncationFactor (double value)
 Controls step size of scene prediction from volume.
 
double predictionTruncationFactor () const
 
void setSceneColor (const vec3 &color)
 Sets color of rendered preview.
 
vec3 sceneColor () const
 
void setRenderPreviewFromColorCamera (bool value)
 
bool renderPreviewFromColorCamera () const
 
void setSensorCount (int value)
 Set number of sensors used in reconstruction.
 
int sensorCount () const
 
void setDepthImageWidth (int sensor, int value)
 Set depth image width.
 
int depthImageWidth (int sensor) const
 
void setDepthImageHeight (int sensor, int value)
 Set depth image height.
 
int depthImageHeight (int sensor) const
 
void setColorImageWidth (int sensor, int value)
 Set color image width.
 
int colorImageWidth (int sensor) const
 
void setColorImageHeight (int sensor, int value)
 Set color image height.
 
int colorImageHeight (int sensor) const
 
void setDepthImageIntrinsics (int sensor, const mat3 &value)
 Set intrinsic paramters of depth image. Image is assumed to be undistorted.
 
bool depthImageIntrinsics (int sensor, mat3 &value) const
 
void setColorImageIntrinsics (int sensor, const mat3 &value)
 Set intrinsic parameters of color image. Image is assumed to be undistorted.
 
bool colorImageIntrinsics (int sensor, mat3 &value) const
 
void setDepthToColorTransform (int sensor, const mat4 &value)
 Set transformation matrix for going from depth sensor to color sensor camera coordinate system.
 
bool depthToColorTransform (int sensor, mat4 &value) const
 
void setSensorT (int sensor, const mat4 &value)
 Set transformation from specified sensor to reference sensor coordinate system. Not needed for single sensor use.
 
bool sensorT (int sensor, mat4 &value) const
 
void setDepthCutoff (int sensor, int value)
 Set depth from sensor in world units (usually mm) after which points will not be considered in reconstruction.
 
int depthCutoff (int sensor) const
 
void setUseDepthCutoff (int sensor, bool value)
 Control whether to use depth cutoff.
 
bool useDepthCutoff (int sensor) const
 
void setOrthographicSensor (int sensor, bool value)
 
bool orthographicSensor (int sensor) const
 
void setColorScene (bool value)
 Control whether the preview image is colored from color image or used uniform Phong shading on the surface.
 
bool colorScene () const
 
void setPreprocessingDepthThreshold (double value)
 Set depth threshold to avoid computing properties (tangent map and normal map) over depth-discontinuities.
 
double preprocessingDepthThreshold () const
 
void setActive (bool value)
 Set whether reconstruction is active. Certain parameters cannot be changed during reconstruction.
 
bool active () const
 
void addListener (SurfaceReconstructionDataListener *listener)
 Add listener which gets notified when parameters change.
 
void removeListener (const SurfaceReconstructionDataListener *listener)
 
void configure (const Properties *p) override
 Configure this object instance by de-serializing the given Properties.
 
void configuration (Properties *p) const override
 Serialize the current object configuration into the given Properties object.
 
void setIcpSvdThreshold (double value)
 Registration settings.
 
double icpSvdThreshold () const
 
void setTexturingSkipSimilarFrames (bool value)
 
bool texturingSkipSimilarFrames () const
 
void setTexturingRotationThreshold (double value)
 
double texturingRotationThreshold () const
 
void setTexturingTranslationThreshold (double value)
 
double texturingTranslationThreshold () const
 
void setTexturingSkip (int value)
 
int texturingSkip () const
 
void setTexturingDepthMatchThreshold (double value)
 
double texturingDepthMatchThreshold () const
 
void setTexturingErosionRadius (int value)
 
int texturingErosionRadius () const
 
void setRecoMethod (ReconstructionMethod m)
 
ReconstructionMethod recoMethod () const
 
bool supportsLimitedVolume () const
 
bool supportsUnlimitedVolume () const
 
- Public Member Functions inherited from Configurable
virtual void configureDefaults ()
 Retrieve the properties of this object, replaces values with their defaults and sets it again.
 
void registerParameter (ParameterBase *param)
 Register the given Parameter or SubProperty, so that it will be configured during configure()/configuration().
 
void unregisterParameter (const ParameterBase *param)
 Remove the given Parameter or SubProperty from the list of registered parameters.
 
 Configurable (const Configurable &rhs)
 
 Configurable (Configurable &&rhs) noexcept
 
Configurableoperator= (const Configurable &)
 
Configurableoperator= (Configurable &&) noexcept
 

Additional Inherited Members

- Public Attributes inherited from Configurable
Signal signalParametersChanged
 Emitted whenever one of the registered Parameters' or SubPropertys' signalValueChanged signal was emitted.
 
- Protected Attributes inherited from Configurable
std::vector< Paramm_params
 List of all registered Parameter and SubProperty instances.
 

Member Enumeration Documentation

◆ ReconstructionMethod

enum class ReconstructionMethod
strong
Enumerator
VolumetricFusion 

OpenCL-based reconstruction running on GPU, implemented using OpenCL with dense volume representation, should be preferred for small scenes.

Member Function Documentation

◆ setPreprocessingBilateralFilterSize()

void setPreprocessingBilateralFilterSize ( int value)

Set size of bilateral filter kernel applied to depth image before integrating it.

This parameter controls the depth value smoothing. Significantly affects runtime of preprocessing step.

◆ setIcpUpdateThreshold()

void setIcpUpdateThreshold ( double value)

Set threhsold for change in error function between two ICP iterations.

If the change is smaller the optimization will be terminated even if the number of runs has not been reached.

◆ setIcpRotationThreshold()

void setIcpRotationThreshold ( double value)

Set threshold of rotation in degrees of ICP output after which the estimated pose is considered wrong.

Used to control robustness of tracking.

◆ setIcpTranslationThreshold()

void setIcpTranslationThreshold ( double value)

Set threshold of translation in world units (usually mm) of ICP output after which the estimated pose is considered wrong.

Used to control robustness of tracking.

◆ configure()

void configure ( const Properties * p)
overridevirtual

Configure this object instance by de-serializing the given Properties.

The default implementation will do so automatically for all registered Parameter and SubProperty instances.

See also
configuration() for the inverse functionality

Reimplemented from Configurable.

◆ configuration()

void configuration ( Properties * p) const
overridevirtual

Serialize the current object configuration into the given Properties object.

The default implementation will do so automatically for all registered Parameter and SubProperty instances.

See also
configure() for the inverse functionality

Reimplemented from Configurable.


The documentation for this class was generated from the following file:
Search Tab / S to search, Esc to close