Date de mise à jour : 12 février 2012

Buffer

Les commandes qui suivent peuvent être appelées grâce aux commandes buf1, buf2, ... qui sont créées par "::buf::create". Ces sous-commandes permettent de formater une image, de manipuler les mots clés FITS, et de réaliser certains traitements sur l'image portée par le buffer. Elles sont décrites avec la commande buf1, mais sont valables pour toutes les autres commandes de buffer.

1. Gestion du buffer

buf1 setpixels class width height format compression pixeldata ?-keep_keywords? ?-pixels_size? ?-reverse_x? ?-reverse_y?

Dimensionne l'image du buffer à la taille précisée par les arguments largeur et hauteur (*) : Deux entiers représentant la largeur et la hauteur souhaitées de l'image. Si une image existait avant cette commande, elle est effacée. Si pixelData est nul, alors les pixels sont initialisés à zéro.

Paramètres obligatoires :

class : CLASS_GRAY|CLASS_RGB
width : Nombre de colonnes (*)
height : Nombre de lignes (*)
format : FORMAT_BYTE|FORMAT_SHORT|FORMAT_USHORT|FORMAT_FLOAT
compression : COMPRESS_NONE|COMPRESS_I420|COMPRESS_JPEG|COMPRESS_RAW
pixeldata : Il faut mettre toujours 0 (zéro) quand on utilise cette commande depuis un script TCL. Quand on utilise cette commande depuis un programme C, ce paramètre peut recevoir le pointeur d'un tableau de valeurs des pixels en mémoire pour initialiser le buffer, sinon mettre NULL.

Paramètres facultatifs :

-keep_keywords : Conserve les mots clés qui étaient déjà dans le buffer.
-pixelSize size : Nombre d'octets pointés par pixelData pour les images JPEG et RAW (*). Ce paramètre est obligatoire pour les images JPEG et RAW.
-reverseX : Si "1", applique un miroir vertical.
-reverseY : Si "1", applique un miroir horizontal.

(*) Pour les images JPEG ou RAW (compression=COMPRESS_JPEG|COMPRESS_RAW), les paramètres "width"et "height" ne sont pas utilisés. Les nombres de colonnes et de lignes sont extraits des données "pixelData" avec les commandes "buf1 getpixelswidth" et "buf1 getpixelsheight" après décompression par la commande "buf1 setpixels"

Exemple : Image Audine KAF-0400

buf1 setpixels CLASS_GRAY 768 512 FORMAT_USHORT COMPRESS_NONE 180412736

Les données pointées par "pixeldata" à l'adresse 180412736 sont sous la forme d'un tableau d'entiers 16 bits non signés de 768 colonnes et 512 lignes.

Exemple : Image Webcam Vesta Pro, TouCam couleur

buf1 setpixels CLASS_RGB 640 480 FORMAT_BYTE COMPRESS_NONE 180412736

Les données pointées par "pixeldata" à l'adresse 180412736 sont sous la forme d'un tableau d'entiers 8 bits non signés de 640x3 colonnes et 480 lignes.

Exemple : Image Canon 300D, JPEG, large:normal

buf1 setpixels CLASS_RGB 0 0 FORMAT_SHORT COMPRESS_JPEG 180412736 -pixelSize 1178832

Les données pointées par "pixeldata" à l'adresse 180412736 sont sous la forme d'un bloc de 1178832 octets contenant une image JPEG au format défini par le standard JPEG (voir

http://www.ijg.org ). La commande "setpixels" utilise la librairie "libjpeg" pour décompresser ces données.

Exemple : Image Canon 300D, RAW

buf1 setpixels CLASS_GRAY 0 0 FORMAT_SHORT COMPRESS_RAW 180412736 -pixelSize 7562236

Les données pointées par "pixeldata" à l'adresse 180412736 sont sous la forme d'un bloc de 7562236 octets contenant une image RAW au format défini par le constructeur Canon (voir http://www.cybercom.net/~dcoffin/dcraw ). La commande "setpixels" utilise la librairie "libdcraw" pour décompresser ces données.

buf1 clear

Efface l’image et l’en-tête contenues dans le buffer, mais il n'est pas retiré de la liste des buffers.

buf1 copyto destnum

Copie le contenu du buffer dans le buffer dont le numéro est passé en argument (destnum). Si le buffer de destination n’existe pas, il est créé, sinon il est écrasé (les données qui y étaient sont effacées et remplacées par celles du buffer source).

buf1 type

Renvoie le type des données de l'image : short, int, float, imag. Pour l'instant seules les images float sont gérées.

buf1 pointer

Retourne l'adresse du pointeur de l'image du buffer, qui peut être utilisé dans une librairie.

2. Gestion des fichiers

buf1 bitpix ?byte|short|ushort|long|ulong|float|double?

Indique le type de données à écrire dans le fichier FITS lors des sauvegardes. Par défaut, ushort. En interne, AudeLA manipule des images de type float mais il est possible de les contraindre à un autre type lors de l'enregistrement FITS avec cette fonction.

byte (bitpix = 8) : Entiers à 1 octet non signé soit 8 bits non signés (0 à 255).

short (bitpix = 16) : Entiers à 2 octets signés soit 16 bits signés (-32768 à 32767).

ushort (bitpix = +16) : Entiers à 2 octets non signés soit 16 bits non signés (0 à 65535) (Note 1).

long (bitpix = 32) : Entiers à 4 octets signés soit 32 bits signés (-2 147 483 648 à 2 147 483 647).

ulong (bitpix = +32) : Entiers à 4 octets non signés soit 32 bits non signés (0 à 4 294 967 295) (Note 1).

float (bitpix = -32) : Flottants à 4 octets soit 32 bits (-3,4*10+38 à 3,4*10+38) (Note 2).

double (bitpix = -64) : Flottants à 8 octets soit 64 bits (-1,7*10+308 à 1,7*10+308) (Note 3).

Note 1 : Les valeurs +16 et +32 ne sont pas des valeurs normalisées du standard FITS. Elles sont spécifiques à AudeLA et ne sont utilisables qu'en tant que paramètres de certaines commandes de libaudela et de libtt.

Note 2 : Cette notation présente 2 discontinuités, en effet il est impossible d'affecter une valeur d'ADU dans les intervalles suivants :

Note 3 : Cette notation présente 2 discontinuités, en effet il est impossible d'affecter une valeur d'ADU dans les intervalles suivants :

Les réglages accessibles dans la fenêtre Configuration --> Fichiers image sont :

La sélection de l'une des deux options a pour effet d'appliquer cette option au buffer de chaque visu ouverte ou à venir. Elle n'a pas d'effet sur un buffer non associé à une visu. Dans ce cas il est préférable de définir la valeur bitpix de ce buffer.

buf1 extension ?file_extension?

Indique le nom de l'extension par défaut à donner au fichier FITS qui sera lu ou écrit sur le disque (.fit par défaut).

buf1 compress ?none|gzip?

Indique si l'enregistrement de l'image va générer un fichier compressé ou non (none par défaut). Si l'on souhaite une compression, indiquer gzip. Les fichiers FITS auront l'extension .gz. Ils peuvent être lus directement par la fonction buf1 load et peuvent être décompressé en dehors de AudeLA avec de nombreux logiciels de décompression.

Le fait de cocher l'option 'Configuration/Fichiers images/Fichiers images compressés (.gz)' a pour effet d'appliquer cette option au buffer de chaque visu ouverte ou à venir. Elle n'a pas d'effet sur un buffer non associé à une visu. Dans ce cas il est nécessaire de spécifier la compression si elle est souhaitée.

buf1 load nom

Charge une image FITS stockée sur disque, ou sur un autre ordinateur relié en réseau. L'extension peut être donnée ou non, auquel cas elle est prise par défaut (cf. buf1 extension). Le nom de chemin peut être indiqué avec de / au lieu de \, sachant qu'avec des \, il faut les doubler

Exemple :

buf1 load images/toto

buf1 load images\\toto

Charge l'image toto.fit contenue dans le sous-répertoire images du répertoire courant (peut être obtenu grâce à la commande TCL pwd).

buf1 save nom ?-quality [1...100] ?

Enregistre l'image avec les mots clés contenus dans le buffer.

L'extension du fichier détermine le format d'enregistrement de l'image :

Option spécifique pour l'enregistrement au format JPEG :

Exemples :

buf1 save images/toto.fit Enregistre une image au format FITS
buf1 save images/toto Enregistre une image au format FITS nommée images/toto.xxx si l'extension par défaut est .xxx
buf1 save images/toto.jpg Enregistre une image au format JPEG
buf1 save images/toto.png Enregistre une image au format PNG

buf1 savejpeg filename ?quality? ?locut? ?hicut?

L'image du fichier FITS d'origine est enregistrée au format Jpeg N&B. Si l'extension est donnée, elle peut être différente de ".jpg". L'option quality fixe la qualité de l'image (de 5 pour une perte énorme à 100 pour une compression sans perte). La valeur par défaut de quality est 75. Locut et hicut sont les seuils de visualisation correspondant respectivement au noir et au blanc de l'image du fichier FITS d'origine. Par défaut les valeurs des seuils bas et haut sont lues comme les valeurs des mots clés MIPS-LO et MIPS-HI de l'en-tête FITS.

3. Gestion des mots clés FITS

buf1 getkwds

Retourne la liste des mots clés FITS du buffer sous forme d'une liste TCL.

buf1 getkwd nom

Retourne une liste de cinq éléments qui caractérise complètement le mot clé FITS nom. Cette liste est composée du nom du mot clé, de sa valeur, de son type (int, float, string), d'un commentaire, et de l'unité de la grandeur. Si le mot clé n'existe pas alors la commande retourne la liste {"" "" none "" ""}. Le nom du mot clé doit toujours être fourni dans la casse du mot clé stocké. Par exemple, NAXIS est différent de naxis. La fonction getkwds permet de repérer cela.

Exemple :

buf1 getkwd NAXIS1

retourne

{NAXIS1 384 int "length of data axis 1" ""}.

buf1 setkwd format_mot_cle

Cette commande permet de modifier un mot clé : L'argument donné doit être une liste de cinq éléments correspondant au nom du mot clé, à sa valeur, à son type (string, int, float), au commentaire, et enfin à l'unité. Elle correspond au même format que le résultat de la commande précédente. Le nom du mot clé doit contenir au plus 9 caractères.

Exemple :

buf1 setkwd [list "INSTRU" "T310" string "mon télescope" ""]

modifie ou créé le mot clé INSTRU.

buf1 copykwd srcnum

Copie les mots clés du buffer source vers le buffer qui exécute cette sous-commande. L'argument est le numéro du buffer depuis lequel les mots clés seront copiés.

buf1 delkwd mot_cle

Efface un mot clé de la liste de ceux présents dans l'en-tête FITS.

buf1 delkwds

Efface tous les mots clés de la liste de l'en-tête FITS.

4. Traitement d'image

Les fonctions de traitement d'images proposées par AudeLA agissent au niveau du buffer.

buf1 getpix coord

Renvoie la valeur du pixel ayant les coordonnées (x,y) passées en paramètre sous la forme d'une liste à deux éléments [list $x $y]. Les coordonnées de l'image vont de (1,1) à (NAXIS1,NAXIS2). getpix retourne une liste dont le premier élément est le nombre de plan couleur, et les éléments suivants sont les intensités du pixel dans chaque plan.

Exemple 1 : Pour une image en niveaux de gris, getpix retourne une seule intensité.

loadima m57
buf1 getpix [list 100 100]
# 1 330.000

Exemple 2 : Pour une image couleur, getpix retourne les 3 intensités pour les plans R, G et B.

loadima 47toucan.jpg
buf1 getpix [list 100 100]
# 3 7.000 1.000 5.000

buf1 setpix coord (valgray | valred valgreen valblue)

Affecte la valeur du pixel ayant les coordonnées (x,y) passées en paramètre sous la forme d'une liste à deux éléments [list $x $y]. Les coordonnées de l'image vont de (1,1) à (NAXIS1,NAXIS2). La nouvelle valeur affectée est valgrey pour une image en niveaux de gris ou valred,valgreen,valblue pour une image couleur.

Exemple 1 : Pour une image en niveaux de gris, affecte 51 au pixel (100,100).

loadima m57
buf1 setpix [list 100 100] 51

Exemple 2 : Pour une image couleur, affecte rouge=51 vert=52 bleu=53 au pixel (100,100).

loadima 47toucan.jpg
buf1 setpix [list 100 100] 51 52 53

buf1 offset valeur

Réalise un offset sur l'image : Tous les pixels de l'image sont décalés de valeur.

buf1 sub fichier valeur

Soustrait l'image contenue dans fichier à l'image courante, et ajoute un offset de valeur. Le résultat est toujours stocké dans le buffer.

buf1 add fichier valeur

Ajoute l'image contenue dans fichier à l'image du buffer, et ajoute un offset de valeur.

buf1 div fichier valeur

Divise l'image du buffer par celle contenue dans fichier et multiplie le résultat par valeur.

buf1 mult cste

Multiplie l'image du buffer par une valeur constante.

buf1 noffset valeur

Normalise le fond du ciel à la valeur donnée en argument, par un offset.

buf1 ngain valeur

Normalise le fond du ciel à la valeur donnée en argument, par une multiplication (gain).

buf1 unsmear valeur

Retire la contribution apportée par le flux incident du ciel lors de la lecture du CCD lorsque la caméra n'est pas équipée d'un obturateur. Le coefficient à donner en paramètre est le rapport du temps de lecture d'une ligne sur le temps de pose total de l'image.

buf1 opt noir offset

Optimise le noir sur le buffer : Le noir qui sert à l'optimisation est le premier argument. C'est un noir qui est directement issu de l'acquisition, éventuellement issu d'une synthèse médiane des images de noir acquises. De même pour l'offset. Il est extrêmement important que l'offset soit présent dans l'image de noir.

buf1 stat ?fenetre?

Analyse l'image du buffer, et retourne une liste composée des 9 éléments suivants :

L'argument fenêtre est une liste de quatre valeurs numériques indiquant les coordonnées de deux des coins opposés : [list $x1 $y1 $x2 $y2].

Lorsque cet argument est présent, les valeurs des 9 éléments ci-dessus sont limitées à la fenêtre incluse dans l'image.

buf1 mirrorx

Retourne l'image horizontalement, c'est à dire que ce sont les colonnes qui sont déplacées.

buf1 mirrory

Retourne l'image verticalement : Les lignes sont permutées.

buf1 binx x1 x2 ?largeur?

Crée une nouvelle image de dimensions largeur*NAXIS2, dont toutes les colonnes sont identiques, et égales à la somme de toutes les colonnes comprises entre les abscisses x1 et x2 de l'image à laquelle est appliqué ce traitement. Cette commande est utile pour exploiter notamment les images d'occultations par des astéroïdes, observées par la méthode de filé.

buf1 biny y1 y2 ?hauteur?

Cette fonction de traitement est la transposition de la commande binx : Elle crée une nouvelle image de dimensions NAXIS1*hauteur, dont toutes les lignes sont identiques, et égales à la somme de toutes les lignes comprises entre les ordonnées y1 et y2 de l'image à laquelle est appliqué ce traitement.

buf1 window fenêtre

Extrait une sous-image de l'image à laquelle est appliquée ce traitement. L'argument est une liste de quatre valeurs numériques indiquant les coordonnées de deux des coins opposés : [list $x1 $y1 $x2 $y2].

buf1 rot x1 x2 angle

Rotation de l'image autour du centre (x1,y1) et d'un angle angle exprimé en degrés décimaux (15.5 = 15°30'). Les pixels sont compris dans l'intervalle (1,1) - (NAXIS1,NAXIS2).

buf1 log coef ?offset?

Applique la fonction suivante à tous les pixels de l'image : p' = coef * log10(p - offset), où p et p' sont respectivement l'ancienne, et la nouvelle valeur des pixels. Par défaut, offset vaut 0, et pour les pixels où (p - offset) < 0 alors p' = 0.

buf1 imaseries string

Effectue une commande de type IMA/SERIES de la librairie TT. Cette commande est extrêmement importante car elle permet d'exploiter la plupart des richesses des fonctions IMA/SERIES ( ADD ASTROMETRY ASTROMETRY2 BACK BINX BINY CATCHART CONV CUTS DIV FILTER GRADIENT HEADERFITS HOUGH INVERT LOG MATRIX MEDIANX MEDIANY MULT NORMGAIN NORMOFFSET OFFSET OPT POL2REC PROFILE REC2POL REGISTER REGISTERFINE RESAMPLE ROT SORTX SORTY SUB SUBDARK STAT TRANS UNSMEARING WINDOW ) de libTT.

buf1 synthegauss {xc yc i0 fwhmx fwhmy} ?LimitAdu?

Ajoute une gaussienne sur l'image à la position (xc,yc), de largeur à mi hauteur fwhmx,fwhmy et d'intensité i0. L'option LimitAdu permet de fixer une valeur seuil au dessus de laquelle les valeurs auront la valeur du seuil (permet de reproduire l'effet d'une saturation).

buf1 clipmin value

Remplace toutes les valeurs inférieures à value par value (écrêtage).

buf1 clipmax value

Remplace toutes les valeurs supérieures à value par value (écrêtage).

buf1 scar {x1 y1 x2 y2}

Cicatrise les valeurs des pixels à l'intérieur de la fenêtre {x1 y1 x2 y2} par un réseau de lignes et colonnes interpolées à partir des pixels se situant sur le bord de la fenêtre.

buf1 scale ListOfTwoScalingFactors ?NormaFlux?

Reéchantillonne (bilinéaire) l'image en tenant compte de facteurs d'échelle sur chaque axe. La valeur normaflux permet de fixer le facteur de "dilution" du flux après le reéchantillonnage. Si sx et sy sont les facteurs d'échelle, la valeur par défaut de normaflux est 1./(sx*sy). Une valeur de normaflux=1 permet de garder la dynamique initiale.

5. Analyse

buf1 autocuts

Calcule et retourne la valeur des seuils haut et bas de visualisation. Ces valeurs sont ajoutés aux mots clés MIPS-Hi et MIPS-LO de l'en-tête FITS de l'image.

buf1 xy2radec coord

Conversion des coordonnées image en coordonnées célestes : Il faut que l'image soit préalablement calibrée astrométriquement. Les coordonnées d'entrée sont sous la forme d'une liste de deux nombres, entiers ou décimaux. Le résultat est une liste composée de l'ascension droite, et de la déclinaison, exprimées en degrés décimaux.

buf1 radec2xy coord

Conversion de coordonnées célestes en coordonnées image : Il faut également que l'image soit calibrée astrométriquement. L'ascension droite et la déclinaison doivent être exprimées en degrés décimaux. Le résultat est une liste des coordonnées x et y exprimées en pixels décimaux (rarement des valeurs entières).

buf1 fwhm fenêtre

Calcule la fwhm des pixels contenus dans la fenêtre dont les coordonnées sont passées dans la liste composant l'argument. Si la fenêtre est trop grande ou ne contient pas une seule étoile, le résultat n'est pas représentatif (!). Cette commande retourne une liste de deux éléments, respectivement la fwhm en x, et en y. L'argument fenêtre est une liste de quatre entiers qui indiquent les coordonnées des deux coins opposés de la fenêtre.

buf1 flux coord

Renvoie une liste de deux éléments : Le premier est le flux dans la fenêtre (somme de tous les pixels contenus dans la fenêtre), et le second est le nombre de pixels ayant servi à établir le flux.

buf1 centro coord ?sigma?

Calcule le centroïde de la fenêtre décrite par le premier argument. Le second paramètre est optionnel : Il s'agit du niveau de bruit en dessous duquel les pixels ne sont pas pris en compte dans le calcul. Sa valeur par défaut est 3 : Les pixels en dessous de 3 fois le bruit sur le contour de la fenêtre sont éliminés pour le calcul. Les arguments de retour sont, dans l'ordre :

buf1 phot coord ?sigma?

Photométrie dans une fenêtre : La valeur renvoyée est la différence entre le flux total sur la fenêtre, et le flux du fond de ciel, évalué sur le contour de la fenêtre. Les arguments de retour sont, dans l'ordre :

buf1 photom {x1 y1 x2 y2} square ?args?

Photométrie d'ouverture dans une fenêtre : La valeur renvoyée est la différence entre le flux total sur la fenêtre, et le flux du fond de ciel, évalué sur le contour de la fenêtre. Actuellement cette fonction ne fonctionne qu'avec une ouverture carrée (square). {x1 y1 x2 y2} est la fenêtre qui entoure le pixel l'astre à mesurer. Dans un premier temps, un calcul de barycentre photométrique est effectué pour définir le centre de mesure du photomètre. Les paramètres ?args? sont au nombre trois définis ainsi dans l'ordre :

Le résultat comporte 5 valeurs :

Rappelons que si G est le gain de la caméra CCD (exprimé en e/adu) et R le bruit de lecture moyen d'un pixel (exprimé en e), alors l'incertitude de mesure totale rms à 1 sigma dF (exprimée en adu) peut être estimée statistiquement par :

dF = sqrt ( F1*G + F2*F5*G + F5*R*R*G*G) / G

Si l'on ne connait pas, a priori le bruit de lecture de la caméra, on peut approximer l'expression par :

dF = sqrt ( F1*G + F5*F4*F4*G*G) / G

Si l'on connait le nombre de P de pixels ayant permis de mesurer la valeur du fond (r2<r<r3) alors on peut remplacer F5 par F5*(1+F5/P).

buf1 fitgauss {x1 y1 x2 y2} ?-sub? ?-fwhmx value? ?-fwhmy value?

Calcule les paramètres d'ajustement de deux gaussiennes à partir des profils des valeurs cumulées sur les côtés de la fenêtre définie par la liste {x1 y1 x2 y2}. L'ajustement est effectué aux moindres carrés. Les valeurs de retour sont dans une liste dans l'ordre suivant :

L'option -sub va soustraire la gaussienne ajustée à l'image. L'option -fwhmx permet de contraindre la valeur de fwhmx à une valeur. L'option -fwhmy permet de contraindre la valeur de fwhmy à une valeur.

buf1 histo ?NbBins? ?min? ?max?

Retourne trois listes contenant les informations sur l'histogramme de l'image. Chaque liste définit :

buf1 slitCentro {x1 y1 x2 y2} starDetectionMode pixelMinCount ?slitWidth? ?signalRatio?

Calcule le centre de la fenêtre avec un ajustement de gaussienne ou avec un calcul de barycentre si une fente est présente dans la fenêtre.

Paramètres :

Retourne une liste de 4 éléments { status xc yc maxIntensity message }