ReconstructMe SDK  2.0.819-89134
Real-time 3D reconstruction engine
 All Classes Files Functions Typedefs Enumerations Enumerator Groups Pages
Options Bindings

Lists all available option bind methods. More...

reme_error_t reme_context_bind_reconstruction_options (reme_context_t c, reme_options_t o)
 Access the reconstruction options.
 
reme_error_t reme_context_bind_opencl_info (reme_context_t c, reme_options_t o)
 Access platform OpenCL information.
 
reme_error_t reme_context_bind_error_info (reme_context_t c, reme_options_t o)
 Access current error state.
 
reme_error_t reme_license_bind_hardware_hashes (reme_context_t c, reme_license_t l, reme_options_t o)
 Access hardware hashes for generating single user licenses bound to specific hardware.
 
reme_error_t reme_sensor_bind_camera_options (reme_context_t c, reme_sensor_t s, reme_options_t o)
 Access the sensor specific options that affect how the camera is opened.
 
reme_error_t reme_sensor_bind_capture_options (reme_context_t c, reme_sensor_t s, reme_options_t o)
 Access the sensor specific capture options with their current values.
 
reme_error_t reme_sensor_bind_render_options (reme_context_t c, reme_sensor_t s, reme_options_t o)
 Access the sensor specific render options.
 
reme_error_t reme_recorder_bind_file_options (reme_context_t c, reme_recorder_t r, reme_options_t o)
 Access the recorder specific file options.
 
reme_error_t reme_calibrator_bind_options (reme_context_t c, reme_calibrator_t cb, reme_options_t o)
 Access the calibration options.
 
reme_error_t reme_calibrator_bind_intrinsics (reme_context_t c, reme_calibrator_t cb, reme_options_t o)
 Access the calibration results.
 
reme_error_t reme_surface_bind_generation_options (reme_context_t c, reme_surface_t s, reme_options_t o)
 Access the surface generation options.
 
reme_error_t reme_surface_bind_poisson_options (reme_context_t c, reme_surface_t s, reme_options_t o)
 Access the poisson reconstruction options.
 
reme_error_t reme_surface_bind_decimation_options (reme_context_t c, reme_surface_t s, reme_options_t o)
 Access the surface decimation options.
 
reme_error_t reme_surface_bind_remesh_options (reme_context_t c, reme_surface_t s, reme_options_t o)
 Access the surface remeshing options.
 

Detailed Description

Lists all available option bind methods.

This page lists all known methods that bind reme_options_t to specific option sets.

Function Documentation

reme_error_t reme_context_bind_reconstruction_options ( reme_context_t  c,
reme_options_t  o 
)

Access the reconstruction options.

The reconstruction options define the behaviour of the reconstruction process. Note that some options can be set during run-time and others require re-compilation by invoking reme_context_compile. The protocol buffer specification documents when a re-compilation is necessary.

Associated Protocol Buffers Specification
package LibReconstructMe;
// Collection of settings that define the behaviour of the reconstruction.
message reconstruction_settings {
// Device number to carry out computations.
// Use -1 to signal auto-choose.
optional int32 device_id = 1 [default = -1];
// -------------------------------------------------------------------------
// Reconstruction volume settings type
message volume_settings {
// Minimum corner point type
message min_3f {
required float x = 1 [default = -500];
required float y = 2 [default = -500];
required float z = 3 [default = -500];
}
// Maximum corner point type
message max_3f {
required float x = 1 [default = 500];
required float y = 2 [default = 500];
required float z = 3 [default = 500];
}
// Volume resolution type
message res_3i {
required int32 x = 1 [default = 256];
required int32 y = 2 [default = 256];
required int32 z = 3 [default = 256];
}
// Minimum extension point of the volume in world space.
// A re-compilation the OpenCL code is required for changes to take effect.
optional min_3f minimum_corner = 1;
// Maximum extension point of the volume in world space.
// A re-compilation the OpenCL code is required for changes to take effect.
optional max_3f maximum_corner = 2;
// The volume is divided into small cuboids called voxels.
// The number of voxels per dimension can differ, but must be divisable by
// 128. 128 is the minimum resolution per dimension.
// A re-compilation the OpenCL code is required for changes to take effect.
optional res_3i resolution = 3;
}
// Volume setup
optional volume_settings volume = 2;
// -------------------------------------------------------------------------
// Point normals settings type
message normal_settings {
// Instead of calculation point normals through pixel neighbors,
// fit a parametric plane through the neighborhood.
// A re-compilation the OpenCL code is required for changes to take effect.
optional bool pca_normals = 1 [default = false];
// When pca_normals is enabled, this defines the neighborhood size.
// A re-compilation the OpenCL code is required for changes to take effect.
optional int32 half_kernel_size = 2 [default = 3];
};
// Point normals setup
optional normal_settings point_normals = 3;
// -------------------------------------------------------------------------
// Depthmap erode settings type.
// Inaccuracies of depthmaps can occur at sharp depth steps. Through erosion
// sharp edges are eliminated.
message depth_erode_settings {
// Enables or disables eroding of depthmaps.
optional bool enabled = 1 [default = false];
// The half size of depth contour erosion kernel size in pixel.
optional int32 half_kernel_size = 2 [default = 2];
// The threshold for detecting sharp edges in the depth map.
optional int32 minimum_depth_step = 3 [default = 30];
};
// Depthmap erosion setup
optional depth_erode_settings depthmap_erosion = 4;
// Color-map erosion settings type.
// Inaccuracies of colorization can occur at sharp depth steps. Through colors are
// invalidated at such sharp edges.
message color_erode_settings {
// Enables or disables eroding of color-maps.
optional bool enabled = 1 [default = true];
// The half size of color contour erosion kernel size in pixel.
optional int32 half_kernel_size = 4 [default = 2];
// The threshold for detecting sharp edges in the depth map.
optional int32 minimum_depth_step = 3 [default = 30];
};
// Color-map erosion setup
optional color_erode_settings colormap_erosion = 5;
// -------------------------------------------------------------------------
// Depthmap bilateral filter settings type.
// Smoothes the depthmap while preserving sharp depthmap edges.
message bilateral_filter_settings {
// Enables or disables smoothing of depthmaps
optional bool enabled = 1 [default = true];
// The half size of bilateral filter kernel size in pixel.
optional int32 half_kernel_size = 2 [default = 3];
// The half size of the Gaussian bilateral filter window in pixel space
optional float sigma_pixel = 3 [default = 9.0];
// The half size of the Gaussian bilateral filter window in depth space
optional float sigma_depth = 4 [default = 30.0];
};
// Depthmap smoothing setup
optional bilateral_filter_settings depthmap_smoothing = 6;
// -------------------------------------------------------------------------
// Data integration settings type.
// Defines how adding data to the volume is carried out
message integration_settings {
// Defines the minimum thickness of objects in the volume.
// Lower values allow you to scan thinner objects. Settings this value
// too low results in reconstruction holes and incorrect tracking.
// A re-compilation the OpenCL code is required for changes to take effect.
optional float truncation = 1 [default = 20];
// Each volume voxel smoothes data from the last integrations.
// The maximum weight can be thought of as an moving average threshold.
// Once reached the voxel starts to forget older values.
// A re-compilation the OpenCL code is required for changes to take effect.
optional int32 maximum_weight = 2 [default = 32];
optional float maximum_depth = 3 [default = 1500];
// Only points facing the camera in an angle no more than the given one
// will be considered in integration. Value is in degrees.
optional float maximum_angle = 4 [default = 70];
// Enable support for colors in volume.
optional bool use_colors = 5 [default = false];
// Depth values beyond maximum_depth won't be integrated, but can be used for
// object change detection. If the distance difference at a specific pixel between
// the measured sensor depth and the old object depth is greater than minimum_deletion_distance,
// the object will be erased from the global model.
optional float minimum_deletion_distance = 6 [default = 40.0];
}
// Integration setup
optional integration_settings data_integration = 7;
// -------------------------------------------------------------------------
// Data extraction settings type.
// Defines how the volume is raytraced to generate synthetic sensor data,
// which is used to align the current raw sensor data with the last camera
// position.
message extraction_settings {
// Step factor of the ray marching algorithm. Specified in terms of
// percent of data_integration.truncation
// A re-compilation the OpenCL code is required for changes to take effect.
optional float step_factor = 1 [default = 0.7];
// Numerical step length of gradient calculation
// Estimating point normals in the volume is carried out using
// numerical differentation. This value value defines the
// the +/- distance of samples around the value to be differentiated.
// Higher values will lead to smoother but maybe inaccurate normals.
// A re-compilation the OpenCL code is required for changes to take effect.
optional float gradient_step_length = 2 [default = 0.1];
}
// Raytracing setup
optional extraction_settings data_extraction = 8;
// -------------------------------------------------------------------------
// Camera tracking alignment settings type.
// Defines how tracking the camera position between frames behaves.
message alignment_settings {
// Local search parameters. Local search is fast and succeeds when
// the camera movement between two subsequent frames is small.
message local_search_settings {
// Maximum number of iterations to perform
// A re-compilation the OpenCL code is required for changes to take effect.
optional int32 maximum_iterations = 1 [default = 7];
// Number of data pyramid levels to generate
// A re-compilation the OpenCL code is required for changes to take effect.
optional int32 pyramid_levels = 2 [default = 2];
// Maximum point distance between two points to establish correspondences
// A re-compilation the OpenCL code is required for changes to take effect.
optional float maximum_point_distance = 3 [default = 20];
// Maximum normal angle deviation two points to establish correspondences
// A re-compilation the OpenCL code is required for changes to take effect.
optional float maximum_normal_angle = 4 [default = 30];
}
// Global search parameters. Global search is slower than local search but
// succeeds in cases where the camera movement between two subsequent frames large.
message global_search_settings {
// Maximum number of seconds to search for tracking
// A re-compilation the OpenCL code is required for changes to take effect.
optional float maximum_seconds = 1 [default = 0.7];
// Minimum inlier percentage to become a valid hypothesis.
// A re-compilation the OpenCL code is required for changes to take effect.
optional float minimum_inlier_percentage = 3 [default = 0.4];
}
// Verification of transform estimation.
message verification_settings {
// Maximum allowed average SDF change of voxels when tracking is established
optional float maximum_sdf_change_on_track = 1 [default = 0.08];
// Maximum allowed average SDF change of voxels when no tracking is present
optional float maximum_sdf_change_no_track = 2 [default = 0.08];
};
// Local search parameters
optional local_search_settings local_search = 1;
// Global search parameters
optional global_search_settings global_search = 2;
// Verification settings
optional verification_settings verification = 3;
// Pad missing volume data with sensor data to increase tracking robustness when only portions
// of the volume are visible. Enabling this feature assumes a moving camera and a static scene.
optional bool use_sensor_data_padding = 4 [default = false];
// Anticipates the next position by trying to forecast. Useful to reduce the number of
// local search iterations. Enabling this feature assumes that the camera movement is kinda
// smooth.
optional bool use_position_forecast = 5 [default = true];
}
// Alignment setup
optional alignment_settings camera_tracking = 9;
}
Parameters
cA valid context object
oA valid options binding
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
Examples:
example_reconstructmesdk_colorize.cpp, example_reconstructmesdk_options.cpp, example_reconstructmesdk_point_and_shoot_with_colors.cpp, example_reconstructmesdk_scan_tilt.cpp, example_reconstructmesdk_sensor_printing.cpp, and example_reconstructmesdk_volume.cpp.
reme_error_t reme_context_bind_opencl_info ( reme_context_t  c,
reme_options_t  o 
)

Access platform OpenCL information.

Associated Protocol Buffers Specification
package LibOpenCLBridge;
message opencl_info {
// Defines the type of the device
enum device_type {
CPU = 0;
GPU = 1;
}
// Defines a device
message device {
// Product string
optional string name = 1 [default = "Unknown device name"];
// Vendor string
optional string vendor = 2 [default = "Unknown device vendor"];
// Type of device
optional device_type type = 3;
// Global memory size in bytes.
optional int64 global_memory_size = 4;
// Internal ranking of device based on flops.
// Lower numbers are better ranks.
optional int32 rank = 5;
// Platform string. Devices might be found in multiple platforms (i.e using different drivers)
optional string platform_name = 6 [default = "Unknown platform name"];
}
// List of devices.
repeated device devices = 1;
}
Parameters
cA valid context object
oA valid options binding
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
Examples:
example_reconstructmesdk_options.cpp.
reme_error_t reme_context_bind_error_info ( reme_context_t  c,
reme_options_t  o 
)

Access current error state.

Associated Protocol Buffers Specification
// Current error state
message error_info {
// List of error messages in order of arrival.
repeated string messages = 1;
}
Parameters
cA valid context object
oA valid options binding
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
Examples:
example_reconstructmesdk_error_handling.cpp.
reme_error_t reme_license_bind_hardware_hashes ( reme_context_t  c,
reme_license_t  l,
reme_options_t  o 
)

Access hardware hashes for generating single user licenses bound to specific hardware.

Associated Protocol Buffers Specification
// Hardware hashes
message hardware {
repeated string hashes = 1;
}
Parameters
cA valid context object
lA valid license object
oA valid options binding
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
reme_error_t reme_sensor_bind_camera_options ( reme_context_t  c,
reme_sensor_t  s,
reme_options_t  o 
)

Access the sensor specific options that affect how the camera is opened.

Associated Protocol Buffers Specification
Depending on the sensor chosen on create, different specs are needed, since each sensor supports a different set of parameters.

For openni sensors (OpenNI 2.x)

import "rgbdsensor/videostream.proto";
package LibRGBDSensor;
// OpenNI v2.0 sensor configuration
message openni2_sensor_config {
// Default driver model
optional string driver = 1 [default = "openni"];
// Device ID
optional int32 device_id = 2 [default = 0];
optional LibRGBDSensor.videostream depth_stream = 3;
optional LibRGBDSensor.videostream aux_stream = 4;
// Map depth viewpoint to aux viewpoints.
optional bool enable_align_viewpoints = 5 [default = true];
}

For mskinect sensors

import "rgbdsensor/videostream.proto";
package LibRGBDSensor;
// Kinect sensor configuration based on MSKinect driver
message mskinect_sensor_config {
// Default driver model
optional string driver = 1 [default = "mskinect"];
// Device ID
optional int32 device_id = 2 [default = 0];
optional LibRGBDSensor.videostream depth_stream = 3;
optional LibRGBDSensor.videostream aux_stream = 4;
// Map depth viewpoint to aux viewpoints.
optional bool enable_align_viewpoints = 5 [default = true];
// Enable near mode
optional bool enable_near_mode = 6 [default = true];
}

For file sensors

import "rgbdsensor/videostream.proto";
package LibRGBDSensor;
// OpenNI sensor configuration
message file_sensor_config {
// Default driver model
optional string driver = 1 [default = "file"];
optional LibRGBDSensor.videostream depth_stream = 3;
optional LibRGBDSensor.videostream aux_stream = 4;
// Map depth viewpoint to aux viewpoints.
optional bool enable_align_viewpoints = 5 [default = false];
}

For openni sensors (OpenNI 1.x)

import "rgbdsensor/videostream.proto";
package LibRGBDSensor;
// OpenNI 1.0 sensor configuration
message openni_sensor_config {
// Default driver model
optional string driver = 1 [default = "openni1"];
// Device ID
optional int32 device_id = 2 [default = 0];
optional LibRGBDSensor.videostream depth_stream = 3;
optional LibRGBDSensor.videostream aux_stream = 4;
// Map depth viewpoint to aux viewpoints.
optional bool enable_align_viewpoints = 5 [default = true];
}

Common to all configurations above is the usage of the LibRGBDSensor.videostream

import "rgbdsensor/intrinsics.proto";
package LibRGBDSensor;
// Defines properties of a video stream
message videostream {
// Video stream type
enum stream_type {
STREAM_DEPTH = 1;
STREAM_COLOR = 2;
STREAM_IR = 3;
}
// Type of stream
optional stream_type type = 1 [default = STREAM_DEPTH];
// Enable or disable this stream
optional bool enabled = 2 [default = true];
// Defines the where the stream is c
optional string source = 3 [default = ""];
// Image size description
message image_size_type {
optional int32 width = 1 [default = 640];
optional int32 height = 2 [default = 480];
};
// Defines the initial image size
optional image_size_type image_size = 4;
// Unit description
enum units_type {
// No units
UNIT_UNKNOWN = 0;
// Unit is milli-meter
UNIT_1MM = 1;
// Unit is 0.1 milli-meter
UNIT_100UM = 2;
}
// Depth dimension
optional units_type units = 5 [default = UNIT_UNKNOWN];
// Mirror image
optional bool mirror_enabled = 6 [default = false];
// Target FPS
optional int32 fps = 7 [default = 30];
// Stream intrinsics
optional LibRGBDSensor.intrinsics intrinsics = 8;
}

The referenced LibRGBDSensor.intrinsics has the following layout

package LibRGBDSensor;
// Camera intrinsics
message intrinsics {
// Image size this intrinsics applies to.
optional int32 width = 1 [default = 640];
optional int32 height = 2 [default = 480];
// Camera matrix
optional double fx = 3 [default = 571.26];
optional double fy = 4 [default = 571.26];
optional double cx = 5 [default = 320];
optional double cy = 6 [default = 240];
// Radial distortion coefficients
// Set to zero to disable certain calculations
optional double k1 = 7 [default = 0];
optional double k2 = 8 [default = 0];
optional double k3 = 9 [default = 0];
// Tangential distortion coefficients
// Set to zero to disable certain calculations
optional double p1 = 10 [default = 0];
optional double p2 = 11 [default = 0];
}
Note
When radial or tangential distortion parameters are not equal zero a distortion correction will be performed.
Changing camera options take effect on the next call to reme_sensor_open.
Parameters
cA valid context object
sA valid sensor object
oA valid options binding object
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
Examples:
example_reconstructmesdk_calibration.cpp, example_reconstructmesdk_colorize.cpp, example_reconstructmesdk_point_and_shoot_with_colors.cpp, example_reconstructmesdk_recorder.cpp, and example_reconstructmesdk_sensor.cpp.
reme_error_t reme_sensor_bind_capture_options ( reme_context_t  c,
reme_sensor_t  s,
reme_options_t  o 
)

Access the sensor specific capture options with their current values.

Associated Protocol Buffers Specification

Depending on the sensor chosen on create, different specs are needed, since each sensor supports a different set of parameters.

For openni sensors

import "rgbdsensor/basic_frame_support.proto";
package LibRGBDSensor;
// OpenNI sensor capture parameter description
message openni_sensor_capture_parameter {
// Frame specific information. Read-only.
optional LibRGBDSensor.basic_frame_support frame_info = 1;
// Infrared raw intensity multiplier. Read-Write.
optional int32 ir_alpha = 2 [default = 4];
}

For mskinect sensors

import "rgbdsensor/basic_frame_support.proto";
package LibRGBDSensor;
// Microsoft Kinect for Windows capture parameter description
message mskinect_sensor_capture_parameter {
// Frame specific information. Read-only.
optional LibRGBDSensor.basic_frame_support frame_info = 1;
// Enable IR projector. Read-Write.
optional bool enable_ir_projector = 2 [default = true];
// Infrared raw intensity multiplier. Read-Write.
optional int32 ir_alpha = 3 [default = 10];
// Elevation or tilt angle. Read-Write.
// Extends the view range to to +/- 27 degrees. A value of 0 means perpendicular to gravity.
// The movement of the motor is performed asynchronously. Only one asnychronous tilt movement
// it allowed at any time. Too frequent changes to the tilt angle can cause damage to the motor.
// Note that the IR projector is turned off while tilting, essentially making ReconstructMe blind
// while the sensor moves.
optional int32 tilt_angle = 4 [default = 0];
// Sets/Gets a boolean that determines if automatic exposure is enabled.
optional bool auto_exposure = 5 [default = true];
// Sets/Gets boolean that determines if automatic white balance is enabled.
optional bool auto_white_balance = 6 [default = true];
// Sets/Gets the exposure time in increments of 1/10,000 of a second.
// The range is [0.0, infinity];
optional float exposure_time = 7 [default = 300];
// Sets/Gets the white balance, which is a color temperature in degrees Kelvin.
// The range is [2700, 6500];
optional float white_balance = 8 [default = 4500];
}

For file sensors

import "rgbdsensor/basic_frame_support.proto";
package LibRGBDSensor;
// File sensor capture parameter description
message file_sensor_capture_parameter {
// Frame specific information. Read-only.
optional LibRGBDSensor.basic_frame_support frame_info = 1;
}

Common to all configurations above is the frame_info field. It is mendatory for reconstruction and has the following structure

package LibRGBDSensor;
// Contains information on basic sensor image support.
message basic_frame_support {
// Image size type
message image_size {
optional int32 width = 1 [default = 640];
optional int32 height = 2 [default = 480];
};
// True when sensor supports depth stream
optional bool supports_depth = 1;
// True when sensor supports an auxilary stream
optional bool supports_aux = 2;
// Frame size of depth image in pixels
optional image_size depth_size = 3;
// Frame size of auxilary image in pixels
optional image_size aux_size = 4;
}
Note
The capture options are updated with current value when reme_sensor_bind_capture_options is called.
Changing capture options without a call to reme_sensor_apply_capture_options has no effect.
Parameters
cA valid context object
sA valid sensor object
oA valid options binding object
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
Examples:
example_reconstructmesdk_scan_tilt.cpp, and example_reconstructmesdk_sensor.cpp.
reme_error_t reme_sensor_bind_render_options ( reme_context_t  c,
reme_sensor_t  s,
reme_options_t  o 
)

Access the sensor specific render options.

These options define how sensor images are rendered. Use reme_sensor_apply_render_options to apply value changes.

Associated Protocol Buffers Specification
// Render options
message render_options {
// Color type
message color4_type {
// Red channel [0..1]
required float r = 1;
// Green channel [0..1]
required float g = 2;
// Blue channel [0..1]
required float b = 3;
// Alpha channel [0..1]
required float a = 4;
}
// How shading of the volume image is performed.
enum shade_type {
// Shade points using Blinn-Phong modell
SHADE_PHONG = 0;
// Shade points according to normal direction.
SHADE_NORMALS = 1;
// Colorize pixels using input color. This is only
// a valid options if colors are supported.
SHADE_COLORS = 2;
}
// Clear color for volume images.
// By default this maps to a dark-gray color.
optional color4_type clear_color = 1;
// Diffuse color for volume images. Only used
// when SHADE_PHONG is enabled.
// By default this maps to a pastel-blue color.
optional color4_type diffuse_color = 2;
// Border color. Defines the color to apply to color borders,
// which are found in areas without complete texture/geometry
// information.
// This color only applies when using SHADE_COLORS.
optional color4_type border_color = 3;
// Shading mode.
optional shade_type shade_mode = 4 [default = SHADE_PHONG];
}
Parameters
cA valid context object
sA valid sensor object
oA valid options binding object
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
Examples:
example_reconstructmesdk_colorize.cpp, and example_reconstructmesdk_point_and_shoot_with_colors.cpp.
reme_error_t reme_recorder_bind_file_options ( reme_context_t  c,
reme_recorder_t  r,
reme_options_t  o 
)

Access the recorder specific file options.

Associated Protocol Buffers Specification
// Recorder options
message recorder_options {
// Where to save the depth file
optional string depth_file = 1 [default = "reconstructme.depths.gz"];
// Where to save the color file if supported
optional string color_file = 2 [default = "reconstructme.avi"];
// Where to save the file_sensor configuration file
// Note that the recorder will copy the relevant sensor intrinsics
// from the real sensor
optional string file_sensor_config = 3 [default = "file_sensor.txt"];
}
Parameters
cA valid context object
rA valid recorder object
oA valid options binding object
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
Examples:
example_reconstructmesdk_recorder.cpp.
reme_error_t reme_calibrator_bind_options ( reme_context_t  c,
reme_calibrator_t  cb,
reme_options_t  o 
)

Access the calibration options.

Associated Protocol Buffers Specification
// Calibration options for chessboards
message calibration_options {
// Number of inner corners in the width direction
optional int32 inner_count_width = 1 [default = 10];
// Number of inner corners in the height direction
optional int32 inner_count_height = 2 [default = 7];
// Length of a single square side. Defaults are are in mm for default A3 checkerboard.
optional float length_square_side = 3 [default = 33.876];
// Number of pixels to use when refining corners in the width direction
optional int32 refine_width = 4 [default = 5];
// Number of pixels to use when refining corners in the height direction
optional int32 refine_height = 5 [default = 5];
// Assume no tangential distortions
optional bool zero_tangential = 6 [default = true];
// Assume no lower order radial distortions
optional bool zero_radial_k1k2 = 7 [default = true];
// Assume no higher order radial distortions
optional bool zero_radial_k3 = 8 [default = true];
}

The calibration options are applied when the first image is added (reme_calibrator_add_image).

Parameters
cA valid context object
cbA valid calibration object
oA valid options binding object
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
reme_error_t reme_calibrator_bind_intrinsics ( reme_context_t  c,
reme_calibrator_t  cb,
reme_options_t  o 
)

Access the calibration results.

The results are provided as a new intrincis options set.

Associated Protocol Buffers Specification
package LibRGBDSensor;
// Camera intrinsics
message intrinsics {
// Image size this intrinsics applies to.
optional int32 width = 1 [default = 640];
optional int32 height = 2 [default = 480];
// Camera matrix
optional double fx = 3 [default = 571.26];
optional double fy = 4 [default = 571.26];
optional double cx = 5 [default = 320];
optional double cy = 6 [default = 240];
// Radial distortion coefficients
// Set to zero to disable certain calculations
optional double k1 = 7 [default = 0];
optional double k2 = 8 [default = 0];
optional double k3 = 9 [default = 0];
// Tangential distortion coefficients
// Set to zero to disable certain calculations
optional double p1 = 10 [default = 0];
optional double p2 = 11 [default = 0];
}
Parameters
cA valid context object
cbA valid calibration object
oA valid options binding object
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
Examples:
example_reconstructmesdk_calibration.cpp.
reme_error_t reme_surface_bind_generation_options ( reme_context_t  c,
reme_surface_t  s,
reme_options_t  o 
)

Access the surface generation options.

Associated Protocol Buffers Specification
// Surface generation from reconstruction volume
message generation_options {
// When enabled duplicate vertices within a certain radius are merged towards a single vertex.
optional bool merge_duplicate_vertices = 1 [default = true];
// Defines merge radius. Larger values will perform a simple decimation
optional float merge_radius = 2 [default = 0.00001];
}
Parameters
cA valid context object
sA valid surface object
oA valid options binding object
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
Examples:
example_reconstructmesdk_surface.cpp.
reme_error_t reme_surface_bind_poisson_options ( reme_context_t  c,
reme_surface_t  s,
reme_options_t  o 
)

Access the poisson reconstruction options.

Associated Protocol Buffers Specification
// Poisson surface generation options
message poisson_options {
optional int32 depth = 1 [default = 8];
optional int32 solver_divide = 2 [default = 8];
optional int32 iso_divide = 3 [default = 8];
optional int32 minimum_samples_per_node = 4 [default = 1];
optional float scale = 5 [default = 1.25];
optional bool enable_manifold = 6 [default = true];
optional int32 minimum_depth = 7 [default = 5];
}
Parameters
cA valid context object
sA valid surface object
oA valid options binding object
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
Examples:
example_reconstructmesdk_options_type_safe.cpp, and example_reconstructmesdk_surface.cpp.
reme_error_t reme_surface_bind_decimation_options ( reme_context_t  c,
reme_surface_t  s,
reme_options_t  o 
)

Access the surface decimation options.

Associated Protocol Buffers Specification
// Mesh decimation options
message decimation_options {
// Decimate to target complexity.
// Range: 0..inf
optional int32 maximum_faces = 1 [default = 100000];
// Maximum quadric error to accept per collapse. The quadric error is similar
// to the Hausdorff Distance.
// Range: 0..inf
optional float maximum_quadric_error = 2 [default = 100000];
// Minimum triangle roundness. Normalized triangle roundness with respect to
// equiliteral triangle shape.
// Range: 0..1
optional float minimum_triangle_roundness = 3 [default = 0];
// Maximum normal angle error in degrees.
// Range: 0..180
optional float maximum_angle_error = 4 [default = 90];
// Preserve the boundary of the mesh.
optional bool preserve_boundary = 5 [default = false];
// Preserve the boundary of the mesh.
optional float maximum_color_error = 6 [default = 765];
}
Parameters
cA valid context object
sA valid surface object
oA valid options binding object
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
Examples:
example_reconstructmesdk_surface.cpp.
reme_error_t reme_surface_bind_remesh_options ( reme_context_t  c,
reme_surface_t  s,
reme_options_t  o 
)

Access the surface remeshing options.

Associated Protocol Buffers Specification
// Mesh remeshing options
message remeshing_options {
// Minimum target edge length in remeshing.
// Range: 0..inf and -1.
// Leave at -1 to auto-calculate from average mesh edge length
optional float minimum_edge_length = 1 [default = -1];
// Maximum target edge length in remeshing.
// Range: 0..inf and -1.
// Leave at -1 to auto-calculate from average mesh edge length
optional float maximum_edge_length = 2 [default = -1];
// Maximum color error to tolerate in remeshing.
// If the error in color change when collapsing an edge is above
// this threshold, the collapse is not tolerated. Note that this property
// is only taken into account if the input mesh has vertex colors.
// Range 0..255*3
optional float maximum_color_error = 3 [default = 20.0];
// Maximum curfvate error to tolerate in remeshing.
// If the error in geometric change when collapsing an edge is above
// this threshold, the collapse is not tolerated.
// Range 0..1
optional float maximum_curvate_error = 4 [default = 0.5];
// Instead of adaptive remeshing perform a uniform remeshing.
// Use the maximum_edge_length property to control the target resolution.
// Note that maximum_color_error and maximum_curvate_error would be respected
// in this mode.
optional bool uniform = 5 [default = false];
// Number of iterations to apply.
optional int32 iterations = 6 [default = 5];
}
Parameters
cA valid context object
sA valid surface object
oA valid options binding object
Return values
REME_ERROR_SUCCESSOn success
REME_ERROR_UNSPECIFIEDOn failure
Examples:
example_reconstructmesdk_colorize.cpp.