To learn parameters, the easiest way is to execute a program from terminal with "--help". The instructions are self explanatory. The other way is to read the BASH script files included in the package.

This page only describes the most important parameters of the 3D reconstruction system.

pcl_kinfu_largeScale_release.exe
-r -ic -sd 10: use together to enable proper ONI reader behavior and forbid volume from shifting
-vs [volume_size]: volume size of each local fragment, in meters (3 or 4 is a general good number)
-oni [oni_file]: input RGB-D stream
--rgbd_odometry or --kintinuous: use our implementation of RGBD odometry or Kintinuous as odometry; use KinectFusion if neither is specified
--fragment [X]: create one fragment every 2X frames
--record_log [fragment_log_file]: save the camera poses into a log file
--camera [param_file]: use camera intrinsics in a param file

Param file is a text file with six parameters: focal_length_x, focal_length_y, optical_center_x, optical_center_y, ICP_truncation_distance, integration_truncation_distance. Distances are in meters. Other parameters are in pixels.

GlobalRegistration.exe

One way to run GlobalRegistration is to specify a folder containing fragments in the format of pcd files. See our registration solution page for details.

In our system, in addition to specify the folder, the per-fragment camera pose trajectory, and the per-fragment frame number should be given. Thus use the following command:

> GlobalRegistration.exe <pcd_directory> <log_file> <frame_number_per_segment>
GraphOptimizer.exe
-w 100: weight for line process terms, use 100 as default
--odometry [odometry.log] --odometryinfo [odometry.info] --loop [result.txt] --loopinfo [result.info] --pose [pose.log]: input files created by GlobalRegistration.exe
--keep [keep.log] --refine [reg_refine_all.log]: output files to be used by BuildCorrespondence.exe; [reg_refine_all.log] is the pruned registration results from [result.txt]
BuildCorrespondences.exe
--reg_traj [reg_refine_all.log]: alignments between fragments, produced by GraphOptimizer.exe
--registration --reg_num 0: enable ICP registration
--reg_dist [distance]: threshold to determine point correspondences, in meters, set to 0.05
--reg_ratio [ratio]: minimum overlapping ratio between fragments, set to 0.25
--save_xyzn: translate binary pcd files into ASCII xyzn files
FragmentOptimizer.exe
--rgbdslam [init.log] --registration [reg_output.log]: input files produced by previous modules
--dir [pcd_directory]: folder that stores fragment files
--num [num_of_fragments]: number of fragments
--slac or --nonrigid or --rigid: CVPR 2014 or ICCV 2013 or SIGGRAPH 2013 approach, use --slac by default
--resolution [grid_resolution]: resolution of control lattices if you use --slac or --nonrigid; set to 8 or 12 or 16
--iteration [iteration_number]: set to 10 for --slac and --nonrigid, 100 for --rigid
--length [volume_size]: volume size of each fragment, must be consistent with the parameter of pcl_kinfu_largeScale_release.exe
--write_xyzn_sample 10: output a debug pcd file
Integrate.exe
--pose_traj [pose.log] --seg_traj [fragment_log_file] --ctr [output.ctr]: input files produced by previous modules
--num [num_of_fragments]: number of fragments
--resolution [grid_resolution]: resolution of control lattices, must be consistent with the parameter of FragmentOptimizer.exe
--camera [param_file] -oni [oni_file]: input files, must be consistent with the parameter of pcl_kinfu_largeScale_release.exe
--length [volume_size]: volume size of each fragment, must be consistent with the parameter of FragmentOptimizer.exe and pcl_kinfu_largeScale_release.exe
--interval [frame_number_per_segment]: number of frames per segment, must be consistent with the parameter of GlobalRegistration.exe and pcl_kinfu_largeScale_release.exe
pcl_kinfu_largeScale_mesh_output_release.exe

Integrate.exe should produce a world.pcd. Use the following command to create ply files:

> pcl_kinfu_largeScale_mesh_output_release.exe world.pcd