Skip to content

Commit

Permalink
Update documentation. openMVG#254
Browse files Browse the repository at this point in the history
  • Loading branch information
pmoulon committed May 8, 2015
1 parent 9a42eea commit a6d3a47
Show file tree
Hide file tree
Showing 14 changed files with 593 additions and 331 deletions.
22 changes: 22 additions & 0 deletions docs/sphinx/rst/openMVG_Samples/openMVG_Samples.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@ Show how:
- match features descriptors,
- display the computed matches.

image_describer_matches
-------------------------

Show how:
- use the Image_describer interface to extract features & descriptors
- match the detected regions
- display detected features & corresponding matches

robust_homography
--------------------

Expand All @@ -28,13 +36,15 @@ Show how:

robust_homography_guided
---------------------------

Show how:
- estimate a robust homography between features matches,
- extent the putative matches with a guided filter,
- warp the query image over the reference image.

robust_fundamental
--------------------

Show how:
- estimate a robust fundamental matrix between features matches.

Expand All @@ -46,6 +56,7 @@ Show how:

robust_essential_ba
--------------------

Show how:
- refine with bundle_adjustment the Structure and Motion of a scene
- for different camera model:
Expand All @@ -54,23 +65,34 @@ Show how:
- Refine ``[X],[R|t]``, shared ``[f]``,
- Refine ``[X],[R|t]``, shared brown disto models.

robust_essential_spherical
---------------------------

Show how:
- estimate a robust essential matrix between two spherical panorama
- triangulate remaning inliers.

kvld_filter
--------------------

Show how:
- filter putative matches with the K-VLD filter [KVLD12]_.

exifParsing
--------------------

Show how:
- parse JPEG EXIF metadata

sensorWidthDatabase
--------------------

Show how:
- use the camera sensor width database

undisto_Brown
--------------------

Show how:
- undistord a picture according known Brown radial parameters.

Expand Down
67 changes: 67 additions & 0 deletions docs/sphinx/rst/software/SfM/ComputeFeatures.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@

***************************************************************
openMVG_main_ComputeFeatures
***************************************************************

Compute image description for a given sfm_data.json file.
For each view it compute the image description (local regions) and store them on disk

.. code-block:: c++

$ openMVG_main_ComputeFeatures -i [..\matches\sfm_data.json] -o [...\matches]

Arguments description:

**Required parameters:**

- **[-i|--input_file]**

- a SfM_Data file

- **[-o|--outdir path]**

- path were image description will be stored

**Optional parameters:**

- **[-f|--force: Force to recompute data]**

- 0: (default) reload previously computed data (useful when you have kill the process and want to continue to compute)
- 1: useful when you change have changed a command line parameter, force recomputing and re-saving.

- **[-m|--describerMethod]**

- Used method to describe an image:

- SIFT: (default),
- AKAZE_FLOAT: AKAZE with floating point descriptors,
- AKAZE_MLDB: AKAZE with binary descriptors.

- **[-u|--upright]**

- Use Upright feature or not

- 0: (default, rotation invariance)
- 1: extract upright feature (orientation angle = 0°)

- **[-p|--describerPreset]**

- Used to control the Image_describer configuration:

- NORMAL,
- HIGH,
- ULTRA: !!Can be time consumming!!

Once openMVG_main_ComputeFeatures is done you can compute the Matches between the computed description.

.. toctree::
:maxdepth: 1

./ComputeMatches.rst

Export detected regions as SVG files:
----------------------------------------

* **Detected keypoints**: openMVG_main_exportKeypoints


77 changes: 77 additions & 0 deletions docs/sphinx/rst/software/SfM/ComputeMatches.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@

***************************************************************
openMVG_main_ComputeMatches
***************************************************************

This binary compute images that have a visual overlap. Using image descriptions computed by **openMVG_main_ComputeFeatures**, we establish the corresponding putative photometric matches and filter the resulting correspondences using some robust geometric filters.

.. code-block:: c++

$ openMVG_main_ComputeMatches -i [..\matches\sfm_data.json] -o [...\matches]

Arguments description:

**Required parameters:**

- **[-i|--input_file]**

- a SfM_Data file

- **[-o|--outdir path]**

- path were putative and geometric matches will be stored

**Optional parameters:**

- [-f|--force: Force to recompute data]

- 0: (default) reload previously computed data (useful when you have kill the process and want to continue to compute)
- 1: useful when you change have changed a command line parameter, force recomputing and re-saving.

- **[-r|-ratio]**

- (Nearest Neighbor distance ratio, default value is set to 0.6). 0.8 is less restrictive and advised.

- **[-g|-geometricModel]**

- type of model used for robust estimation from the photometric putative matches

- f: Fundamental matrix filtering
- e: Essential matrix filtering (all the image must have the same known focal length)
- h: Homography matrix filtering

- **[-n|--nearestMatchingMethod]**

- AUTO: auto choice from regions type,
- BRUTEFORCEL2: BruteForce L2 matching for Scalar based regions descriptor,
- BRUTEFORCEHAMMING: BruteForce Hamming matching for binary based regions descriptor,
- ANNL2: Approximate Nearest Neighbor L2 matching for Scalar based regions descriptor.


- **[-v|--videoModeMatching]**

- (sequence matching with an overlap of X images)

- X: with match 0 with (1->X), ...]
- 2: will match 0 with (1,2), 1 with (2,3), ...
- 3: will match 0 with (1,2,3), 1 with (2,3,4), ...]


- **[-l|--pairList]**

- file that explicitly list the View pair that must be compared

Once matches have been computed you can, at your choice, you can display detected, matches as SVG files:

* **Detected keypoints**: openMVG_main_exportKeypoints
* **Putative, Geometric matches**: openMVG_main_exportMatches
* **Tracks**: openMVG_main_exportTracks

**Or start the 3D reconstruction:**

.. toctree::
:maxdepth: 1

./IncrementalSfM.rst
./GlobalSfM.rst

41 changes: 41 additions & 0 deletions docs/sphinx/rst/software/SfM/ComputeSfM_DataColor.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@

********************************************
openMVG_main_ComputeSfM_DataColor
********************************************

Compute the color of the Structure of a sfm_data scene.

Use a very simple approach:

.. code-block:: c++

a. list the track id with no color
b. list the most viewed view id
c. color the track that see the view
d. go to a. until uncolored track are remaining

Information and usage
========================

The application is designed to run on a sfm_data.json file
The sfm_data file should contains:

- valid view with some defined intrinsics and camera poses,
- (optional existing structure).

.. code-block:: c++

$ openMVG_main_ComputeSfM_DataColor -i Dataset/out_Reconstruction/sfm_data.json -o Dataset/out_Reconstruction/sfm_data_color.ply

Arguments description:

**Required parameters:**

- **[-i|--input_file]**

- a SfM_Data file

- **[-o|--output_file]**

- output scene with updated landmarks color

59 changes: 59 additions & 0 deletions docs/sphinx/rst/software/SfM/ComputeStructureFromKnownPoses.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@

********************************************
openMVG_main_ComputeStructureFromKnownPoses
********************************************

This application compute corresponding features and robustly triangulate them according the geometry of the known camera intrinsics & poses.

Algorithm of the application

.. code-block:: c++

Require: internal + external camera calibration
Require: image description regions (features + descriptors)
Ensure: 3D point cloud
compute image visibility
list all the pair that share common visual content
- camera frustum based
- or structure visbility (SfM tracks) based
list triplets of view from pairs
for each triplets compute 3 view tracks
if tracks triangulable add correspondences to p
link 3 views validated matches (p) as tracks
robustly triangulate them

Information and usage
========================

The chain is designed to run on a sfm_data.json file and some pre-computed matches.
The sfm_data file should contains:
- valid view with some defined intrinsics and camera poses,
- (optional existing structure).

.. code-block:: c++

$ openMVG_main_ComputeStructureFromKnownPoses -i Dataset/out_Reconstruction/sfm_data.json -o Dataset/out_Reconstruction/robustFitting.json

Arguments description:

**Required parameters:**

- **[-i|--input_file]**

- a SfM_Data file with valid intrinsics and poses and optional structure

- **[-m|--matchdir]**

- path were image descriptions were stored

- **[-o|--outdir]**

- path where the updated scene data will be stored

**Optional parameters:**

- **[-f|--match_file]**

- path to a matches file (pairs of the match files will be listed and used)


Loading

0 comments on commit a6d3a47

Please sign in to comment.