Aide IRIS
L'imagerie Haute Dynamique
Application au traitement d'images d'éclipse solaire


MERGE_HDR [FICHIER DE DESCRIPTION] [SEUIL]

La commande MERGE_HDR est une méthode pour retrouver la haute dynamique des images provenant des caméras numériques (High Dynamic Range images). L'algorithme utilise des images multiples d'une même scène, réalisées avec des temps de poses différents, et que l'on fusionnes en une seule image de très grande dynamique.

Voici un exemple. La figure ci-après montre neufs clichés acquis avec un appareil reflex numérique Canon 5D avec des temps de pose allant de 1/500 s à 1/2 s. Les images sont nommées T1, T2, ... T9. De toute évidence, une seule image acquise de cette scène ne peut en restituer tout les nuances de brillance (présence d'un fort contre-jour). Simplement, chaque pose révèle certains éléments non présents dans les autres. C'est la clefs qui permet de construite une image dite HDR.


T1 : 1/500 s


T2 : 1/250 s


T3 : 1/125 s


T4 : 1/64 s


T5 : 1/32 s


T6 : 1/16 s


T7 : 1./8 s


T8 : 1/4 s


T9 : 1/2 s

Pour la prise de vue un bon trépied est bien utile (ou une monture équatoriale pour l'imagerie du ciel profond). Il est bien sur toujours possible d'effectuer une registration a posteriori avant de lancer le calcul de fusion des images élémentaires avec MERGE_HDR. Les images traitées sont extraites de fichiers RAW. Ceci est recommandé pour un travail de précision car le RAW préserve la linéarité de réponse du capteur de la caméra, ce qui n'est pas nécessairement le cas avec des fichiers JPEG). La dynamique des images originales traitées est de 12 bits (les intensités sont codées de 0 à 4095).

La première opération est d'écrire un fichier texte contenant des informations sur les images à traiter. Ce fichier contient deux colonnes :

Colonne 1 : les noms des images de la séquence à traiter.
Colonne 2 : le temps de pose relatif entre images (le temps de pose absolu n'est pas obligatoire).

C'est le fichier de description de la séquence.

Pour la présente démonstration, éditer le fichier suivant et le sauvegarder sous le nom DESC.LST (c'est un exemple, seule l'extension .LST est obligatoire) dans le répertoire de travail :

t1 0.00400
t2 0.00800
t3 0.01600
t4 0.03125
t5 0.06250
t6 0.12500
t7 0.25000
t8 0.50000
t9 1.00000

Un fichier tout à fait équivalent serait :

t1 0.00800
t2 0.01600
t3 0.03200
t4 0.05250
t5 0.12500
t6 0.25000
t7 0.50000
t8 1.00000
t9 2.00000

Le premier paramètre de la commande MERGE_HDR est le nom du fichier de description. Le second paramètre est un seuil d'intensité relié au niveau maximum dans les images d'entrée. Une valeur de départ peut être 4095 dans l'exemple présent, mais il ne faut surtout pas hésiter à modifier ce paramètre si nécessaire pour restituer correctement les fortes intensités de l'image. Il faut faire des essais successifs. Pas d'affolement, si vous choisissez par exemple un seuil de 2000, les valeurs comprises entre 2000 et 4095 sont restituées (ce paramètre est un ajustement de l'algotithme).

>MAKE_HDR DESC 2000

A la fin du traitement, Iris affiche l'image HDR. Iris utilise une arithmétique interne sur 32 bits pour les calculs, mais dans la présente version, l'image finale est ajustée dans une dynamique de 15 bits seulement (les niveaux sont compris entre 0 to 32 767). Donc, la dynamique HDR de Iris V5.31 est de 32767:1 (!). Malgré cette limitation, l'outil HDR de peut rendre des services, comme nous allons le voir. Voici la nouvelle image 15 bits de notre scène, calculée à partir des 9 images élémentaires :


L'image HDR 15 bits.

Modifier les seuils de visualisation (jusqu'au niveau  32 767), et contrôler la haute dynamique de l'image (par rapport aux images individuelles).

Il est recommandé de capturer au minimum trois clichés pour construire une image HDR, mais 5 à 7 images est souvent préférable. MERGE_HDR peut trairer des images noir et blanc ou couleurs (3 x 16 bits).

Commandes REDUCE_HDR1 & REDUCE_HDR2

Syntaxe

REDUCE_HDR1 [GAMMA]

REDUCE_HDR2 [GAMMA] [FINESSE]

Sans modification de la distribution des intensités (tone tuning en anglais) il n'est pas possible d'afficher à l'écran l'énorme contenu d'une image HDR. Vous pouvez bien sur ajuster les seuils pour voir telle ou telle autre partie de la dynamique, mais ce n'est pas satisfaisant pour voir simultanément tout les nuances d'intensité. Les fonctions d'ajustement du contraste sont alors bien venues

Vous pouvez aussi utiliser une commande de la famille REDUCE_HDR. Deux méthodes sont proposées.

La première méthode (commande REDUCE_HDR1) est basée sur une compression adaptative logarithmique des luminances pour simuler la réponse humaine à la lumière. Le paramètre GAMMA agit sur le gamma de l'échelle de brillance affichée pour compenser entre-autre la non linéarité des écrans. Les valeurs communes de GAMMA vont de 1.5 à 4 (faire des essais).

La seconde méthode (commande REDUCE_HDR2) utilise une méthode de gradient. Le paramètre supplémentaire agit sur la finesse des détails restitués. Une valeur typique est finesse=1.5.

Exemple :

>REDUCE_HDR1 4

Vous pouvez ensuite appliquer un masque flou ou un filtrage de type ondelette pour accroître le finesse de l'image (voir le menu Traitement) :

>REDUCE_HDR2 1.8 1.5

Si nécessaire, il est facile de dé-saturer l'image en utilisant la boite de dialogue Saturation... de menu Visualisation :

ou utiliser la commande en ligne WHITE pour ajuster la balance du blanc (sélectionner au préalable du zone réputée blanche avec le pointeur de souris) :

DESC_HDR [NOM DES IMAGES] [FICHIER DE DESCRIPTION] [NOMBRE]

La commande DESC_HDR vous aide à définir le fichier de description utilisé par la commande MERGE_HDR si le temps de pose relatif des images d'une séquence est inconnu ou imprécis. DESC_HDR évalue l'intensité relative dans une zone de l'image. Cette zone est choisie par l'utilisateur avec la souris. Le rapport des intensités trouvé est assimilé au rapport du temps de pose, ce qui permet de produire automatiquement le fichier de description.

[NOM DES IMAGES] est le nom générique des images de la séquence à traiter.
[FICHIER DE DESCRIPTION] est le nom du fichier de description.
[NOMBRE] est le nombre d'images dans la séquence.

Avant de lancer la commande, vous devez définir la zone de calcul à la souris, en choisissant une partie non saturée de l'image, mais ayant reçue un signal significatif dans toutes les images.

Exemple. Voici une séquence de 7 images avec des expositions progressives de l'éclipse totale de soleil du 29 mars 2006 (images Valérie Desnoux - lunette Halley 70/400 mm et Nikon D70) :

En premier, les fichiers Nikon RAW sont convertis en fichiers PIC. En second, le signal d'offset est retiré des images. Ce dernier point est important pour définir le point zéro de l'échelle des intensités.  Si le nom de l'image d'offset de référence est OFFSET, vous pouvez par exemple faire :

>SUB2 ECLIPSE OFFSET ECLIPSE 0 7

avec ECLIPSE le nom générique des images à traiter.

Charger l'image la plus posée de la séquence et sélectionner une zone non saturée :

Lancer alors la commande :

>DESC_HDR ECLIPSE DESC 7

Iris produit automatiquement le fichier DESC.LST dans le répertoire de travail avec le contenu :

eclipse1 0.016032
eclipse2 0.032064
eclipse3 0.066132
eclipse4 0.128257
eclipse5 0.254509
eclipse6 0.517034
eclipse7 1.000000

Maintenant, vous pouvez fusionner les 7 images dans une image unique HDR :

>MERGE_HDR DESC 100

Le résultat est une image 15 bits de la couronne :

Pour compresser la dynamique à la visualisation, faire par exemple :

>REDUCE_HDR1 4

Noter la vision simultanée des protubérances et de la couronne lointaine.


FILTRAGE RADIAL

RADIAL_BLUR [XC] [YC] [FORCE DU FILTER] [METHODE]

[XC] [YC] sont les coordonnée autour duquel le flou est réalisé.

[FORCE DU FILTRE] est la degré de filtrage appliqué. Les valeurs typiques sont comprises entre 0.5 et 20.

[METHODE] si méthode = 0, on réalise un flou de rotation, si methode = 1, on réalise un flou suivant des rayons.

Exemple :


Juste après l'éclipse totale du 29 mars 2006 (Turquie).

>RADIAL_BLUR 906 512 18 0

>RADIAL_BLUR 906 512 5 1


FILTRE MASQUE FLOU ANGULAIRE - méthode automatique

ANG_FILTER [XC] [YC] [FORCE DU FILTRE]

[XC] [YC] sont les coordonnées du centre du flou en pixels.

[FORCE DU FILTRE] degré de filtrage. Typiquement les valeurs de ce paramètre sont prisent entre 0,5 et 5.

Une application typique est le traitement des images cométaires - voir ici. On peut aussi se servir de cette commande pour accroître le contraste des structures de la couronne solaire .


Eclipse totale du 29 mars 2006. Canon EOS 5D + Canon lens 400 mm f/5.6
Pour des détails sur cette observation, cliquer ici.

Noter les coordonnées du centre du disque solaire  (des valeurs fractionnaires sont possibles). Ici XC=2264 and YC=1421. Choisir une force de filtre de 2,5. Puis

>ANG_FILTER 2264 1421 2.5

Le résultat est équivalent à appliquer un masque flou par zone radiale. En premier Iris, produit un filtrage angulaire du type gaussien. En deuxième, Iris  soustrait à l'image de départ l'image du flou. Le résultat est affichée (modifier les seuils, ici on a fait VISU 100 -100 ) :

Ne pas hésiter à essayer plusieurs valeurs de la force du filtre.

Une  application consiste à mélanger l'image de départ et l'image du masque flou angulaire. Pour ceci, vous pouvez par exemple employer la commande Mélanger... du menu Visualisation (nouveauté de la version 5.31, voir plus loin) :

Dans cet exemple C1 est l'image de départ et C2 est le résultat du masque flou. Ici, Iris calcule l'image :

(1-0.9) x C1 + 0.9 x C2

FILTRE MASQUE FLOU ANGULAIRE - Méthode manuelle

Voici l'image à traiter :


Eclipse totale du 29 mars 2006 total solar eclipse. Canon EOS 5D + Canon lens 400 mm f/5.6 

Mesurer la position du centre du disque solaire (ici XC=2264, YC=1421) et le diamètre apparent du disque solaire en pixels (ici R=2065). Noter aussi la taille de l'image (X=4386, Y =2960)  et calculer la taille de la mi-diagonale de l'image : SQR(X2+Y2))/2=SQR(43862+29602)/2=2646. Cette valeur est recommandée comme troisième paramètre des commandes REC2POL et POL2REC (mais des valeurs plus petites sont acceptées, cela peut accélérer le temps calcul). Le premier et le second paramètres sont les coordonnées du centre (XC, YC). Le dernier paramètre est l'échelle minimum. Une valeur de 0,1 degré est acceptable car elle préserve un maximum de détails au cours des diverses transformations (minimisation des pertes de détails par interpolation).

Evaluer la  transformation polaire :

>REC2POL 2264 1421 2646 0.1
>SAVE TMP1

 

Rendre flou l'image suivant l'axe vertical :

>L_BLUR 6   (utilisation d'un fonction porte rectangulaire)
>SAVE TMP2

ou

>L_GAUSS 1.5 (utilisation d'une fonction gaussienne)
>SAVE TMP2

Calculer un  masque flou vertical :

>LOAD TMP1
>SUB TMP2 0
>VISU 100 -100
>SAVE TMP3

 

Calculer la transformée polaire inverse :

>POL2REC 2264 1421 2646 0.1

et restaurer le format initial :

>PADDING 4386 2960

Mélanger avec l'image de départ (commande Mélange... du menu Visualisation par exemple) :


RADIAL_WEIGHT  [X] [Y] [RAYON] [COEFFICIENT] [PUISSANCE]

Transforme l'intensité I(r) d'un pixel en utilisant une fonction de la forme (fonction de Lorentz) :

avec r la distance relativement à un centre de coordonnées (xc, yc), r0 est un offset, coefficient et power (ou puissance) des paramètres d'ajustement de la forme de la fonction. Généralement, on fait power=2.

Les paramètres x, y, r0, coefficient et puissance sont successivement les arguments de la commande RADIAL_WEIGHT. Voici quelques exemples appliquées à l'éclipse totale du 29 mars 2006 :


Eclipse totale du 29 mars 2006. Canon EOS 5D & Canon 400 mm f/5.6 L. Somme de 2x2 s expositions + 2x1 s expositions.
Noter que la zone centrale est saturée.


Après la commande : RADIAL_WEIGHT 2272 1418 220 500 2


Après la commande : RADIAL_WEIGHT 2272 1418 250 500 2 


Après la commande : RADIAL_WEIGHT 2272 1418 250 800 2


Un compositage final. Les images de la photosphère et du gradiant rotationel de la couronne interne sont ajoutées dans un second temps (voir plus loin). Les régions saturées sont masquées en utilisant la commande DISK1. Cliquer ici pour d'autres images de cette éclipse.


GRADIANT ROTATIONEL ET FONCTION DE MELANGE

La méthode du gradiant rotationel est une bonne méthode alternative pour rehausser les détails dans la couronne. Cette fonction peut à présent traiter les images en vraies couleurs (48 bits).  L'image de la couronne lointaine ci-après a été obtenue en employant la fonction Gradiant rotationel... du menu Traitement avec les paramètres :


Gradiant rotationel sur une image totalisant 6 secondes de pose (Canon EOS 5D + téléobjectif Canon de 400 mm à f/5.6).
Noter la zone saturée au centre qui ne donne pas de résultat valide.

L'image ci-après montre la couronne interne traitée avec la méthode du gradiant rotationel. Elle a été ajoutée à une image de la couronne externe et à une image de photosphèren acquise peut avant le début de l'éclipse :

Avant de mélanger les images de la couronne interne et externe on masque les régions qui se recouvrent en utilisant les commandes DISK1 et DISK2 (cliquer ici pour un sujet relié). Pour le mélange proprement dit des images vous pouvez employer simplement la commande  ADD command ou utiliser le nouvel outil interactif Mélange... du menu Visualisation (mode overlay).

Changer la position du curseur pour modifier l'opacité de la image de premier plan (T1) par rapport à l'image de fond (T2) :

L'image calculée ici est

(1 - 0.18) x T1 + 0.18 x T2

Si vous cochez le bouton Addition :

l'opération réalisée est

T1 + 0.18 T2


INDEX