Remove GSD multiplier from 2.5D mesh generation

pull/1610/head
Piero Toffanin 2023-02-20 10:40:47 -05:00
rodzic a58c50a663
commit 4f660ffd44
2 zmienionych plików z 5 dodań i 13 usunięć

Wyświetl plik

@ -9,7 +9,7 @@ from opendm import point_cloud
from scipy import signal
import numpy as np
def create_25dmesh(inPointCloud, outMesh, filtered_point_cloud_stats, dsm_resolution=0.05, depth=8, samples=1, maxVertexCount=100000, available_cores=None, method='gridded', smooth_dsm=True):
def create_25dmesh(inPointCloud, outMesh, radius_steps=["0.05"], dsm_resolution=0.05, depth=8, samples=1, maxVertexCount=100000, available_cores=None, method='gridded', smooth_dsm=True):
# Create DSM from point cloud
# Create temporary directory
@ -20,8 +20,6 @@ def create_25dmesh(inPointCloud, outMesh, filtered_point_cloud_stats, dsm_resolu
os.mkdir(tmp_directory)
log.ODM_INFO('Created temporary directory: %s' % tmp_directory)
radius_steps = commands.get_dem_radius_steps(filtered_point_cloud_stats, 3, dsm_resolution, multiplier=math.sqrt(2))
log.ODM_INFO('Creating DSM for 2.5D mesh')
commands.create_dem(

Wyświetl plik

@ -7,6 +7,7 @@ from opendm import context
from opendm import mesh
from opendm import gsd
from opendm import types
from opendm.dem import commands
class ODMeshingStage(types.ODM_Stage):
def process(self, args, outputs):
@ -40,25 +41,18 @@ class ODMeshingStage(types.ODM_Stage):
if not io.file_exists(tree.odm_25dmesh) or self.rerun():
log.ODM_INFO('Writing ODM 2.5D Mesh file in: %s' % tree.odm_25dmesh)
ortho_resolution = gsd.cap_resolution(args.orthophoto_resolution, tree.opensfm_reconstruction,
dsm_resolution = gsd.cap_resolution(args.orthophoto_resolution, tree.opensfm_reconstruction,
ignore_gsd=args.ignore_gsd,
ignore_resolution=(not reconstruction.is_georeferenced()) and args.ignore_gsd,
has_gcp=reconstruction.has_gcp()) / 100.0
dsm_multiplier = max(1.0, gsd.rounded_gsd(tree.opensfm_reconstruction, default_value=4, ndigits=3, ignore_gsd=args.ignore_gsd))
# A good DSM size depends on the flight altitude.
# Flights at low altitude need more details (higher resolution)
# Flights at higher altitude benefit from smoother surfaces (lower resolution)
dsm_resolution = ortho_resolution * dsm_multiplier
if args.fast_orthophoto:
dsm_resolution *= 8
dsm_resolution *= 8.0
log.ODM_INFO('ODM 2.5D DSM resolution: %s' % dsm_resolution)
mesh.create_25dmesh(tree.filtered_point_cloud, tree.odm_25dmesh,
tree.filtered_point_cloud_stats,
commands.get_dem_radius_steps(tree.filtered_point_cloud_stats, 3, dsm_resolution, multiplier=math.sqrt(2)),
dsm_resolution=dsm_resolution,
depth=self.params.get('oct_tree'),
maxVertexCount=self.params.get('max_vertex'),