From 981bf88b48ac11e426ba9c4b59922b327f4537f1 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 10 Apr 2024 11:13:58 -0400 Subject: [PATCH 1/5] Use min views filter = 1 --- VERSION | 2 +- stages/openmvs.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index 18091983..47b322c9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.4.0 +3.4.1 diff --git a/stages/openmvs.py b/stages/openmvs.py index f3b50644..1936dc02 100644 --- a/stages/openmvs.py +++ b/stages/openmvs.py @@ -94,7 +94,7 @@ class ODMOpenMVSStage(types.ODM_Stage): extra_config.append("--ignore-mask-label 0") with open(densify_ini_file, 'w+') as f: - f.write("Optimize = 7\n") + f.write("Optimize = 7\nMin Views Filter = 1\n") def run_densify(): system.run('"%s" "%s" %s' % (context.omvs_densify_path, From a70e7445ad425cbe9eae7440e3c7631f6b9c4187 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 10 Apr 2024 12:26:34 -0400 Subject: [PATCH 2/5] Update default feature-type, pc-filter values --- opendm/config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opendm/config.py b/opendm/config.py index d8e3a179..1eafee11 100755 --- a/opendm/config.py +++ b/opendm/config.py @@ -217,7 +217,7 @@ def config(argv=None, parser=None): parser.add_argument('--feature-type', metavar='', action=StoreValue, - default='sift', + default='dspsift', choices=['akaze', 'dspsift', 'hahog', 'orb', 'sift'], help=('Choose the algorithm for extracting keypoints and computing descriptors. ' 'Can be one of: %(choices)s. Default: ' @@ -485,7 +485,7 @@ def config(argv=None, parser=None): metavar='', action=StoreValue, type=float, - default=2.5, + default=20, help='Filters the point cloud by removing points that deviate more than N standard deviations from the local mean. Set to 0 to disable filtering. ' 'Default: %(default)s') From 17dfc7599a277491b3d3e37d67e8d0e3bb7d3cbf Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 10 Apr 2024 13:48:11 -0400 Subject: [PATCH 3/5] Update pc-filter value to 5 --- opendm/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opendm/config.py b/opendm/config.py index 1eafee11..b1d195e9 100755 --- a/opendm/config.py +++ b/opendm/config.py @@ -485,7 +485,7 @@ def config(argv=None, parser=None): metavar='', action=StoreValue, type=float, - default=20, + default=5, help='Filters the point cloud by removing points that deviate more than N standard deviations from the local mean. Set to 0 to disable filtering. ' 'Default: %(default)s') From 6c0fe6e79d422212be49f3c9f8994f4457066aa5 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 10 Apr 2024 22:07:36 -0400 Subject: [PATCH 4/5] Bump version --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 47b322c9..1545d966 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.4.1 +3.5.0 From aef4182cf9e63e773ec0066e78a2cb51b69a67e9 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Thu, 11 Apr 2024 14:18:20 -0400 Subject: [PATCH 5/5] More solid OpenMVS clustering fallback --- stages/openmvs.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stages/openmvs.py b/stages/openmvs.py index 1936dc02..b02c42f4 100644 --- a/stages/openmvs.py +++ b/stages/openmvs.py @@ -110,7 +110,7 @@ class ODMOpenMVSStage(types.ODM_Stage): log.ODM_WARNING("OpenMVS failed with GPU, is your graphics card driver up to date? Falling back to CPU.") gpu_config = ["--cuda-device -2"] run_densify() - elif (e.errorCode == 137 or e.errorCode == 3221226505) and not pc_tile: + elif (e.errorCode == 137 or e.errorCode == 143 or e.errorCode == 3221226505) and not pc_tile: log.ODM_WARNING("OpenMVS ran out of memory, we're going to turn on tiling to see if we can process this.") pc_tile = True config.append("--fusion-mode 1") @@ -127,7 +127,7 @@ class ODMOpenMVSStage(types.ODM_Stage): subscene_densify_ini_file = os.path.join(tree.openmvs, 'subscene-config.ini') with open(subscene_densify_ini_file, 'w+') as f: - f.write("Optimize = 0\nEstimation Geometric Iters = 0\n") + f.write("Optimize = 0\nEstimation Geometric Iters = 0\nMin Views Filter = 1\n") config = [ "--sub-scene-area 660000", # 8000 @@ -223,7 +223,7 @@ class ODMOpenMVSStage(types.ODM_Stage): try: system.run('"%s" %s' % (context.omvs_densify_path, ' '.join(config + gpu_config + extra_config))) except system.SubprocessException as e: - if e.errorCode == 137 or e.errorCode == 3221226505: + if e.errorCode == 137 or e.errorCode == 143 or e.errorCode == 3221226505: log.ODM_WARNING("OpenMVS filtering ran out of memory, visibility checks will be skipped.") skip_filtering() else: