Skip to content

Flowchart of Options and Flags

flowchart TB

Images@{ shape: docs, label: "Images"}

subgraph DatasetGroup[" "]
    direction RL
    Dataset["Dataset"]
    ds_bg["bg-removal"]
    ds_camera_lens["camera-lens"]
    ds_cameras["cameras"]
    ds_gcp["gcp"]
    ds_geo["geo"]
    ds_gps_accuracy["gps-accuracy"]
    ds_primary_band["primary-band"]
    ds_sky_removal["sky-removal"]
    ds_use_exif["use-exif"]
    ds_video_limit["video-limit"]
    ds_video_resolution["video-resolution"]

    ds_bg ~~~ ds_camera_lens
    ds_cameras ~~~ ds_gcp
    ds_geo ~~~ ds_gps_accuracy
    ds_primary_band ~~~ ds_sky_removal
    ds_use_exif ~~~ ds_video_limit
    ds_video_resolution

    click ds_bg "../options-flags/#bg-removal"
    click ds_camera_lens "../options-flags/#camera-lens"
    click ds_cameras "../options-flags/#cameras"
    click ds_gcp "../options-flags/#gcp"
    click ds_geo "../options-flags/#geo"
    click ds_gps_accuracy "../options-flags/#gps-accuracy"
    click ds_primary_band "../options-flags/#primary-band"
    click ds_sky_removal "../options-flags/#sky-removal"
    click ds_use_exif "../options-flags/#use-exif"
    click ds_video_limit "../options-flags/#video-limit"
    click ds_video_resolution "../options-flags/#video-resolution"
end


subgraph SplitGroup[" "]
    direction RL
    Split["Split"]
    split_sm_cluster["sm-cluster"]
    split_sm_no_align["sm-no-align"]
    split_split["split"]
    split_image_groups["split-image-groups"]
    split_overlap["split-overlap"]
    Split
    split_sm_cluster ~~~ split_sm_no_align
    split_split ~~~ split_image_groups
    split_overlap

    click split_sm_cluster "../options-flags/#sm-cluster"
    click split_sm_no_align "../options-flags/#sm-no-align"
    click split_split "../options-flags/#split"
    click split_image_groups "../options-flags/#split-image-groups"
    click split_overlap "../options-flags/#split-overlap"
end

    Spliting["`**Splitting**`"]


subgraph OpenSFMGroup[" "]
    direction RL
    OpenSFM["OpenSFM"]
    sfm_feature_quality["feature-quality"]
    sfm_feature_type["feature-type"]
    sfm_force_gps["force-gps"]
    sfm_ignore_gsd["ignore-gsd"]
    sfm_matcher_neighbors["matcher-neighbors"]
    sfm_matcher_order["matcher-order"]
    sfm_matcher_type["matcher-type"]
    sfm_min_num_features["min-num-features"]
    sfm_pc_quality["pc-quality"]
    sfm_radiometric_calibration["radiometric-calibration"]
    sfm_rolling_shutter["rolling-shutter"]
    sfm_rolling_shutter_readout["rolling-shutter-readout"]
    sfm_algorithm["sfm-algorithm"]
    sfm_no_partial["sfm-no-partial"]
    sfm_skip_band_alignment["skip-band-alignment"]
    sfm_use_fixed_camera_params["use-fixed-camera-params"]
    sfm_use_hybrid_bundle_adjustment["use-hybrid-bundle-adjustment"]

    OpenSFM
    sfm_feature_quality ~~~ sfm_feature_type
    sfm_force_gps ~~~ sfm_ignore_gsd
    sfm_matcher_neighbors ~~~ sfm_matcher_order
    sfm_matcher_type ~~~ sfm_min_num_features
    sfm_pc_quality ~~~ sfm_radiometric_calibration
    sfm_rolling_shutter ~~~ sfm_rolling_shutter_readout
    sfm_algorithm ~~~ sfm_no_partial
    sfm_skip_band_alignment ~~~ sfm_use_fixed_camera_params
    sfm_use_hybrid_bundle_adjustment

    click sfm_feature_quality "../options-flags/#feature-quality"
    click sfm_feature_type "../options-flags/#feature-type"
    click sfm_force_gps "../options-flags/#force-gps"
    click sfm_ignore_gsd "../options-flags/#ignore-gsd"
    click sfm_matcher_neighbors "../options-flags/#matcher-neighbors"
    click sfm_matcher_order "../options-flags/#matcher-order"
    click sfm_matcher_type "../options-flags/#matcher-type"
    click sfm_min_num_features "../options-flags/#min-num-features"
    click sfm_pc_quality "../options-flags/#pc-quality"
    click sfm_radiometric_calibration "../options-flags/#radiometric-calibration"
    click sfm_rolling_shutter "../options-flags/#rolling-shutter"
    click sfm_rolling_shutter_readout "../options-flags/#rolling-shutter-readout"
    click sfm_algorithm "../options-flags/#sfm-algorithm"
    click sfm_no_partial "../options-flags/#sfm-no-partial"
    click sfm_skip_band_alignment "../options-flags/#skip-band-alignment"
    click sfm_use_fixed_camera_params "../options-flags/#use-fixed-camera-params"
    click sfm_use_hybrid_bundle_adjustment "../options-flags/#use-hybrid-bundle-adjustment"
end

subgraph OpenMVSGroup[" "]
    direction RL
    OpenMVS["OpenMVS"]
    openmvs_pc_filter["pc-filter"]
    openmvs_pc_skip_geometric["pc-skip-geometric"]

    OpenMVS
    openmvs_pc_filter ~~~ openmvs_pc_skip_geometric

    click openmvs_pc_filter "../options-flags/#pc-filter"
    click openmvs_pc_skip_geometric "../options-flags/#pc-skip-geometric"
end

subgraph FilterpointsGroup[" "]
    direction RL
    Filterpoints["Filterpoints"]
    filter_auto_boundary["auto-boundary"]
    filter_auto_boundary_distance["auto-boundary-distance"]
    filter_boundary["boundary"]
    filter_fast_orthophoto["fast-orthophoto"]
    filter_pc_sample["pc-sample"]

    Filterpoints
    filter_auto_boundary ~~~ filter_auto_boundary_distance
    filter_boundary ~~~ filter_fast_orthophoto
    filter_pc_sample

    click filter_auto_boundary "../options-flags/#auto-boundary"
    click filter_auto_boundary_distance "../options-flags/#auto-boundary-distance"
    click filter_boundary "../options-flags/#boundary"
    click filter_fast_orthophoto "../options-flags/#fast-orthophoto"
    click filter_pc_sample "../options-flags/#pc-sample"
end

subgraph MeshingGroup[" "]
    direction RL
    Meshing["Meshing"]
    mesh_octree_depth["mesh-octree-depth"]
    mesh_size["mesh-size"]
    mesh_skip_3dmodel["skip-3dmodel"]
    Meshing
    mesh_octree_depth ~~~ mesh_size ~~~ mesh_skip_3dmodel

    click mesh_octree_depth "../options-flags/#mesh-octree-depth"
    click mesh_size "../options-flags/#mesh-size"
    click mesh_skip_3dmodel "../options-flags/#skip-3dmodel"
end

subgraph MvsTexturingGroup[" "]
    direction RL

    MvsTexturing["MvsTexturing"]
    texturing_keep_unseen_faces["texturing-keep-unseen-faces"]
    texturing_single_material["texturing-single-material"]
    texturing_skip_global_seam_leveling["texturing-skip-global-seam-leveling"]
    texturing_use_3dmesh["use-3dmesh"]
    MvsTexturing

    texturing_keep_unseen_faces
    texturing_single_material ~~~ texturing_skip_global_seam_leveling
    texturing_use_3dmesh

    click texturing_keep_unseen_faces "../options-flags/#texturing-keep-unseen-faces"
    click texturing_single_material "../options-flags/#texturing-single-material"
    click texturing_skip_global_seam_leveling "../options-flags/#texturing-skip-global-seam-leveling"
    click texturing_use_3dmesh "../options-flags/#use-3dmesh"
end

subgraph GeoreferencingGroup[" "]
    direction RL
    Georeferencing["Georeferencing"]
    georef_align["align"]
    georef_crop["crop"]
    georef_pc_classify["pc-classify"]
    georef_pc_copc["pc-copc"]
    georef_pc_csv["pc-csv"]
    georef_pc_ept["pc-ept"]
    georef_pc_las["pc-las"]
    Georeferencing
    georef_align ~~~ georef_crop
    georef_pc_classify ~~~ georef_pc_copc
    georef_pc_csv ~~~ georef_pc_ept
     georef_pc_las

    click georef_align "../options-flags/#align"
    click georef_crop "../options-flags/#crop"
    click georef_pc_classify "../options-flags/#pc-classify"
    click georef_pc_copc "../options-flags/#pc-copc"
    click georef_pc_csv "../options-flags/#pc-csv"
    click georef_pc_ept "../options-flags/#pc-ept"
    click georef_pc_las "../options-flags/#pc-las"
end

subgraph DEMGroup[" "]
    direction RL
    DEM["DEM"]
    dem_cog["cog"]
    dem_decimation["dem-decimation"]
    dem_euclidean_map["dem-euclidean-map"]
    dem_gapfill_steps["dem-gapfill-steps"]
    dem_resolution["dem-resolution"]
    dem_dsm["dsm"]
    dem_dtm["dtm"]
    dem_smrf_scalar["smrf-scalar"]
    dem_smrf_slope["smrf-slope"]
    dem_smrf_threshold["smrf-threshold"]
    dem_smrf_window["smrf-window"]
    dem_tiles["tiles"]
    DEM

    dem_cog ~~~ dem_decimation
    dem_euclidean_map ~~~ dem_gapfill_steps
    dem_resolution ~~~ dem_dsm
    dem_dtm ~~~ dem_smrf_scalar
    dem_smrf_slope ~~~ dem_smrf_threshold
    dem_smrf_window ~~~ dem_tiles

    click dem_cog "../options-flags/#cog"
    click dem_decimation "../options-flags/#dem-decimation"
    click dem_euclidean_map "../options-flags/#dem-euclidean-map"
    click dem_gapfill_steps "../options-flags/#dem-gapfill-steps"
    click dem_resolution "../options-flags/#dem-resolution"
    click dem_dsm "../options-flags/#dsm"
    click dem_dtm "../options-flags/#dtm"
    click dem_smrf_scalar "../options-flags/#smrf-scalar"
    click dem_smrf_slope "../options-flags/#smrf-slope"
    click dem_smrf_threshold "../options-flags/#smrf-threshold"
    click dem_smrf_window "../options-flags/#smrf-window"
    click dem_tiles "../options-flags/#tiles"
end

subgraph OrthophotoGroup[" "]
    direction RL
    Orthophoto["Orthophoto"]
    ortho_build_overviews["build-overviews"]
    ortho_compression["orthophoto-compression"]
    ortho_cutline["orthophoto-cutline"]
    ortho_kmz["orthophoto-kmz"]
    ortho_no_tiled["orthophoto-no-tiled"]
    ortho_png["orthophoto-png"]
    ortho_resolution["orthophoto-resolution"]
    ortho_skip["skip-orthophoto"]
    Orthophoto
    ortho_build_overviews ~~~ ortho_compression
    ortho_cutline ~~~ ortho_kmz
    ortho_no_tiled ~~~ ortho_png
    ortho_resolution ~~~ ortho_skip

    click ortho_build_overviews "../options-flags/#build-overviews"
    click ortho_compression "../options-flags/#orthophoto-compression"
    click ortho_cutline "../options-flags/#orthophoto-cutline"
    click ortho_kmz "../options-flags/#orthophoto-kmz"
    click ortho_no_tiled "../options-flags/#orthophoto-no-tiled"
    click ortho_png "../options-flags/#orthophoto-png"
    click ortho_resolution "../options-flags/#orthophoto-resolution"
    click ortho_skip "../options-flags/#skip-orthophoto"
end

subgraph ReportGroup[" "]
    direction TB
    Report["Report"]
    report_skip["skip-report"]
    Report ~~~ report_skip
    report_skip

    click report_skip "../options-flags/#skip-report"
end

subgraph PostprocessGroup[" "]
    direction RL
    Postprocess["Postprocess"]
    post_3d_tiles["3d-tiles"]
    post_copy_to["copy-to"]
    post_gltf["gltf"]
    Postprocess
    post_3d_tiles ~~~ post_copy_to ~~~ post_gltf

    click post_3d_tiles "../options-flags/#3d-tiles"
    click post_copy_to "../options-flags/#copy-to"
    click post_gltf "../options-flags/#gltf"
end

Images e01@==> DatasetGroup
DatasetGroup e02@--> SplitGroup

SplitGroup == Yes ==> Spliting ==> OpenSFMGroup
SplitGroup == No ==> OpenSFMGroup

OpenSFMGroup e02@--> OpenMVSGroup
OpenMVSGroup e03@--> FilterpointsGroup
FilterpointsGroup e04@--> MeshingGroup
MeshingGroup e05@--> MvsTexturingGroup
MvsTexturingGroup e06@--> GeoreferencingGroup
GeoreferencingGroup e07@--> DEMGroup
DEMGroup e08@--> OrthophotoGroup
OrthophotoGroup e09@--> ReportGroup
ReportGroup e10@--> PostprocessGroup



classDef subgraphTitle fill:#1f2937,stroke:#94a3b8,stroke-width:1.5px,color:#fff,font-weight:bold;
classDef greenNode fill:#90EE90,stroke:#2d5016,stroke-width:1px,color:#000;
classDef blueNode fill:#87CEEB,stroke:#1e3a5f,stroke-width:1px,color:#000;
classDef pinkNode fill:#FFB6C1,stroke:#8b3a3a,stroke-width:1px,color:#000;
classDef purpleNode fill:#DDA0DD,stroke:#5d3a5d,stroke-width:1px,color:#000;
classDef yellowNode fill:#F0E68C,stroke:#8b8b00,stroke-width:1px,color:#000;
classDef orangeNode fill:#FFA07A,stroke:#8b4513,stroke-width:1px,color:#000;
classDef mintNode fill:#98FB98,stroke:#3a5f3a,stroke-width:1px,color:#000;
classDef goldNode fill:#FFD700,stroke:#8b7500,stroke-width:1px,color:#000;
classDef skyNode fill:#87CEFA,stroke:#1e3a8a,stroke-width:1px,color:#000;
classDef sandNode fill:#DEB887,stroke:#5d4e37,stroke-width:1px,color:#000;
classDef redNode fill:#F08080,stroke:#8b3a3a,stroke-width:1px,color:#000;
classDef tealNode fill:#20B2AA,stroke:#0d5d5d,stroke-width:1px,color:#000;
classDef animatedEdge stroke-dasharray: 9,5,stroke-dashoffset: 900,animation: dash 25s linear infinite;

class e01,e02,e03,e04,e05,e06,e07,e08,e09,e10 animatedEdge;


class Dataset,Split,OpenSFM,OpenMVS,Filterpoints,Meshing,MvsTexturing,Georeferencing,DEM,Orthophoto,Report,Postprocess subgraphTitle;
class ds_bg,ds_camera_lens,ds_cameras,ds_gcp,ds_geo,ds_gps_accuracy,ds_primary_band,ds_sky_removal,ds_use_exif,ds_video_limit,ds_video_resolution greenNode;
class Images,split_sm_cluster,split_sm_no_align,split_split,split_image_groups,split_overlap blueNode;
class sfm_feature_quality,sfm_feature_type,sfm_force_gps,sfm_ignore_gsd,sfm_matcher_neighbors,sfm_matcher_order,sfm_matcher_type,sfm_min_num_features,sfm_pc_quality,sfm_radiometric_calibration,sfm_rolling_shutter,sfm_rolling_shutter_readout,sfm_algorithm,sfm_no_partial,sfm_skip_band_alignment,sfm_use_fixed_camera_params,sfm_use_hybrid_bundle_adjustment pinkNode;
class openmvs_pc_filter,openmvs_pc_skip_geometric purpleNode;
class filter_auto_boundary,filter_auto_boundary_distance,filter_boundary,filter_fast_orthophoto,filter_pc_sample yellowNode;
class mesh_octree_depth,mesh_size,mesh_skip_3dmodel orangeNode;
class texturing_keep_unseen_faces,texturing_single_material,texturing_skip_global_seam_leveling,texturing_use_3dmesh mintNode;
class georef_align,georef_crop,georef_pc_classify,georef_pc_copc,georef_pc_csv,georef_pc_ept,georef_pc_las goldNode;
class dem_cog,dem_decimation,dem_euclidean_map,dem_gapfill_steps,dem_resolution,dem_dsm,dem_dtm,dem_smrf_scalar,dem_smrf_slope,dem_smrf_threshold,dem_smrf_window,dem_tiles skyNode;
class Spliting,ortho_build_overviews,ortho_compression,ortho_cutline,ortho_kmz,ortho_no_tiled,ortho_png,ortho_resolution,ortho_skip sandNode;
class report_skip redNode;
class post_3d_tiles,post_copy_to,post_gltf tealNode;