Leçon 18 : Traitement et sélection des images Webcams

Cette leçon va aborder certains problèmes liés à l'utilisation des caméras du type Webcam:

  • Comment réaliser un flat-field à partir à partir d'images extraites d'un film AVI ?
  • Comment trier efficacement les meilleures images dans une grande séquence ?
  • Comment extraire et exploiter l'information trichrome ?

Les 3 images suivantes de la planète Jupiter sont extraites d'une même séquence AVI acquise le 18/12/2000 (500 images environ obtenue en 40 secondes). La caméra est une Philips ToUcam Pro et le télescope un Takahashi CN-212 en configuration Cassegrain. L'image est agrandie par une barlow Tele Vue 2.5x. La turbulence est particulièrement forte : remarquer comment du seul fait de l'agitation atmosphérique le disque de la planète se déplace par rapport aux petites poussières collées sur le hublot du CCD (points noirs visibles en haut et à droite du disque). Lors de l'affichage de l'AVI en vitesse normale la planète donne l'impression de dancer frénétiquement et aléatoirement avec une amplitude de plusieurs pixels.

Cette turbulence a tout de même du bon car elle offre l'opportunité de calculer une image flat-field qui sera ensuite utilisée pour éliminer la trace des poussières sur les images (rappel : un flat-field est une image qui montre la réponse relative des pixels au flux incident, voir la leçon 6). Iris exploite un puissant algorithme qui permet de déterminer un flat-field à la triple condition suivante :

  • l'objet présente une surface étendue (planète, Lune, Soleil et même un fond de ciel lumineux) ;
  • on possède de nombreuses images de l'objet, mais dans ces images, il n'est jamais situé au même endroit ;
  • il est possible de repérer la position relative de l'objet à une fraction de pixel près dans chaque images.

Cette technique est utilisable ici car le disque de Jupiter se déplace de manière aléatoire avec une amplitude supérieure à la taille des poussières et on possède des dizaines d'images distinctes de la planète.

La commande en ligne qui permet de faire le calcul s'appelle FLAT (elle n'a pas d'équivalent dans les menus). Voici la syntaxe :

FLAT  [NOM] [SH] [SB] [NIVEAU] [NB ITER] [NB IMAGES]

avec :

NOM : nom générique de la séquence à partir de laquelle va être extrait le flat-field.

SH et SB : les seuils haut et bas entre lesquels se trouve l'intensité des pixels qui vont être utilisés pour le calcul. Généralement on utilise toute la dynamique permise par le logiciel, c'est à dire que l'on fait SH=32767 et SB=0.

NIVEAU : l'intensité moyenne de l'image flat-field au terme du calcul.

NB ITER : le calcul peut être itératif afin d'améliorer la qualité du flat-field. Cependant, dans la grande majorité des cas une seule itération suffit et on fait alors NB ITER=1.

NB IMAGES : le nombre d'images contenues dans la séquence.

Outre les éléments ci-dessus, Iris demande aussi qu'on lui fournisse le déplacement de l'objet en X et en Y dans chaque image relativement à la première image de la séquence. Cette information doit être contenue dans un fichier texte ayant pour nom SHIFT.LST qui se situe dans le répertoire de travail. Le fichier SHIFT.LST est créée automatiquement chaque fois que vous activez les commandes PREGISTER et CREGISTER (item Registration des images planétaires (1)/(2)depuis le menu Traitement). Utilisons par exemple la Registration des images planétaires (2) qui exploite le principe de l'ajustement d'un cercle sur le pourtour du disque de la planète (voir la leçon 9).

Dans l'exemple nous allons superposer 439 images ayant pour nom générique I. La séquence superposée a pour nom générique J. Le paramètre Niveau défini le seuil d'intensité pour lequel le cercle d'ajustement doit être tracé. Si la valeur du niveau est trop basse il est possible que l'algorithme de recherche de contour échoue car ce dernier est alors par exemple défini autour d'un satellite. Si le niveau est trop haut, la surface de planète délimitée par le cercle diminuant, la précision elle aussi diminue (utiliser la commande en ligne CIRCLE pour choisir le bon niveau).

L'opération de registration a ici pour seul objectif de fournir le fichier SHIFT.LST. Voici à quoi ressemble ce fichier :

Il comporte deux colonnes correspondants aux déplacement en X et en Y relativement à la première image (une ligne par image). L'unité est le pixel et la fraction de pixel. Bien sur le déplacement relatif de la première image de la séquence est nul.

Il est possible à présent d'utiliser la commande FLAT. Dans notre exemple, voici ce qu'il faudrait entrer comme commande depuis la console :

FLAT  I   32767  0   400  1  80

Le premier paramètre est le nom générique des images à traiter. Remarquez, c'est très important, que le traitement porte sur les images non superposées (séquence I). Viennent ensuite les deux seuils 32767 et 0. Le niveau final du flat-field est fixé à 400. Cette valeur arbitraire vaut ici approximative l'intensité au centre du disque de Jupiter dans chaque image de la séquence. Enfin on considère les 80 premières images. La commande FLAT accepte un maximum de 100 images. Avec un aussi grand nombre d'images le temps de calcul peu être très long (plusieurs minutes pour une image de taille supérieure à 320x240 pixels). L'algorithme peut très bien fonctionner avec une douzaine d'images seulement à partir du moment où le déplacement de l'objet est bien aléatoire et d'amplitude significative (plusieurs pixels). Nota : s'il n'y a pas de turbulence il faut générer une douzaine de séquence AVI brèves en déplacement très légèrement le télescope entre chaque prises de vue.

Voici le résultat obtenu :

Le disque gris uniforme (aux poussières près) est le flat-field proprement dit. Remarquer comment Iris à gommé la planète tout en conservant uniquement les poussières. En fait, les seuls détails qui subsistes sont ceux qui ne se déplacent pas d'une image à l'autre, c'est tout le principe de l'algorithme. Le flat-field ne peut être défini que dans la partie du CCD qui a reçu de la lumière, c'est à dire dans le cas présent, au niveau de la planète. En dehors de cette région on observe une structure parasite qui est le fond de ciel bruité par la caméra (le signal d'offset n'a pas été retiré de chaque image avant le calcul du flat-field, ce qui est une erreur ici). En déplacement le curseur de souris dans l'image on observe bien un niveau proche de 400.

Avant de diviser chaque image brute par le flat-field ainsi calculé il faut effectuer un toilettage qui vise à éliminer les parasitages en dehors de la planète, ainsi que le contour résiduel du disque. L'opération peut être réalisée avec la commande en ligne FILL2, donc voici la syntaxe :

FILL2  [NIVEAU]

Lorsque vous lancez cette commande, Iris remplace l'intensité de tous les pixels délimité dans un rectangle de sélection par l'intensité Niveau donné en paramètre. Nota : il existe aussi une commande FILL, mais qui agit sur l'ensemble de l'image et qui n'est donc pas appropriée ici.

Définissez des zones rectangulaires dans l'image qui évitent soigneusement la trace des poussières puis faites chaque fois :

FILL2   400

Au final, vous obtenez l'image flat-field suivante que vous sauvegardez sur le disque sous le nom FLAT (par exemple) :

Pour tester le bon fonctionnement du flat-field vous pouvez traiter la première image de la séquence :

LOAD   I
DIV  FLAT  400

Les taches formées par les poussières ont bien disparue :

Remarque : dans le cas de l'exploitation d'images couleurs il faut normalement déterminer un flat-field pour chaque plan de couleurs (le rouge, le vert et le bleu). Dans le cas de la Webcam utilisée ici, il s'est avéré qu'un flat-field unique déterminé à partir de la somme des trois plans couleurs donne entière satisfaction pour traiter les images R, V et B (option Noir & Blanc dans le boite de dialogue Conversion AVI.. du menu Fichier).

Vous pouvez à présent diviser les 439 images de la séquence par le flat-field en utilisant la commande Diviser une séquence... du menu Traitement, ou encore utiliser la commande en ligne DIV2 depuis la console :

DIV2  I   FLAT  I   400   439

Vous pouvez maintenant effectuer à nouveau la registration de vos images après la correction flat-field dans le but de les additionner pour ensuite accroître le contraste.
Le fichier SHIFT.LST existant toujours dans votre répertoire de travail il est possible d'abréger le calcul en utilisant la commande en ligne FILE_TRANS. Celle-ci créée une nouvelle séquence en réalisant la translation en exploitant le fichier SHIF.LST. Par exemple :

FILE_TRANS   I    I    439

Les deux images ci-après montrent successivement le résultat lorsqu'on ne fait par la correction flat-field et lorsqu'on fait la correction flat-field.

Pour obtenir le résultat ci-dessus (médiocre en raison de la forte turbulence) il faut sélectionner sévèrement les meilleures images. Dans le cas d'images planétaires la sélection peut être effectuée manuellement (voir la leçon 16) ou automatiquement.

La procédure automatique repose sur l'usage conjugué des commandes en ligne BESTOF et SELECT. Analysons tout d'abord BESTOF, dont voici la syntaxe :

BESTOF  [NOM]  [NOMBRE]

Le paramètre NOM est le nom générique de la séquence sur laquelle va porter la recherche des meilleures images. Le paramètre NOMBRE est bien sur le nombre d'images de la séquence.

Il est préférable d'effectuer la sélection avant la registration (les images peuvent donc être décalées les unes par rapport aux autres). Si c'est possible, il vaut mieux aussi avoir effectué le prétraitement complet (soustraction de l'offset, du signal d'obscurité et division par le flat-field).

Dans le cas où l'objet est de petite taille (petit disque planétaire par exemple) il est possible de définir à la souris un rectangle de sélection autour de l'objet avant de lancer BESTOF. Le calcul est alors effectué à l'intérieur de ce rectangle uniquement, ce qui améliore parfois le résultat.

Le résultat de la commande BESTOF est un fichier texte qui est créée dans le répertoire de travail. Ce fichier a pour nom SELECT.LST. Voici un exemple de tel fichier :

Iris a trié les indices des images de la meilleure qualité à la moins bonne qualité. Dans l'exemple l'image de meilleure qualité (sur le plan de la finesse) a l'indice 232. La seconde meilleure image al'indice 122 et ainsi de suite. Le critère de trie repose sur l'analyse du contraste et de l'entropie des images. Il est adapté à l'étude des images planétaires uniquement. Pour faciliter la tache de l'algorithme il est parfois souhaitable de générer le fichier SHIFT.LST en utilisant une séquence spéciale dans laquelle les images ont subit un léger masque flou (attention de na pas trop faire ressortir le bruit) : le distinguo en contraste et détail entre les images s'en trouve amélioré (pour appliquer un filtrage du type masque flou à une séquence, utiliser la commande Masque flou d'une séquence... du menu Traitement).

Une fois que les meilleures images de la séquence de départ sont identifiées il faut créer à partir d'elles une nouvelle séquence dans laquelle les images sont ordonnées par ordre décroissant de qualité. C'est ce que fait la commande SELECT dont voici la syntaxe :

SELECT [ENTREE] [SORTIE]

ENTREE est le nom générique de la séquence de départ sur laquelle a porté la sélection. SORTIE est une séquence dans laquelle les images sont triées par ordre décroissant de finesse. Pour faire cela la commande SELECT exploite le contenu du fichier SELECT.LST.

Bien sur avant d'utiliser la commande SELECT il faut au préalable avoir lancer la commande BESTOF. En fait la commande Sélection d'images... du menu Visualisation produit elle aussi le fichier SELECT.LST (écriture d'une ligne dans ce fichier chaque fois que vous cliquez sur le bouton Sauver). Nous verrons par la suite tout le partie que l'on peut en tirer pour l'exploitation des images couleurs.

Une fois la séquence triée par ordre de qualité vous avez la liberté de n'additionner que les n premières images que vous jugez avoir la meilleure qualité suffisante. Par exemple si vous estimez que 10% seulement des images ont une finesse correcte dans une séquence de 500 images vous ferez (après registration !) :

ADD2  J  50

la séquence J étant la séquence triée.

Abordons pour finir le problème du traitement et du trie des images couleurs. Vous avez alors à votre disposition trois séquences correspondant aux canaux Rouge, Vert et Bleu. Il est recommandé de réaliser le trie avec la commande BESTOF sur la séquence présentant à la fois le meilleur contraste et la meilleure définition (ces deux notions ne sont pas équivalentes). Le canal vert présente souvent le meilleur compromis. Supposons que son nom générique est V, vous aller faire par exemple :

BESTOF  V   500
SELECT  V   BESTV

L'indice des meilleures images dans le canal V est à coup sur aussi l'indice des meilleures images dans les canaux R et B. Il vous suffit donc pour extraire les meilleures images rouge et bleu de taper à la suite les commandes :

SELECT  R    BESTR
SELECT  B    BESTB

Le reste du travail consiste ensuite à registrer les n premières meilleures images des canaux R, V et B, de les additionner par canal (même nombre d'images pour chacun d'eux) puis d'utiliser la commande TRICHRO pour l'affichage du résultat.

C'est le fichier SELECT.LST qui permet le trie simultané et cohérent des images dans chaque canaux. C'est en fait une technique très puissante car il est tout à fait autorisé de modifier manuellement le fichier SELECT.LST (avec un éditeur de texte) pour changer l'ordre des images ou pour toute application de votre choix. La commande SELECT permettra alors d'isoler les images dans une nouvelle séquence.

IRIS permet d'enchaîner automatiquement la plupart des traitements précédents et ceux, simultanément pour les trois plans couleurs (commandes COMPUTE_TRICHRO1 et COMPUTE_TRICHRO2). Pour plus de détails
cliquer ici.