FITS
Spécification
FITS signifie Flexible Image Transport System et est un standard de format de données astronomiques utilisé par les scientifiques professionnels tel que la NASA. FITS est bien plus qu'un format d'image (comme JPG ou TIFF) et est principalement conçu pour stocker des données scientifique dans des tableaux multidimensionnels.
Un fichier FITS se compose d'une ou plusieurs unités d'en-tête et de données (HDU), le premier HDU étant appelé "HDU primaire" ou "tableau primaire". Cinq types de données primaires sont pris en charge : octets non signés de 8 bits, entiers signés de 16 et 32 bits et réels flottants de 32 et 64 bits en simple et double précision. Le format FITS peut également stocker des entiers non signés de 16 et 32 bits.
Chaque unité d'en-tête est constituée d'un nombre quelconque de mots-clés enregistrés de 80 caractères qui ont la forme générale suivante :
KEYNAME = value / comment string
Les noms de mots-clés peuvent comporter jusqu'à 8 caractères et ne peuvent contenir que des lettres majuscules, des chiffres de 0 à 9, trait d'union et caractère de soulignement. Le nom du mot-clé est (généralement) suivi d'un signe égal et d'un espace (= ) dans les colonnes 9 et 10 de l'en-tête, puis de la valeur du mot-clé, qui peut être un nombre entier, un nombre à virgule flottante, une chaîne de caractères (entre guillemets simples) ou une valeur booléenne (la lettre T ou F).
Le dernier mot-clé de l'en-tête est toujours le mot-clé END
qui n'a pas de champ de valeur ou de commentaire.
Chaque unité d'en-tête commence par une série de mots-clés obligatoires qui spécifient la taille et le format de l'unité de données qui suit. L'en-tête principale d'une images à deux dimensions, par exemple, commence par les mots-clés suivants :
SIMPLE = T / file does conform to FITS standard
BITPIX = 16 / number of bits per data pixel
NAXIS = 2 / number of data axes
NAXIS1 = 440 / length of data axis 1
NAXIS2 = 300 / length of data axis 2
Note
Dans Siril, les fichiers FITS 64 bits ne sont pas supportés. Siril les lit mais les convertit en fichiers 32 bits.
Compression
La compression est le moyen de réduire la taille de l'image. Il existe de nombreuses méthodes de compression en fonction du type d'images utilisées. Cette compression peut être destructive, comme avec le JPEG, ou sans perte comme le propose le PNG.
Il est possible de travailler avec des fichiers FITS compressés. Au prix d'un temps de calcul plus long, la taille des images peut être considérablement réduite. Siril propose plusieurs algorithmes de compression qui sont les suivants :
Rice : L'algorithme Rice est simple et très rapide
GZIP 1 : L'algorithme gzip est utilisé pour compresser et décompresser les pixels de l'image. Gzip est l'algorithme de compression utilisé dans le logiciel libre GNU du même nom.
GZIP 2 : Les octets du tableau des valeurs des pixels de l'image sont mélangés par ordre décroissant de signification avant d'être compressés à l'aide de l'algorithme gzip. Cette méthode est particulièrement efficace lors de la compression de tableaux à virgule flottante.
Une option est associée à ces algorithmes, le Niveau de quantification :
Bien que les images en virgule flottante puissent être compressées sans perte (à l'aide de gzip, puisque Rice ne compresse que les tableaux d'entiers), ces images ne se compressent souvent pas très bien parce que les valeurs des pixels sont trop bruitées ; les bits de poids faible de la mantisse des valeurs des pixels contiennent en effet des motifs de bits aléatoires incompressibles. Pour obtenir une meilleure compression, il faut supprimer une partie de ce bruit, mais sans perdre l'information utile qu'il contient. Si elle est trop grande, on sous-échantillonne les valeurs des pixels, ce qui entraîne une perte d'informations dans l'image. En revanche, s'il est trop petit, il préserve une trop grande partie du bruit (voire l'amplifie) dans les valeurs des pixels, ce qui se traduit par une mauvaise compression.
Note
Les algorithmes de compression d'image supportés sont tous sans perte lorsqu'ils sont appliqués à des images FITS entières ; les valeurs des pixels sont préservées exactement sans perte d'information pendant le processus de compression et de décompression. Les images FITS à virgule flottante (qui ont BITPIX = -32
ou -64
) sont d'abord quantifiées en valeurs de pixels entiers mis à l'échelle avant d'être compressées. Cette technique permet d'obtenir des facteurs de compression beaucoup plus élevés qu'en utilisant simplement GZIP pour compresser l'image, mais cela signifie également que les valeurs flottantes originales des pixels peuvent ne pas être restituées avec précision lorsque l'image est décompressée. Lorsque cette technique est utilisée correctement, elle ne fait qu'éliminer le "bruit" des valeurs à virgule flottante sans perdre d'informations significatives.
Orientation des images FITS
Le standard FITS est un conteneur qui décrit comment stocker des données d'image et des métadonnées. Les outils professionnels, depuis les débuts du format FITS, comme ds9 (Harvard Smithsonian Center for Astrophysics), fv (FITS viewer de la NASA), stockent les images de bas en haut. Nous pourrions être tentés de dire que cela n'a pas vraiment d'importance, mais lorsque le dématriçage ou l'astrométrie sont impliqués, des problèmes se posent. Par exemple, le motif de Bayer RVVB habituel devient VBRV si l'image est à l'envers.
Aujourd'hui, malgré cela, la plupart des pilotes des caméras écrivent les données dans l'ordre descendant et nous devons nous en accommoder.
Pour ces raisons, nous avons récemment introduit, avec P. Chevalley de CCDCiel, un nouveau mot-clé FITS. Nous encourageons tous les producteurs de données, les développeurs INDI et ASCOM, à l'utiliser afin de faciliter les choses pour tout le monde.
Ce mot clé est ROWORDER
de type TSTRING
. Il peut prendre deux valeurs : BOTTOM-UP
et TOP-DOWN
.
Siril lit et affiche toujours les images dans l'ordre ascendant, mais si l'information descendante est spécifiée dans le mot-clé, alors Siril dématrice l'image avec le motif corrigé.
Pourquoi certains programmes écrivent-ils les images de manière ascendante ?
La raison en est la suivante : les mathématiques le font de cette façon.
De plus, la spécification FITS précise :
5.1. Conventions d'affichage des images
Il est très utile d'adopter une convention pour l'affichage des images transférées via le format FITS. De nombreux systèmes actuels de traitement d'images ont convergé vers une telle convention. Nous recommandons donc aux auteurs de FITS d'ordonner les pixels de manière à ce que le premier pixel du fichier FITS (pour chaque plan d'image) soit celui qui serait affiché dans le coin inférieur gauche (avec le premier axe croissant vers la droite et le deuxième axe croissant vers le haut) par le système d'imagerie de l'auteur de FITS. Cette convention est clairement utile en l'absence d'une description des coordonnées mondiales. Elle n'empêche pas un programme de consulter les descriptions des axes et d'outrepasser cette convention, ni l'utilisateur de demander un affichage différent. Cette convention ne dispense pas non plus les auteurs de FITS de fournir des descriptions complètes et correctes des coordonnées de l'image, permettant ainsi à l'utilisateur de déterminer la signification de l'image. L'ordre d'affichage de l'image est simplement une convention de commodité, alors que les coordonnées des pixels font partie de la physique de l'observation.
Avertissement
Le mot-clé ROWORDER
peut être utilisé pour :
Affichage de l'image avec l'orientation prévue ( afficher une image non inversée).
Retourner le motif de matrice de Bayer. Le motif de Bayer peut donc être celui spécifié conforme par le fournisseur du capteur.
MAIS
ROWORDER
ne doit pas être utilisé pour déplier les données de l'image pour l'empilement. Sinon, les nouvelles images deviendraient incompatibles avec les anciennes images darks et flats.ROWORDER
ne doit pas être utilisé pour déplier les données de l'image pour la résolution astrométrique. Cela rendrait la solution astrométrique incompatible avec d'autres programmes.
Logiciels utilisant ce mot-clé
Siril (depuis la version 0.99.4)
CCDCiel (depuis la version 0.9.72)
KStars (depuis 3.4.3)
SharpCap (depuis la version 3.3)
FireCapture (depuis la version 2.7)
N.I.N.A (depuis la version 1.10)
MaxImDL (depuis la version 6.23)
PixInsight (depuis la version 1.8.8-6)
ASTAP (depuis la version ß0.9.391)
APT (depuis la version 3.86.3)
AstroDMx Capture (depuis la version 0.80)
Astroart (depuis la version 8.0)
Récupérer la matrice de Bayer
L'ordre des lignes de l'image change la façon dont la matrice de Bayer doit être lue, mais il y a aussi deux mots-clés optionnels dans l'en-tête FITS qui ont un effet sur cela : XBAYROFF
et YBAYROFF
. Ils spécifient un décalage par rapport à la matrice de Bayer, pour commencer à la lire sur la première colonne ou la première ligne.
Pour aider les développeurs à intégrer les mots-clés ROWORDER
, XBAYROFF
et YBAYROFF
dans leurs logiciels, Han Kleijn de hnsky.org a créé des images de test, une pour chaque combinaison des trois mots-clés. Téléchargez-les ici : Bayer_test_pattern_v6.tar.gz.
Liste des mots-clés FITS
Siril peut lire et interpréter un large éventail de mots-clés. La liste suivante illustre les mots-clés non standard que le Siril enregistre si nécessaire. Certains mots-clés lus par le Siril peuvent ne pas apparaître dans cette liste. Par exemple, les mots-clés CCDTEMP
ou TEMPERAT
, qui indiquent la température du capteur, sont correctement lus, mais sont propagés sous le mot-clé CCD-TEMP
.
Mots clés FITS |
Type |
Commentaire |
---|---|---|
BZERO |
Double |
Décalage de la plage de données par rapport à celle d'une valeur non signée (unsigned short) |
BSCALE |
Double |
Facteur d'échelle par défaut |
MIPS-HI |
Unsigned short |
Coupure supérieure de visualisation |
MIPS-LO |
Unsigned short |
Coupure inférieure de visualisation |
MIPS-FHI |
Float |
Coupure supérieure de visualisation |
MIPS-FLO |
Float |
Coupure inférieure de visualisation |
PROGRAM |
String |
Logiciel qui a créé ce HDU |
FILENAME |
String |
Original Filename |
DATE |
String |
Date UTC de création du fichier FITS |
DATE-OBS |
String |
YYYY-MM-DDTh:mm:ss début de l'observation, UT |
IMAGETYP |
String |
Types d'image |
ROWORDER |
String |
Ordre des lignes dans le tableau d'images |
EXPTIME |
Double |
[s] Durée du temps d'exposition |
TELESCOP |
String |
Télescope utilisé pour acquérir cette image |
OBSERVER |
String |
Nom de l'observateur |
FILTER |
String |
Nom du filtre actif |
APERTURE |
Double |
Ouverture de l'instrument |
ISOSPEED |
Double |
Réglage ISO de l'appareil photo |
FOCALLEN |
Double |
[mm] Longueur focale |
CENTALT |
Double |
[deg] Altitude du télescope |
CENTAZ |
Double |
[deg] Azimut du télescope |
XBINNING |
Unsigned int |
Mode de binning de la caméra |
YBINNING |
Unsigned int |
Mode de binning de la caméra |
XPIXSZ |
Double |
[um] Taille du pixel en X |
YPIXSZ |
Double |
[um] Taille du pixel en Y |
INSTRUME |
String |
Nom de l'instrument |
CCD-TEMP |
Double |
[degC] température CCD |
SET-TEMP |
Double |
[decC] Température de consigne du CCD |
GAIN |
Unsigned short |
Gain du capteur |
OFFSET |
Unsigned short |
Offset du gain du capteur |
CVF |
Double |
[e-/ADU] Électrons par unité A/D |
BAYERPAT |
String |
Matrice de Bayer |
XBAYROFF |
Int |
Décalage X de la matrice de Bayer |
YBAYROFF |
Int |
Décalage Y de la matrice de Bayer |
FOCNAME |
String |
Nom de l'équipement de mise au point |
FOCPOS |
Int |
[pas] Position du focuseur |
FOCUSSZ |
Int |
[um] Taille du pas du focuseur |
FOCTEMP |
Double |
[degC] Température du focuseur |
STACKCNT |
Unsigned int |
Images d'empilement |
LIVETIME |
Double |
[s] Temps d'exposition après correction du temps mort |
EXPSTART |
Double |
[JD] Heure de début de l'exposition (date julienne standard) |
EXPEND |
Double |
[JD] Heure de fin d'exposition (date julienne standard) |
OBJECT |
String |
Nom de l'objet d'intérêt |
AIRMASS |
Double |
Masse d'air au centre du cadre (Gueymard 1993) |
SITELAT |
Double |
[deg] Latitude du site d'observation |
SITELONG |
Double |
[deg] Longitude du site d'observation |
SITEELEV |
Double |
[m] Élévation du site d'observation |
DFTTYPE |
String |
Module/phase d'une transformée de Fourier discrète |
DFTORD |
String |
Les fréquences spatiales basses/hautes sont situées au centre de l'image |
DFTNORM1 |
Double |
Valeur de normalisation pour le canal #1 |
DFTNORM2 |
Double |
Valeur de normalisation pour le canal #2 |
DFTNORM3 |
Double |
Valeur de normalisation pour le canal #3 |
CTYPE3 |
String |
Image RGB |
OBJCTRA |
String |
Ascension droite du centre de l'image (hms) |
OBJCTDEC |
String |
Déclinaison du centre de l'image (dms) |
RA |
Double |
Ascension droite du centre de l'image (deg) |
DEC |
Double |
Déclinaison du centre de l'image (deg) |
CTYPE1 |
String |
Projection TAN (gnomique) |
CTYPE2 |
String |
Projection TAN (gnomique) |
CUNIT1 |
String |
Projection TAN (gnomique) + distorsions SIP |
CUNIT2 |
String |
Projection TAN (gnomique) + distorsions SIP |
EQUINOX |
Double |
Equinoxe équatorial |
CRPIX1 |
Double |
Pixel de référence de l'axe 1 |
CRPIX2 |
Double |
Pixel de référence de l'axe 2 |
CRVAL1 |
Double |
Valeur de référence de l'axe 1 (deg) |
CRVAL2 |
Double |
Valeur de référence de l'axe 2 (deg) |
LONPOLE |
Double |
Longitude native du pôle céleste |
CDELT1 |
Double |
Taille du pixel en X (deg) |
CDELT2 |
Double |
Taille du pixel en Y (deg) |
PC1_1 |
Double |
Matrice de transformation linéaire (1, 1) |
PC1_2 |
Double |
Matrice de transformation linéaire (1, 2) |
PC2_1 |
Double |
Matrice de transformation linéaire (2, 1) |
PC2_2 |
Double |
Matrice de transformation linéaire (2, 2) |
CD1_1 |
Double |
Matrice d'échelle (1, 1) |
CD1_2 |
Double |
Matrice d'échelle (1, 2) |
CD2_1 |
Double |
Matrice d'échelle (2, 1) |
CD2_2 |
Double |
Matrice d'échelle (2, 2) |
PLTSOLVD |
Logique |
Solver Siril |