Svenesis ImageMono Train
Version 1.7.12 – GPL-3.0-or-later
🚧 Aktuelle Version 1.7.12. Noch nicht im offiziellen Siril-Script-Repository – Download direkt von GitHub.
ImageMono Train verarbeitet eine komplette Beobachtungsnacht mit Mono-Kamera und Filterrad in einem Durchlauf: Es liest alle FITS-Header, gruppiert die Lights nach Filtern, kalibriert und stackt jeden Kanal einzeln, richtet die fertigen Master pixelgenau zueinander aus und komponiert daraus ein farbkalibriertes Bild – ohne einen einzigen Siril-Befehl von Hand.
📖 Die Entstehungsgeschichte und was ich dabei über Mono-Bildbearbeitung gelernt habe: Sieben Filter, ein Knopfdruck →
Für wen ist das gedacht?
Für Mono-Rigs mit Filterrad – also Kameras ohne Bayer-Matrix, bei denen die Farbe über einzeln aufgenommene Filterkanäle entsteht. Die Frames werden nie debayert; die gesamte Verarbeitungskette ist monochrom. Für One-Shot-Color-Kameras ist das Skript daher bewusst nicht geeignet.
Unterstützte Paletten
- LRGB – natürliche Farbe mit separater Luminanz
- RGB – Rot, Grün, Blau ohne Luminanz
- HaRGB – Standard-RGB mit Ha-Beimischung im Roten
- Schmalband-Zuordnungen – SHO (Hubble), HOO, HSO, HOS, OSS, OHH, OSH, OHS und HSS
- Realistic1 und Realistic2 – gewichtete Mischungen statt reiner Zuordnung
Die Einstellung Auto schlägt eine Palette vor, deren drei Kanäle tatsächlich gefüllt werden können; für HOO genügen zwei Filter, weil OIII auf Grün und Blau geht. Die Kanalzuordnung lässt sich von Hand ändern.
Bewusst nicht dabei sind die dynamischen Paletten vom Foraxx-Typ: Ihr Faktor t^(1−t) bricht bei linearer Helligkeit zusammen, und das Skript übergibt das Bild absichtlich linear.
Zwei Eingriffe, die wieder herausgenommen wurden
Beide aus demselben Grund: Das Komposit wird bewusst linear übergeben, und beide Schritte waren es nicht.
SCNR läuft nicht mehr auf dem Komposit. Siril rechnet die Grünentfernung als grün = min(grün, (rot + blau) / 2). Bei einem Breitbandbild ist das die richtige Kur gegen Farbrauschen – bei einer Zuordnungspalette trägt der Grünkanal aber eine echte Emissionslinie, bei SHO das Hα, und der Ausdruck beschneidet gemessenen Fluss überall dort, wo sie dominiert: bei einem M-16-Lauf im Mittel rund 3 Prozent des Hα, in den hellen Säulen erheblich mehr. Die Grünentfernung steht jetzt in todo.md als eigener Schritt nach dem Strecken.
Die Hα-Beimischung bei HaRGB ist linear geworden. Sie lief als Screen-Blend, 1−(1−R)·(1−k·Ha), dessen Kreuzterm quadratisch im Fluss ist. Am schwachen Ende unsichtbar, aber bei R = 0,8 und k·Ha = 0,4 liefert er 0,88 statt 1,2 – 27 Prozent Kompression genau der Sterne und Nebelkerne, die man anschließend streckt. Jetzt ist es (R + k·Ha) / (1+k), eine gewichtete Summe, und das Log nennt die beiden verwendeten Gewichte.
Rejection nach nutzbaren Frames
Das Verwerfungsverfahren wird pro Filter gewählt – und zwar anhand der Frames, die wirklich integriert werden, nicht der aufgenommenen. Ein Kanal, dem Wolken die Hälfte weggenommen haben, wird entsprechend behandelt:
- ≤ 4 Frames – Percentile Clipping (Sigma-Verfahren brauchen eine Population)
- 5–10 Frames – Sigma Clipping
- 11–30 Frames – Winsorized Sigma, das Arbeitspferd für eine normale Nacht
- 31–300 Frames – GESDT
- über 300 Frames – Linear Fit 5/4, das einen Trend über den Stack modelliert
Die Bandgrenzen stammen aus Cyril Richards AMSP-Skript im offiziellen Siril-Repository. Kennt ein Siril-Build GESDT nicht, fällt der Lauf auf Linear Fit zurück und schreibt das in den Bericht.
Kalibrierung
Alles optional und additiv: Session-Flats pro Filter, Darks und Bias aus einem wiederverwendbaren Library-Ordner. Die Zuordnung läuft über die FITS-Header, nicht über Dateinamen: Kamera, Gain, Binning und Bildmaße müssen exakt stimmen, die Temperatur auf ±2 °C. Die Belichtungszeit dagegen gilt in einem 5-Prozent-Band – das thermische Signal wächst mit der Zeit, ein 290-Sekunden-Dark entfernt also nahezu dasselbe wie ein 300-Sekunden-Dark, und es abzulehnen würde die Lights unkalibriert lassen. Welches Dark genommen wurde, steht im Log; jenseits des Bands läuft der Durchgang ohne weiter und sagt das auch.
Weitere Sicherungen: Darks werden zusätzlich nach Temperatur gruppiert, damit −10 °C und −20 °C nie zu einem Master verrechnet werden, der für keines von beiden stimmt. Bias wird nie gemeinsam mit einem Dark angewendet, weil das Master-Dark den Offset bereits enthält. Und ein Filter mit gemischten Belichtungszeiten wird in Teilen kalibriert – jede Belichtung mit ihrem eigenen Dark. Auf Wunsch entfernt eine kosmetische Korrektur Hot- und Coldpixel. Fertige Master landen unter lesbaren Namen in calib/ und werden beim nächsten Lauf wiederverwendet.
Kanalübergreifende Ausrichtung
Zwischen dem Ha-Stack und dem OIII-Stack liegen Stunden, in denen sich das Feld leicht verschoben und gedreht hat. Deshalb werden alle Master noch einmal gemeinsam registriert und mit -framing=min auf die gemeinsame Schnittmenge projiziert – erst dadurch liegen sie auf demselben Pixelraster und das Komposit bleibt frei von Farbsäumen.
Wie sehr das von der Auswahl abhängt, zeigt eine Messung aus einer M-16-Nacht: Werden alle sechs Master gemeinsam ausgerichtet, sucht sich Sirils Zwei-Pass-Registrierung ihre Referenz selbst – und ein sternreicher Breitbandkanal gewinnt. OIII fand dann nur 12 Sternpaare, die SPCC-Anpassung landete bei Sigma 5,76. Beschränkt man den Pool auf Ha und OIII, sind es 1.165 Paare und Sigma 2,73. Genau deshalb kann man das Stacken auf die Filter der Palette begrenzen.
Spektrophotometrische Farbkalibrierung
Statt generischem PCC nutzt das Skript SPCC mit der Quanteneffizienz des eigenen Sensors und den tatsächlichen Filterdurchlässen. Bei Schmalband wird über die Emissionslinien gerechnet – Ha 656,3 nm, OIII 500,7 nm, SII 671,6 nm – samt eingetragener Bandbreite. Der Sensorname wird vor dem Lauf geprüft, und zwar gegen die SPCC-Datenbank, die Siril selbst verwendet (nur lesend). Das ist nötig, weil ein unbekannter Name für Siril kein Fehler ist – es setzt still etwas anderes ein. Der IMX533 etwa steht in den Tabellen nur als OSC-Variante, während der Mono-Chip unter Sony IMX411/455/461/533/571 geführt wird; ein Filterrad-Rig würde sonst unbemerkt als Farbkamera kalibriert. Fehlende, mehrdeutige oder nur teilweise passende Namen werden gemeldet – eine nicht auffindbare Datenbank heißt nicht prüfbar, nie ungültig.
Berichte, die nichts beschönigen
Jeder Lauf schreibt zwei Markdown-Dateien in den Ausgabeordner. In output.md steht, was tatsächlich passiert ist – welcher Kanal welchen Algorithmus bekam, welche Kalibrierung griff, was übersprungen wurde und warum. todo.md beschreibt die anschließende Handarbeit mit den konkreten Menüpfaden in Siril. Beide beschreiben den echten Lauf, nicht den Normalfall: Übersprungene Filter, Rückfallebenen und verworfene Frames werden ausdrücklich benannt.
Beispielbericht ansehen Beispiel-Anleitung ansehen
Master wiederverwenden
Die ausgerichteten Master bleiben im Ordner masters/ liegen. Damit lässt sich eine andere Palette in Sekunden neu komponieren, ohne noch einmal zu stacken. Liegen die Master auf unterschiedlichen Rastern – etwa nach einem Lauf, der nur die Filter einer Palette gebaut hat – verweigert das Skript das Mischen, statt ein fehlerhaftes Bild zu erzeugen.
Weitere Eigenschaften
- Mehrere Nächte werden automatisch zusammengefasst, wenn sie unter einem Zielordner liegen
- Unterstützt
.fit,.fits,.ftssowie Rice-komprimierte.fz-Varianten - Qualitätsfilter nach FWHM, Rundheit, Sternzahl und Hintergrund – greifen bewusst erst ab 20 Frames
- Gewichtung wahlweise nach Schärfe, Rauschen oder Sternzahl
- Optionale Rejection-Maps zur Qualitätskontrolle
- Hintergrundextraktion wahlweise als Polynom oder RBF-Modell, das einem Gradienten folgen kann, der seine Richtung über das Bild ändert
- Optionale synthetische Luminanz für Schmalband-Nächte – ein ungewichtetes Mittel, und der Lauf sagt das auch: Ein deutlich schwächerer Kanal zieht das Ergebnis herunter, man hält es also besser gegen den stärksten Kanal
- Der Bericht enthält gemessene Werte: Nach der Registrierung liest das Skript Sirils Sequenzdaten zurück – FWHM, Rundheit und Sternzahl je Kanal. Was Siril nicht erfasst hat, erscheint als „—“ und nie als Null
- Flats aus mehreren Nächten werden vor dem Kombinieren gegeneinander geprüft – auf gemittelten und blockgerasterten Karten, nicht auf Einzelframes, und gegen einen selbst gemessenen Rauschboden: Die Referenznacht wird halbiert und mit sich selbst verglichen, denn zwei Hälften derselben Nacht unterscheiden sich um nichts als Rauschen. Darunter meldet der Lauf „kein Formunterschied nachweisbar“ statt einer Zahl ohne Bedeutung
- Der Plattenbedarf bleibt begrenzt, weil jede Generation von Zwischendateien freigegeben wird, sobald die nächste vollständig ist
- Ausgabe bleibt linear – auf Wunsch zusätzlich eine gestreckte Vorschau
Voraussetzungen
Siril 1.4+ mit Python-Unterstützung, sirilpy, PyQt6, astropy, numpy – die Abhängigkeiten werden beim ersten Start automatisch installiert. Für die Farbkalibrierung wird eine Internetverbindung oder ein lokaler Gaia-Katalog benötigt; ohne beides entsteht das Komposit trotzdem, dann unkalibriert.
⚠️ Nicht in Cloud-Ordnern arbeiten. Siril verlinkt die Frames per Symlink. Dropbox, OneDrive, iCloud Drive und Google Drive schreiben diese mitten im Lauf um, wodurch Dateien zwischen zwei Befehlen verschwinden können. Entweder auf einer lokalen Platte arbeiten oder zumindest output/_work/ von der Synchronisation ausnehmen.