From 7aade078ad8aee2200a7db8de0178423a8cb3d5e Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Mon, 1 May 2023 16:56:49 -0400 Subject: [PATCH] Add --sfm-no-partial --- opendm/config.py | 6 ++++++ stages/run_opensfm.py | 2 +- stages/splitmerge.py | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/opendm/config.py b/opendm/config.py index 872cb5aa..4c787a13 100755 --- a/opendm/config.py +++ b/opendm/config.py @@ -219,6 +219,12 @@ def config(argv=None, parser=None): 'Can be one of: %(choices)s. Default: ' '%(default)s')) + parser.add_argument('--sfm-no-partial', + action=StoreTrue, + nargs=0, + default=False, + help='Do not attempt to merge partial reconstructions. This can happen when images do not have sufficient overlap or are isolated. Default: %(default)s') + parser.add_argument('--sky-removal', action=StoreTrue, nargs=0, diff --git a/stages/run_opensfm.py b/stages/run_opensfm.py index f2a37774..850c6ce8 100644 --- a/stages/run_opensfm.py +++ b/stages/run_opensfm.py @@ -35,7 +35,7 @@ class ODMOpenSfMStage(types.ODM_Stage): octx.feature_matching(self.rerun()) self.update_progress(30) octx.create_tracks(self.rerun()) - octx.reconstruct(args.rolling_shutter, reconstruction.is_georeferenced(), self.rerun()) + octx.reconstruct(args.rolling_shutter, reconstruction.is_georeferenced() and (not args.sfm_no_partial), self.rerun()) octx.extract_cameras(tree.path("cameras.json"), self.rerun()) self.update_progress(70) diff --git a/stages/splitmerge.py b/stages/splitmerge.py index 485039d4..1dca676b 100644 --- a/stages/splitmerge.py +++ b/stages/splitmerge.py @@ -132,7 +132,7 @@ class ODMSplitStage(types.ODM_Stage): log.ODM_INFO("Reconstructing %s" % sp) local_sp_octx = OSFMContext(sp) local_sp_octx.create_tracks(self.rerun()) - local_sp_octx.reconstruct(args.rolling_shutter, True, self.rerun()) + local_sp_octx.reconstruct(args.rolling_shutter, not args.sfm_no_partial, self.rerun()) else: lre = LocalRemoteExecutor(args.sm_cluster, args.rolling_shutter, self.rerun()) lre.set_projects([os.path.abspath(os.path.join(p, "..")) for p in submodel_paths])