File size: 1,982 Bytes
deeabb9
 
 
 
 
 
bcfd69e
9c5a0eb
deeabb9
 
 
 
 
c5794e7
bcfd69e
 
 
 
 
c5794e7
deeabb9
 
 
 
 
 
bcfd69e
deeabb9
 
c5794e7
deeabb9
af8f4ba
deeabb9
bcfd69e
deeabb9
 
 
 
bcfd69e
c5794e7
deeabb9
c5794e7
 
deeabb9
 
 
 
 
bcfd69e
 
 
deeabb9
 
bcfd69e
9c5a0eb
deeabb9
 
 
 
 
 
 
 
 
 
bcfd69e
c5794e7
bcfd69e
deeabb9
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from __future__ import annotations

from dataclasses import dataclass
from pathlib import Path

VISLOC_DIR = Path("data/Image/VISLOC")
IMAGE_ROOT = Path("data/Image")
EXAMPLES_ROOT = Path("examples")
IMAGE_EXTS = (".jpg", ".jpeg", ".png", ".JPG", ".JPEG", ".PNG")
DEFAULT_ALTITUDE_M = 450.0
ASSUMED_FOV_DEG = 90.0
DEFAULT_MODEL_ID = "depth-anything/DA3MONO-LARGE"
SEGMENTATION_MODEL_ID = "facebook/sam3"
SEGMENTATION_MAX_SIDE = 512
SEGMENTATION_SCORE_THRESH = 0.25
SEGMENTATION_MASK_THRESH = 0.25
WATER_PROMPT = "water"
ROAD_PROMPT = "motorway"
TREE_PROMPT = "trees"
ROOF_PROMPT = "rooftop"


@dataclass(frozen=True)
class AnalyzerSettings:
    """Bundle knobs shared between the UI and the processing pipeline."""

    footprint_m: float = 10.0
    std_thresh: float = 0.005
    grad_thresh: float = 0.1
    clearance_factor: float = 1.5
    process_res_cap: int = 1024
    depth_smoothing_base: float = 0.0
    segmentation_max_side: int = SEGMENTATION_MAX_SIDE
    segmentation_model_id: str = SEGMENTATION_MODEL_ID
    segmentation_score_thresh: float = SEGMENTATION_SCORE_THRESH
    segmentation_mask_thresh: float = SEGMENTATION_MASK_THRESH
    water_prompt: str = WATER_PROMPT
    road_prompt: str = ROAD_PROMPT
    tree_prompt: str = TREE_PROMPT
    roof_prompt: str = ROOF_PROMPT
    coverage_strictness: float = 0.95
    openness_weight: float = 0.5
    texture_threshold: float = 0.5
    altitude_m: float = DEFAULT_ALTITUDE_M
    fov_deg: float = ASSUMED_FOV_DEG
    model_id: str = DEFAULT_MODEL_ID


DEFAULT_ANALYZER_SETTINGS = AnalyzerSettings()


__all__ = [
    "VISLOC_DIR",
    "IMAGE_ROOT",
    "EXAMPLES_ROOT",
    "IMAGE_EXTS",
    "DEFAULT_ALTITUDE_M",
    "ASSUMED_FOV_DEG",
    "DEFAULT_MODEL_ID",
    "SEGMENTATION_MODEL_ID",
    "SEGMENTATION_MAX_SIDE",
    "SEGMENTATION_SCORE_THRESH",
    "SEGMENTATION_MASK_THRESH",
    "WATER_PROMPT",
    "ROAD_PROMPT",
    "TREE_PROMPT",
    "ROOF_PROMPT",
    "DEFAULT_ANALYZER_SETTINGS",
    "AnalyzerSettings",
]