{ "global_scene_mode": { "radiometric_config": { "enabled": true, "interval_s": 0.5, "verbose": true, "metering_mode": "global", "spectral_control_mode": "shared", "global_roi_pct": { "x0": 0.082812, "y0": 0.08, "x1": 0.903125, "y1": 0.905 }, "control_metric": "p50", "target_value": 0.4, "deadband": 0.04, "p95_limit": 0.94, "saturation_limit_pct": 1.0, "dark_limit_pct": 35.0, "alpha": 0.18, "exp_step_gain": 0.55, "prefer_exposure": true, "exp_min_us": 100, "exp_max_us": 80000, "gain_min": 1.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, "gain_apply_threshold": 0.05, "apply_same_spectral_to_both": true, "spectral_roles": [ "re", "nir" ], "control_strategy": "ratio", "ratio_alpha": 0.55, "ratio_min": 0.55, "ratio_max": 1.85, "reduce_fast_factor": 0.75, "factor_min": 0.72, "factor_max": 1.28, "gain_return_enabled": true, "gain_reduce_on_saturation": true, "gain_increase_required_cycles": 5, "gain_decrease_required_cycles": 2, "gain_step_up": 0.2, "gain_step_down": 0.5, "gain_hard_reset_on_saturation": false, "exp_high_ratio_for_gain": 0.95, "exp_low_ratio_for_gain_return": 0.75, "ready_required_cycles": 3, "global_roi_pct_by_role": { "rgb": { "x0": 0.08, "y0": 0.08, "x1": 0.92, "y1": 0.92 }, "re": { "x0": 0.08, "y0": 0.08, "x1": 0.92, "y1": 0.92 }, "nir": { "x0": 0.08, "y0": 0.08, "x1": 0.92, "y1": 0.92 } } } }, "three_reference_patches_mode": { "radiometric_config": { "enabled": true, "interval_s": 0.5, "verbose": true, "metering_mode": "reference_patches", "spectral_control_mode": "shared", "control_metric": "p50", "target_value": 0.5, "deadband": 0.035, "p95_limit": 0.92, "saturation_limit_pct": 0.5, "alpha": 0.18, "exp_step_gain": 0.55, "prefer_exposure": true, "exp_min_us": 100, "exp_max_us": 80000, "gain_min": 1.0, "gain_max": 4.0, "reference_patches": [ { "name": "black_reference", "type": "black", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.376563, "y0": 0.81, "x1": 0.440625, "y1": 0.985 }, "target_value": 0.08, "weight": 0.7, "roi_pct_by_role": { "rgb": { "x0": 0.376563, "y0": 0.81, "x1": 0.440625, "y1": 0.985 }, "re": { "x0": 0.403125, "y0": 0.745, "x1": 0.459375, "y1": 0.92 }, "nir": { "x0": 0.364063, "y0": 0.775, "x1": 0.428125, "y1": 0.9425 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.376563, "y0": 0.81, "x1": 0.440625, "y1": 0.985 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:39:47" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.403125, "y0": 0.745, "x1": 0.459375, "y1": 0.92 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:40:05" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.364063, "y0": 0.775, "x1": 0.428125, "y1": 0.9425 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:40:37" } ] } }, { "name": "gray_reference", "type": "gray", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.30625, "y0": 0.8225, "x1": 0.370312, "y1": 0.985 }, "target_value": 0.5, "weight": 1.0, "roi_pct_by_role": { "rgb": { "x0": 0.30625, "y0": 0.8225, "x1": 0.370312, "y1": 0.985 }, "re": { "x0": 0.332813, "y0": 0.745, "x1": 0.395313, "y1": 0.915 }, "nir": { "x0": 0.29375, "y0": 0.775, "x1": 0.35625, "y1": 0.94 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.30625, "y0": 0.8225, "x1": 0.370312, "y1": 0.985 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:39:15" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.332813, "y0": 0.745, "x1": 0.395313, "y1": 0.915 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:40:15" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.29375, "y0": 0.775, "x1": 0.35625, "y1": 0.94 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:40:46" } ] } }, { "name": "white_reference", "type": "white", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.232813, "y0": 0.8225, "x1": 0.3, "y1": 0.99 }, "target_value": 0.82, "weight": 0.8, "roi_pct_by_role": { "rgb": { "x0": 0.232813, "y0": 0.8225, "x1": 0.3, "y1": 0.99 }, "re": { "x0": 0.2625, "y0": 0.7525, "x1": 0.321875, "y1": 0.9225 }, "nir": { "x0": 0.220312, "y0": 0.775, "x1": 0.284375, "y1": 0.9425 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.232813, "y0": 0.8225, "x1": 0.3, "y1": 0.99 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:39:38" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.2625, "y0": 0.7525, "x1": 0.321875, "y1": 0.9225 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:40:24" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.220312, "y0": 0.775, "x1": 0.284375, "y1": 0.9425 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:40:55" } ] } } ], "exp_apply_threshold_us": 80, "gain_apply_threshold": 0.05, "apply_same_spectral_to_both": true, "spectral_roles": [ "re", "nir" ], "dark_limit_pct": 35.0, "control_strategy": "ratio", "ratio_alpha": 0.55, "ratio_min": 0.55, "ratio_max": 1.85, "reduce_fast_factor": 0.75, "factor_min": 0.72, "factor_max": 1.28, "gain_return_enabled": true, "gain_reduce_on_saturation": true, "gain_increase_required_cycles": 5, "gain_decrease_required_cycles": 2, "gain_step_up": 0.2, "gain_step_down": 0.5, "gain_hard_reset_on_saturation": false, "exp_high_ratio_for_gain": 0.95, "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": 80000, "gain_min": 1.0, "gain_max": 2.0 }, "nir": { "exp_min_us": 100, "exp_max_us": 80000, "gain_min": 1.0, "gain_max": 2.0 } }, "ready_required_cycles": 3, "patch_control_mode": "gray_primary", "patch_require_order": true, "patch_min_separation": 0.08, "patch_white_sat_limit_pct": 0.5, "patch_white_p95_limit": 0.9, "patch_black_dark_limit_pct": 80.0, "patch_black_max_p50": 0.2, "patch_gray_min_p50": 0.08, "patch_gray_max_p50": 0.85, "patch_roi_contract": "multi_roi_by_role_v1", "patch_roi_reduce_method": "median_valid_rois", "patch_roi_outlier_reject": true, "patch_roi_max_p50_delta": 0.12 } }, "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-07 14:40:58", "active_profile": "three_reference_patches_mode", "patch_normalization": { "enabled": true, "apply_when_metering_mode": "reference_patches", "apply_stage": "after_fusion", "method": "gray_scale_with_white_guard", "space": "multispec_tensor", "targets": { "black": 0.06, "gray": 0.4, "white": 0.78 }, "white_guard_max": 0.92, "scale_min": 0.35, "scale_max": 2.5, "clip_output": true, "require_valid_gray": true, "use_black_for_offset": false, "save_patch_stats": true }, "radiometric_config": { "enabled": true, "interval_s": 0.5, "verbose": true, "metering_mode": "reference_patches", "spectral_control_mode": "shared", "control_metric": "p50", "target_value": 0.5, "deadband": 0.035, "p95_limit": 0.92, "saturation_limit_pct": 0.5, "alpha": 0.18, "exp_step_gain": 0.55, "prefer_exposure": true, "exp_min_us": 100, "exp_max_us": 80000, "gain_min": 1.0, "gain_max": 4.0, "reference_patches": [ { "name": "black_reference", "type": "black", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.376563, "y0": 0.81, "x1": 0.440625, "y1": 0.985 }, "target_value": 0.08, "weight": 0.7, "roi_pct_by_role": { "rgb": { "x0": 0.376563, "y0": 0.81, "x1": 0.440625, "y1": 0.985 }, "re": { "x0": 0.403125, "y0": 0.745, "x1": 0.459375, "y1": 0.92 }, "nir": { "x0": 0.364063, "y0": 0.775, "x1": 0.428125, "y1": 0.9425 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.376563, "y0": 0.81, "x1": 0.440625, "y1": 0.985 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:39:47" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.403125, "y0": 0.745, "x1": 0.459375, "y1": 0.92 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:40:05" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.364063, "y0": 0.775, "x1": 0.428125, "y1": 0.9425 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:40:37" } ] } }, { "name": "gray_reference", "type": "gray", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.30625, "y0": 0.8225, "x1": 0.370312, "y1": 0.985 }, "target_value": 0.5, "weight": 1.0, "roi_pct_by_role": { "rgb": { "x0": 0.30625, "y0": 0.8225, "x1": 0.370312, "y1": 0.985 }, "re": { "x0": 0.332813, "y0": 0.745, "x1": 0.395313, "y1": 0.915 }, "nir": { "x0": 0.29375, "y0": 0.775, "x1": 0.35625, "y1": 0.94 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.30625, "y0": 0.8225, "x1": 0.370312, "y1": 0.985 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:39:15" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.332813, "y0": 0.745, "x1": 0.395313, "y1": 0.915 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:40:15" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.29375, "y0": 0.775, "x1": 0.35625, "y1": 0.94 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:40:46" } ] } }, { "name": "white_reference", "type": "white", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.232813, "y0": 0.8225, "x1": 0.3, "y1": 0.99 }, "target_value": 0.82, "weight": 0.8, "roi_pct_by_role": { "rgb": { "x0": 0.232813, "y0": 0.8225, "x1": 0.3, "y1": 0.99 }, "re": { "x0": 0.2625, "y0": 0.7525, "x1": 0.321875, "y1": 0.9225 }, "nir": { "x0": 0.220312, "y0": 0.775, "x1": 0.284375, "y1": 0.9425 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.232813, "y0": 0.8225, "x1": 0.3, "y1": 0.99 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:39:38" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.2625, "y0": 0.7525, "x1": 0.321875, "y1": 0.9225 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:40:24" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.220312, "y0": 0.775, "x1": 0.284375, "y1": 0.9425 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-07 14:40:55" } ] } } ], "exp_apply_threshold_us": 80, "gain_apply_threshold": 0.05, "apply_same_spectral_to_both": true, "spectral_roles": [ "re", "nir" ], "dark_limit_pct": 35.0, "control_strategy": "ratio", "ratio_alpha": 0.55, "ratio_min": 0.55, "ratio_max": 1.85, "reduce_fast_factor": 0.75, "factor_min": 0.72, "factor_max": 1.28, "gain_return_enabled": true, "gain_reduce_on_saturation": true, "gain_increase_required_cycles": 5, "gain_decrease_required_cycles": 2, "gain_step_up": 0.2, "gain_step_down": 0.5, "gain_hard_reset_on_saturation": false, "exp_high_ratio_for_gain": 0.95, "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": 80000, "gain_min": 1.0, "gain_max": 2.0 }, "nir": { "exp_min_us": 100, "exp_max_us": 80000, "gain_min": 1.0, "gain_max": 2.0 } }, "ready_required_cycles": 3, "patch_control_mode": "gray_primary", "patch_require_order": true, "patch_min_separation": 0.08, "patch_white_sat_limit_pct": 0.5, "patch_white_p95_limit": 0.9, "patch_black_dark_limit_pct": 80.0, "patch_black_max_p50": 0.2, "patch_gray_min_p50": 0.08, "patch_gray_max_p50": 0.85, "patch_roi_contract": "multi_roi_by_role_v1", "patch_roi_reduce_method": "median_valid_rois", "patch_roi_outlier_reject": true, "patch_roi_max_p50_delta": 0.12 } }