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 :

  1. Affichage de l'image avec l'orientation prévue ( afficher une image non inversée).

  2. Retourner le motif de matrice de Bayer. Le motif de Bayer peut donc être celui spécifié conforme par le fournisseur du capteur.

MAIS

  1. 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.

  2. 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é

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 enregistrés par Siril

Mots clés FITS

Type

Commentaire

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

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

ROWORDER

String

Ordre des lignes dans le tableau d'images

INSTRUME

String

Nom de l'instrument

TELESCOP

String

Télescope utilisé pour acquérir cette image

OBSERVER

String

Nom de l'observateur

DATE

String

Date UTC de création du fichier FITS

DATE-OBS

String

YYYY-MM-DDTh:mm:ss début de l'observation, UT

STACKCNT

Unsigned int

Images d'empilement

EXPTIME

Double

Temps d'exposition d'une seule image [s]

LIVETIME

Double

Durée totale d'exposition [s]

EXPSTART

Double

Heure de début de l'exposition (date julienne standard)

EXPEND

Double

Heure de fin d'exposition (date julienne standard)

XPIXSZ

Float

Taille du pixel X microns

YPIXSZ

Float

Taille du pixel Y microns

XBINNING

Unsigned int

Mode de binning de la caméra

YBINNING

Unsigned int

Mode de binning de la caméra

FOCALLEN

Double

Longueur focale de la caméra

CCD-TEMP

Double

Température de la CCD en C

SET-TEMP

Double

Réglage de la température en C

FILTER

String

Nom du filtre actif

IMAGETYP

String

Types d'image

OBJECT

String

Nom de l'objet d'intérêt

APERTURE

Double

Ouverture de l'instrument

ISOSPEED

Double

Réglage ISO de l'appareil photo

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

GAIN

Unsigned short

Gain de la caméra

OFFSET

Unsigned short

Offset de la caméra

CVF

Double

Facteur de conversion (e-/adu)

AIRMASS

Double

Airmass

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

DFTNORMX

String

Valeur de normalisation pour le canal #X

PROGRAM

String

Logiciel qui a créé ce HDU

CTYPE1

String

Type de coordonnées pour le premier axe

CTYPE2

String

Type de coordonnées pour le deuxième axe

CUNIT1

String

Unité de coordonnées

CUNIT2

String

Unité de coordonnées

EQUINOX

Double

Equinoxe équatorial

LONPOLE

Double

Longitude native du pôle céleste

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)

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)

CDELT1

Double

Taille du pixel en X (deg)

CDELT2

Double

Taille du pixel en Y (deg)

PCi_j

Double

Matrice de transformation linéaire (i, j)

CDi_j

Double

Matrice d'échelle (i, j)

A_ORDER

Double

Degré du polynôme SIP, axe 1, de pixel à ciel

B_ORDER

Double

Degré du polynôme SIP, axe 2, de pixel à ciel

AP_ORDER

Double

Degré du polynôme SIP, axe 1, ciel à pixel

BP_ORDER

Double

Degré du polynôme SIP, axe 2, ciel à pixel

A_i_j

Double

Coefficient polynomial SIP (i, j), axe 1, du pixel au ciel

B_i_j

Double

Coefficient polynomial SIP (i, j), axe 2, du pixel au ciel

AP_i_j

Double

Coefficient polynomial SIP (i, j), axe 1, du ciel au pixel

BP_i_j

Double

Coefficient polynomial SIP (i, j), axe 2, du ciel au pixel

PLTSOLVD

Logique

Solver Siril