kopia lustrzana https://github.com/OpenDroneMap/ODM
Remove GSD multiplier from 2.5D mesh generation
rodzic
a58c50a663
commit
4f660ffd44
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue