Implémentation du Modèle d'Apparence des Couleurs iCAM06 pour le Tone Mapping HDR

Le modèle iCAM06 (Image Color Appearance Model) représente une avancée majeure dans le rendu des images à haute dynamique (HDR). Fondé sur les mécanismes de la vision humaine (HVS), cet algorithme permet de compresser la plage dynamique tout en préservant le contrsate local et la saturation des couleurs.

Architecture théorique de l'algorithme

Le flux de traitement de l'iCAM06 repose sur une décomposition multi-échelle et une adaptation chromatique rigoureuse :

  • Décomposition de l'image : L'utilisation d'un filtre bilatéral permet de séparer l'image en une couche de base (basses fréquences, contrastes globaux) et une couche de détails (hautes fréquences). Cette méthode prévient l'apparition de halos autour des zones à fort contraste.
  • Adaptation chromatique : Le modèle utilise la matrice de transformation CAT02 pour simuler la réponse des cônes de la rétine face aux variations d'illuminant.
  • Compression de la dynamique : L'iCAM06 intègre les effets de Stevens et de Hunter. L'effet Stevens ajuste le contraste en fonction de la luminance ambiante, tandis que l'effet Hunter gère l'augmentation de la saturation perçue avec la luminance.

Étapes d'implémentation logicielle

1. Conversion et extraction de la luminance

La première étape consiste à passer de l'espace RGB linéaire vers l'espace XYZ pour isoler la composante de luminance.

% Conversion de l'image HDR source
data_xyz = rgb2xyz(hdr_input);

% Calcul de la luminance relative (Y)
luminance_map = 0.2126 * data_xyz(:,:,1) + 0.7152 * data_xyz(:,:,2) + 0.0722 * data_xyz(:,:,3);

2. Filtrgae bilatéral pour la séparation des couches

On décompose la luminance pour traiter séparément les structures globales et les textures fines.

% Paramètres du filtre (ajustables selon la résolution)
radius_spatial = 10;
delta_range = 0.15;

% Obtention de la couche de base par filtrage bilatéral
layer_base = imbilatfilt(luminance_map, delta_range, radius_spatial);

% Extraction de la couche de détails (log-domain recommandé)
layer_detail = luminance_map ./ (layer_base + 1e-6);

3. Adaptation au point blanc local

Contrairement aux modèles globaux, iCAM06 calcule un point blanc adaptatif pour simuler la vision humaine dans des scènes à éclairages mixtes.

% Estimation du point blanc via une fenêtre glissante
win_size = 21;
local_white = imaggregate(luminance_map, win_size, @max);
adapted_white = imgaussfilt(local_white, 5);

4. Compression et effets de vision

L'application de la fonction de réponse de type sigmoïde permet de compresser la dynamique de la couche de base.

% Application de la fonction de compression sigmoïdale
gamma_val = 0.8;
base_compressed = (layer_base.^gamma_val) ./ (layer_base.^gamma_val + adapted_white.^gamma_val);

% Réincorporation des détails avec un gain de contraste
gain_detail = 1.1;
y_processed = base_compressed .* (layer_detail.^gain_detail);

Optimisations et performances

Le calcul du filtre bilatéral étant coûteux en ressources CPU, une implémentation sur processeur graphique (GPU) est souvent nécessaire pour le traitement en temps réel.

// Exemple simplifié de noyau CUDA pour le filtrage
__global__ void compute_bilateral(float* input, float* output, int w, int h, float s_s, float s_r) {
    int i = blockIdx.x * blockDim.x + threadIdx.x;
    int j = blockIdx.y * blockDim.y + threadIdx.y;
    
    if (i < w && j < h) {
        float sum_w = 0.0f;
        float res = 0.0f;
        // Parcours du voisinage et calcul des poids gaussiens
        // ... (logique de sommation pondérée)
        output[j * w + i] = res / sum_w;
    }
}

Pour améliorer le rendu, il est possible d'ajuster dynamiquement le paramètre de compression en analysant l'histogramme de l'image. Une image très sombre bénéficiera d'une courbe de réponse plus agressive dans les zones de basses lumières.

Domaines d'application

Le modèle iCAM06 est particulièrement efficace dans les contextes suivants :

  • Imagerie médicale : Amélioration du rendu des radiographies et scanners pour distinguer les tissus mous sans saturer les zones denses.
  • Visualisation scientifique : Rendu de simulations physiques où les écarts d'intensité lumineuse dépassent les capacités d'affichage standard.
  • Restauration numérique : Correction colorimétrique de films anciens pour retrouver la perception visuelle originale malgré la dégradation des pigments.

Étiquettes: HDR iCAM06 Tone Mapping Color Appearance Model Image Processing

Publié le 6 septembre à 09h49