{ "schema": "multispec_radiometric_config_profiles_v4", "saved_at": "2026-05-12 09:55:04", "active_profile": "three_reference_patches_mode", "global_scene_mode": { "radiometric_config": { "enabled": true, "interval_s": 0.25, "verbose": true, "metering_mode": "global", "spectral_control_mode": "shared", "control_metric": "p50", "target_value": 0.5, "deadband": 0.035, "p95_limit": 0.94, "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, "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.35, "ratio_min": 0.65, "ratio_max": 1.35, "reduce_fast_factor": 0.8, "factor_min": 0.55, "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": 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, "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": { "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.25, "verbose": true, "metering_mode": "reference_patches", "spectral_control_mode": "shared", "control_metric": "p50", "target_value": 0.5, "deadband": 0.035, "p95_limit": 0.94, "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.304688, "y0": 0.8275, "x1": 0.364063, "y1": 0.9875 }, "target_value": 0.08, "weight": 0.7, "roi_pct_by_role": { "rgb": { "x0": 0.304688, "y0": 0.8275, "x1": 0.364063, "y1": 0.9875 }, "re": { "x0": 0.275, "y0": 0.8225, "x1": 0.334375, "y1": 0.995 }, "nir": { "x0": 0.3375, "y0": 0.8325, "x1": 0.4, "y1": 0.9925 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.304688, "y0": 0.8275, "x1": 0.364063, "y1": 0.9875 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:53:26" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.275, "y0": 0.8225, "x1": 0.334375, "y1": 0.995 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:54:15" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.3375, "y0": 0.8325, "x1": 0.4, "y1": 0.9925 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:54:44" } ] } }, { "name": "gray_reference", "type": "gray", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.238281, "y0": 0.82625, "x1": 0.298438, "y1": 0.9875 }, "target_value": 0.35, "target_value_by_role": { "rgb": 0.34, "re": 0.24, "nir": 0.3 }, "weight": 1.0, "roi_pct_by_role": { "rgb": { "x0": 0.238281, "y0": 0.82625, "x1": 0.298438, "y1": 0.9875 }, "re": { "x0": 0.203125, "y0": 0.82625, "x1": 0.266406, "y1": 0.995 }, "nir": { "x0": 0.266406, "y0": 0.83125, "x1": 0.332031, "y1": 0.99625 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.238281, "y0": 0.82625, "x1": 0.298438, "y1": 0.9875 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:53:18" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.203125, "y0": 0.82625, "x1": 0.266406, "y1": 0.995 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:53:55" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.266406, "y0": 0.83125, "x1": 0.332031, "y1": 0.99625 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:54:33" } ] } }, { "name": "white_reference", "type": "white", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.166406, "y0": 0.82625, "x1": 0.228906, "y1": 0.99125 }, "target_value": 0.82, "weight": 0.8, "roi_pct_by_role": { "rgb": { "x0": 0.166406, "y0": 0.82625, "x1": 0.228906, "y1": 0.99125 }, "re": { "x0": 0.132812, "y0": 0.82625, "x1": 0.194531, "y1": 0.995 }, "nir": { "x0": 0.195312, "y0": 0.83625, "x1": 0.260156, "y1": 0.99125 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.166406, "y0": 0.82625, "x1": 0.228906, "y1": 0.99125 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:53:36" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.132812, "y0": 0.82625, "x1": 0.194531, "y1": 0.995 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:54:04" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.195312, "y0": 0.83625, "x1": 0.260156, "y1": 0.99125 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:54:56" } ] } } ], "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.35, "ratio_min": 0.65, "ratio_max": 1.35, "reduce_fast_factor": 0.8, "factor_min": 0.55, "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": 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, "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.94, "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, "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 } }, "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.25, "verbose": true, "metering_mode": "reference_patches", "spectral_control_mode": "shared", "control_metric": "p50", "target_value": 0.5, "deadband": 0.035, "p95_limit": 0.94, "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.304688, "y0": 0.8275, "x1": 0.364063, "y1": 0.9875 }, "target_value": 0.08, "weight": 0.7, "roi_pct_by_role": { "rgb": { "x0": 0.304688, "y0": 0.8275, "x1": 0.364063, "y1": 0.9875 }, "re": { "x0": 0.275, "y0": 0.8225, "x1": 0.334375, "y1": 0.995 }, "nir": { "x0": 0.3375, "y0": 0.8325, "x1": 0.4, "y1": 0.9925 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.304688, "y0": 0.8275, "x1": 0.364063, "y1": 0.9875 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:53:26" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.275, "y0": 0.8225, "x1": 0.334375, "y1": 0.995 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:54:15" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.3375, "y0": 0.8325, "x1": 0.4, "y1": 0.9925 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:54:44" } ] } }, { "name": "gray_reference", "type": "gray", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.238281, "y0": 0.82625, "x1": 0.298438, "y1": 0.9875 }, "target_value": 0.35, "target_value_by_role": { "rgb": 0.34, "re": 0.24, "nir": 0.3 }, "weight": 1.0, "roi_pct_by_role": { "rgb": { "x0": 0.238281, "y0": 0.82625, "x1": 0.298438, "y1": 0.9875 }, "re": { "x0": 0.203125, "y0": 0.82625, "x1": 0.266406, "y1": 0.995 }, "nir": { "x0": 0.266406, "y0": 0.83125, "x1": 0.332031, "y1": 0.99625 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.238281, "y0": 0.82625, "x1": 0.298438, "y1": 0.9875 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:53:18" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.203125, "y0": 0.82625, "x1": 0.266406, "y1": 0.995 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:53:55" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.266406, "y0": 0.83125, "x1": 0.332031, "y1": 0.99625 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:54:33" } ] } }, { "name": "white_reference", "type": "white", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.166406, "y0": 0.82625, "x1": 0.228906, "y1": 0.99125 }, "target_value": 0.82, "weight": 0.8, "roi_pct_by_role": { "rgb": { "x0": 0.166406, "y0": 0.82625, "x1": 0.228906, "y1": 0.99125 }, "re": { "x0": 0.132812, "y0": 0.82625, "x1": 0.194531, "y1": 0.995 }, "nir": { "x0": 0.195312, "y0": 0.83625, "x1": 0.260156, "y1": 0.99125 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.166406, "y0": 0.82625, "x1": 0.228906, "y1": 0.99125 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:53:36" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.132812, "y0": 0.82625, "x1": 0.194531, "y1": 0.995 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:54:04" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.195312, "y0": 0.83625, "x1": 0.260156, "y1": 0.99125 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-12 09:54:56" } ] } } ], "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.35, "ratio_min": 0.65, "ratio_max": 1.35, "reduce_fast_factor": 0.8, "factor_min": 0.55, "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": 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, "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.94, "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, "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 } }