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:
Anzeige des Bildes in der gewünschten Ausrichtung (Spiegeln der Anzeige).
Spiegeln des Bayer-Demosaikmusters. So kann das Demosaikmuster entsprechend dem Sensorhersteller festgelegt werden.
ABER
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.„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
Siril (ab Version 0.99.4)
CCDCiel (seit Version 0.9.72)
KStars (seit 3.4.3)
SharpCap (seit Version 3.3)
FireCapture (seit Version 2.7)
N.I.N.A (seit Version 1.10)
MaxImDL (seit Version 6.23)
PixInsight (seit Version 1.8.8-6)
ASTAP (seit Version ß0.9.391)
APT (seit Version 3.86.3)
AstroDMx Capture (seit Version 0.80)
Astroart (seit Version 8.0)
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ü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) |