Populate settings.yaml file with all params

pull/510/head
Dakota Benjamin 2017-03-10 11:43:26 -05:00
rodzic e37e10405b
commit bf2069a169
4 zmienionych plików z 139 dodań i 42 usunięć

Wyświetl plik

@ -156,6 +156,11 @@ To pass in custom parameters to the run.py script, simply pass it as arguments t
docker run -it --rm -v $(pwd)/images:/code/images v $(pwd)/odm_orthophoto:/code/odm_orthophoto -v $(pwd)/odm_texturing:/code/odm_texturing opendronemap/opendronemap --resize-to 1800 --force-ccd 6.16
If you want to pass in custom parameters using the settings.yaml file, you can pass it as a -v volume binding:
docker run -it --rm -v $(pwd)/images:/code/images v $(pwd)/odm_orthophoto:/code/odm_orthophoto -v $(pwd)/odm_texturing:/code/odm_texturing -v $(pwd)/settings.yaml:/code/settings.yaml opendronemap/opendronemap
## User Interface
A web interface and API to OpenDroneMap is currently under active development in the [WebODM](https://github.com/OpenDroneMap/WebODM) repository.

Wyświetl plik

@ -1,8 +1,53 @@
---
# A list of global configuration variables
# WARNING: DO NOT EDIT THIS FILE!!!
# Copy this file and rename to settings.yaml to override. You can also place the a settings.yaml
# file with the same format inside your project to more specific parameter needs.
# Note this only works for settings with default values. Some commands like --rerun <module>
# or --force-ccd n will have to be set in the command line (if you need to)
settings:
# These are really important to set up properly
project_path: '/home/dmb2/ODMProjects'
use_pmvs: False
opensfm_processes: 4 # Set this to nproc-2 for large datasets
resize_to: 2400
start_with: 'resize'
end_with: 'odm_orthophoto'
rerun_all: False
zip_results: False
verbose: False
time: False
opensfm:
processes: 4 # IMPORTANT: Set this to nproc-1 or lower for larger datasets
min_num_features: 4000
matcher_threshold: 2.0
matcher_ratio: 0.6
matcher_neighbors: 8
matcher_distance: 0
pmvs: # The following settings only matter if use_pmvs is set to True
enabled: False
cmvs_max_images: 500
level: 1
cell_size: 2
threshold: 0.7
wsize: 7
min_images: 3
num_cores: 4 # Set this to nproc
mesh:
size: 100000
octree_depth: 9
samples: 1.0
solver_divide: 9
texturing:
data_term: 'gmi'
outlier_removal_type: 'gauss_clamping'
skip_visibility_test: False
skip_global_seam_leveling: False
skip_local_seam_leveling: False
skip_hole_filling: False
keep_unseen_faces: False
tone_mapping: 'none'
georeferencing:
gcp: !!null # YAML tag for None
use_exif: False # Set to True if you have a GCP file (it auto-detects) and want to use EXIF
orthophoto:
resolution: 20.0 # Pixels/meter

Wyświetl plik

@ -1,8 +1,53 @@
---
# A list of global configuration variables
# WARNING: DO NOT EDIT THIS FILE!!!
# Copy this file and rename to settings.yaml to override. You can also place the a settings.yaml
# file with the same format inside your project to more specific parameter needs.
# Note this only works for settings with default values. Some commands like --rerun <module>
# or --force-ccd n will have to be set in the command line (if you need to)
settings:
project_path: '/'
use_pmvs: False
opensfm_processes: 4 # Set this to nproc-2 for large datasets
# These are really important to set up properly
project_path: '/' # DO NOT CHANGE THIS
resize_to: 2400
start_with: 'resize'
end_with: 'odm_orthophoto'
rerun_all: False
zip_results: False
verbose: False
time: False
opensfm:
processes: 4 # IMPORTANT: Set this to nproc-1 or lower for larger datasets
min_num_features: 4000
matcher_threshold: 2.0
matcher_ratio: 0.6
matcher_neighbors: 8
matcher_distance: 0
pmvs: # The following settings only matter if use_pmvs is set to True
enabled: False
cmvs_max_images: 500
level: 1
cell_size: 2
threshold: 0.7
wsize: 7
min_images: 3
num_cores: 4 # Set this to nproc
mesh:
size: 100000
octree_depth: 9
samples: 1.0
solver_divide: 9
texturing:
data_term: 'gmi'
outlier_removal_type: 'gauss_clamping'
skip_visibility_test: False
skip_global_seam_leveling: False
skip_local_seam_leveling: False
skip_hole_filling: False
keep_unseen_faces: False
tone_mapping: 'none'
georeferencing:
gcp: !!null # YAML tag for None
use_exif: False # Set to True if you have a GCP file (it auto-detects) and want to use EXIF
orthophoto:
resolution: 20.0 # Pixels/meter

Wyświetl plik

@ -46,19 +46,19 @@ def config():
parser.add_argument('--resize-to', # currently doesn't support 'orig'
metavar='<integer>',
default=2400,
default=defaultSettings['resize_to'],
type=int,
help='resizes images by the largest side')
parser.add_argument('--start-with', '-s',
metavar='<string>',
default='resize',
default=defaultSettings['start_with'],
choices=processopts,
help=('Can be one of: ' + ' | '.join(processopts)))
parser.add_argument('--end-with', '-e',
metavar='<string>',
default='odm_orthophoto',
default=defaultSettings['end_with'],
choices=processopts,
help=('Can be one of:' + ' | '.join(processopts)))
@ -71,7 +71,7 @@ def config():
rerun.add_argument('--rerun-all',
action='store_true',
default=False,
default=defaultSettings['rerun_all'],
help='force rerun of all tasks')
rerun.add_argument('--rerun-from',
@ -101,7 +101,7 @@ def config():
parser.add_argument('--min-num-features',
metavar='<integer>',
default=4000,
default=defaultSettings['opensfm']['min_num_features'],
type=int,
help=('Minimum number of features to extract per image. '
'More features leads to better results but slower '
@ -109,7 +109,7 @@ def config():
parser.add_argument('--matcher-threshold',
metavar='<percent>',
default=2.0,
default=defaultSettings['opensfm']['matcher_threshold'],
type=float,
help=('Ignore matched keypoints if the two images share '
'less than <float> percent of keypoints. Default:'
@ -117,7 +117,7 @@ def config():
parser.add_argument('--matcher-ratio',
metavar='<float>',
default=0.6,
default=defaultSettings['opensfm']['matcher_ratio'],
type=float,
help=('Ratio of the distance to the next best matched '
'keypoint. Default: %(default)s'))
@ -125,7 +125,7 @@ def config():
parser.add_argument('--matcher-neighbors',
type=int,
metavar='<integer>',
default=8,
default=defaultSettings['opensfm']['matcher_neighbors'],
help='Number of nearest images to pre-match based on GPS '
'exif data. Set to 0 to skip pre-matching. '
'Neighbors works together with Distance parameter, '
@ -136,7 +136,7 @@ def config():
parser.add_argument('--matcher-distance',
metavar='<integer>',
default=0,
default=defaultSettings['opensfm']['matcher_distance'],
type=int,
help='Distance threshold in meters to find pre-matching '
'images based on GPS exif data. Set to 0 to skip '
@ -144,26 +144,26 @@ def config():
parser.add_argument('--opensfm-processes',
metavar='<positive integer>',
default=defaultSettings['opensfm_processes'],
default=defaultSettings['opensfm']['processes'],
type=int,
help=('The maximum number of processes to use in dense '
'reconstruction. Default: %(default)s'))
parser.add_argument('--use-pmvs',
action='store_true',
default=defaultSettings['use_pmvs'],
default=defaultSettings['pmvs']['enabled'],
help='Use pmvs to compute point cloud alternatively')
parser.add_argument('--cmvs-maxImages',
metavar='<integer>',
default=500,
default=defaultSettings['pmvs']['cmvs_max_images'],
type=int,
help='The maximum number of images per cluster. '
'Default: %(default)s')
parser.add_argument('--pmvs-level',
metavar='<positive integer>',
default=1,
default=defaultSettings['pmvs']['level'],
type=int,
help=('The level in the image pyramid that is used '
'for the computation. see '
@ -171,15 +171,15 @@ def config():
'more pmvs documentation. Default: %(default)s'))
parser.add_argument('--pmvs-csize',
metavar='< positive integer>',
default=2,
metavar='<positive integer>',
default=defaultSettings['pmvs']['cell_size'],
type=int,
help='Cell size controls the density of reconstructions'
'Default: %(default)s')
parser.add_argument('--pmvs-threshold',
metavar='<float: -1.0 <= x <= 1.0>',
default=0.7,
default=defaultSettings['pmvs']['threshold'],
type=float,
help=('A patch reconstruction is accepted as a success '
'and kept if its associated photometric consistency '
@ -187,7 +187,7 @@ def config():
parser.add_argument('--pmvs-wsize',
metavar='<positive integer>',
default=7,
default=defaultSettings['pmvs']['wsize'],
type=int,
help='pmvs samples wsize x wsize pixel colors from '
'each image to compute photometric consistency '
@ -198,7 +198,7 @@ def config():
parser.add_argument('--pmvs-min-images',
metavar='<positive integer>',
default=3,
default=defaultSettings['pmvs']['min_images'],
type=int,
help=('Each 3D point must be visible in at least '
'minImageNum images for being reconstructed. 3 is '
@ -206,21 +206,21 @@ def config():
parser.add_argument('--pmvs-num-cores',
metavar='<positive integer>',
default=context.num_cores,
default=defaultSettings['pmvs']['num_cores'],
type=int,
help=('The maximum number of cores to use in dense '
'reconstruction. Default: %(default)s'))
parser.add_argument('--mesh-size',
metavar='<positive integer>',
default=100000,
default=defaultSettings['mesh']['size'],
type=int,
help=('The maximum vertex count of the output mesh '
'Default: %(default)s'))
parser.add_argument('--mesh-octree-depth',
metavar='<positive integer>',
default=9,
default=defaultSettings['mesh']['octree_depth'],
type=int,
help=('Oct-tree depth used in the mesh reconstruction, '
'increase to get more vertices, recommended '
@ -228,14 +228,14 @@ def config():
parser.add_argument('--mesh-samples',
metavar='<float >= 1.0>',
default=1.0,
default=defaultSettings['mesh']['samples'],
type=float,
help=('Number of points per octree node, recommended '
'and default value: %(default)s'))
parser.add_argument('--mesh-solver-divide',
metavar='<positive integer>',
default=9,
default=defaultSettings['mesh']['solver_divide'],
type=int,
help=('Oct-tree depth at which the Laplacian equation '
'is solved in the surface reconstruction step. '
@ -245,57 +245,57 @@ def config():
parser.add_argument('--texturing-data-term',
metavar='<string>',
default='gmi',
default=defaultSettings['texturing']['data_term'],
help=('Data term: [area, gmi]. Default: '
'%(default)s'))
parser.add_argument('--texturing-outlier-removal-type',
metavar='<string>',
default='gauss_clamping',
default=defaultSettings['texturing']['outlier_removal_type'],
help=('Type of photometric outlier removal method: '
'[none, gauss_damping, gauss_clamping]. Default: '
'%(default)s'))
parser.add_argument('--texturing-skip-visibility-test',
action='store_true',
default=False,
default=defaultSettings['texturing']['skip_visibility_test'],
help=('Skip geometric visibility test. Default: '
' %(default)s'))
parser.add_argument('--texturing-skip-global-seam-leveling',
action='store_true',
default=False,
default=defaultSettings['texturing']['skip_global_seam_leveling'],
help=('Skip global seam leveling. Useful for IR data.'
'Default: %(default)s'))
parser.add_argument('--texturing-skip-local-seam-leveling',
action='store_true',
default=False,
default=defaultSettings['texturing']['skip_local_seam_leveling'],
help='Skip local seam blending. Default: %(default)s')
parser.add_argument('--texturing-skip-hole-filling',
action='store_true',
default=False,
default=defaultSettings['texturing']['skip_hole_filling'],
help=('Skip filling of holes in the mesh. Default: '
' %(default)s'))
parser.add_argument('--texturing-keep-unseen-faces',
action='store_true',
default=False,
default=defaultSettings['texturing']['keep_unseen_faces'],
help=('Keep faces in the mesh that are not seen in any camera. '
'Default: %(default)s'))
parser.add_argument('--texturing-tone-mapping',
metavar='<string>',
choices=['none', 'gamma'],
default='none',
default=defaultSettings['texturing']['tone_mapping'],
help='Turn on gamma tone mapping or none for no tone '
'mapping. Choices are \'gamma\' or \'none\'. '
'Default: %(default)s ')
parser.add_argument('--gcp',
metavar='<path string>',
default=None,
default=defaultSettings['georeferencing']['gcp'],
help=('path to the file containing the ground control '
'points used for georeferencing. Default: '
'%(default)s. The file needs to '
@ -304,32 +304,34 @@ def config():
parser.add_argument('--use-exif',
action='store_true',
default=False,
default=defaultSettings['georeferencing']['use_exif'],
help=('Use this tag if you have a gcp_list.txt but '
'want to use the exif geotags instead'))
parser.add_argument('--orthophoto-resolution',
metavar='<float > 0.0>',
default=20.0,
default=defaultSettings['orthophoto']['resolution'],
type=float,
help=('Orthophoto ground resolution in pixels/meter'
'Default: %(default)s'))
parser.add_argument('--zip-results',
action='store_true',
default=False,
default=defaultSettings['zip_results'],
help='compress the results using gunzip')
parser.add_argument('--verbose', '-v',
action='store_true',
default=False,
default=defaultSettings['verbose'],
help='Print additional messages to the console\n'
'Default: %(default)s')
parser.add_argument('--time',
action='store_true',
default=False,
default=defaultSettings['time'],
help='Generates a benchmark file with runtime info\n'
'Default: %(default)s')
#TODO: Add version, gdal options
return parser.parse_args()