Date de mise à jour : 12 février 2012
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.
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.
Efface l’image et l’en-tête contenues dans le buffer, mais il n'est pas retiré de la liste des buffers.
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).
Renvoie le type des données de l'image : short, int, float, imag. Pour l'instant seules les images float sont gérées.
Retourne l'adresse du pointeur de l'image du buffer, qui peut être utilisé dans une librairie.
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.
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).
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.
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).
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 |
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.
Retourne la liste des mots clés FITS du buffer sous forme d'une liste TCL.
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" ""}.
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.
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.
Efface un mot clé de la liste de ceux présents dans l'en-tête FITS.
Efface tous les mots clés de la liste de l'en-tête FITS.
Les fonctions de traitement d'images proposées par AudeLA agissent au niveau du buffer.
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
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
Réalise un offset sur l'image : Tous les pixels de
l'image sont décalés de 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.
Ajoute l'image contenue dans fichier
à
l'image du buffer, et ajoute un offset de
valeur
.
Divise l'image du buffer par celle contenue dans
fichier
et multiplie le résultat par
valeur
.
Multiplie l'image du buffer par une valeur constante.
Normalise le fond du ciel à la valeur donnée en argument, par un offset.
Normalise le fond du ciel à la valeur donnée en argument, par une multiplication (gain).
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.
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.
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.
Retourne l'image horizontalement, c'est à dire que ce sont les colonnes qui sont déplacées.
Retourne l'image verticalement : Les lignes sont permutées.
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é.
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.
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].
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).
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.
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.
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).
Remplace toutes les valeurs inférieures à value par value (écrêtage).
Remplace toutes les valeurs supérieures à value par value (écrêtage).
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.
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.
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.
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.
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).
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.
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.
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 :
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 :
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).
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.
Retourne trois listes contenant les informations sur l'histogramme de l'image. Chaque liste définit :
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 }