From 266db75e36389831ffe4aa5fbed15b7bcee58899 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Sun, 26 Feb 2023 16:04:04 -0500 Subject: [PATCH] Do not merge partial non-georeferenced reconstructions --- opendm/osfm.py | 7 ++++--- opendm/remote.py | 2 +- stages/run_opensfm.py | 2 +- stages/splitmerge.py | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/opendm/osfm.py b/opendm/osfm.py index 1fd816cc..8ea666ca 100644 --- a/opendm/osfm.py +++ b/opendm/osfm.py @@ -49,11 +49,12 @@ class OSFMContext: else: log.ODM_WARNING('Found a valid OpenSfM tracks file in: %s' % tracks_file) - def reconstruct(self, rolling_shutter_correct=False, rerun=False): + def reconstruct(self, rolling_shutter_correct=False, merge_partial=False, rerun=False): reconstruction_file = os.path.join(self.opensfm_project_path, 'reconstruction.json') if not io.file_exists(reconstruction_file) or rerun: self.run('reconstruct') - self.check_merge_partial_reconstructions() + if merge_partial: + self.check_merge_partial_reconstructions() else: log.ODM_WARNING('Found a valid OpenSfM reconstruction file in: %s' % reconstruction_file) @@ -76,7 +77,7 @@ class OSFMContext: self.match_features(True) self.create_tracks(True) - self.reconstruct(rolling_shutter_correct=False, rerun=True) + self.reconstruct(rolling_shutter_correct=False, merge_partial=merge_partial, rerun=True) self.touch(rs_file) else: diff --git a/opendm/remote.py b/opendm/remote.py index 1c614282..8e26f7de 100644 --- a/opendm/remote.py +++ b/opendm/remote.py @@ -448,7 +448,7 @@ class ReconstructionTask(Task): log.ODM_INFO("==================================") octx.feature_matching(self.params['rerun']) octx.create_tracks(self.params['rerun']) - octx.reconstruct(self.params['rolling_shutter'], self.params['rerun']) + octx.reconstruct(self.params['rolling_shutter'], True, self.params['rerun']) def process_remote(self, done): octx = OSFMContext(self.path("opensfm")) diff --git a/stages/run_opensfm.py b/stages/run_opensfm.py index e1af1529..f2a37774 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, self.rerun()) + octx.reconstruct(args.rolling_shutter, reconstruction.is_georeferenced(), 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 8e1ca322..485039d4 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, self.rerun()) + local_sp_octx.reconstruct(args.rolling_shutter, True, 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])