parametros calibrados

This commit is contained in:
Diego Freitas 2026-05-12 10:24:08 -03:00
parent d886e282f8
commit 50cd595fb8
5 changed files with 3770 additions and 7952 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,13 @@
{ {
"schema": "manual_multispec_offsets_v2", "schema": "manual_multispec_offsets_v2",
"saved_at": "2026-05-08 09:17:15", "saved_at": "2026-05-11 16:21:23",
"frame_type": "RAW_BRUTO", "frame_type": "RAW_BRUTO",
"capture_mode_requested": "AUTO", "capture_mode_requested": "AUTO",
"capture_mode_effective": "AUTO", "capture_mode_effective": "AUTO",
"raw_policy": "allow_single", "raw_policy": "allow_single",
"sensor_width": 1280, "sensor_width": 1280,
"sensor_height": 800, "sensor_height": 800,
"bayer_pattern": "RGGB", "bayer_pattern": "BGGR",
"reference_camera": "rgb", "reference_camera": "rgb",
"baseline_mm": 75.0, "baseline_mm": 75.0,
"alignment_mode": "homography", "alignment_mode": "homography",
@ -19,43 +19,43 @@
}, },
"nir": { "nir": {
"dx": 0, "dx": 0,
"dy": 0, "dy": 1,
"theta_deg": 0.0 "theta_deg": 0.0
} }
}, },
"homographies": { "homographies": {
"re_to_rgb": [ "re_to_rgb": [
[ [
0.9891488988352489, 1.050733077272978,
-0.0057973762346762115, 0.04605606157188822,
-15.173511767385348 -29.324436886060216
], ],
[ [
-0.015114489970267686, -0.0006574806439193652,
0.9903282034674085, 1.0543997737520296,
58.93120393758602 14.764772434233967
], ],
[ [
-2.1528138783460464e-05, 2.9808004869914425e-05,
-1.5606269505459822e-05, 4.923907858473237e-05,
1.0 1.0
] ]
], ],
"nir_to_rgb": [ "nir_to_rgb": [
[ [
1.015255211995985, 0.9558631674418693,
-0.011641307565439515, -0.03589571258849329,
-15.440297021288165 15.945493687241475
], ],
[ [
0.006224807373165827, -0.006564602087683463,
1.0059040970450264, 0.9523096250606489,
21.05815660535078 25.562927061709274
], ],
[ [
5.830335800966281e-06, -1.9551531458452607e-05,
-1.5297165752796802e-05, -3.195760232703846e-05,
1.0 0.9999999999999999
] ]
] ]
}, },

View File

@ -1,6 +1,6 @@
{ {
"schema": "multispec_module_params_v3", "schema": "multispec_module_params_v3",
"saved_at": "2026-05-08 09:23:01", "saved_at": "2026-05-12 10:07:11",
"frame_type": "RAW_BRUTO", "frame_type": "RAW_BRUTO",
"capture_mode_requested": "AUTO", "capture_mode_requested": "AUTO",
"capture_mode_effective": "AUTO", "capture_mode_effective": "AUTO",
@ -46,43 +46,43 @@
}, },
"nir": { "nir": {
"dx": 0, "dx": 0,
"dy": 0, "dy": 1,
"theta_deg": 0.0 "theta_deg": 0.0
} }
}, },
"homographies": { "homographies": {
"re_to_rgb": [ "re_to_rgb": [
[ [
0.9891488988352489, 1.050733077272978,
-0.0057973762346762115, 0.04605606157188822,
-15.173511767385348 -29.324436886060216
], ],
[ [
-0.015114489970267686, -0.0006574806439193652,
0.9903282034674085, 1.0543997737520296,
58.93120393758602 14.764772434233967
], ],
[ [
-2.1528138783460464e-05, 2.9808004869914425e-05,
-1.5606269505459822e-05, 4.923907858473237e-05,
1.0 1.0
] ]
], ],
"nir_to_rgb": [ "nir_to_rgb": [
[ [
1.015255211995985, 0.9558631674418693,
-0.011641307565439515, -0.03589571258849329,
-15.440297021288165 15.945493687241475
], ],
[ [
0.006224807373165827, -0.006564602087683463,
1.0059040970450264, 0.9523096250606489,
21.05815660535078 25.562927061709274
], ],
[ [
5.830335800966281e-06, -1.9551531458452607e-05,
-1.5297165752796802e-05, -3.195760232703846e-05,
1.0 0.9999999999999999
] ]
] ]
}, },
@ -118,31 +118,31 @@
"nir" "nir"
], ],
"roi_pct": { "roi_pct": {
"x0": 0.365625, "x0": 0.304688,
"y0": 0.8225, "y0": 0.8275,
"x1": 0.432812, "x1": 0.364063,
"y1": 0.995 "y1": 0.9875
}, },
"target_value": 0.08, "target_value": 0.08,
"weight": 0.7, "weight": 0.7,
"roi_pct_by_role": { "roi_pct_by_role": {
"rgb": { "rgb": {
"x0": 0.365625, "x0": 0.304688,
"y0": 0.8225, "y0": 0.8275,
"x1": 0.432812, "x1": 0.364063,
"y1": 0.995 "y1": 0.9875
}, },
"re": { "re": {
"x0": 0.395313, "x0": 0.275,
"y0": 0.745, "y0": 0.8225,
"x1": 0.4625, "x1": 0.334375,
"y1": 0.9225 "y1": 0.995
}, },
"nir": { "nir": {
"x0": 0.353125, "x0": 0.3375,
"y0": 0.78, "y0": 0.8325,
"x1": 0.420312, "x1": 0.4,
"y1": 0.9525 "y1": 0.9925
} }
}, },
"roi_list_by_role": { "roi_list_by_role": {
@ -151,13 +151,13 @@
"name": "rgb_legacy_01", "name": "rgb_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.365625, "x0": 0.304688,
"y0": 0.8225, "y0": 0.8275,
"x1": 0.432812, "x1": 0.364063,
"y1": 0.995 "y1": 0.9875
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:19:46" "updated_at": "2026-05-12 09:53:26"
} }
], ],
"re": [ "re": [
@ -165,13 +165,13 @@
"name": "re_legacy_01", "name": "re_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.395313, "x0": 0.275,
"y0": 0.745, "y0": 0.8225,
"x1": 0.4625, "x1": 0.334375,
"y1": 0.9225 "y1": 0.995
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:14" "updated_at": "2026-05-12 09:54:15"
} }
], ],
"nir": [ "nir": [
@ -179,13 +179,13 @@
"name": "nir_legacy_01", "name": "nir_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.353125, "x0": 0.3375,
"y0": 0.78, "y0": 0.8325,
"x1": 0.420312, "x1": 0.4,
"y1": 0.9525 "y1": 0.9925
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:47" "updated_at": "2026-05-12 09:54:44"
} }
] ]
} }
@ -199,10 +199,10 @@
"nir" "nir"
], ],
"roi_pct": { "roi_pct": {
"x0": 0.29375, "x0": 0.238281,
"y0": 0.825, "y0": 0.82625,
"x1": 0.3625, "x1": 0.298438,
"y1": 0.995 "y1": 0.9875
}, },
"target_value": 0.35, "target_value": 0.35,
"target_value_by_role": { "target_value_by_role": {
@ -213,22 +213,22 @@
"weight": 1.0, "weight": 1.0,
"roi_pct_by_role": { "roi_pct_by_role": {
"rgb": { "rgb": {
"x0": 0.29375, "x0": 0.238281,
"y0": 0.825, "y0": 0.82625,
"x1": 0.3625, "x1": 0.298438,
"y1": 0.995 "y1": 0.9875
}, },
"re": { "re": {
"x0": 0.325, "x0": 0.203125,
"y0": 0.75, "y0": 0.82625,
"x1": 0.389062, "x1": 0.266406,
"y1": 0.915 "y1": 0.995
}, },
"nir": { "nir": {
"x0": 0.284375, "x0": 0.266406,
"y0": 0.79, "y0": 0.83125,
"x1": 0.35, "x1": 0.332031,
"y1": 0.9525 "y1": 0.99625
} }
}, },
"roi_list_by_role": { "roi_list_by_role": {
@ -237,13 +237,13 @@
"name": "rgb_legacy_01", "name": "rgb_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.29375, "x0": 0.238281,
"y0": 0.825, "y0": 0.82625,
"x1": 0.3625, "x1": 0.298438,
"y1": 0.995 "y1": 0.9875
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:19:29" "updated_at": "2026-05-12 09:53:18"
} }
], ],
"re": [ "re": [
@ -251,13 +251,13 @@
"name": "re_legacy_01", "name": "re_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.325, "x0": 0.203125,
"y0": 0.75, "y0": 0.82625,
"x1": 0.389062, "x1": 0.266406,
"y1": 0.915 "y1": 0.995
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:22" "updated_at": "2026-05-12 09:53:55"
} }
], ],
"nir": [ "nir": [
@ -265,13 +265,13 @@
"name": "nir_legacy_01", "name": "nir_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.284375, "x0": 0.266406,
"y0": 0.79, "y0": 0.83125,
"x1": 0.35, "x1": 0.332031,
"y1": 0.9525 "y1": 0.99625
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:53" "updated_at": "2026-05-12 09:54:33"
} }
] ]
} }
@ -285,31 +285,31 @@
"nir" "nir"
], ],
"roi_pct": { "roi_pct": {
"x0": 0.220312, "x0": 0.166406,
"y0": 0.8225, "y0": 0.82625,
"x1": 0.2875, "x1": 0.228906,
"y1": 0.995 "y1": 0.99125
}, },
"target_value": 0.82, "target_value": 0.82,
"weight": 0.8, "weight": 0.8,
"roi_pct_by_role": { "roi_pct_by_role": {
"rgb": { "rgb": {
"x0": 0.220312, "x0": 0.166406,
"y0": 0.8225, "y0": 0.82625,
"x1": 0.2875, "x1": 0.228906,
"y1": 0.995 "y1": 0.99125
}, },
"re": { "re": {
"x0": 0.25, "x0": 0.132812,
"y0": 0.7525, "y0": 0.82625,
"x1": 0.315625, "x1": 0.194531,
"y1": 0.9225 "y1": 0.995
}, },
"nir": { "nir": {
"x0": 0.214062, "x0": 0.195312,
"y0": 0.785, "y0": 0.83625,
"x1": 0.282813, "x1": 0.260156,
"y1": 0.9525 "y1": 0.99125
} }
}, },
"roi_list_by_role": { "roi_list_by_role": {
@ -318,13 +318,13 @@
"name": "rgb_legacy_01", "name": "rgb_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.220312, "x0": 0.166406,
"y0": 0.8225, "y0": 0.82625,
"x1": 0.2875, "x1": 0.228906,
"y1": 0.995 "y1": 0.99125
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:19:04" "updated_at": "2026-05-12 09:53:36"
} }
], ],
"re": [ "re": [
@ -332,13 +332,13 @@
"name": "re_legacy_01", "name": "re_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.25, "x0": 0.132812,
"y0": 0.7525, "y0": 0.82625,
"x1": 0.315625, "x1": 0.194531,
"y1": 0.9225 "y1": 0.995
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:27" "updated_at": "2026-05-12 09:54:04"
} }
], ],
"nir": [ "nir": [
@ -346,13 +346,13 @@
"name": "nir_legacy_01", "name": "nir_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.214062, "x0": 0.195312,
"y0": 0.785, "y0": 0.83625,
"x1": 0.282813, "x1": 0.260156,
"y1": 0.9525 "y1": 0.99125
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:21:02" "updated_at": "2026-05-12 09:54:56"
} }
] ]
} }
@ -500,10 +500,10 @@
} }
}, },
"flatfield_config": { "flatfield_config": {
"enabled": false, "enabled": true,
"subtract_dark": true, "subtract_dark": true,
"schema": "multispec_flatfield_v1", "schema": "multispec_flatfield_v1",
"created_at": "2026-05-06 13:37:25", "created_at": "2026-05-08 15:26:18",
"json_file": "calibration/flatfield_maps_v1.json", "json_file": "calibration/flatfield_maps_v1.json",
"npz_file": "calibration/flatfield_maps_v1.npz", "npz_file": "calibration/flatfield_maps_v1.npz",
"apply_before_fusion": true, "apply_before_fusion": true,
@ -528,10 +528,10 @@
400, 400,
640 640
], ],
"gain_min": 0.5639018416404724, "gain_min": 0.6047894954681396,
"gain_max": 1.8886771202087402, "gain_max": 1.7825754880905151,
"gain_mean": 1.0681155920028687, "gain_mean": 1.077973484992981,
"gain_std": 0.3506295084953308 "gain_std": 0.3330462872982025
}, },
"G": { "G": {
"gain_key": "gain_G", "gain_key": "gain_G",
@ -542,10 +542,10 @@
400, 400,
640 640
], ],
"gain_min": 0.5427238941192627, "gain_min": 0.535053014755249,
"gain_max": 2.177884101867676, "gain_max": 1.6048510074615479,
"gain_mean": 1.0985527038574219, "gain_mean": 1.0092605352401733,
"gain_std": 0.4235461354255676 "gain_std": 0.29722487926483154
}, },
"B": { "B": {
"gain_key": "gain_B", "gain_key": "gain_B",
@ -556,10 +556,10 @@
400, 400,
640 640
], ],
"gain_min": 0.57332444190979, "gain_min": 0.5684313178062439,
"gain_max": 1.991808533668518, "gain_max": 1.6688997745513916,
"gain_mean": 1.0765669345855713, "gain_mean": 1.0110775232315063,
"gain_std": 0.36871764063835144 "gain_std": 0.3016279637813568
}, },
"RE": { "RE": {
"gain_key": "gain_RE", "gain_key": "gain_RE",
@ -570,10 +570,10 @@
800, 800,
1280 1280
], ],
"gain_min": 0.7719405889511108, "gain_min": 0.7832612991333008,
"gain_max": 1.6437114477157593, "gain_max": 1.8540745973587036,
"gain_mean": 1.0222759246826172, "gain_mean": 1.099328637123108,
"gain_std": 0.19225353002548218 "gain_std": 0.259878933429718
}, },
"NIR": { "NIR": {
"gain_key": "gain_NIR", "gain_key": "gain_NIR",
@ -584,13 +584,13 @@
800, 800,
1280 1280
], ],
"gain_min": 0.808167576789856, "gain_min": 0.7467380166053772,
"gain_max": 1.5716955661773682, "gain_max": 1.8378677368164062,
"gain_mean": 1.021193265914917, "gain_mean": 1.0630955696105957,
"gain_std": 0.1498267650604248 "gain_std": 0.23178784549236298
} }
}, },
"exp_gain_correct_during_flat_capture": true, "exp_gain_correct_during_flat_capture": false,
"smooth_ksize": 31, "smooth_ksize": 31,
"min_gain": 0.25, "min_gain": 0.25,
"max_gain": 4.0, "max_gain": 4.0,

View File

@ -1,23 +1,19 @@
{ {
"schema": "multispec_radiometric_config_profiles_v4",
"saved_at": "2026-05-12 09:55:04",
"active_profile": "three_reference_patches_mode",
"global_scene_mode": { "global_scene_mode": {
"radiometric_config": { "radiometric_config": {
"enabled": true, "enabled": true,
"interval_s": 0.5, "interval_s": 0.25,
"verbose": true, "verbose": true,
"metering_mode": "global", "metering_mode": "global",
"spectral_control_mode": "shared", "spectral_control_mode": "shared",
"global_roi_pct": {
"x0": 0.082812,
"y0": 0.08,
"x1": 0.903125,
"y1": 0.905
},
"control_metric": "p50", "control_metric": "p50",
"target_value": 0.4, "target_value": 0.5,
"deadband": 0.04, "deadband": 0.035,
"p95_limit": 0.94, "p95_limit": 0.94,
"saturation_limit_pct": 1.0, "saturation_limit_pct": 0.5,
"dark_limit_pct": 35.0,
"alpha": 0.18, "alpha": 0.18,
"exp_step_gain": 0.55, "exp_step_gain": 0.55,
"prefer_exposure": true, "prefer_exposure": true,
@ -25,26 +21,6 @@
"exp_max_us": 80000, "exp_max_us": 80000,
"gain_min": 1.0, "gain_min": 1.0,
"gain_max": 4.0, "gain_max": 4.0,
"role_limits": {
"rgb": {
"exp_min_us": 100,
"exp_max_us": 80000,
"gain_min": 1.0,
"gain_max": 4.0
},
"re": {
"exp_min_us": 100,
"exp_max_us": 80000,
"gain_min": 1.0,
"gain_max": 3.0
},
"nir": {
"exp_min_us": 100,
"exp_max_us": 80000,
"gain_min": 1.0,
"gain_max": 3.0
}
},
"exp_apply_threshold_us": 80, "exp_apply_threshold_us": 80,
"gain_apply_threshold": 0.05, "gain_apply_threshold": 0.05,
"apply_same_spectral_to_both": true, "apply_same_spectral_to_both": true,
@ -52,12 +28,13 @@
"re", "re",
"nir" "nir"
], ],
"dark_limit_pct": 35.0,
"control_strategy": "ratio", "control_strategy": "ratio",
"ratio_alpha": 0.55, "ratio_alpha": 0.35,
"ratio_min": 0.55, "ratio_min": 0.65,
"ratio_max": 1.85, "ratio_max": 1.35,
"reduce_fast_factor": 0.75, "reduce_fast_factor": 0.8,
"factor_min": 0.72, "factor_min": 0.55,
"factor_max": 1.28, "factor_max": 1.28,
"gain_return_enabled": true, "gain_return_enabled": true,
"gain_reduce_on_saturation": true, "gain_reduce_on_saturation": true,
@ -68,7 +45,68 @@
"gain_hard_reset_on_saturation": false, "gain_hard_reset_on_saturation": false,
"exp_high_ratio_for_gain": 0.95, "exp_high_ratio_for_gain": 0.95,
"exp_low_ratio_for_gain_return": 0.75, "exp_low_ratio_for_gain_return": 0.75,
"role_limits": {
"rgb": {
"exp_min_us": 100,
"exp_max_us": 80000,
"gain_min": 1.0,
"gain_max": 2.0
},
"re": {
"exp_min_us": 100,
"exp_max_us": 2500,
"gain_min": 1.0,
"gain_max": 2.0
},
"nir": {
"exp_min_us": 100,
"exp_max_us": 3000,
"gain_min": 1.0,
"gain_max": 2.0
}
},
"ready_required_cycles": 3, "ready_required_cycles": 3,
"global_saturation_guard_enabled": true,
"global_guard_roi_pct": {
"x0": 0.05,
"y0": 0.05,
"x1": 0.95,
"y1": 0.95
},
"global_guard_sat_threshold": 0.985,
"global_guard_near_sat_threshold": 0.94,
"global_guard_sat_pct_soft": 0.05,
"global_guard_sat_pct_hard": 0.2,
"global_guard_sat_pct_extreme": 0.8,
"global_guard_blob_pct_soft": 0.015,
"global_guard_blob_pct_hard": 0.08,
"global_guard_blob_pct_extreme": 0.25,
"global_guard_min_blob_px": 48,
"global_guard_downsample_max_side": 320,
"global_guard_reduce_factor_soft": 0.82,
"global_guard_reduce_factor_hard": 0.6,
"global_guard_reduce_factor_extreme": 0.35,
"sun_guard_enabled": true,
"sun_guard_p99_threshold": 0.9,
"sun_guard_near_sat_pct_threshold": 0.8,
"sun_guard_freeze_increase_cycles": 2,
"sun_guard_allow_decrease": true,
"guard_force_apply_enabled": true,
"guard_force_apply_soft": true,
"guard_force_apply_hard": true,
"guard_force_apply_extreme": true,
"guard_force_apply_on_patch_saturation": true,
"guard_freeze_cycles_soft": 3,
"guard_freeze_cycles_hard": 5,
"guard_freeze_cycles_extreme": 8,
"guard_reapply_min_exp_on_emergency": true,
"guard_min_exp_margin_us": 80,
"global_roi_pct": {
"x0": 0.08,
"y0": 0.08,
"x1": 0.92,
"y1": 0.92
},
"global_roi_pct_by_role": { "global_roi_pct_by_role": {
"rgb": { "rgb": {
"x0": 0.08, "x0": 0.08,
@ -94,14 +132,14 @@
"three_reference_patches_mode": { "three_reference_patches_mode": {
"radiometric_config": { "radiometric_config": {
"enabled": true, "enabled": true,
"interval_s": 0.5, "interval_s": 0.25,
"verbose": true, "verbose": true,
"metering_mode": "reference_patches", "metering_mode": "reference_patches",
"spectral_control_mode": "shared", "spectral_control_mode": "shared",
"control_metric": "p50", "control_metric": "p50",
"target_value": 0.5, "target_value": 0.5,
"deadband": 0.035, "deadband": 0.035,
"p95_limit": 0.92, "p95_limit": 0.94,
"saturation_limit_pct": 0.5, "saturation_limit_pct": 0.5,
"alpha": 0.18, "alpha": 0.18,
"exp_step_gain": 0.55, "exp_step_gain": 0.55,
@ -120,31 +158,31 @@
"nir" "nir"
], ],
"roi_pct": { "roi_pct": {
"x0": 0.365625, "x0": 0.304688,
"y0": 0.8225, "y0": 0.8275,
"x1": 0.432812, "x1": 0.364063,
"y1": 0.995 "y1": 0.9875
}, },
"target_value": 0.08, "target_value": 0.08,
"weight": 0.7, "weight": 0.7,
"roi_pct_by_role": { "roi_pct_by_role": {
"rgb": { "rgb": {
"x0": 0.365625, "x0": 0.304688,
"y0": 0.8225, "y0": 0.8275,
"x1": 0.432812, "x1": 0.364063,
"y1": 0.995 "y1": 0.9875
}, },
"re": { "re": {
"x0": 0.395313, "x0": 0.275,
"y0": 0.745, "y0": 0.8225,
"x1": 0.4625, "x1": 0.334375,
"y1": 0.9225 "y1": 0.995
}, },
"nir": { "nir": {
"x0": 0.353125, "x0": 0.3375,
"y0": 0.78, "y0": 0.8325,
"x1": 0.420312, "x1": 0.4,
"y1": 0.9525 "y1": 0.9925
} }
}, },
"roi_list_by_role": { "roi_list_by_role": {
@ -153,13 +191,13 @@
"name": "rgb_legacy_01", "name": "rgb_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.365625, "x0": 0.304688,
"y0": 0.8225, "y0": 0.8275,
"x1": 0.432812, "x1": 0.364063,
"y1": 0.995 "y1": 0.9875
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:19:46" "updated_at": "2026-05-12 09:53:26"
} }
], ],
"re": [ "re": [
@ -167,13 +205,13 @@
"name": "re_legacy_01", "name": "re_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.395313, "x0": 0.275,
"y0": 0.745, "y0": 0.8225,
"x1": 0.4625, "x1": 0.334375,
"y1": 0.9225 "y1": 0.995
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:14" "updated_at": "2026-05-12 09:54:15"
} }
], ],
"nir": [ "nir": [
@ -181,13 +219,13 @@
"name": "nir_legacy_01", "name": "nir_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.353125, "x0": 0.3375,
"y0": 0.78, "y0": 0.8325,
"x1": 0.420312, "x1": 0.4,
"y1": 0.9525 "y1": 0.9925
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:47" "updated_at": "2026-05-12 09:54:44"
} }
] ]
} }
@ -201,31 +239,36 @@
"nir" "nir"
], ],
"roi_pct": { "roi_pct": {
"x0": 0.29375, "x0": 0.238281,
"y0": 0.825, "y0": 0.82625,
"x1": 0.3625, "x1": 0.298438,
"y1": 0.995 "y1": 0.9875
},
"target_value": 0.35,
"target_value_by_role": {
"rgb": 0.34,
"re": 0.24,
"nir": 0.3
}, },
"target_value": 0.5,
"weight": 1.0, "weight": 1.0,
"roi_pct_by_role": { "roi_pct_by_role": {
"rgb": { "rgb": {
"x0": 0.29375, "x0": 0.238281,
"y0": 0.825, "y0": 0.82625,
"x1": 0.3625, "x1": 0.298438,
"y1": 0.995 "y1": 0.9875
}, },
"re": { "re": {
"x0": 0.325, "x0": 0.203125,
"y0": 0.75, "y0": 0.82625,
"x1": 0.389062, "x1": 0.266406,
"y1": 0.915 "y1": 0.995
}, },
"nir": { "nir": {
"x0": 0.284375, "x0": 0.266406,
"y0": 0.79, "y0": 0.83125,
"x1": 0.35, "x1": 0.332031,
"y1": 0.9525 "y1": 0.99625
} }
}, },
"roi_list_by_role": { "roi_list_by_role": {
@ -234,13 +277,13 @@
"name": "rgb_legacy_01", "name": "rgb_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.29375, "x0": 0.238281,
"y0": 0.825, "y0": 0.82625,
"x1": 0.3625, "x1": 0.298438,
"y1": 0.995 "y1": 0.9875
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:19:29" "updated_at": "2026-05-12 09:53:18"
} }
], ],
"re": [ "re": [
@ -248,13 +291,13 @@
"name": "re_legacy_01", "name": "re_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.325, "x0": 0.203125,
"y0": 0.75, "y0": 0.82625,
"x1": 0.389062, "x1": 0.266406,
"y1": 0.915 "y1": 0.995
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:22" "updated_at": "2026-05-12 09:53:55"
} }
], ],
"nir": [ "nir": [
@ -262,13 +305,13 @@
"name": "nir_legacy_01", "name": "nir_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.284375, "x0": 0.266406,
"y0": 0.79, "y0": 0.83125,
"x1": 0.35, "x1": 0.332031,
"y1": 0.9525 "y1": 0.99625
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:53" "updated_at": "2026-05-12 09:54:33"
} }
] ]
} }
@ -282,31 +325,31 @@
"nir" "nir"
], ],
"roi_pct": { "roi_pct": {
"x0": 0.220312, "x0": 0.166406,
"y0": 0.8225, "y0": 0.82625,
"x1": 0.2875, "x1": 0.228906,
"y1": 0.995 "y1": 0.99125
}, },
"target_value": 0.82, "target_value": 0.82,
"weight": 0.8, "weight": 0.8,
"roi_pct_by_role": { "roi_pct_by_role": {
"rgb": { "rgb": {
"x0": 0.220312, "x0": 0.166406,
"y0": 0.8225, "y0": 0.82625,
"x1": 0.2875, "x1": 0.228906,
"y1": 0.995 "y1": 0.99125
}, },
"re": { "re": {
"x0": 0.25, "x0": 0.132812,
"y0": 0.7525, "y0": 0.82625,
"x1": 0.315625, "x1": 0.194531,
"y1": 0.9225 "y1": 0.995
}, },
"nir": { "nir": {
"x0": 0.214062, "x0": 0.195312,
"y0": 0.785, "y0": 0.83625,
"x1": 0.282813, "x1": 0.260156,
"y1": 0.9525 "y1": 0.99125
} }
}, },
"roi_list_by_role": { "roi_list_by_role": {
@ -315,13 +358,13 @@
"name": "rgb_legacy_01", "name": "rgb_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.220312, "x0": 0.166406,
"y0": 0.8225, "y0": 0.82625,
"x1": 0.2875, "x1": 0.228906,
"y1": 0.995 "y1": 0.99125
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:19:04" "updated_at": "2026-05-12 09:53:36"
} }
], ],
"re": [ "re": [
@ -329,13 +372,13 @@
"name": "re_legacy_01", "name": "re_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.25, "x0": 0.132812,
"y0": 0.7525, "y0": 0.82625,
"x1": 0.315625, "x1": 0.194531,
"y1": 0.9225 "y1": 0.995
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:27" "updated_at": "2026-05-12 09:54:04"
} }
], ],
"nir": [ "nir": [
@ -343,13 +386,13 @@
"name": "nir_legacy_01", "name": "nir_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.214062, "x0": 0.195312,
"y0": 0.785, "y0": 0.83625,
"x1": 0.282813, "x1": 0.260156,
"y1": 0.9525 "y1": 0.99125
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:21:02" "updated_at": "2026-05-12 09:54:56"
} }
] ]
} }
@ -364,11 +407,11 @@
], ],
"dark_limit_pct": 35.0, "dark_limit_pct": 35.0,
"control_strategy": "ratio", "control_strategy": "ratio",
"ratio_alpha": 0.55, "ratio_alpha": 0.35,
"ratio_min": 0.55, "ratio_min": 0.65,
"ratio_max": 1.85, "ratio_max": 1.35,
"reduce_fast_factor": 0.75, "reduce_fast_factor": 0.8,
"factor_min": 0.72, "factor_min": 0.55,
"factor_max": 1.28, "factor_max": 1.28,
"gain_return_enabled": true, "gain_return_enabled": true,
"gain_reduce_on_saturation": true, "gain_reduce_on_saturation": true,
@ -388,13 +431,13 @@
}, },
"re": { "re": {
"exp_min_us": 100, "exp_min_us": 100,
"exp_max_us": 80000, "exp_max_us": 2500,
"gain_min": 1.0, "gain_min": 1.0,
"gain_max": 2.0 "gain_max": 2.0
}, },
"nir": { "nir": {
"exp_min_us": 100, "exp_min_us": 100,
"exp_max_us": 80000, "exp_max_us": 3000,
"gain_min": 1.0, "gain_min": 1.0,
"gain_max": 2.0 "gain_max": 2.0
} }
@ -404,7 +447,7 @@
"patch_require_order": true, "patch_require_order": true,
"patch_min_separation": 0.08, "patch_min_separation": 0.08,
"patch_white_sat_limit_pct": 0.5, "patch_white_sat_limit_pct": 0.5,
"patch_white_p95_limit": 0.9, "patch_white_p95_limit": 0.94,
"patch_black_dark_limit_pct": 80.0, "patch_black_dark_limit_pct": 80.0,
"patch_black_max_p50": 0.2, "patch_black_max_p50": 0.2,
"patch_gray_min_p50": 0.08, "patch_gray_min_p50": 0.08,
@ -412,35 +455,44 @@
"patch_roi_contract": "multi_roi_by_role_v1", "patch_roi_contract": "multi_roi_by_role_v1",
"patch_roi_reduce_method": "median_valid_rois", "patch_roi_reduce_method": "median_valid_rois",
"patch_roi_outlier_reject": true, "patch_roi_outlier_reject": true,
"patch_roi_max_p50_delta": 0.12 "patch_roi_max_p50_delta": 0.12,
"global_saturation_guard_enabled": true,
"global_guard_roi_pct": {
"x0": 0.05,
"y0": 0.05,
"x1": 0.95,
"y1": 0.95
},
"global_guard_sat_threshold": 0.985,
"global_guard_near_sat_threshold": 0.94,
"global_guard_sat_pct_soft": 0.05,
"global_guard_sat_pct_hard": 0.2,
"global_guard_sat_pct_extreme": 0.8,
"global_guard_blob_pct_soft": 0.015,
"global_guard_blob_pct_hard": 0.08,
"global_guard_blob_pct_extreme": 0.25,
"global_guard_min_blob_px": 48,
"global_guard_downsample_max_side": 320,
"global_guard_reduce_factor_soft": 0.82,
"global_guard_reduce_factor_hard": 0.6,
"global_guard_reduce_factor_extreme": 0.35,
"sun_guard_enabled": true,
"sun_guard_p99_threshold": 0.9,
"sun_guard_near_sat_pct_threshold": 0.8,
"sun_guard_freeze_increase_cycles": 2,
"sun_guard_allow_decrease": true,
"guard_force_apply_enabled": true,
"guard_force_apply_soft": true,
"guard_force_apply_hard": true,
"guard_force_apply_extreme": true,
"guard_force_apply_on_patch_saturation": true,
"guard_freeze_cycles_soft": 3,
"guard_freeze_cycles_hard": 5,
"guard_freeze_cycles_extreme": 8,
"guard_reapply_min_exp_on_emergency": true,
"guard_min_exp_margin_us": 80
} }
}, },
"legacy_patch_mode": {
"radiometric_config": {
"enabled": true,
"metering_mode": "legacy_patch",
"spectral_control_mode": "independent",
"strip_y0_pct": 0.95,
"strip_y1_pct": 1.0,
"patch_x0_pct": 0.35,
"patch_x1_pct": 0.75,
"control_metric": "mean",
"target_value": 0.7,
"deadband": 0.03,
"interval_s": 0.5,
"alpha": 0.2,
"exp_min_us": 100,
"exp_max_us": 80000,
"gain_min": 1.0,
"gain_max": 8.0,
"exp_step_gain": 0.65,
"prefer_exposure": true,
"verbose": true
}
},
"schema": "multispec_radiometric_config_profiles_v3",
"saved_at": "2026-05-08 09:21:09",
"active_profile": "three_reference_patches_mode",
"patch_normalization": { "patch_normalization": {
"enabled": true, "enabled": true,
"apply_when_metering_mode": "reference_patches", "apply_when_metering_mode": "reference_patches",
@ -462,14 +514,14 @@
}, },
"radiometric_config": { "radiometric_config": {
"enabled": true, "enabled": true,
"interval_s": 0.5, "interval_s": 0.25,
"verbose": true, "verbose": true,
"metering_mode": "reference_patches", "metering_mode": "reference_patches",
"spectral_control_mode": "shared", "spectral_control_mode": "shared",
"control_metric": "p50", "control_metric": "p50",
"target_value": 0.5, "target_value": 0.5,
"deadband": 0.035, "deadband": 0.035,
"p95_limit": 0.92, "p95_limit": 0.94,
"saturation_limit_pct": 0.5, "saturation_limit_pct": 0.5,
"alpha": 0.18, "alpha": 0.18,
"exp_step_gain": 0.55, "exp_step_gain": 0.55,
@ -488,31 +540,31 @@
"nir" "nir"
], ],
"roi_pct": { "roi_pct": {
"x0": 0.365625, "x0": 0.304688,
"y0": 0.8225, "y0": 0.8275,
"x1": 0.432812, "x1": 0.364063,
"y1": 0.995 "y1": 0.9875
}, },
"target_value": 0.08, "target_value": 0.08,
"weight": 0.7, "weight": 0.7,
"roi_pct_by_role": { "roi_pct_by_role": {
"rgb": { "rgb": {
"x0": 0.365625, "x0": 0.304688,
"y0": 0.8225, "y0": 0.8275,
"x1": 0.432812, "x1": 0.364063,
"y1": 0.995 "y1": 0.9875
}, },
"re": { "re": {
"x0": 0.395313, "x0": 0.275,
"y0": 0.745, "y0": 0.8225,
"x1": 0.4625, "x1": 0.334375,
"y1": 0.9225 "y1": 0.995
}, },
"nir": { "nir": {
"x0": 0.353125, "x0": 0.3375,
"y0": 0.78, "y0": 0.8325,
"x1": 0.420312, "x1": 0.4,
"y1": 0.9525 "y1": 0.9925
} }
}, },
"roi_list_by_role": { "roi_list_by_role": {
@ -521,13 +573,13 @@
"name": "rgb_legacy_01", "name": "rgb_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.365625, "x0": 0.304688,
"y0": 0.8225, "y0": 0.8275,
"x1": 0.432812, "x1": 0.364063,
"y1": 0.995 "y1": 0.9875
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:19:46" "updated_at": "2026-05-12 09:53:26"
} }
], ],
"re": [ "re": [
@ -535,13 +587,13 @@
"name": "re_legacy_01", "name": "re_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.395313, "x0": 0.275,
"y0": 0.745, "y0": 0.8225,
"x1": 0.4625, "x1": 0.334375,
"y1": 0.9225 "y1": 0.995
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:14" "updated_at": "2026-05-12 09:54:15"
} }
], ],
"nir": [ "nir": [
@ -549,13 +601,13 @@
"name": "nir_legacy_01", "name": "nir_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.353125, "x0": 0.3375,
"y0": 0.78, "y0": 0.8325,
"x1": 0.420312, "x1": 0.4,
"y1": 0.9525 "y1": 0.9925
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:47" "updated_at": "2026-05-12 09:54:44"
} }
] ]
} }
@ -569,31 +621,36 @@
"nir" "nir"
], ],
"roi_pct": { "roi_pct": {
"x0": 0.29375, "x0": 0.238281,
"y0": 0.825, "y0": 0.82625,
"x1": 0.3625, "x1": 0.298438,
"y1": 0.995 "y1": 0.9875
},
"target_value": 0.35,
"target_value_by_role": {
"rgb": 0.34,
"re": 0.24,
"nir": 0.3
}, },
"target_value": 0.5,
"weight": 1.0, "weight": 1.0,
"roi_pct_by_role": { "roi_pct_by_role": {
"rgb": { "rgb": {
"x0": 0.29375, "x0": 0.238281,
"y0": 0.825, "y0": 0.82625,
"x1": 0.3625, "x1": 0.298438,
"y1": 0.995 "y1": 0.9875
}, },
"re": { "re": {
"x0": 0.325, "x0": 0.203125,
"y0": 0.75, "y0": 0.82625,
"x1": 0.389062, "x1": 0.266406,
"y1": 0.915 "y1": 0.995
}, },
"nir": { "nir": {
"x0": 0.284375, "x0": 0.266406,
"y0": 0.79, "y0": 0.83125,
"x1": 0.35, "x1": 0.332031,
"y1": 0.9525 "y1": 0.99625
} }
}, },
"roi_list_by_role": { "roi_list_by_role": {
@ -602,13 +659,13 @@
"name": "rgb_legacy_01", "name": "rgb_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.29375, "x0": 0.238281,
"y0": 0.825, "y0": 0.82625,
"x1": 0.3625, "x1": 0.298438,
"y1": 0.995 "y1": 0.9875
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:19:29" "updated_at": "2026-05-12 09:53:18"
} }
], ],
"re": [ "re": [
@ -616,13 +673,13 @@
"name": "re_legacy_01", "name": "re_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.325, "x0": 0.203125,
"y0": 0.75, "y0": 0.82625,
"x1": 0.389062, "x1": 0.266406,
"y1": 0.915 "y1": 0.995
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:22" "updated_at": "2026-05-12 09:53:55"
} }
], ],
"nir": [ "nir": [
@ -630,13 +687,13 @@
"name": "nir_legacy_01", "name": "nir_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.284375, "x0": 0.266406,
"y0": 0.79, "y0": 0.83125,
"x1": 0.35, "x1": 0.332031,
"y1": 0.9525 "y1": 0.99625
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:53" "updated_at": "2026-05-12 09:54:33"
} }
] ]
} }
@ -650,31 +707,31 @@
"nir" "nir"
], ],
"roi_pct": { "roi_pct": {
"x0": 0.220312, "x0": 0.166406,
"y0": 0.8225, "y0": 0.82625,
"x1": 0.2875, "x1": 0.228906,
"y1": 0.995 "y1": 0.99125
}, },
"target_value": 0.82, "target_value": 0.82,
"weight": 0.8, "weight": 0.8,
"roi_pct_by_role": { "roi_pct_by_role": {
"rgb": { "rgb": {
"x0": 0.220312, "x0": 0.166406,
"y0": 0.8225, "y0": 0.82625,
"x1": 0.2875, "x1": 0.228906,
"y1": 0.995 "y1": 0.99125
}, },
"re": { "re": {
"x0": 0.25, "x0": 0.132812,
"y0": 0.7525, "y0": 0.82625,
"x1": 0.315625, "x1": 0.194531,
"y1": 0.9225 "y1": 0.995
}, },
"nir": { "nir": {
"x0": 0.214062, "x0": 0.195312,
"y0": 0.785, "y0": 0.83625,
"x1": 0.282813, "x1": 0.260156,
"y1": 0.9525 "y1": 0.99125
} }
}, },
"roi_list_by_role": { "roi_list_by_role": {
@ -683,13 +740,13 @@
"name": "rgb_legacy_01", "name": "rgb_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.220312, "x0": 0.166406,
"y0": 0.8225, "y0": 0.82625,
"x1": 0.2875, "x1": 0.228906,
"y1": 0.995 "y1": 0.99125
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:19:04" "updated_at": "2026-05-12 09:53:36"
} }
], ],
"re": [ "re": [
@ -697,13 +754,13 @@
"name": "re_legacy_01", "name": "re_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.25, "x0": 0.132812,
"y0": 0.7525, "y0": 0.82625,
"x1": 0.315625, "x1": 0.194531,
"y1": 0.9225 "y1": 0.995
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:20:27" "updated_at": "2026-05-12 09:54:04"
} }
], ],
"nir": [ "nir": [
@ -711,13 +768,13 @@
"name": "nir_legacy_01", "name": "nir_legacy_01",
"enabled": true, "enabled": true,
"roi_pct": { "roi_pct": {
"x0": 0.214062, "x0": 0.195312,
"y0": 0.785, "y0": 0.83625,
"x1": 0.282813, "x1": 0.260156,
"y1": 0.9525 "y1": 0.99125
}, },
"created_at": "2026-05-07 14:36:25", "created_at": "2026-05-07 14:36:25",
"updated_at": "2026-05-08 09:21:02" "updated_at": "2026-05-12 09:54:56"
} }
] ]
} }
@ -732,11 +789,11 @@
], ],
"dark_limit_pct": 35.0, "dark_limit_pct": 35.0,
"control_strategy": "ratio", "control_strategy": "ratio",
"ratio_alpha": 0.55, "ratio_alpha": 0.35,
"ratio_min": 0.55, "ratio_min": 0.65,
"ratio_max": 1.85, "ratio_max": 1.35,
"reduce_fast_factor": 0.75, "reduce_fast_factor": 0.8,
"factor_min": 0.72, "factor_min": 0.55,
"factor_max": 1.28, "factor_max": 1.28,
"gain_return_enabled": true, "gain_return_enabled": true,
"gain_reduce_on_saturation": true, "gain_reduce_on_saturation": true,
@ -756,13 +813,13 @@
}, },
"re": { "re": {
"exp_min_us": 100, "exp_min_us": 100,
"exp_max_us": 80000, "exp_max_us": 2500,
"gain_min": 1.0, "gain_min": 1.0,
"gain_max": 2.0 "gain_max": 2.0
}, },
"nir": { "nir": {
"exp_min_us": 100, "exp_min_us": 100,
"exp_max_us": 80000, "exp_max_us": 3000,
"gain_min": 1.0, "gain_min": 1.0,
"gain_max": 2.0 "gain_max": 2.0
} }
@ -772,7 +829,7 @@
"patch_require_order": true, "patch_require_order": true,
"patch_min_separation": 0.08, "patch_min_separation": 0.08,
"patch_white_sat_limit_pct": 0.5, "patch_white_sat_limit_pct": 0.5,
"patch_white_p95_limit": 0.9, "patch_white_p95_limit": 0.94,
"patch_black_dark_limit_pct": 80.0, "patch_black_dark_limit_pct": 80.0,
"patch_black_max_p50": 0.2, "patch_black_max_p50": 0.2,
"patch_gray_min_p50": 0.08, "patch_gray_min_p50": 0.08,
@ -780,6 +837,41 @@
"patch_roi_contract": "multi_roi_by_role_v1", "patch_roi_contract": "multi_roi_by_role_v1",
"patch_roi_reduce_method": "median_valid_rois", "patch_roi_reduce_method": "median_valid_rois",
"patch_roi_outlier_reject": true, "patch_roi_outlier_reject": true,
"patch_roi_max_p50_delta": 0.12 "patch_roi_max_p50_delta": 0.12,
"global_saturation_guard_enabled": true,
"global_guard_roi_pct": {
"x0": 0.05,
"y0": 0.05,
"x1": 0.95,
"y1": 0.95
},
"global_guard_sat_threshold": 0.985,
"global_guard_near_sat_threshold": 0.94,
"global_guard_sat_pct_soft": 0.05,
"global_guard_sat_pct_hard": 0.2,
"global_guard_sat_pct_extreme": 0.8,
"global_guard_blob_pct_soft": 0.015,
"global_guard_blob_pct_hard": 0.08,
"global_guard_blob_pct_extreme": 0.25,
"global_guard_min_blob_px": 48,
"global_guard_downsample_max_side": 320,
"global_guard_reduce_factor_soft": 0.82,
"global_guard_reduce_factor_hard": 0.6,
"global_guard_reduce_factor_extreme": 0.35,
"sun_guard_enabled": true,
"sun_guard_p99_threshold": 0.9,
"sun_guard_near_sat_pct_threshold": 0.8,
"sun_guard_freeze_increase_cycles": 2,
"sun_guard_allow_decrease": true,
"guard_force_apply_enabled": true,
"guard_force_apply_soft": true,
"guard_force_apply_hard": true,
"guard_force_apply_extreme": true,
"guard_force_apply_on_patch_saturation": true,
"guard_freeze_cycles_soft": 3,
"guard_freeze_cycles_hard": 5,
"guard_freeze_cycles_extreme": 8,
"guard_reapply_min_exp_on_emergency": true,
"guard_min_exp_margin_us": 80
} }
} }