Skip to content

Commit 20d8cc6

Browse files
yxlaoqianyizh
authored andcommitted
misc fixes for reconstruction docs (#997)
* misc fixes for reconstruction docs * hightlight
1 parent e7835c8 commit 20d8cc6

File tree

5 files changed

+15
-17
lines changed

5 files changed

+15
-17
lines changed

docs/tutorial/ReconstructionSystem/make_fragments.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ The first step of the scene reconstruction system is to create fragments from sh
88
Input arguments
99
``````````````````````````````````````
1010

11-
The script runs with ``python run_system.py [config] --make``. In ``[config]``, ``["path_dataset"]`` should have subfolders *image* and *depth* to store the color images and depth images respectively. We assume the color images and the depth images are synchronized and registered. In ``[config]``, the optional argument ``["path_intrinsic"]`` specifies path to a json file that stores the camera intrinsic matrix (See :ref:`reading_camera_intrinsic` for details). If it is not given, the PrimeSense factory setting is used instead.
11+
The script runs with ``python run_system.py [config] --make``. In ``[config]``, ``["path_dataset"]`` should have subfolders ``image`` and ``depth`` to store the color images and depth images respectively. We assume the color images and the depth images are synchronized and registered. In ``[config]``, the optional argument ``["path_intrinsic"]`` specifies the path to a json file that stores the camera intrinsic matrix (See :ref:`reading_camera_intrinsic` for details). If it is not given, the PrimeSense factory setting is used instead.
1212

1313
.. _make_fragments_register_rgbd_image_pairs:
1414

@@ -21,7 +21,7 @@ Register RGBD image pairs
2121
:lines: 5,35-60
2222
:linenos:
2323

24-
The function reads a pair of RGBD images and registers the ``source_rgbd_image`` to the ``target_rgbd_image``. Open3D function ``compute_rgbd_odometry`` is called to align the RGBD images. For adjacent RGBD images, an identity matrix is used as initialization. For non-adjacent RGBD images, wide baseline matching is used as an initialization. In particular, function ``pose_estimation`` computes OpenCV ORB feature to match sparse features over wide baseline images, then performs 5-point RANSAC to estimate a rough alignment. It is used as the initialization of ``compute_rgbd_odometry``.
24+
The function reads a pair of RGBD images and registers the ``source_rgbd_image`` to the ``target_rgbd_image``. Open3D function ``compute_rgbd_odometry`` is called to align the RGBD images. For adjacent RGBD images, an identity matrix is used as initialization. For non-adjacent RGBD images, wide baseline matching is used as an initialization. In particular, function ``pose_estimation`` computes OpenCV ORB feature to match sparse features over wide baseline images, then performs 5-point RANSAC to estimate a rough alignment, which is used as the initialization of ``compute_rgbd_odometry``.
2525

2626

2727
.. _make_fragments_make_a_posegraph:

docs/tutorial/ReconstructionSystem/refine_registration.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Refine registration
66
Input arguments
77
``````````````````````````````````````
88

9-
This script runs with ``python run_system.py [config] --refine``. In ``[config]``, ``["path_dataset"]`` should have subfolders *fragments* which stores fragments in .ply files and a pose graph in a .json file.
9+
This script runs with ``python run_system.py [config] --refine``. In ``[config]``, ``["path_dataset"]`` should have subfolders ``fragments`` which stores fragments in ``.ply`` files and a pose graph in a ``.json`` file.
1010

1111
The main function runs ``local_refinement`` and ``optimize_posegraph_for_scene``. The first function performs pairwise registration on the pairs detected by :ref:`reconstruction_system_register_fragments`. The second function performs multiway registration.
1212

@@ -20,7 +20,7 @@ Fine-grained registration
2020
:lines: 5,39-92
2121
:linenos:
2222

23-
Two options are given for the fine-grained registration. The ``color`` is recommended since it uses color information to prevent drift. Details see [Park2017]_.
23+
Two options are given for the fine-grained registration. The ``color`` option is recommended since it uses color information to prevent drift. See [Park2017]_ for details.
2424

2525

2626
Multiway registration
@@ -32,7 +32,7 @@ Multiway registration
3232
:lines: 5,17-36
3333
:linenos:
3434

35-
This script uses the technique demonstrated in :ref:`multiway_registration`. Function ``update_posegrph_for_refined_scene`` builds a pose graph for multiway registration of all fragments. Each graph node represents a fragments and its pose which transforms the geometry to the global space.
35+
This script uses the technique demonstrated in :ref:`multiway_registration`. Function ``update_posegrph_for_refined_scene`` builds a pose graph for multiway registration of all fragments. Each graph node represents a fragment and its pose which transforms the geometry to the global space.
3636

3737
Once a pose graph is built, function ``optimize_posegraph_for_scene`` is called for multiway registration.
3838

docs/tutorial/ReconstructionSystem/register_fragments.rst

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Once the fragments of the scene are created, the next step is to align them in a
88
Input arguments
99
``````````````````````````````````````
1010

11-
This script runs with ``python run_system.py [config] --register``. In ``[config]``, ``["path_dataset"]`` should have subfolders *fragments* which stores fragments in .ply files and a pose graph in a .json file.
11+
This script runs with ``python run_system.py [config] --register``. In ``[config]``, ``["path_dataset"]`` should have subfolders ``fragments`` which stores fragments in ``.ply`` files and a pose graph in a ``.json`` file.
1212

1313
The main function runs ``make_posegraph_for_scene`` and ``optimize_posegraph_for_scene``. The first function performs pairwise registration. The second function performs multiway registration.
1414

@@ -62,7 +62,7 @@ Multiway registration
6262
:lines: 5,85-104
6363
:linenos:
6464

65-
This script uses the technique demonstrated in :ref:`multiway_registration`. Function ``update_posegrph_for_scene`` builds a pose graph for multiway registration of all fragments. Each graph node represents a fragments and its pose which transforms the geometry to the global space.
65+
This script uses the technique demonstrated in :ref:`multiway_registration`. Function ``update_posegrph_for_scene`` builds a pose graph for multiway registration of all fragments. Each graph node represents a fragment and its pose which transforms the geometry to the global space.
6666

6767
Once a pose graph is built, function ``optimize_posegraph_for_scene`` is called for multiway registration.
6868

@@ -75,16 +75,14 @@ Once a pose graph is built, function ``optimize_posegraph_for_scene`` is called
7575
Main registration loop
7676
``````````````````````````````````````
7777

78-
The function ``make_posegraph_for_scene`` below calls all the functions introduced above.
78+
The function ``make_posegraph_for_scene`` below calls all the functions introduced above. The main workflow is: pairwise global registration -> multiway registration.
7979

8080
.. literalinclude:: ../../../examples/Python/ReconstructionSystem/register_fragments.py
8181
:language: python
8282
:lineno-start: 136
8383
:lines: 5,137-177
8484
:linenos:
8585

86-
The main workflow is: pairwise global registration -> multiway registration.
87-
8886
Results
8987
``````````````````````````````````````
9088

@@ -112,4 +110,4 @@ The following is messages from pose graph optimization.
112110
CompensateReferencePoseGraphNode : reference : 0
113111
114112
115-
There are 14 fragments and 52 valid matching pairs between fragments. After 23 iteration, 11 edges are detected to be false positive. After they are pruned, pose graph optimization runs again to achieve tight alignment.
113+
There are 14 fragments and 52 valid matching pairs among the fragments. After 23 iteration, 11 edges are detected to be false positive. After they are pruned, pose graph optimization runs again to achieve tight alignment.

docs/tutorial/ReconstructionSystem/system_overview.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
System overview
44
-----------------------------------
55

6-
The system has three main steps:
6+
The system has 4 main steps:
77

88
**Step 1**. :ref:`reconstruction_system_make_fragments`: build local geometric surfaces (referred to as
99
fragments) from short subsequences of the input RGBD sequence. This part uses :ref:`rgbd_odometry`, :ref:`multiway_registration`, and :ref:`rgbd_integration`.
@@ -12,7 +12,7 @@ fragments) from short subsequences of the input RGBD sequence. This part uses :r
1212

1313
**Step 3**. :ref:`reconstruction_system_refine_registration`: the rough alignments are aligned more tightly. This part uses :ref:`icp_registration`, and :ref:`multiway_registration`.
1414

15-
**Step 3**. :ref:`reconstruction_system_integrate_scene`: integrate RGB-D images to generate a mesh model for
15+
**Step 4**. :ref:`reconstruction_system_integrate_scene`: integrate RGB-D images to generate a mesh model for
1616
the scene. This part uses :ref:`rgbd_integration`.
1717

1818
.. _reconstruction_system_dataset:
@@ -22,14 +22,14 @@ Example dataset
2222

2323
We use `the SceneNN dataset <http://people.sutd.edu.sg/~saikit/projects/sceneNN/>`_ to demonstrate the system in this tutorial. Alternatively, there are lots of excellent RGBD datasets such as `Redwood data <http://redwood-data.org/>`_, `TUM RGBD data <https://vision.in.tum.de/data/datasets/rgbd-dataset>`_, `ICL-NUIM data <https://www.doc.ic.ac.uk/~ahanda/VaFRIC/iclnuim.html>`_, and `SUN3D data <http://sun3d.cs.princeton.edu/>`_.
2424

25-
The tutorial uses the 016 sequence from the SceneNN dataset. The sequence is from `SceneNN oni file archieve <https://drive.google.com/drive/folders/0B-aa7y5Ox4eZUmhJdmlYc3BQSG8>`_. The oni file can be extracted into color and depth image sequence using `OniParser from the Redwood reconstruction system <http://redwood-data.org/indoor/tutorial.html>`_. Alternatively, any tool that can convert an .oni file into a set of synchronized RGBD images will work. This is a `quick link <https://drive.google.com/open?id=11U8jEDYKvB5lXsK3L1rQcGTjp0YmRrzT>`_ to download the rgbd sequence used in this tutorial. Some helper scripts can be found from ``ReconstructionSystem/scripts``.
25+
The tutorial uses sequence ``016`` from the SceneNN dataset. This is a `quick link <https://drive.google.com/open?id=11U8jEDYKvB5lXsK3L1rQcGTjp0YmRrzT>`_ to download the RGBD sequence used in this tutorial. Alternatively, you can download from the original dataset from `SceneNN oni file archive <https://drive.google.com/drive/folders/0B-aa7y5Ox4eZUmhJdmlYc3BQSG8>`_, and then extract the ``oni`` file into color and depth image sequence using `OniParser from the Redwood reconstruction system <http://redwood-data.org/indoor/tutorial.html>`_ or other convertion tools. Some helper scripts can be found from ``ReconstructionSystem/scripts``.
2626

2727
.. _reconstruction_system_how_to_run_the_pipeline:
2828

2929
Quick start
3030
``````````````````````````````````````
3131

32-
Put all color images in the *image* folder, and all depth images in the *depth* folder. Run following commands from the root folder.
32+
Put all color images in the ``image`` folder, and all depth images in the ``depth`` folder. Run following commands from the root folder.
3333

3434
.. code-block:: sh
3535
@@ -44,7 +44,7 @@ Put all color images in the *image* folder, and all depth images in the *depth*
4444
:lines: 1-
4545
:linenos:
4646

47-
We assume the color images and the depth images are synchronized and registered. ``"path_intrinsic"`` specifies path to a json file that stores the camera intrinsic matrix (See :ref:`reading_camera_intrinsic` for details). If it is not given, the PrimeSense factory setting is used. For your own dataset, use an appropriate camera intrinsic and visualize a depth image (likewise :ref:`rgbd_redwood`) prior to use the system.
47+
We assume that the color images and the depth images are synchronized and registered. ``"path_intrinsic"`` specifies path to a json file that stores the camera intrinsic matrix (See :ref:`reading_camera_intrinsic` for details). If it is not given, the PrimeSense factory setting is used. For your own dataset, use an appropriate camera intrinsic and visualize a depth image (likewise :ref:`rgbd_redwood`) prior to use the system.
4848

4949
.. note:: ``"python_multi_threading": true`` utilizes ``joblib`` to parallelize the system using every CPU cores. With this option, Mac users may encounter an unexpected program termination. To avoid this issue, set this flag as ``false``.
5050

examples/Python/ReconstructionSystem/refine_registration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# The MIT License (MIT)
33
# See license file or visit www.open3d.org for details
44

5-
# examples/Python/ReconstructionSystem/register_fragments.py
5+
# examples/Python/ReconstructionSystem/refine_registration.py
66

77
import numpy as np
88
import open3d as o3d

0 commit comments

Comments
 (0)