FITS Format

Spezifikation

FITS steht für Flexible Image Transport System und ist das Standardformat für astronomische Daten, das von professionellen Wissenschaftlern wie der NASA verwendet wird. FITS ist viel mehr als ein Bildformat (wie JPG oder TIFF) und wurde in erster Linie für die Speicherung wissenschaftlicher Daten entwickelt, die aus mehrdimensionalen Arrays bestehen.

Eine FITS-Datei besteht aus einer oder mehreren Header- und Dateneinheiten (HDUs), wobei die erste HDU als "primäre HDU" oder "primäres Array" bezeichnet wird. Es werden fünf primäre Datentypen unterstützt: 8-Bit-Bytes ohne Vorzeichen, 16- und 32-Bit-Ganzzahlen mit Vorzeichen sowie 32- und 64-Bit-Gleitkommazahlen mit einfacher und doppelter Genauigkeit. Das FITS-Format kann auch 16- und 32-Bit-Ganzzahlen ohne Vorzeichen speichern.

Jeder Headerblock besteht aus einer beliebigen Anzahl von 80-stelligen Schlüsselwortsätzen, die die folgende allgemeine Form haben:

KEYNAME = value / comment string

Der Name des Schlüsselworts kann bis zu 8 Zeichen lang sein und darf nur Großbuchstaben, die Ziffern 0-9, den Bindestrich und den Unterstrich enthalten. Auf den Schlüsselwortnamen folgen (in der Regel) ein Gleichheitszeichen und ein Leerzeichen (= ) in den Spalten 9 - 10 des Datensatzes, gefolgt von dem Wert des Schlüsselworts, der entweder eine Ganzzahl, eine Gleitkommazahl, eine Zeichenkette (in einfachen Anführungszeichen) oder ein boolescher Wert (der Buchstabe T oder F) sein kann.

Das letzte Schlüsselwort im Header ist immer das Schlüsselwort END, das keine Wert- oder Kommentarfelder enthält.

Jeder Headerblock beginnt mit einer Reihe von erforderlichen Schlüsselwörtern, die die Größe und das Format der folgenden Dateneinheit angeben. Der Header eines 2-dimensionalen primären Bildarrays beginnt beispielsweise mit den folgenden Schlüsselwörtern:

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

Bemerkung

In Siril werden 64-Bit-FITS-Dateien nicht unterstützt. Siril liest sie, konvertiert sie aber in 32-Bit-Dateien.

Komprimierung

Die Komprimierung ist eine Methode zur Verringerung der Dateigröße. Es gibt viele Komprimierungsmethoden, je nach Art der verwendeten Bilder. Diese Kompression kann destruktiv sein, wie bei JPEG, oder verlustfrei, wie bei PNG.

Es ist möglich, mit komprimierten FITS-Dateien zu arbeiten. Auf Kosten einer längeren Berechnungszeit kann die Größe der Dateien erheblich reduziert werden. Siril bietet mehrere Komprimierungsalgorithmen an, die im Folgenden aufgeführt sind:

  • Rice: Der Rice-Algorithmus ist einfach und sehr schnell

  • GZIP 1: Der gzip-Algorithmus wird zum Komprimieren und Dekomprimieren der Bildpixel verwendet. Gzip ist der Kompressionsalgorithmus, der in dem gleichnamigen freien GNU-Softwareprogramm verwendet wird.

  • GZIP 2: Die Bytes im Array der Bildpixelwerte werden in abnehmender Reihenfolge ihrer Bedeutung gemischt, bevor sie mit dem gzip-Algorithmus komprimiert werden. Dies ist normalerweise besonders effektiv bei der Komprimierung von Fließkomma-Arrays.

Diesen Algorithmen ist eine Option zugeordnet, die Quantisierungsstufe:

Während Bilder im Fließkommaformat verlustfrei komprimiert werden können (mit gzip, da Rice nur ganzzahlige Arrays komprimiert), lassen sich diese Bilder oft nicht sehr gut komprimieren, weil die Pixelwerte zu verrauscht sind; die weniger signifikanten Bits in der Mantisse der Pixelwerte enthalten effektiv nicht komprimierbare Zufalls-Bitmuster. Um eine höhere Komprimierung zu erreichen, muss man einen Teil dieses Rauschens entfernen, ohne jedoch den nützlichen Informationsgehalt zu verlieren. Ist er zu groß, werden die Pixelwerte unterabgetastet (undersampled), was zu einem Informationsverlust im Bild führt. Ist er jedoch zu klein, bleibt zu viel Rauschen in den Pixelwerten erhalten (oder das Rauschen wird sogar verstärkt), was zu einer schlechten Kompimierungsrate führt.

Bemerkung

Die unterstützten Bildkomprimierungsalgorithmen sind alle verlustfrei, wenn sie auf ganzzahlige FITS-Bilder angewandt werden; die Pixelwerte bleiben während des Komprimierungs- und Dekomprimierungsprozesses exakt und ohne Informationsverlust erhalten. Fließkomma-FITS-Bilder (mit BITPIX = -32 oder -64) werden zunächst in skalierte Integer-Pixelwerte quantisiert, bevor sie komprimiert werden. Diese Technik führt zu viel höheren Kompressionsfaktoren als die einfache Verwendung von GZIP zur Komprimierung des Bildes, bedeutet aber auch, dass die ursprünglichen Fließkomma-Pixelwerte möglicherweise nicht genau wiedergegeben werden, wenn das Bild entpackt wird. Wenn dies richtig gemacht wird, wird nur das "Rauschen" der Fließkommawerte entfernt, ohne dass wichtige Informationen verloren gehen.

Ausrichtung von FITS-Bildern

Der FITS-Standard ist ein Container, der beschreibt, wie Bilddaten und Metadaten gespeichert werden können. Professionelle Werkzeuge aus der Anfangszeit des FITS-Formats, wie ds9 (Harvard Smithsonian Center for Astrophysics), fv (FITS-Viewer der NASA), speichern Bilder von unten nach oben. Man könnte versucht sein zu sagen, dass dies keine Rolle spielt, aber wenn es um Debayern oder Astrometrie geht, treten Probleme auf. Zum Beispiel wird das übliche RGGB Bayer-Muster zu GBRG, wenn das Bild auf dem Kopf steht.

Heutzutage schreiben die meisten Kameratreiber die Daten trotzdem in der Reihenfolge von oben nach unten, und wir müssen damit zurechtkommen.

Aus diesen Gründen haben wir kürzlich zusammen mit P. Chevalley von CCDCiel ein neues FITS-Schlüsselwort eingeführt. Wir ermutigen alle Datenproduzenten, INDI- und ASCOM-Entwickler, es zu verwenden, um die Dinge für alle einfacher zu machen.

Dieses Schlüsselwort ist ROWORDER vom Typ TSTRING. Es kann zwei Werte annehmen: BOTTOM-UP und TOP-DOWN.

Siril liest und zeigt Bilder immer in der Reihenfolge von unten nach oben an. Wenn jedoch im Schlüsselwort Top-Down-Informationen angegeben sind, wird Siril das Bild mit dem korrigierten Muster debayert.

Warum schreiben manche Programme Bilder überhaupt von unten nach oben?

Der Grund dafür ist: Mathematik macht es so.

Außerdem sagt die FITS-Spezifikation:

5.1. Konventionen für die Bildanzeige

Es ist sehr hilfreich, eine Konvention für die Darstellung von Bildern, die im FITS-Format übertragen werden, festzulegen. Viele der aktuellen Bildverarbeitungssysteme haben sich auf eine solche Konvention geeinigt. Daher empfehlen wir den FITS-Schreibern, die Pixel so anzuordnen, dass das erste Pixel in der FITS-Datei (für jede Bildebene) dasjenige ist, das vom Bildverarbeitungssystem des FITS-Schreibers in der linken unteren Ecke angezeigt würde (wobei die erste Achse nach rechts und die zweite Achse nach oben ansteigt). Diese Konvention ist in Ermangelung einer Beschreibung der Weltkoordinaten eindeutig hilfreich. Sie schließt nicht aus, dass ein Programm sich die Achsenbeschreibungen ansieht und diese Konvention außer Kraft setzt, oder dass der Benutzer eine andere Darstellung anfordert. Diese Konvention entbindet die FITS-Autoren auch nicht davon, vollständige und korrekte Beschreibungen der Bildkoordinaten zu liefern, die es dem Benutzer ermöglichen, die Bedeutung des Bildes zu bestimmen. Die Anordnung des Bildes für die Anzeige ist lediglich eine Konvention der Bequemlichkeit, während die Koordinaten der Pixel Teil der Physik der Beobachtung sind.

Warnung

Das Schlüsselwort ROWORDER kann verwendet werden für:

  1. Anzeige des Bildes in der gewünschten Ausrichtung (Spiegeln der Anzeige).

  2. Spiegeln des Bayer-Demosaikmusters. So kann das Demosaikmuster entsprechend dem Sensorhersteller festgelegt werden.

ABER

  1. Der Befehl ROWORDER darf nicht verwendet werden, um die Bilddaten für das Stacking zu spiegeln. Andernfalls würden neue Bilder mit älteren Dark- und Flatbildern inkompatibel werden.

  2. „ROWORDER“ darf nicht verwendet werden, um die Bilddaten für die astrometrische Lösung zu spiegeln. Dies würde dazu führen, dass die astrometrische Lösung nicht mit anderen Programmen kompatibel ist.

Software die dieses Schlüsselwort unterstützt

Abrufen der Bayer-Matrix

Die Reihenfolge der Bildzeilen ändert die Art und Weise, wie die Bayer-Matrix gelesen werden sollte, aber es gibt auch zwei optionale FITS-Header-Schlüsselwörter, die sich darauf auswirken: XBAYROFF und YBAYROFF. Sie geben einen Offset zur Bayer-Matrix an, um das Lesen in der ersten Spalte oder der ersten Zeile zu beginnen.

Um Entwicklern bei der Integration der Schlüsselwörter „ROWORDER“, „XBAYROFF“ und „YBAYROFF“ in ihre Software zu helfen, wurden einige Testbilder von Han Kleijn von „hnsky.org“ <https://www.hnsky.org > erstellt`_, eines für jede Kombination der drei Schlüsselwörter. Laden Sie sie hier herunter: Bayer_test_pattern_v6.tar.gz.

Liste der FITS-Schlüsselwörter

Siril kann eine Vielzahl von Schlüsselwörtern lesen und interpretieren. Die folgende Liste veranschaulicht die nicht standardmäßigen Schlüsselwörter, die Siril bei Bedarf erkennt. Einige von Siril gelesene Schlüsselwörter erscheinen möglicherweise nicht in dieser Liste. Beispielsweise werden die Schlüsselwörter „CCDTEMP“ oder „TEMPERAT“, die die Temperatur des Sensors angeben, korrekt gelesen, aber unter dem Schlüsselwort „CCD-TEMP“ weitergegeben.

FITS-Schlüsselwörter die Siril speichert

FITS Schlüsselwort

Typ

Kommentar

MIPS-HI

Unsigned short

Oberer Grenzwert der Visualisierung

MIPS-LO

Unsigned short

Unterer Grenzwert der Visualisierung

MIPS-FHI

Float

Oberer Grenzwert der Visualisierung

MIPS-FLO

Float

Unterer Grenzwert der Visualisierung

BZERO

Double

Datenbereich Offset zu dem von Vorzeichenlosen Shorts verschieben

BSCALE

Double

Standard-Skalierungsfaktor

ROWORDER

String

Reihenfolge der Zeilen in einem Bildarray

INSTRUME

String

Name des Instruments

TELESCOP

String

Name des für die Aufnahme genutzten Teleskops

OBSERVER

String

Name des Beobachters

DATE

String

Datum zu dem das FITS erstellt wurde als UTC-Datum

DATE-OBS

String

YYYY-MM-DDThh:mm:ss Beobachtungsbeginn, UT

STACKCNT

Unsigned int

Anzahl gestackter Einzelbilder

EXPTIME

Double

Belichtungszeit der Einzelbilder [s]

LIVETIME

Double

Gesamtbelichtungszeit [s]

EXPSTART

Double

Startzeitpunkt der Belichtung (julianisches Datum)

EXPEND

Double

Endzeitpunkt der Belichtung (julianisches Datum)

XPIXSZ

Float

Größe der Pixel in X-Richtung in Micron

YPIXSZ

Float

Größe der Pixel in Y-Richtung in Micron

XBINNING

Unsigned int

Binning-Modus der Kamera

YBINNING

Unsigned int

Binning-Modus der Kamera

FOCALLEN

Double

Brennweite der Kamera

CCD-TEMP

Double

Temperatur des Bildsensors in °C

SET-TEMP

Double

Eingestellte Temperatur in °C

FILTER

String

Name des genutzten Filters

IMAGETYP

String

Bildtyp

OBJECT

String

Name des interessierenden Objekts

APERTURE

Double

Blende des Instruments

ISOSPEED

Double

ISO-Einstellung der Kamera

BAYERPAT

String

Bayermuster

XBAYROFF

Int

X-Offset der Bayer-Matrix.

YBAYROFF

Int

Y-Offset der Bayer-Matrix

GAIN

Unsigned short

Gain der Kamera

OFFSET

Unsigned short

Offset-Einstellung der Kamera

CVF

Double

Konvertierungsfaktor (e-/adu)

AIRMASS

Double

Luftmasse

SITELAT

Double

[Grad] Breitengrad des Beobachtungsortes

SITELONG

Double

[Grad] Längengrad des Beobachtungsortes

SITEELEV

Double

[m] Höhe des Beobachtungsortes

DFTTYPE

String

Modul/Phase einer diskreten Fourier-Transformation

DFTORD

String

Niedrige/hohe Raumfrequenz. befinden sich in der Bildmitte

DFTNORMX

String

Normalisierungswert für Kanal #X

PROGRAM

String

Software, die diese HDU erstellt hat

CTYPE1

String

Koordinatentyp für die erste Achse

CTYPE2

String

Koordinatentyp für die zweite Achse

CUNIT1

String

Einheit der Koordinaten

CUNIT2

String

Einheit der Koordinaten

EQUINOX

Double

Äquatoriales Äquinoktium

CTYPE3

String

RGB-Bild

OBJCTRA

String

Bildmitte Rektaszension (hms)

OBJCTDEC

String

Bildmitte Deklination (dms)

RA

Double

Bildmitte Rektaszension (Grad)

DEC

Double

Bildmitte Deklination (Grad)

CRPIX1

Double

Referenzpixel für Achse1

CRPIX2

Double

Referenzpixel für Achse2

CRVAL1

Double

Referenzwert für Achse1 (Grad)

CRVAL2

Double

Referenzwert für Achse2 (Grad)

CDELT1

Double

Pixelgröße X (Grad)

CDELT2

Double

Pixelgröße Y (Grad)

PC1_1

Double

Lineare Transformationsmatrix (1, 1)

PC1_2

Double

Lineare Transformationsmatrix (1, 2)

PC2_1

Double

Lineare Transformationsmatrix (2, 1)

PC2_2

Double

Lineare Transformationsmatrix (2, 2)

CD1_1

Double

Skalierungsmatrix (1, 1)

CD1_2

Double

Skalierungsmatrix (1, 2)

CD2_1

Double

Skalierungsmatrix (2, 1)

CD2_2

Double

Skalierungsmatrix (2, 2)

PLTSOLVD

Logical

Siril Solver (astrometrischer Löser)