def __init__(self, args): """ Initializes the application and defines the ODM application pipeline stages """ if args.debug: log.logger.show_debug = True dataset = ODMLoadDatasetStage('dataset', args, progress=5.0, verbose=args.verbose) split = ODMSplitStage('split', args, progress=75.0) merge = ODMMergeStage('merge', args, progress=100.0) opensfm = ODMOpenSfMStage('opensfm', args, progress=25.0) slam = ODMSlamStage('slam', args) openmvs = ODMOpenMVSStage('openmvs', args, progress=50.0) filterpoints = ODMFilterPoints('odm_filterpoints', args, progress=52.0) meshing = ODMeshingStage('odm_meshing', args, progress=60.0, max_vertex=args.mesh_size, oct_tree=args.mesh_octree_depth, samples=1.0, point_weight=4.0, max_concurrency=args.max_concurrency, verbose=args.verbose) texturing = ODMMvsTexStage('mvs_texturing', args, progress=70.0, data_term=args.texturing_data_term, outlier_rem_type=args.texturing_outlier_removal_type, skip_glob_seam_leveling=args.texturing_skip_global_seam_leveling, skip_loc_seam_leveling=args.texturing_skip_local_seam_leveling, tone_mapping=args.texturing_tone_mapping) georeferencing = ODMGeoreferencingStage('odm_georeferencing', args, progress=80.0, gcp_file=args.gcp, verbose=args.verbose) dem = ODMDEMStage('odm_dem', args, progress=90.0, max_concurrency=args.max_concurrency, verbose=args.verbose) orthophoto = ODMOrthoPhotoStage('odm_orthophoto', args, progress=98.0) report = ODMReport('odm_report', args, progress=100.0) # Normal pipeline self.first_stage = dataset dataset.connect(split) \ .connect(merge) \ .connect(opensfm) if args.use_opensfm_dense or args.fast_orthophoto: opensfm.connect(filterpoints) else: opensfm.connect(openmvs) \ .connect(filterpoints) filterpoints \ .connect(meshing) \ .connect(texturing) \ .connect(georeferencing) \ .connect(dem) \ .connect(orthophoto) \ .connect(report)
def __init__(self, args): """ Initializes the application and defines the ODM application pipeline stages """ if args.debug: log.logger.show_debug = True json_log_paths = [os.path.join(args.project_path, "log.json")] if args.copy_to: json_log_paths.append(args.copy_to) log.logger.init_json_output(json_log_paths, args) dataset = ODMLoadDatasetStage('dataset', args, progress=5.0, verbose=args.verbose) split = ODMSplitStage('split', args, progress=75.0) merge = ODMMergeStage('merge', args, progress=100.0) opensfm = ODMOpenSfMStage('opensfm', args, progress=25.0) openmvs = ODMOpenMVSStage('openmvs', args, progress=50.0) filterpoints = ODMFilterPoints('odm_filterpoints', args, progress=52.0) meshing = ODMeshingStage('odm_meshing', args, progress=60.0, max_vertex=args.mesh_size, oct_tree=max(1, min(14, args.mesh_octree_depth)), samples=1.0, point_weight=4.0, max_concurrency=args.max_concurrency, verbose=args.verbose) texturing = ODMMvsTexStage( 'mvs_texturing', args, progress=70.0, data_term=args.texturing_data_term, outlier_rem_type=args.texturing_outlier_removal_type, skip_glob_seam_leveling=args.texturing_skip_global_seam_leveling, skip_loc_seam_leveling=args.texturing_skip_local_seam_leveling, keep_unseen_faces=args.texturing_keep_unseen_faces, tone_mapping=args.texturing_tone_mapping) georeferencing = ODMGeoreferencingStage('odm_georeferencing', args, progress=80.0, gcp_file=args.gcp, verbose=args.verbose) dem = ODMDEMStage('odm_dem', args, progress=90.0, max_concurrency=args.max_concurrency, verbose=args.verbose) orthophoto = ODMOrthoPhotoStage('odm_orthophoto', args, progress=98.0) report = ODMReport('odm_report', args, progress=99.0) postprocess = ODMPostProcess('odm_postprocess', args, progress=100.0) # Normal pipeline self.first_stage = dataset dataset.connect(split) \ .connect(merge) \ .connect(opensfm) if args.fast_orthophoto: opensfm.connect(filterpoints) else: opensfm.connect(openmvs) \ .connect(filterpoints) filterpoints \ .connect(meshing) \ .connect(texturing) \ .connect(georeferencing) \ .connect(dem) \ .connect(orthophoto) \ .connect(report) \ .connect(postprocess)