{ "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.365625, "y0": 0.8225, "x1": 0.432812, "y1": 0.995 }, "target_value": 0.08, "weight": 0.7, "roi_pct_by_role": { "rgb": { "x0": 0.365625, "y0": 0.8225, "x1": 0.432812, "y1": 0.995 }, "re": { "x0": 0.395313, "y0": 0.745, "x1": 0.4625, "y1": 0.9225 }, "nir": { "x0": 0.353125, "y0": 0.78, "x1": 0.420312, "y1": 0.9525 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.365625, "y0": 0.8225, "x1": 0.432812, "y1": 0.995 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:19:46" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.395313, "y0": 0.745, "x1": 0.4625, "y1": 0.9225 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:20:14" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.353125, "y0": 0.78, "x1": 0.420312, "y1": 0.9525 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:20:47" } ] } }, { "name": "gray_reference", "type": "gray", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.29375, "y0": 0.825, "x1": 0.3625, "y1": 0.995 }, "target_value": 0.5, "weight": 1.0, "roi_pct_by_role": { "rgb": { "x0": 0.29375, "y0": 0.825, "x1": 0.3625, "y1": 0.995 }, "re": { "x0": 0.325, "y0": 0.75, "x1": 0.389062, "y1": 0.915 }, "nir": { "x0": 0.284375, "y0": 0.79, "x1": 0.35, "y1": 0.9525 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.29375, "y0": 0.825, "x1": 0.3625, "y1": 0.995 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:19:29" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.325, "y0": 0.75, "x1": 0.389062, "y1": 0.915 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:20:22" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.284375, "y0": 0.79, "x1": 0.35, "y1": 0.9525 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:20:53" } ] } }, { "name": "white_reference", "type": "white", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.220312, "y0": 0.8225, "x1": 0.2875, "y1": 0.995 }, "target_value": 0.82, "weight": 0.8, "roi_pct_by_role": { "rgb": { "x0": 0.220312, "y0": 0.8225, "x1": 0.2875, "y1": 0.995 }, "re": { "x0": 0.25, "y0": 0.7525, "x1": 0.315625, "y1": 0.9225 }, "nir": { "x0": 0.214062, "y0": 0.785, "x1": 0.282813, "y1": 0.9525 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.220312, "y0": 0.8225, "x1": 0.2875, "y1": 0.995 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:19:04" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.25, "y0": 0.7525, "x1": 0.315625, "y1": 0.9225 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:20:27" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.214062, "y0": 0.785, "x1": 0.282813, "y1": 0.9525 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:21:02" } ] } } ], "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-08 09:21:09", "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.365625, "y0": 0.8225, "x1": 0.432812, "y1": 0.995 }, "target_value": 0.08, "weight": 0.7, "roi_pct_by_role": { "rgb": { "x0": 0.365625, "y0": 0.8225, "x1": 0.432812, "y1": 0.995 }, "re": { "x0": 0.395313, "y0": 0.745, "x1": 0.4625, "y1": 0.9225 }, "nir": { "x0": 0.353125, "y0": 0.78, "x1": 0.420312, "y1": 0.9525 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.365625, "y0": 0.8225, "x1": 0.432812, "y1": 0.995 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:19:46" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.395313, "y0": 0.745, "x1": 0.4625, "y1": 0.9225 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:20:14" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.353125, "y0": 0.78, "x1": 0.420312, "y1": 0.9525 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:20:47" } ] } }, { "name": "gray_reference", "type": "gray", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.29375, "y0": 0.825, "x1": 0.3625, "y1": 0.995 }, "target_value": 0.5, "weight": 1.0, "roi_pct_by_role": { "rgb": { "x0": 0.29375, "y0": 0.825, "x1": 0.3625, "y1": 0.995 }, "re": { "x0": 0.325, "y0": 0.75, "x1": 0.389062, "y1": 0.915 }, "nir": { "x0": 0.284375, "y0": 0.79, "x1": 0.35, "y1": 0.9525 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.29375, "y0": 0.825, "x1": 0.3625, "y1": 0.995 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:19:29" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.325, "y0": 0.75, "x1": 0.389062, "y1": 0.915 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:20:22" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.284375, "y0": 0.79, "x1": 0.35, "y1": 0.9525 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:20:53" } ] } }, { "name": "white_reference", "type": "white", "roles": [ "rgb", "re", "nir" ], "roi_pct": { "x0": 0.220312, "y0": 0.8225, "x1": 0.2875, "y1": 0.995 }, "target_value": 0.82, "weight": 0.8, "roi_pct_by_role": { "rgb": { "x0": 0.220312, "y0": 0.8225, "x1": 0.2875, "y1": 0.995 }, "re": { "x0": 0.25, "y0": 0.7525, "x1": 0.315625, "y1": 0.9225 }, "nir": { "x0": 0.214062, "y0": 0.785, "x1": 0.282813, "y1": 0.9525 } }, "roi_list_by_role": { "rgb": [ { "name": "rgb_legacy_01", "enabled": true, "roi_pct": { "x0": 0.220312, "y0": 0.8225, "x1": 0.2875, "y1": 0.995 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:19:04" } ], "re": [ { "name": "re_legacy_01", "enabled": true, "roi_pct": { "x0": 0.25, "y0": 0.7525, "x1": 0.315625, "y1": 0.9225 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:20:27" } ], "nir": [ { "name": "nir_legacy_01", "enabled": true, "roi_pct": { "x0": 0.214062, "y0": 0.785, "x1": 0.282813, "y1": 0.9525 }, "created_at": "2026-05-07 14:36:25", "updated_at": "2026-05-08 09:21:02" } ] } } ], "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 } }