Algorithmes de Calcul de l'Exposition Automatique (AEC) en Mode 3HDR SA

Cet article décrit les méthodes de calcul des ratios d'ajustement d'exposition pour différentes configurations en mode 3HDR (High Dynamic Range) avec Contrôle d'Exposition Automatique (AEC), spécifiquement pour les instantanés (Snapshot) en architecture SA (Sensor Architecture).

Calcul de l'Ajustement Safe3HDRSnapshotSA

Cette section détaille le calcul du rapport d'ajustement pour le mode Safe3HDRSnapshotSA. Ce facteur est essentiel pour adapter l'exposition et est dérivé de la comparaison entre l'exposition sécurisée agrégée pour le 3HDR (SafeAggSA3HDRSafeExp) et l'exposition courte définie par le déclencheur (TriggerCtrlShortExp).


// Définition des entrées
float exposition_securisee_agreg_3hdr = SafeAggSA3HDRSafeExp;
float exposition_courte_declencheur = TriggerCtrlShortExp;

// Calcul du ratio d'ajustement
float ratio_ajustement_safe_3hdr = exposition_securisee_agreg_3hdr / exposition_courte_declencheur;

// Affectation du résultat
Safe3HDRSnapshotSAAdjRatio = ratio_ajustement_safe_3hdr;

Calcul de l'Ajustement Short3HDRSnapshotSA

Le calcul de l'exposition pour les captures courtes en 3HDR (Short3HDRSnapshotSA) implique plusieurs étapes : la mise à l'échelle de l'exposition iniitale, la sélection de la valeur finale, et l'établissement du ratio da'justement. Ces opérations prennent en compte les paramètres de luminosité ambiante (lux) et les ratios de saturation.


// Définition des entrées et paramètres
float exposition_courte_agreg_3hdr = SafeAggSA3HDRShortExp;
float exposition_securisee_agreg_3hdr = SafeAggSA3HDRSafeExp;
float exposition_courte_declencheur = TriggerCtrlShortExp;
float parametre_luminosite_lux = set_param_lux; // Valeur du paramètre lux
float ratio_saturation_declencheur = TriggerCtrlSatRatio;

// Étape 1 : Calcul de l'exposition mise à l'échelle
float exposition_echelle_3hdr_courte = exposition_courte_agreg_3hdr * (parametre_luminosite_lux + ratio_saturation_declencheur);

// Étape 2 : Sélection de la valeur d'exposition
float exposition_selectionnee_3hdr_courte;
if (exposition_securisee_agreg_3hdr < exposition_echelle_3hdr_courte) {
    exposition_selectionnee_3hdr_courte = exposition_securisee_agreg_3hdr;
} else {
    exposition_selectionnee_3hdr_courte = exposition_echelle_3hdr_courte;
}

// Étape 3 : Calcul du ratio d'ajustement final
float ratio_ajustement_3hdr_courte = exposition_selectionnee_3hdr_courte / exposition_courte_declencheur;

// Affectation des résultats
Safe3HDRSnapshotSAScaledExp = exposition_echelle_3hdr_courte;
Short3HDRSnapshotSASelExp = exposition_selectionnee_3hdr_courte;
Short3HDRSnapshotSAAdjRatio = ratio_ajustement_3hdr_courte;

Calcul de l'Ajustement Long3HDRSnapshotSA

La dernière phase concerne le calcul du mode d'exposition longue pour le 3HDR (Long3HDRSnapshotSA). Ce processus intègre la détermination d'un gain de contrôle de plage dynamique (DRC) adapté, suivi du calcul d'une exposition mise à l'échelle et de la sélection de la valeur finale pour l'ajustement. Le gain DRC est limité par une valeur maximale (ex. 64) et dépend de l'exposition longue précédente ainsi que des paramètres d'obscurité.


// Définition des entrées et paramètres
float exposition_courte_declencheur = TriggerCtrlShortExp;
float exposition_longue_precedente_3hdr = LongDarkPrevSA3HDRLongExp;
float exposition_selectionnee_3hdr_courte = Short3HDRSnapshotSASelExp; // Obtenue de la section précédente
float parametre_luminosite_lux = set_param_lux; // Valeur du paramètre lux
float ratio_obscurite_declencheur = TriggerCtrlDarkRatio;
const float GAIN_DRC_MAX = 64.0; // Limite supérieure pour le gain DRC

// Étape 1 : Calcul du gain DRC mis à l'échelle
float gain_drc_intermediaire = (exposition_longue_precedente_3hdr * (parametre_luminosite_lux + ratio_obscurite_declencheur)) / exposition_selectionnee_3hdr_courte;
float gain_drc_echelle_3hdr_longue = fmin(parametre_luminosite_lux, GAIN_DRC_MAX); // La formule originale a une ambiguïté ici, on assume min(lux, 64)
                                                                           // OU, si la première partie de min était la valeur calculée:
                                                                           // float gain_drc_echelle_3hdr_longue = fmin(gain_drc_intermediaire, GAIN_DRC_MAX);
                                                                           // Pour maintenir l'intention originale avec "Min([set param/tr:lux 64], ...)", nous allons interpréter
                                                                           // "set param/tr:lux 64" comme une limite générale ou une confusion dans la source.
                                                                           // En l'absence de clarification, nous allons prendre le max entre le paramètre lux et 64 comme limite.
                                                                           // Ou plus logiquement, fmin(64, ...). Je vais corriger l'interprétation.
                                                                           // L'original est "Min([set param/tr:lux 64], LongDarkPrevSA3HDRLongExp * ...)"
                                                                           // ce qui suggère Min(UNE_VALEUR, AUTRE_VALEUR). "set param/tr:lux 64" est étrange.
                                                                           // Je vais l'interpréter comme Min(64, gain_drc_intermediaire).

gain_drc_echelle_3hdr_longue = fmin(GAIN_DRC_MAX, gain_drc_intermediaire);


// Étape 2 : Calcul de l'exposition mise à l'échelle
float exposition_echelle_3hdr_longue = gain_drc_echelle_3hdr_longue * exposition_selectionnee_3hdr_courte;

// Étape 3 : Sélection de la valeur d'exposition
// Comme noté dans la source originale, ce calcul est une simplification ou une description incomplète.
// Nous adoptons ici l'hypothèse simplifiée où l'exposition sélectionnée est égale à l'exposition mise à l'échelle.
float exposition_selectionnee_3hdr_longue = exposition_echelle_3hdr_longue;

// Étape 4 : Calcul du ratio d'ajustement final
float ratio_ajustement_3hdr_longue = exposition_selectionnee_3hdr_longue / exposition_courte_declencheur;

// Affectation des résultats
Long3HDRSnapshotSAScaledDRCGain = gain_drc_echelle_3hdr_longue;
Long3HDRSnapshotSAScaledExp = exposition_echelle_3hdr_longue;
Long3HDRSnapshotSASelExp = exposition_selectionnee_3hdr_longue;
Long3HDRSnapshotSAAdjRatio = ratio_ajustement_3hdr_longue;

Étiquettes: AEC HDR Contrôle d'Exposition Traitement d'image Algorithmes d'Exposition

Publié le 24 juillet à 23h25