Tile-Compile C++ Konfigurationsreferenz¶
Diese Dokumentation beschreibt alle Konfigurationsoptionen für tile_compile.yaml basierend auf der C++ Implementierung in configuration.hpp und den Schema-Dateien tile_compile.schema.json / tile_compile.schema.yaml.
Quelle der Wahrheit für Defaults: include/tile_compile/config/configuration.hpp
Schema-Version: v3
Referenz: Methodik v3.3
Dokumentationsstand (2026-03-30):
- bge.fit.robust_loss und bge.fit.huber_delta sind als Benutzerparameter dokumentiert und konfigurierbar.
- bge.min_valid_sample_fraction_for_apply und bge.min_valid_samples_for_apply sind als kanalweise BGE-Apply-Grenzwerte dokumentiert.
- PCC-Dokumentation umfasst die aktiven Stabilitäts- und Apply-Parameter (max_condition_number, max_residual_rms, apply_attenuation, chroma_strength, k_max).
- TILE_RECONSTRUCTION-Boundary-Diagnostik ist als Laufzeit-Artefakt dokumentiert; es gibt aktuell keinen dedizierten Seam-Korrektur-Config-Block.
- bge.tile_weight_lambda_structure ist auf den aktuellen Default 1.0 abgeglichen.
- stacking.common_overlap_required_fraction und stacking.tile_common_valid_min_fraction sind als aktive Stacking-Parameter mit den strikten Defaults 1.0 / 1.0 dokumentiert.
💡 Für praktische Beispiele und Anwendungsfälle siehe: Konfigurationsbeispiele & Best Practices
Inhaltsverzeichnis¶
- Pipeline
- Output
- Data
- Linearity
- Calibration
- Assumptions
- Normalization
- Registration
- Tile Denoise
- Global Metrics
- Tile
- Local Metrics
- Synthetic
- Reconstruction
- Debayer (automatische Phase)
- Astrometry
- BGE (Background Gradient Extraction) NEU in v3.3
- PCC
- Stacking
- Validation
- Runtime Limits
1. Pipeline¶
Grundlegende Pipeline-Steuerung.
pipeline.mode¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | production, test |
| Default | "production" |
Zweck: Bestimmt den Ausführungsmodus der Pipeline.
production: Vollständige Verarbeitung mit allen Qualitätsprüfungen und Phasentest: Reduzierte Verarbeitung für schnelle Tests (weniger Iterationen, reduzierte Validierung)
pipeline.abort_on_fail¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Bestimmt, ob die Pipeline bei kritischen Fehlern sofort abbricht.
true: Pipeline stoppt beiphase_end(error)— empfohlen für Produktionfalse: Pipeline versucht fortzufahren (nützlich für Debugging, um alle Phasen-Outputs zu erhalten)
2. Output¶
Steuerung der Ausgabeverzeichnisse und welche Zwischenergebnisse geschrieben werden.
output.registered_dir¶
| Eigenschaft | Wert |
|---|---|
| Typ | string |
| Default | "registered" |
Zweck: Unterverzeichnis im Run-Ordner für registrierte Frames (relativ zu runs/<run_id>/outputs/).
output.write_registered_frames¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Registrierte Frames als FITS auf Disk schreiben.
true: Jeder registrierte Frame wird alsreg_XXXXX.fitgespeichert — hoher Speicherbedarf!false: Registrierte Frames werden nur im Speicher gehalten
Hinweis: In tile_compile.yaml steht true, der C++ Default ist false. Nur für Debugging empfohlen.
output.crop_to_nonzero_bbox¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Finalen Stack auf die Bounding Box aller nicht-null Pixel zuschneiden.
true: Entfernt leere Ränder vom finalen Bild. Nur Pixel mit Werten > 0 werden behalten. Reduziert die Dateigröße und entfernt unnötige schwarze Ränder.false: Behält die volle Canvas-Größe bei, inklusive leerer Ränder.
Hinweis: Die Funktion wird nach der Stack-Phase aber vor dem Debayer (bei OSC) angewendet. Die Tile-Offsets werden entsprechend angepasst. Ungueltige Canvas-Bereiche bleiben maskiert und sollen nicht in nachgelagerte Berechnungen wie Debayer/BGE/PCC einfliessen.
3. Data¶
Bilddaten-Eigenschaften. Teilweise automatisch aus dem FITS-Header ermittelt, teilweise konfigurierbar.
data.image_width¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 0 (automatisch erkannt) |
Zweck: Bildbreite in Pixeln. Wird normalerweise automatisch aus dem FITS-Header (NAXIS1) gelesen. Kann in der Config vorbelegt werden, um vor dem Run eine Erwartung zu setzen.
data.image_height¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 0 (automatisch erkannt) |
Zweck: Bildhöhe in Pixeln. Wird aus FITS-Header (NAXIS2) gelesen.
data.color_mode¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | OSC, MONO, RGB |
| Default | "OSC" |
Zweck: Erwarteter Farbmodus der Kamera.
| Modus | Beschreibung |
|---|---|
OSC |
One-Shot-Color — Farbkamera mit Bayer-Matrix (CFA). Pipeline arbeitet CFA-aware |
MONO |
Monochrome Kamera ohne Farbfilter. Einzelkanal-Verarbeitung |
RGB |
RGB-Daten (3 Kanäle). Derzeit nicht aktiv im C++ Runner |
Verhalten: Wird aus FITS-Header (BAYERPAT vorhanden → OSC, sonst MONO) automatisch erkannt. Bei Abweichung zur Config wird gewarnt, der erkannte Modus hat Vorrang.
data.bayer_pattern¶
| Eigenschaft | Wert |
|---|---|
| Typ | string |
| Default | "GBRG" |
Zweck: Bayer-Pattern für OSC-Kameras. Bestimmt die Farbfilter-Anordnung auf dem Sensor.
| Pattern | Zeile 0 | Zeile 1 |
|---|---|---|
RGGB |
R G | G B |
BGGR |
B G | G R |
GBRG |
G B | R G |
GRBG |
G R | B G |
Wichtig: Ein falsches Bayer-Pattern führt zu komplett falschen Farben. Wird aus FITS-Header BAYERPAT gelesen, Fallback auf Config-Wert.
data.linear_required¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Schaltet die strikte Entfernung nicht-linearer Frames ein/aus.
- Non-lineare Frames werden nicht entfernt, es wird nur gewarnt (
warn_only).
Zusammenspiel mit linearity.enabled: Die Linearitätsprüfung muss enabled=true sein, damit Warnungen für non-lineare Frames entstehen.
4. Linearity¶
Linearitätsprüfung der Input-Frames. Stellt sicher, dass keine nichtlinearen Operationen (Stretch, Curves) angewendet wurden.
linearity.enabled¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Aktiviert die Linearitätsprüfung in Phase 0 (SCAN_INPUT).
linearity.max_frames¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 8 |
Zweck: Maximale Anzahl Frames in der Stichprobe für die Linearitätsprüfung.
Verhalten: Aus N Frames werden bis zu max_frames gleichmäßig verteilt ausgewählt und geprüft. Nicht alle Frames werden getestet — die Stichprobe reicht zur zuverlässigen Erkennung.
linearity.min_overall_linearity¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0.0 – 1.0 |
| Default | 0.9 |
Zweck: Mindest-Linearitäts-Score (0 = komplett nichtlinear, 1 = perfekt linear). Frames unter diesem Schwellenwert gelten als nicht-linear.
linearity.strictness¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | strict, moderate, permissive |
| Default | "strict" |
Zweck: Strictness-Level für die Linearitäts-Validierung.
| Level | Beschreibung |
|---|---|
strict |
Strenge Prüfung — empfohlen für kalibrierte Daten |
moderate |
Moderate Toleranz — für leicht vorverarbeitete Daten |
permissive |
Hohe Toleranz — nur für bekannt problematische Daten |
5. Calibration¶
Kalibrierungs-Einstellungen (Bias, Dark, Flat). Wird vor der Pipeline auf die Raw-Frames angewendet.
calibration.use_bias / calibration.use_dark / calibration.use_flat¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false (alle drei) |
Zweck: Aktiviert die jeweilige Kalibrierung.
- Bias: Subtrahiert das Ausleserauschen (Offset)
- Dark: Subtrahiert thermisches Rauschen (Dunkelstrom)
- Flat: Korrigiert Vignettierung und Staubkörner
Laufzeitverhalten: Jede aktivierte Stufe benötigt mindestens eine
konfigurierte Quelle:
- Verzeichnis über *_dir
- oder explizites Master-Frame über *_master
calibration.bias_use_master / calibration.dark_use_master / calibration.flat_use_master¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false (alle drei) |
Zweck: Wenn true, wird ein fertiges Master-Frame aus dem angegebenen Pfad geladen statt aus Einzelframes gemittelt.
calibration.dark_already_bias_corrected¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Kennzeichnet ein Master-Dark als bereits bias-korrigiert. Wenn false und use_bias: true, zieht der Runner den Bias intern zuerst vom Dark ab, damit der Offset nicht doppelt vom Light subtrahiert wird.
calibration.dark_auto_select¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Automatische Dark-Auswahl basierend auf Belichtungszeit (und optional Temperatur).
calibration.dark_match_exposure_tolerance_percent¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | 0 |
| Default | 5.0 |
Zweck: Maximale Abweichung der Belichtungszeit bei Dark-Matching in Prozent.
calibration.dark_match_use_temp / calibration.dark_match_temp_tolerance_c¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean / number |
| Default | false / 2.0 |
Zweck: Wenn dark_match_use_temp=true, wird zusätzlich die Sensor-Temperatur für Dark-Matching berücksichtigt (±temp_tolerance_c °C).
calibration.bias_dir / calibration.darks_dir / calibration.flats_dir¶
| Eigenschaft | Wert |
|---|---|
| Typ | string |
| Default | "" (leer) |
Zweck: Verzeichnispfade für Bias/Dark/Flat-Einzelframes (zum Erzeugen von Master-Frames).
calibration.bias_master / calibration.dark_master / calibration.flat_master¶
| Eigenschaft | Wert |
|---|---|
| Typ | string |
| Default | "" (leer) |
Zweck: Pfade zu fertigen Master-Frames (nur wenn *_use_master=true).
calibration.pattern¶
| Eigenschaft | Wert |
|---|---|
| Typ | string |
| Default | "*.fit*" |
Zweck: Glob-Pattern für Kalibrierungsdateien.
6. Assumptions¶
Schwellenwerte und Annahmen für Pipeline-Entscheidungen (Normal Mode vs. Reduced Mode).
assumptions.frames_min¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 50 |
Zweck: Minimale nutzbare Frame-Anzahl, bevor der Run abbricht oder in den Emergency-Reduced-Mode fällt.
assumptions.frames_reduced_threshold¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 200 |
Zweck: Schwellenwert für den Wechsel zwischen Normal Mode und Reduced Mode.
Die Runtime verwendet frames_min und frames_reduced_threshold direkt.
| Frame-Anzahl | Modus |
|---|---|
< frames_min |
Warnung / Abbruch |
frames_min ≤ N < frames_reduced_threshold |
Reduced Mode (kein Clustering, keine synthetischen Frames) |
N ≥ frames_reduced_threshold |
Normal Mode (alle Phasen) |
assumptions.reduced_mode_skip_clustering¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Überspringt STATE_CLUSTERING und SYNTHETIC_FRAMES im Reduced Mode.
true(empfohlen): Tile-Rekonstruktionsergebnis wird direkt als finales Bild verwendetfalse: Führt auch im Reduced Mode Clustering durch (mit eingeschränktem K-Bereich)
assumptions.reduced_mode_cluster_range¶
| Eigenschaft | Wert |
|---|---|
| Typ | array [2 integers] |
| Default | [5, 10] |
Zweck: Cluster-Anzahl-Bereich [k_min, k_max] für Reduced Mode (nur relevant wenn reduced_mode_skip_clustering=false).
7. Normalization¶
Hintergrund-Normalisierung (Pflicht gemäß Methodik v3 §4).
normalization.enabled¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
| Konstant | Muss true sein |
Zweck: Normalisierung ist immer aktiviert (Methodik-Zwang). Wird auf false gesetzt, bricht die Pipeline ab.
normalization.mode¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | background, median |
| Default | "background" |
Zweck: Normalisierungsmethode.
| Methode | Beschreibung | Empfehlung |
|---|---|---|
background |
Sigma-Clip-Background-Maske → Median der Background-Pixel → Division | Empfohlen |
median |
Einfacher Median aller Pixel → Division | Fallback |
Die background-Methode verwendet eine Sigma-Clipping-Maske, um Sterne und Objekte auszuschließen und nur den echten Hintergrund zu schätzen.
normalization.per_channel¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Kanalweise Normalisierung bei OSC-Daten.
true(empfohlen): Jeder Bayer-Kanal (R, G, B) wird separat normalisiert. Kompensiert kanalabhängige Hintergrundunterschiede (z.B. Lichtverschmutzung)false: Einheitliche Normalisierung über alle Pixel
8. Registration¶
Geometrische Registrierung (Ausrichtung) aller Frames auf einen Referenz-Frame.
registration.engine¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | triangle_star_matching, star_similarity, hybrid_phase_ecc, robust_phase_ecc |
| Default | "triangle_star_matching" |
Zweck: Primäre Registrierungsmethode. Intern wird immer eine 6-stufige Kaskade durchlaufen. Der engine-Wert bestimmt die bevorzugte Methode.
| Engine | Beschreibung | Stärke |
|---|---|---|
triangle_star_matching |
Dreiecks-Asterismus-Matching | Rotationsinvariant, ideal für Alt/Az, klarer Himmel |
star_similarity |
Stern-Paar-Distanz-Matching | Schnell bei kleinen Versätzen |
hybrid_phase_ecc |
Phase-Korrelation + ECC | Ohne Sternerkennung, für Nebel |
robust_phase_ecc |
LoG-Gradient-Preprocessing + Pyramiden-Phase+ECC | Empfohlen bei Wolken/Nebel, entfernt Gradienten vor Korrelation |
Kaskade:
- mit
registration.enable_star_pair_fallback=true: Triangle Stars → Star Pairs → Trail Endpoints → AKAZE Features → Robust Phase+ECC → Hybrid Phase+ECC → Identity-Fallback - mit
registration.enable_star_pair_fallback=false: Triangle Stars → Trail Endpoints → AKAZE Features → Robust Phase+ECC → Hybrid Phase+ECC → Identity-Fallback
registration.enable_star_pair_fallback¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Aktiviert/deaktiviert den zusätzlichen Star-Pairs-Fallback zwischen Triangle Stars und Trail Endpoints.
Auf false setzen, um die Star-Pairs-Stufe für eine strengere Fallback-Policy zu deaktivieren.
Hinweis (Strict v3.3.9): Fuer das strikte Profil registration.enable_star_pair_fallback: false setzen.
Temporal-Smoothing (v3.2.3+, automatisch aktiv): Bei fehlgeschlagener direkter Registrierung i→ref wird automatisch versucht:
1. i→(i-1)→ref — Registrierung zum Vorgänger-Frame, dann Warp-Verkettung
2. i→(i+1)→ref — Registrierung zum Nachfolger-Frame, dann Warp-Verkettung
Alle verketteten Warps werden mit NCC gegen den Referenz-Frame validiert. Besonders wirksam bei kontinuierlicher Feldrotation (Alt/Az nahe Pol) und Wolken/Nebel. Logs: [REG-TEMPORAL]
registration.allow_rotation¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Erlaubt Rotation bei der Registrierung.
true(empfohlen): Similarity/Euclidean Transform (Translation + Rotation + ggf. Skalierung)false: Nur Translation
Wichtig: Bei Feldrotation (Alt/Az-Montierung) muss true gesetzt sein. Keine Rotationslimits — auch >20° Rotation wird akzeptiert.
registration.star_topk¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 3 |
| Default | 150 |
Zweck: Anzahl der hellsten Sterne, die für Star-basiertes Matching verwendet werden.
Hinweis: tile_compile.yaml und der C++ Default sind jetzt identisch. Höhere Werte erhöhen die Robustheit bei schwierigen Feldern, aber auch die Rechenzeit.
registration.star_min_inliers¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 2 |
| Default | 4 |
Zweck: Minimale Anzahl übereinstimmender Sterne (Inlier) für eine akzeptierte Registrierung.
Empfehlung: 5–10. Zu niedrig → falsche Matches werden akzeptiert. Zu hoch → gute Matches werden abgelehnt.
registration.star_inlier_tol_px¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 4.0 |
Zweck: Toleranz in Pixeln für die Zuordnung von Sternen als Inlier (nach Transformation).
Hinweis: tile_compile.yaml und der C++ Default sind jetzt identisch. Bezieht sich auf die halbe Auflösung (2× Downsample in der Registrierung).
registration.star_dist_bin_px¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 5.0 |
Zweck: Bin-Breite in Pixeln für das Paar-Abstands-Histogramm in der star_similarity-Methode.
Hinweis: tile_compile.yaml und der C++ Default sind jetzt identisch. Kleinere Werte sind genauer, größere Werte toleranter.
registration.reject_outliers¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Aktiviert die automatische Verwerfung implausibler globaler Registrierungs-Warps vor PREWARP/TILE-Phasen.
true: Low-CC-, Shift-, Reflection- und Scale-Outlier werden auf Identity gesetztfalse: Keine zusätzliche Outlier-Verwerfung nach der Registrierung
Logging: Jeder verworfene Frame wird als warning in logs/run_events.jsonl protokolliert und zusätzlich in phase_end(REGISTRATION) unter reg_rejected_frames abgelegt.
registration.reject_cc_min_abs¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 – 1 |
| Default | 0.25 |
Zweck: Absolute Untergrenze für den Korrelationswert (CC) in der Registrierungs-Outlier-Erkennung.¶
registration.reject_shift_px_min¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >=0 |
| Default | 100.0 |
Zweck: Feste Mindestgrenze (Pixel) für Shift-Outlier-Verwerfung.
Hinweis: Effektiver Shift-Grenzwert ist max(reject_shift_px_min, reject_shift_median_multiplier * median(shift_px)).
registration.reject_shift_median_multiplier¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 5.0 |
Zweck: Skalenfaktor für den robusten Shift-Outlier-Grenzwert relativ zur Medianverschiebung.
registration.reject_scale_min / registration.reject_scale_max¶
| Eigenschaft | Wert |
|---|---|
| Typ | number / number |
| Default | 0.92 / 1.08 |
Zweck: Zulässiger Bereich für den geschätzten Similarity-Scale bei globaler Registrierung.
- Scale außerhalb
[reject_scale_min, reject_scale_max]wird als Outlier verworfen. - Zusätzlich werden Reflection-Warps (
det < 0) immer verworfen.
registration.max_blind_chain_depth¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 0 |
| Maximum | 100 |
| Default | 0 |
Zweck: Maximale Tiefe für Blind-Chain-Rescue. 0 = automatisch (N/10, min 12, max 50).
- Wert 0 (auto): Automatische Berechnung basierend auf Frame-Anzahl N. Formel:
clamp(N/10, 12, 50) - Wert >0: Manuelle Überschreibung der maximalen Chain-Tiefe
Hinweis: Höhere Werte erlauben längere Ketten bei Wolkenblöcken, erhöhen aber auch das Risiko von Drift-Fehlern.
registration.blind_chain_strong_anchor_cc¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | 0.01 |
| Maximum | 0.5 |
| Default | 0.08 |
Zweck: CC-Schwelle für "starke Anker" in Blind-Chains. Frames mit höherem CC können tiefere Ketten starten.
Hinweis: Niedrigere Werte erlauben mehr Frames als starke Anker (aggressiver), höhere Werte sind konservativer.
registration.blind_chain_drift_threshold_px¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | 0.5 |
| Maximum | 10.0 |
| Default | 2.0 |
Zweck: Maximal erlaubte Drift in Pixeln pro Frame innerhalb einer Blind-Chain.
- Die Kette wird abgebrochen wenn die kumulative Drift diesen Wert überschreitet
- Schützt vor akkumulierenden Fehlern in langen Ketten
registration.use_astrometry¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Aktiviert astrometrische Rescue für Frames, die alle anderen Algorithmen nicht registrieren können.
Voraussetzungen:
- ASTAP-Binary muss verfügbar sein (siehe astrometry.astap_bin)
- Lokaler Sternenkatalog muss vorhanden sein (siehe astrometry.astap_data_dir)
Hinweis: Bei sehr hellen Sternen (z.B. Capella) auf false setzen, da ASTAP Probleme mit überbelichteten Zentren hat.
registration.enable_local_background_subtraction¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Aktiviert lokale Hintergrundsubtraktion vor der Sternerkennung.
Empfohlen bei: - Starkem Mondlicht mit Gradienten - Starmer Hintergrundstruktur (Nebel, Galaxien) - Unebenem Hintergrund durch Flat-Korrektur-Fehler
registration.star_shift_radius_px¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Default | 200.0 |
| Minimum | 10 |
| Maximum | 2000 |
Zweck: Suchradius für den Shift-Konsistenz-Filter in triangle_star_matching (Pixel im Proxy-Bild, halbe Auflösung). Nach dem Dreiecks-Voting wird für jedes Stern-Paar geprüft, welche anderen Paare einen ähnlichen Shift implizieren (innerhalb dieses Radius). Das Paare-Cluster mit dem höchsten Support wird als Anker gewählt; alle inkonsistenten Paare werden verworfen. Der Radius muss den maximalen erwarteten Inter-Frame-Shift abdecken.
Wann anpassen:
- Äquatoriale Montierung mit gutem Tracking (kleine Shifts): 60
- Alt/Az-Montierung (DWARF II, Seestar, mehrstündige Session): 200–400
- Sehr lange Alt/Az-Session (>4h, großer Shift-Bereich): 400–600
⚠️ Zu kleiner Radius (z.B. 60px bei Alt/Az) führt dazu, dass falsche Match-Cluster den echten Shift-Cluster als Anker verdrängen → alle Frames scheitern beim Triangle-Matching.
8b. Dithering¶
dithering.enabled¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Kennzeichnet Dither-Session. Bei aktivem Flag werden in global_registration.json zusätzliche Dither-Diagnosen (detected_count/fraction) aus den gemessenen globalen Shifts geschrieben.
dithering.min_shift_px¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | 0 |
| Default | 0.5 |
Zweck: Mindest-Verschiebung in Pixeln, ab der ein Frame als "gedithert" gezählt wird.
9. Tile Denoise¶
Optionale Tile-Denoise-Stufe mit zwei Komponenten:
tile_denoise.soft_threshold.*(Default aktiv)tile_denoise.wiener.*(Default inaktiv)
tile_denoise.soft_threshold.enabled¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Aktiviert Soft-Threshold-Denoising pro Tile.
tile_denoise.soft_threshold.blur_kernel¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 3 |
| Default | 31 |
Zweck: Kernelgröße für die lokale Hintergrundschätzung (Box-Blur).
tile_denoise.soft_threshold.alpha¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 1.5 |
Zweck: Schwellenfaktor für das Soft-Thresholding (tau = alpha * sigma_tile).
tile_denoise.soft_threshold.skip_star_tiles¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Stern-dominierte Tiles vom Soft-Thresholding ausnehmen.
tile_denoise.wiener.enabled¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Aktiviert den Wiener-Filter in der Tile-Denoise-Stufe.
tile_denoise.wiener.snr_threshold¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | 0 |
| Default | 5.0 |
Zweck: SNR-Schwelle; oberhalb dieses Werts wird typischerweise nicht gefiltert.
tile_denoise.wiener.q_min¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | -1 bis q_max |
| Default | -0.5 |
tile_denoise.wiener.q_max¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 – 1 |
| Default | 1.0 |
tile_denoise.wiener.q_step¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 0.1 |
tile_denoise.wiener.min_snr¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | 0 |
| Default | 2.0 |
tile_denoise.wiener.max_iterations¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 10 |
chroma_denoise (struktur-schützende Farbrausch-Reduktion)¶
Optionale, chroma-selektive Denoise-Erweiterung für OSC-Daten. Idee: Luminanz/Struktur möglichst erhalten, Farbrauschen primär in Cb/Cr (oder äquivalenten Opponent-Kanälen) reduzieren.
Hinweis: Wirkt nur im OSC-Pfad.
apply_stagesteuert, ob vor dem Tile-Overlap-Add (pre_stack_tiles) oder auf dem finalen linearen RGB-Stack (post_stack_linear) gefiltert wird.
chroma_denoise:
enabled: true
color_space: ycbcr_linear # ycbcr_linear | opponent_linear
apply_stage: post_stack_linear # pre_stack_tiles | post_stack_linear
protect_luma: true
luma_guard_strength: 0.75 # 0..1
star_protection:
enabled: true
threshold_sigma: 2.2
dilate_px: 2
structure_protection:
enabled: true
gradient_percentile: 85
chroma_wavelet:
enabled: true
levels: 3
threshold_scale: 1.25
soft_k: 1.0
chroma_bilateral:
enabled: true
sigma_spatial: 1.2
sigma_range: 0.035
blend:
mode: chroma_only
amount: 0.85 # 0..1
Presets¶
1) Konservativ¶
Für bereits saubere Daten, minimales Risiko für Farbsättigungs- und Detailverlust.
chroma_denoise:
enabled: true
color_space: ycbcr_linear
apply_stage: post_stack_linear
protect_luma: true
luma_guard_strength: 0.85
star_protection: { enabled: true, threshold_sigma: 2.6, dilate_px: 2 }
structure_protection: { enabled: true, gradient_percentile: 88 }
chroma_wavelet: { enabled: true, levels: 2, threshold_scale: 0.95, soft_k: 1.0 }
chroma_bilateral: { enabled: true, sigma_spatial: 1.0, sigma_range: 0.025 }
blend: { mode: chroma_only, amount: 0.65 }
2) Balanced (empfohlen)¶
Guter Standard für Smart-Telescope-Stacks mit sichtbarem Chroma-Hintergrundrauschen.
chroma_denoise:
enabled: true
color_space: ycbcr_linear
apply_stage: post_stack_linear
protect_luma: true
luma_guard_strength: 0.75
star_protection: { enabled: true, threshold_sigma: 2.2, dilate_px: 2 }
structure_protection: { enabled: true, gradient_percentile: 85 }
chroma_wavelet: { enabled: true, levels: 3, threshold_scale: 1.25, soft_k: 1.0 }
chroma_bilateral: { enabled: true, sigma_spatial: 1.2, sigma_range: 0.035 }
blend: { mode: chroma_only, amount: 0.85 }
3) Aggressiv¶
Für starkes Farbrauschen; erhöhtes Risiko für Desaturierung/"Plastik-Look" in schwachen Nebelbereichen.
chroma_denoise:
enabled: true
color_space: ycbcr_linear
apply_stage: post_stack_linear
protect_luma: true
luma_guard_strength: 0.65
star_protection: { enabled: true, threshold_sigma: 1.9, dilate_px: 3 }
structure_protection: { enabled: true, gradient_percentile: 80 }
chroma_wavelet: { enabled: true, levels: 4, threshold_scale: 1.55, soft_k: 1.1 }
chroma_bilateral: { enabled: true, sigma_spatial: 1.6, sigma_range: 0.05 }
blend: { mode: chroma_only, amount: 1.0 }
10. Global Metrics¶
Gewichtung der globalen Frame-Qualitätsmetriken (Phase 4: GLOBAL_METRICS).
global_metrics.weights.background¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 – 1 |
| Default | 0.4 |
Zweck: Gewicht α für die Hintergrund-Metrik im globalen Qualitätsindex.
Formel: Q_f = α·(-B̃_f) + β·(-σ̃_f) + γ·Ẽ_f
Interpretation: Höheres Gewicht → stärkere Bestrafung von hellem Hintergrund (Lichtverschmutzung, Dämmerung).
Hinweis: In tile_compile.yaml steht 0.45, der C++ Default ist 0.4.
global_metrics.weights.noise¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 – 1 |
| Default | 0.3 |
Zweck: Gewicht β für die Rausch-Metrik.
Interpretation: Höheres Gewicht → stärkere Bestrafung von verrauschten Frames (schlechte Kühlung, hohe ISO).
Hinweis: In tile_compile.yaml steht 0.35.
global_metrics.weights.gradient¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 – 1 |
| Default | 0.3 |
Zweck: Gewicht γ für die Gradienten-Metrik (Sobel-Energie).
Interpretation: Höheres Gewicht → stärkere Bevorzugung von Frames mit hoher Gradientenenergie (Schärfe, Struktur).
Constraint: α + β + γ = 1.0 — wird von cfg.validate() geprüft.
global_metrics.clamp¶
| Eigenschaft | Wert |
|---|---|
| Typ | array [2 numbers] |
| Default | [-3.0, 3.0] |
Zweck: Clamp-Bereich für Q_f vor der Exponentialfunktion.
Formel: G_f = exp(clip(Q_f, clamp[0], clamp[1]))
- Clamp [-3, +3] → Gewichtsbereich [exp(-3) ≈ 0.05, exp(+3) ≈ 20.1]
- Verhindert extreme Gewichte durch Ausreißer in den Metriken
global_metrics.adaptive_weights¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Adaptive Gewichtung basierend auf Metrik-Varianzen.
true: α, β, γ werden automatisch angepasst (proportional zur Varianz der jeweiligen Metrik)false: Feste Gewichte aus Konfiguration (empfohlen)
global_metrics.weight_exponent_scale¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 1.0 |
Zweck: Exponent-Skalierung k für die globale Gewichtung G_f = exp(k * Q_f).
k = 1.0: Standard-Verhaltenk > 1.0: stärkere Trennung guter/schlechter Framesk < 1.0: flachere Gewichtsverteilung
11. Tile¶
Seeing-adaptive Tile-Erzeugung (Phase 5: TILE_GRID).
tile.size_factor¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 32 |
Zweck: Multiplikator s für die Tile-Größe.
Formel: T₀ = s × FWHM
Beispiele:
| FWHM (px) | s=32 | Tile-Größe |
|---|---|---|
| 2.0 | 64 | 64 px |
| 3.0 | 96 | 96 px |
| 5.0 | 160 | 160 px |
Empfehlung: 20–40. Höhere Werte → größere Tiles → weniger Tiles → schneller, aber gröbere lokale Anpassung.
tile.min_size¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 64 |
Zweck: Minimale Tile-Größe T_min in Pixeln.
Formel: T = clip(T₀, T_min, T_max)
Empfehlung: 32–128. Zu klein → zu wenige Pixel pro Tile für zuverlässige Metriken. Zu groß → keine lokale Anpassung.
tile.max_divisor¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 6 |
Zweck: Maximale Tile-Größe als Bruchteil der kürzeren Bildseite.
Formel: T_max = min(Breite, Höhe) / max_divisor
Beispiel: Bei 3840×2160 und D=6 → T_max = 2160/6 = 360 px
tile.overlap_fraction¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 – 0.5 |
| Default | 0.25 |
Zweck: Überlappungsfraktion zwischen benachbarten Tiles.
Formel: Overlap = fraction × TileSize, Stride = TileSize − Overlap
Beispiel: T=100, fraction=0.25 → Overlap=25px, Stride=75px
Die Überlappung ist kritisch für die Hanning-Overlap-Add-Rekonstruktion: Zu wenig Overlap → sichtbare Tile-Grenzen. Zu viel → ineffizient.
Safety: Wenn stride ≤ 0, wird auf 0.25 zurückgesetzt.
tile.star_min_count¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 0 |
| Default | 10 |
Zweck: Minimale Sternanzahl (Median über alle Frames) für die Klassifikation als STAR-Tile.
| Median Star Count | Tile-Typ | Metrik-Modus |
|---|---|---|
≥ star_min_count |
STAR | FWHM + Roundness + Contrast |
< star_min_count |
STRUCTURE | ENR + Background |
12. Local Metrics¶
Lokale Tile-Metriken und Qualitäts-Scoring (Phase 6: LOCAL_METRICS).
local_metrics.clamp¶
| Eigenschaft | Wert |
|---|---|
| Typ | array [2 numbers] |
| Default | [-3.0, 3.0] |
Zweck: Clamp-Bereich für Q_local vor der Exponentialfunktion.
Formel: L_f,t = exp(clip(Q_f,t, clamp[0], clamp[1]))
local_metrics.neighborhood_normalization.enabled¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Aktiviert eine nachbarschaftsgepoolte robuste Normierung lokaler Tile-Metriken vor der Bildung des lokalen Qualitätsscores.
local_metrics.neighborhood_normalization.radius¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 0 |
| Default | 1 |
Zweck: Nachbarschaftsradius auf dem Tile-Raster, aus dem robuste Statistik für die lokale z-Normierung mitgepoolt wird.
local_metrics.neighborhood_normalization.blend¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 .. 1 |
| Default | 0.5 |
Zweck: Mischfaktor zwischen rein tile-lokalen robusten z-Scores und nachbarschaftsgepoolten robusten z-Scores.
local_metrics.spatial_regularization.enabled¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Aktiviert eine nachbarschaftsbasierte Regularisierung lokaler Tile-Qualitätsscores vor der Exponential-Gewichtsbildung.
local_metrics.spatial_regularization.lambda¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 .. 1 |
| Default | 0.35 |
Zweck: Kopplungsstärke zwischen lokalem Tile-Score und dem Mittelwert der direkten Tile-Nachbarn.
local_metrics.spatial_regularization.passes¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 0 |
| Default | 1 |
Zweck: Anzahl der Regularisierungs-Pässe über den Tile-Nachbarschaftsgraphen vor L_f,t = exp(Q_f,t).
local_metrics.star_mode.weights.fwhm¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 – 1 |
| Default | 0.6 |
Zweck: Gewicht für FWHM in der stern-basierten lokalen Qualität.
Formel: Q = w_fwhm·(-FWHM̃) + w_round·R̃ + w_contrast·C̃
Niedriger FWHM = besser → wird negiert. Höchstes Gewicht = dominiert die lokale Qualitätsbewertung.
local_metrics.star_mode.weights.roundness¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 – 1 |
| Default | 0.2 |
Zweck: Gewicht für Sternrundheit. Hohe Rundheit = gutes Tracking.
local_metrics.star_mode.weights.contrast¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 – 1 |
| Default | 0.2 |
Zweck: Gewicht für lokalen Kontrast. Hoher Kontrast = gutes Signal.
Constraint: fwhm + roundness + contrast = 1.0
local_metrics.structure_mode.metric_weight¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 – 1 |
| Default | 0.7 |
Zweck: Gewicht für ENR (Edge-to-Noise Ratio) in der struktur-basierten lokalen Qualität.
Formel: Q = w_metric·(Ẽ/σ̃) + w_bg·(-B̃)
local_metrics.structure_mode.background_weight¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 – 1 |
| Default | 0.3 |
Zweck: Gewicht für Hintergrund in der struktur-basierten lokalen Qualität.
Constraint: metric_weight + background_weight = 1.0
local_metrics.k_local¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | > 0 |
| Default | 1.0 |
Zweck: Exponent-Skala für lokales Gewicht L_{f,t} = exp(k_local * Q_local). Default 1.0; Werte > 1 erhöhen lokale Differenzierung, < 1 weichen sie ab. Symmetrisch zu global_metrics.weight_exponent_scale.
13. Synthetic¶
Synthetische Frame-Erzeugung und Clustering (Phase 8+9).
synthetic.weighting¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | global, tile_weighted |
| Default | "global" |
Zweck: Bestimmt, wie synthetische Frames pro Cluster gebildet werden.
| Modus | Formel | Beschreibung |
|---|---|---|
global |
synth_k = Σ G_f · warp(I'_f) / Σ G_f |
Nur globale Gewichte — schneller, Standard |
tile_weighted |
synth_k = overlap_add(Σ W_f,t · tile_f / Σ W_f,t) |
Tile-basiert wie Rekonstruktion — langsamer, propagiert lokale Qualitätsgewinne |
synthetic.frames_min¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 5 |
Zweck: Minimale Cluster-Größe für die Erzeugung eines synthetischen Frames. Cluster mit weniger Frames werden übersprungen.
synthetic.frames_max¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 30 |
Zweck: Maximale Anzahl synthetischer Frames. Bestimmt gleichzeitig die maximale Cluster-Anzahl (K ≤ frames_max).
synthetic.clustering.mode¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | kmeans, quantile |
| Default | "kmeans" |
Zweck: Clustering-Methode.
| Methode | Beschreibung |
|---|---|
kmeans |
K-Means auf 6D-Zustandsvektor (Standard) |
quantile |
Quantile-basierte Aufteilung nach globalem Gewicht (Fallback bei degenerierten Clustern) |
Hinweis: quantile wird automatisch als Fallback verwendet wenn K-Means leere Cluster erzeugt.
synthetic.clustering.cluster_count_range¶
| Eigenschaft | Wert |
|---|---|
| Typ | array [2 integers] |
| Default | [5, 30] |
Zweck: Erlaubter K-Bereich [k_min, k_max] für Clustering.
Formel: K = clip(floor(N / 10), k_min, k_max)
| N Frames | K (Default [5,30]) |
|---|---|
| 50 | 5 |
| 100 | 10 |
| 200 | 20 |
| 500 | 30 |
14. Reconstruction¶
Die aktuelle C++-Konfiguration hat keinen eigenen reconstruction: Block.
Gewichtete Tile-Rekonstruktion, Hanning-OLA und die Boundary-Diagnostik sind Laufzeitverhalten des Runners, aber keine eigenständigen Top-Level-Config-Schlüssel. Relevante Stellschrauben liegen derzeit unter:
synthetic.*stacking.*tile.*tile_denoise.*
15. Debayer (automatische Phase)¶
Es gibt keinen eigenständigen debayer-Konfigurationsschlüssel mehr.
Das Verhalten ist fest:
- OSC: Der Runner debayert den finalen CFA-Stack immer automatisch in RGB-Ausgaben.
- MONO: Die Phase ist ein No-Op und endet als ok/MONO.
16. Astrometry¶
astrometry.enabled¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Aktiviert Plate Solving (WCS).
astrometry.astap_bin¶
| Eigenschaft | Wert |
|---|---|
| Typ | string |
| Default | "" |
Zweck: Pfad zur ASTAP-CLI. Leer bedeutet: Systempfad/Standardauflösung.
astrometry.astap_data_dir¶
| Eigenschaft | Wert |
|---|---|
| Typ | string |
| Default | "" |
Zweck: ASTAP-Datenverzeichnis. Leer bedeutet: Standardpfad.
astrometry.search_radius¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Bereich | 1 – 360 |
| Default | 180 |
Zweck: Suchradius in Grad für das Solving (180 = blind solve).
17. BGE (Background Gradient Extraction)¶
NEU in v3.3 - Optionale Hintergrund-Gradienten-Extraktion vor PCC (Methodologie v3.3 §6.3)
BGE entfernt großräumige Hintergrundgradienten (Lichtverschmutzung, Mondlicht, Airglow) vor der photometrischen Farbkalibrierung, um Farbverzerrungen durch spektral ungleichmäßige Gradienten zu vermeiden.
Implementationshinweis (v3.3.6): BGE nutzt Tile-Qualitätsdaten aus LOCAL_METRICS direkt für die Sample-Selektion/-Gewichtung:
- type + star_count: Sternreiche STAR-Tiles werden konservativ ausgeschlossen bzw. abgewertet.
- fwhm: skaliert die effektive Sternmasken-Dilatation pro Tile.
- quality_score: geht als zusätzlicher Gewichtungsfaktor in die Tile-Sample-Relevanz ein.
bge.enabled¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Aktiviert/deaktiviert Background Gradient Extraction.
Empfehlung: Aktivieren bei sichtbaren Gradienten (städtische Lichtverschmutzung, Mondlicht) oder wenn PCC Farbverschiebungen über das Bildfeld zeigt.
bge.tile_weight_lambda_structure¶
| Eigenschaft | Wert |
|---|---|
| Typ | float |
| Bereich | > 0 |
| Default | 1.0 |
Zweck: Lambda in Tile-Reliabilitätsgewicht w_t = exp(-lambda * structure_score_t) * (1 - masked_fraction_t). Hoehere Werte gewichten strukturreiche Tiles aggressiver ab; 1.0 ist der aktuelle moderate Basiswert.
bge.sample_quantile¶
| Eigenschaft | Wert |
|---|---|
| Typ | float |
| Bereich | (0.0, 0.5] |
| Default | 0.20 |
Zweck: Quantil für Tile-Hintergrund-Schätzung (v3.3 §6.3.2b).
- 0.20 (default): Konservativ, resistent gegen schwache Objektkontamination
- 0.50: Median, geeignet für Felder mit starker Maskierung
bge.structure_thresh_percentile¶
| Eigenschaft | Wert |
|---|---|
| Typ | float |
| Bereich | [0.0, 1.0] |
| Default | 0.90 |
Zweck: Perzentil-Schwelle für High-Structure-Tiles (v3.3 §6.3.2a).
Tiles mit E/sigma > threshold werden von der Hintergrund-Schätzung ausgeschlossen.
bge.min_tiles_per_cell¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Default | 3 |
Zweck: Mindestanzahl Tile-Samples pro Grid-Cell für valide Hintergrund-Schätzung (v3.3 §6.3.3d).
bge.min_valid_sample_fraction_for_apply¶
| Eigenschaft | Wert |
|---|---|
| Typ | float |
| Bereich | (0.0, 1.0] |
| Default | 0.30 |
Zweck: Kanalweise Sicherheitsgrenze für BGE-Apply. Wenn valid_tile_samples / total_tile_samples unter diesem Wert liegt, wird BGE für den Kanal übersprungen.
bge.min_valid_samples_for_apply¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 96 |
Zweck: Absolute kanalweise Sicherheitsgrenze für BGE-Apply. Wenn weniger robuste valide Tile-Samples als dieser Wert vorhanden sind, wird BGE für den Kanal übersprungen.
bge.mask.star_dilate_px¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Default | 4 |
Zweck: Dilatation der Stern-Maske in Pixeln (v3.3 §6.3.2a).
Empfehlung: 2-6 px je nach Sternauflösung.
bge.mask.sat_dilate_px¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Default | 4 |
Zweck: Dilatation der Sättigungs-Maske in Pixeln (v3.3 §6.3.2a).
bge.grid.N_g¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Default | 32 |
Zweck: Ziel-Grid-Auflösung: G = min(W,H) / N_g (v3.3 §6.3.8).
Empfehlung: 24-48 für typische DSO-Aufnahmen.
bge.grid.G_min_px¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Default | 64 |
Zweck: Minimaler Grid-Abstand in Pixeln (v3.3 §6.3.8).
bge.grid.G_max_fraction¶
| Eigenschaft | Wert |
|---|---|
| Typ | float |
| Default | 0.25 |
Zweck: Maximaler Grid-Abstand als Bruchteil von min(W,H) (v3.3 §6.3.8).
bge.grid.insufficient_cell_strategy¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | discard, nearest, radius_expand |
| Default | "discard" |
Zweck: Strategie für Grid-Cells mit zu wenigen Samples (v3.3 §6.3.3d).
discard: Cell wird vom Fit ausgeschlossen (konservativ)nearest: Nearest-Neighbor-Fill (experimentell)radius_expand: Radius-Expansion (experimentell)
bge.fit.method¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | rbf, poly, spline, bicubic, modeled_mask_mesh |
| Default | "rbf" |
Zweck: Surface-Fitting-Methode (v3.3 §6.3.7).
rbf: Radial Basis Functions (empfohlen, flexibel)poly: Robustes Polynom (Order 2-3)spline: Thin-plate Splinebicubic: Bicubic Splinemodeled_mask_mesh: Segmentierungs- und maskengestützter Mesh-Sky-Fit mit heller Quellenmodellierung (empfohlen bei großflächigem Nebel/Vordergrund wie M31/M42)
bge.fit.robust_loss¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | huber, tukey |
| Default | "huber" |
Zweck: Robust-Loss-Funktion für IRLS (v3.3 §6.3.7).
bge.fit.huber_delta¶
| Eigenschaft | Wert |
|---|---|
| Typ | float |
| Default | 1.5 |
Zweck: Huber-Loss-Parameter δ.
bge.fit.irls_max_iterations¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Default | 10 |
Zweck: Maximale IRLS-Iterationen.
bge.fit.irls_tolerance¶
| Eigenschaft | Wert |
|---|---|
| Typ | float |
| Default | 1e-4 |
Zweck: IRLS-Konvergenz-Toleranz.
bge.fit.polynomial_order¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Werte | 2, 3 |
| Default | 2 |
Zweck: Polynom-Ordnung (nur wenn method=poly).
bge.fit.rbf_phi¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | multiquadric, thinplate, gaussian |
| Default | "multiquadric" |
Zweck: RBF-Kernel-Typ (nur wenn method=rbf, v3.3 §6.3.7).
multiquadric:φ(d;μ) = √(d² + μ²)(empfohlen)thinplate:φ(d) = d² log(d)(scale-invariant)gaussian:φ(d;μ) = exp(-d²/(2μ²))(glatt)
bge.fit.rbf_mu_factor¶
| Eigenschaft | Wert |
|---|---|
| Typ | float |
| Default | 1.0 |
Zweck: RBF-Shape-Parameter: μ = rbf_mu_factor * G (v3.3 §6.3.7).
Empfehlung: 0.5-2.0 je nach gewünschter Glättung.
bge.fit.rbf_lambda¶
| Eigenschaft | Wert |
|---|---|
| Typ | float |
| Default | 1e-6 |
Zweck: RBF-Regularisierung λ (verhindert Overfitting, v3.3 §6.3.7).
bge.fit.rbf_epsilon¶
| Eigenschaft | Wert |
|---|---|
| Typ | float |
| Default | 1e-10 |
Zweck: Numerische Stabilisierung für Thin-plate RBF bei d=0 (v3.3 §6.3.7).
bge.autotune.enabled¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Aktiviert deterministisches konservatives Auto-Tuning von BGE (v3.3.6 §6.3.7).
bge.autotune.strategy¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | conservative, extended |
| Default | "conservative" |
Zweck: Umfang des Kandidatenraums fuer Auto-Tuning.
bge.autotune.max_evals¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 24 |
Zweck: Harte Obergrenze getesteter Parameter-Kandidaten.
bge.autotune.holdout_fraction¶
| Eigenschaft | Wert |
|---|---|
| Typ | float |
| Bereich | [0.05, 0.50] |
| Default | 0.25 |
Zweck: Deterministischer Validierungsanteil fuer E_cv im Ziel J.
bge.autotune.alpha_flatness¶
| Eigenschaft | Wert |
|---|---|
| Typ | float |
| Minimum | 0 |
| Default | 0.25 |
Zweck: Gewichtung des Flatness-Terms E_flat in J.
bge.autotune.beta_roughness¶
| Eigenschaft | Wert |
|---|---|
| Typ | float |
| Minimum | 0 |
| Default | 0.10 |
Zweck: Gewichtung des Roughness-Terms E_rough in J.
18. PCC¶
Implementationshinweis (v3.3.6): Wenn Tile-Metriken und Tile-Grid verfügbar und konsistent sind, nutzt PCC diese automatisch zur robusten Sterngewichtung:
- quality_score: exponentielle Gewichtung pro Stern (Tile-basiert).
- gradient_energy/noise: Struktur-Penalty und Reject für stark strukturierte Tiles.
- star_count: leichte Abwertung sehr sternreicher Tiles.
pcc.enabled¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
pcc.source¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | auto, siril, vizier_gaia, vizier_apass |
| Default | "auto" |
pcc.mag_limit¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 1 – 22 |
| Default | 14.0 |
pcc.mag_bright_limit¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 – 15 |
| Default | 6.0 |
pcc.aperture_radius_px, pcc.annulus_inner_px, pcc.annulus_outer_px¶
| Key | Typ | Default | Constraint |
|---|---|---|---|
pcc.aperture_radius_px |
number | 8.0 |
>0 |
pcc.annulus_inner_px |
number | 12.0 |
>0 |
pcc.annulus_outer_px |
number | 18.0 |
>0 |
pcc.min_stars¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 3 |
| Default | 10 |
pcc.sigma_clip¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 2.5 |
pcc.background_model¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | median, plane |
| Default | "plane" |
Zweck: Lokales Annulus-Hintergrundmodell fuer Sternphotometrie (plane empfohlen bei Gradienten).
pcc.max_condition_number¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >= 1.0 |
| Default | 3.0 |
Zweck: Obergrenze der Matrix-Konditionszahl; verhindert instabile PCC-Loesungen.
pcc.max_residual_rms¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | > 0 |
| Default | 0.35 |
Zweck: Obergrenze fuer robusten Fit-Residuen-RMS; verwirft verrauschte/instabile PCC-Fits.
pcc.radii_mode¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | fixed, auto_fwhm |
| Default | "auto_fwhm" |
Zweck: Radiusmodus fuer Apertur/Annulus (auto_fwhm = adaptive Radien aus Seeing-FWHM).
pcc.aperture_fwhm_mult, pcc.annulus_inner_fwhm_mult, pcc.annulus_outer_fwhm_mult, pcc.min_aperture_px¶
| Key | Typ | Default | Constraint |
|---|---|---|---|
pcc.aperture_fwhm_mult |
number | 1.8 |
>0 |
pcc.annulus_inner_fwhm_mult |
number | 3.0 |
>0 |
pcc.annulus_outer_fwhm_mult |
number | 5.0 |
>0 |
pcc.min_aperture_px |
number | 4.0 |
>0 |
Zweck: Konservative Parameter fuer FWHM-adaptive PCC-Radien (v3.3.6 §6.4.2).
pcc.siril_catalog_dir¶
| Eigenschaft | Wert |
|---|---|
| Typ | string |
| Default | "" |
Zweck: Lokaler Siril-Katalogpfad; leer = Standardpfad.
pcc.apply_attenuation¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Aktiviert adaptive Daempfung der PCC-Matrixanwendung in Schatten/Highlights.
pcc.background_neutralization_mode¶
| Eigenschaft | Wert |
|---|---|
| Typ | string |
| Default | auto |
| Erlaubte Werte | always, auto, off |
Zweck: Steuert die Hintergrundneutralisierung nach dem PCC-Apply. always erzwingt neutrale Hintergrund-Offsets, off deaktiviert den Schritt, und auto schwaecht ihn ab oder ueberspringt ihn, wenn der gemessene "Hintergrund" eher wie Nebel/Feldstruktur als wie neutraler Himmel aussieht.
pcc.chroma_strength¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Default | 1.0 |
Zweck: Globaler Staerkefaktor fuer Chroma-Korrektur bei PCC-Apply.
pcc.k_max¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Default | 3.2 |
Zweck: Obergrenze fuer Korrekturstaerke im linearen PCC-Apply (verringert Farbstiche in hellen Strukturen).
19. Stacking¶
Finales Stacking der synthetischen Frames (Phase 10: STACKING).
stacking.method¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Werte | rej, average |
| Default | "rej" |
Zweck: Stacking-Methode.
| Methode | Beschreibung | Empfehlung |
|---|---|---|
rej |
Sigma-Clipping Rejection → dann Mittelwert | Empfohlen — entfernt verbleibende Ausreißer |
average |
Einfacher linearer Mittelwert | Schneller, aber keine Ausreißer-Entfernung |
stacking.common_overlap_required_fraction¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | (0, 1] |
| Default | 1.0 |
Zweck: Mindestanteil nutzbarer Frames, in denen ein Pixel gueltig sein muss, um zu COMMON_OVERLAP zu gehoeren.
1.0: strikte Schnittmenge aller nutzbaren Frames< 1.0: laesst Randpixel zu, die nur in einem Teil der Frames vorhanden sind
Hinweis: Niedrigere Werte vergroessern die nutzbare Randflaeche, koennen aber Hintergrund- und Farbstatistiken durch ungleichmaessig ueberdeckte Bildraender verzerren.
Hinweis (Strict v3.3.9): Auf 1.0 belassen.
stacking.tile_common_valid_min_fraction¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | (0, 1] |
| Default | 1.0 |
Zweck: Mindestanteil der vollen Tile-Flaeche, der innerhalb von COMMON_OVERLAP liegen muss, damit ein Tile fuer lokale Metriken und nachgelagerte Schritte als gueltig gilt.
1.0: nur Tiles, die vollstaendig innerhalb der Support-Maske liegen< 1.0: erlaubt teilweise ueberdeckte Rand-Tiles
Hinweis: Die Quote wird ueber die gesamte Tile-Flaeche berechnet, nicht nur ueber den zufaellig im Canvas liegenden Ausschnitt.
Hinweis (Strict v3.3.9): Auf 1.0 belassen.
stacking.sigma_clip.sigma_low¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 2.0 |
Zweck: Unterer Sigma-Schwellenwert für Rejection.
Formel: Pixel wird abgelehnt wenn z < -sigma_low (z = normalisierte Abweichung vom Median).
Empfehlung: 2.0 – 4.0
stacking.sigma_clip.sigma_high¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 2.0 |
Zweck: Oberer Sigma-Schwellenwert für Rejection.
Formel: Pixel wird abgelehnt wenn z > sigma_high
Empfehlung: 2.0 – 4.0
stacking.sigma_clip.max_iters¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Bereich | 1 – 10 |
| Default | 3 |
Zweck: Maximale Sigma-Clipping-Iterationen. Nach jeder Iteration werden abgelehnte Pixel entfernt und der Median neu berechnet.
stacking.sigma_clip.min_fraction¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Bereich | 0 – 1 |
| Default | 0.5 |
Zweck: Minimale überlebende Frame-Fraktion pro Pixel.
Verhalten: Wenn weniger als min_fraction × N Frames an einem Pixel überleben, wird auf den unclipped mean zurückgefallen (verhindert Artefakte durch zu aggressives Clipping).
stacking.cluster_quality_weighting.enabled¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Aktiviert die v3.2.2-Qualitätsgewichtung für die finale Aggregation synthetischer Cluster-Frames.
Formel: w_k = exp(kappa_cluster * Q_k)
Q_k= Cluster-Qualitätswert (typisch in[-3, +3])enabled=false: kein Qualitäts-Weighting, klassisches finales Stacking nachstacking.methodenabled=true: finale Aggregation per gewichteter Mittelung; Sigma-Clipping-Stacking wird in dieser Stufe nicht verwendet
stacking.cluster_quality_weighting.kappa_cluster¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 1.0 |
Zweck: Exponent-Faktor für den Einfluss von Q_k auf das Gewicht w_k.
- größerer Wert → stärkere Trennung guter/schlechter Cluster
- kleinerer Wert → flachere Gewichtsverteilung
Praktische Sensitivität (bei Q_k-Spanne ungefähr [-3, +3]):
| κ | max weight ratio (≈ e^{6κ}) |
Charakter |
|---|---|---|
| 0.3 | ~ e^{1.8} ≈ 6 |
sehr mild |
| 0.5 | ~ e^{3} ≈ 20 |
moderat |
| 1.0 | ~ e^{6} ≈ 403 |
stark |
| 1.5 | ~ e^{9} ≈ 8103 |
sehr aggressiv |
| 2.0 | ~ e^{12} ≈ 162k |
praktisch Winner-takes-most |
Empfehlung (Astrofotografie):
- Default:
κ = 0.5 ... 1.0 κ = 1.2nur bei bewusst gewünschtem lucky-imaging-artigem Verhaltenκ >= 1.5oft instabil (numerisch und statistisch)
stacking.cluster_quality_weighting.cap_enabled¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Aktiviert optional ein Dominanz-Cap für Clustergewichte, damit einzelne Cluster das Endergebnis nicht übermäßig dominieren.
stacking.cluster_quality_weighting.cap_ratio¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 20.0 |
Zweck: Gewichtslimit bei aktivem Cap.
Formel (nur wenn cap_enabled=true): w_k <= cap_ratio * median_j(w_j)
Praktische Bereiche für r_cap:
r_cap |
Verhalten |
|---|---|
| 5 | sehr konservativ |
| 10 | mild begrenzt |
| 20 | moderat |
| 50 | kaum Eingriff |
| >100 | faktisch deaktiviert |
Empfehlung:
- Konservativ stabil:
r_cap = 10 - Balanciert:
r_cap = 20-30 - Fast unbegrenzt:
r_cap >= 50
Boundary-Diagnostik in TILE_RECONSTRUCTION¶
Im aktiven C++-Config-Stand gibt es aktuell keinen dedizierten Seam-Korrektur-Parameterblock.
Sichtbare Tile-Grenzen werden stattdessen über Laufzeit-Artefakte aus TILE_RECONSTRUCTION diagnostiziert, insbesondere:
tile_boundary_raw_pair_mean_abs_diff_p95tile_boundary_normalized_pair_mean_abs_diff_p95tile_boundary_pair_counttile_boundary_observation_counttile_boundary_pair_mean_abs_diff_meantile_boundary_pair_mean_abs_diff_p95tile_boundary_post_background_delta_p95_abstile_boundary_top_pairstile_norm_bg_r/tile_norm_bg_g/tile_norm_bg_btile_norm_scale
tile_boundary_raw_* misst die Abweichung vor der optionalen Tile-Normalisierung, tile_boundary_normalized_* am tatsächlichen OLA-Eingang. Die Diagnostik verwendet die gemeinsame Canvas-Gültigkeitsmaske, beschreibt die tatsächliche Abweichung benachbarter Tiles am OLA-Eingang und verändert das Rekonstruktionsergebnis nicht.
stacking.output_stretch¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Optionales lineares Nachskalieren der Ausgabedaten von 0..max auf den vollen Bereich 0..65535.
stacking.cosmetic_correction¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Optionale kosmetische Korrektur (z. B. Hotpixel) nach dem Stacking.
stacking.cosmetic_correction_sigma¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 5.0 |
Zweck: Schwellwert (MAD-Sigma) für stacking.cosmetic_correction.
- Niedrigerer Wert = aggressiver.
- Hinweis: Im gestackten Bild können helle Objektkerne hohe lokale Kontraste haben. Zu aggressive Werte können reale Signalspitzen fälschlich als Hotpixel behandeln.
Empfehlung:
- MONO / kalibrierte Daten:
5.0 - OSC / Smart-Telescope ohne Darks:
10.0(konservativer)
stacking.per_frame_cosmetic_correction¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Hotpixel-Korrektur pro Frame vor PREWARP/Stacking.
Diese Option zielt auf fixe Sensordefekte (RGB-Einzelpixel), die in jedem Frame an der gleichen Position auftreten und deshalb durch Sigma-Clipping im Stack nicht zuverlässig entfernt werden.
stacking.per_frame_cosmetic_correction_sigma¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 5.0 |
Zweck: Schwellwert (MAD-Sigma) für stacking.per_frame_cosmetic_correction.
Empfehlung: 5.0 (OSC/Seestar/DWARF: typischerweise passend).
20. Validation¶
Qualitätsprüfung des Rekonstruktionsergebnisses (nach Phase 10, vor Debayer).
validation.min_fwhm_improvement_percent¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Default | 0.0 |
Zweck: Minimale FWHM-Verbesserung in Prozent (Output-FWHM vs. Seeing-FWHM).
Formel: improvement = (seeing_fwhm - output_fwhm) / seeing_fwhm × 100%
Verhalten: Unterschreitung → fwhm_improvement_ok = false → validation_failed
validation.max_background_rms_increase_percent¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Default | 0.0 |
Zweck: Maximale erlaubte Hintergrund-RMS-Erhöhung in Prozent. 0.0 = nicht geprüft.
validation.min_tile_weight_variance¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | 0 |
| Default | 0.1 |
Zweck: Minimale normalisierte Varianz der Tile-Gewichte.
Formel: tile_weight_variance = Var(mean_W_t) / mean(mean_W_t)²
Interpretation: Zu niedrige Varianz → Gewichtung hatte keinen Effekt → entweder alle Frames gleich gut oder Metriken nicht diskriminativ genug.
validation.require_no_tile_pattern¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | true |
Zweck: Prüft auf sichtbare Tile-Muster im Endergebnis mittels Sobel-Gradient an Tile-Grenzen.
Methode: Vergleicht den mittleren Sobel-Gradient an Tile-Grenzen mit dem Gradient 2 Pixel daneben. Ratio > 1.5 → Tile-Pattern erkannt.
Verhalten: tile_pattern_ok = false → validation_failed (Pipeline läuft trotzdem weiter für Debayer)
21. Runtime Limits¶
Laufzeit-Beschränkungen.
runtime_limits.parallel_workers¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Default | 4 |
Zweck: Maximale Anzahl paralleler Worker für Tile-lastige Phasen.
Hinweis: Wird zusätzlich durch CPU-Kernanzahl und (bei OSC) durch runtime_limits.memory_budget begrenzt.
runtime_limits.memory_budget¶
| Eigenschaft | Wert |
|---|---|
| Typ | integer |
| Minimum | 1 |
| Einheit | MiB |
| Default | 512 |
Zweck: Speicherbudget für den OSC-Memory-Cap in der Tile-Rekonstruktion. Reduziert bei Bedarf die effektive Anzahl paralleler Worker, um RAM-Spitzen zu begrenzen.
runtime_limits.tile_analysis_max_factor_vs_stack¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 3.0 |
Zweck: Maximaler Zeitfaktor für Tile-Analyse relativ zum einfachen Stack. Wenn die Tile-Analyse länger als factor × stack_time dauert, wird eine Warnung erzeugt.
Laufzeitverhalten: Der Runner schreibt das gemessene Verhältnis nach
artifacts/runtime_limits.json und erzeugt bei Überschreitung der Schwelle
eine Warnung. Dieser Parameter bricht den Lauf nicht selbst ab.
runtime_limits.hard_abort_hours¶
| Eigenschaft | Wert |
|---|---|
| Typ | number |
| Minimum | >0 |
| Default | 6.0 |
Zweck: Maximale Laufzeit in Stunden bevor die Pipeline abgebrochen wird (Hard Limit).
Laufzeitverhalten: Wird im Hauptlauf und im Resume-Pfad nach größeren
Phasengrenzen geprüft. Bei Überschreitung endet der Lauf mit
runtime_limit_exceeded.
runtime_limits.allow_emergency_mode¶
| Eigenschaft | Wert |
|---|---|
| Typ | boolean |
| Default | false |
Zweck: Erlaubt den Emergency Mode bei sehr kleinen Datensätzen (<50 nutzbare Frames). Wenn false, wird stattdessen kontrolliert abgebrochen.
runtime_limits.acceleration_backend¶
| Eigenschaft | Wert |
|---|---|
| Typ | string (enum) |
| Default | auto |
| Gültige Werte | auto, cpu, opencv_cuda, opencv_opencl, opencl, cuda |
Zweck: GPU-Beschleunigung für PREWARP-, TILE_RECONSTRUCTION- und STACKING-Phasen.
Optionen:
- auto (Standard): Erkennt automatisch verfügbare GPU-Backends zur Laufzeit. Priorität: CUDA → OpenCL → CPU. Fällt sauber auf CPU zurück, wenn Hardware nicht verfügbar.
- opencv_cuda: Erzwingt NVIDIA CUDA-Backend (benötigt CUDA-fähigen OpenCV-Build und NVIDIA-GPU).
- opencv_opencl / opencl: Erzwingt OpenCL-Backend (benötigt OpenCL-fähigen OpenCV-Build; funktioniert mit AMD Radeon, Intel iGPU, NVIDIA-GPUs).
- cpu: Deaktiviert GPU-Beschleunigung vollständig.
- cuda: Experimentelles natives CUDA-Backend (noch nicht implementiert).
Hardware-Kompatibilität:
- NVIDIA-GPUs: Sowohl opencv_cuda (empfohlen für beste Performance) als auch opencv_opencl funktionieren.
- AMD-GPUs (Radeon RX 470/480/570/580/590, Vega, RDNA): Verwende opencv_opencl oder auto.
- Intel integrierte GPUs: Verwende opencv_opencl oder auto.
Build-Anforderungen:
- CUDA-Backend: OpenCV mit WITH_CUDA=ON und Modulen opencv2/core/cuda.hpp, opencv2/cudawarping.hpp, opencv2/cudaarithm.hpp.
- OpenCL-Backend: OpenCV mit WITH_OPENCL=ON und Modul opencv2/core/ocl.hpp.
Hinweis: Falls das angeforderte Backend nicht verfügbar ist (fehlende OpenCV-Module oder Hardware), fällt die Pipeline mit Warnung auf CPU zurück.
Beispiel-Konfiguration (Vollständig)¶
# Pipeline
pipeline:
mode: production
abort_on_fail: true
# Output
output:
registered_dir: registered
write_registered_frames: false
crop_to_nonzero_bbox: true
# Data
data:
color_mode: OSC
bayer_pattern: GBRG
linear_required: true
# Linearity
linearity:
enabled: true
max_frames: 8
min_overall_linearity: 0.9
strictness: strict
# Assumptions
assumptions:
frames_min: 50
frames_reduced_threshold: 200
reduced_mode_skip_clustering: true
# Normalization
normalization:
enabled: true
mode: background
per_channel: true
# Registration
registration:
engine: triangle_star_matching
allow_rotation: true
star_topk: 120
star_min_inliers: 6
star_inlier_tol_px: 2.5
star_dist_bin_px: 2.5
# Dithering
dithering:
enabled: true
min_shift_px: 0.7
# Tile Denoise
tile_denoise:
soft_threshold:
enabled: true
blur_kernel: 31
alpha: 1.5
skip_star_tiles: true
wiener:
enabled: false
snr_threshold: 5.0
q_min: -0.5
q_max: 1.0
q_step: 0.1
min_snr: 2.0
max_iterations: 10
# Chroma Denoise
chroma_denoise:
enabled: true
color_space: ycbcr_linear
apply_stage: post_stack_linear
protect_luma: true
luma_guard_strength: 0.75
star_protection:
enabled: true
threshold_sigma: 2.2
dilate_px: 2
structure_protection:
enabled: true
gradient_percentile: 85
chroma_wavelet:
enabled: true
levels: 3
threshold_scale: 1.25
soft_k: 1.0
chroma_bilateral:
enabled: true
sigma_spatial: 1.2
sigma_range: 0.035
blend:
mode: chroma_only
amount: 0.85
# Global Metrics
global_metrics:
adaptive_weights: false
weight_exponent_scale: 1.0
weights:
background: 0.4
noise: 0.3
gradient: 0.3
clamp: [-3.0, 3.0]
# Tile
tile:
size_factor: 32
min_size: 64
max_divisor: 6
overlap_fraction: 0.25
star_min_count: 10
# Local Metrics
local_metrics:
clamp: [-3.0, 3.0]
star_mode:
weights:
fwhm: 0.6
roundness: 0.2
contrast: 0.2
structure_mode:
metric_weight: 0.7
background_weight: 0.3
# Synthetic
synthetic:
weighting: global
frames_min: 5
frames_max: 30
clustering:
mode: kmeans
cluster_count_range: [5, 30]
# Astrometry
astrometry:
enabled: false
astap_bin: ""
astap_data_dir: ""
search_radius: 180
# PCC
pcc:
enabled: false
source: auto
mag_limit: 14.0
mag_bright_limit: 6.0
aperture_radius_px: 8.0
annulus_inner_px: 12.0
annulus_outer_px: 18.0
min_stars: 10
sigma_clip: 2.5
siril_catalog_dir: ""
# Stacking
stacking:
method: rej
common_overlap_required_fraction: 1.0
tile_common_valid_min_fraction: 1.0
sigma_clip:
sigma_low: 2.0
sigma_high: 2.0
max_iters: 3
min_fraction: 0.5
cluster_quality_weighting:
enabled: true
kappa_cluster: 1.0
cap_enabled: false
cap_ratio: 20.0
output_stretch: false
cosmetic_correction: false
# Validation
validation:
min_fwhm_improvement_percent: 0.0
max_background_rms_increase_percent: 0.0
min_tile_weight_variance: 0.1
require_no_tile_pattern: true
# Runtime Limits
runtime_limits:
parallel_workers: 8
memory_budget: 1024
tile_analysis_max_factor_vs_stack: 3.0
hard_abort_hours: 6.0
allow_emergency_mode: false
Hinweise¶
Abweichungen tile_compile.yaml vs. C++ Defaults¶
Die Datei tile_compile.yaml im Repository enthält eine Beispiel-/Szenario-Konfiguration und weicht bewusst von den reinen C++ Defaults ab. Zusätzlich enthält sie Workflow-Metadaten wie run_dir, log_level und scenario_profile, die nicht Teil des reinen C++-Schemas sind.
| Key | tile_compile.yaml |
C++ Default | Bemerkung |
|---|---|---|---|
pipeline.abort_on_fail |
false |
true |
Debug-freundlich |
output.write_registered_frames |
true |
false |
Speicherintensiv |
global_metrics.weights.background |
0.40 |
0.4 |
Praktisch identisch |
global_metrics.weights.noise |
0.35 |
0.3 |
Abweichende Gewichtung |
global_metrics.weights.gradient |
0.25 |
0.3 |
Etwas geringere Gradient-Gewichtung |
registration.star_topk |
150 |
150 |
Angeglichen |
registration.star_inlier_tol_px |
4.0 |
4.0 |
Angeglichen |
registration.star_dist_bin_px |
5.0 |
5.0 |
Angeglichen |
registration.reject_cc_min_abs |
0.25 |
0.25 |
Angeglichen |
registration.reject_shift_px_min |
100.0 |
100.0 |
Angeglichen |
registration.reject_shift_median_multiplier |
5.0 |
5.0 |
Angeglichen |
Schema-Validierung¶
Die Schema-Dateien (tile_compile.schema.json, tile_compile.schema.yaml) definieren die erlaubten Typen und Wertebereiche. Die C++ Implementierung in Config::validate() prüft zusätzlich:
- Gewichts-Normierung: α + β + γ = 1.0 (global_metrics.weights)
- Clamp-Ordnung: clamp[0] < clamp[1]
- Normalisierung Pflicht:
normalization.enabledmusstruesein
Quellen¶
- C++ Defaults:
tile_compile_cpp/include/tile_compile/config/configuration.hpp - Config Parsing:
tile_compile_cpp/src/io/config.cpp - JSON-Schema:
tile_compile_cpp/tile_compile.schema.json - YAML-Schema:
tile_compile_cpp/tile_compile.schema.yaml - Beispiel-Config:
tile_compile_cpp/tile_compile.yaml
Anhang A — Funktionsdetails für alle Optionen¶
Dieser Anhang beschreibt pro Schlüssel explizit das Laufzeitverhalten (Wirkung in der Pipeline, Interaktionen, Nebenwirkungen).
A.1 Pipeline / Output / Data¶
pipeline.mode: wählt Produktions- vs. Testpfad (gleiche Kernphasen, anderes Striktheits-/Debug-Profil).pipeline.abort_on_fail: steuert, ob beiphase_end(error)sofort abgebrochen wird.output.registered_dir: Ziel-Unterordner für registrierte Frame-Ausgaben.output.write_registered_frames: schreibt pro Frame registrierte FITS; erhöht IO- und Speicherbedarf stark.output.crop_to_nonzero_bbox: schneidet den finalen Stack auf die nichtleere Bounding Box zu.data.image_width,data.image_height: optionale Erwartungswerte; normalerweise FITS-headerbasiert erkannt.data.color_mode: erwarteter Aufnahmemodus; Laufzeit-Autodetektion kann mit Warnung übersteuern.data.bayer_pattern: CFA-Layout für OSC-Verarbeitung und korrekte Farbrekonstruktion.data.linear_required: koppelt Policy für Linearitätsanforderung an Linearity-Diagnostik.
A.2 Linearity / Calibration / Assumptions¶
linearity.enabled: aktiviert Linearitätsdiagnostik in Scan/Frühvalidierung.linearity.max_frames: Stichprobengröße der Linearitätsprüfung (Speed vs. Sicherheit).linearity.min_overall_linearity: Schwellwert für Linearity-Pass/Fail.linearity.strictness: Policy-Mapping (Fail/Warn/Ignore-Verhalten).calibration.use_bias,use_dark,use_flat: schaltet jeweilige Master-Kalibrierstufe ein.calibration.bias_use_master,dark_use_master,flat_use_master: nutzt explizite Masterdateien statt Directory-Stacking.calibration.dark_auto_select: automatische Dark-Master-Auswahl nach Belichtungszeit (optional Temperatur).calibration.dark_match_exposure_tolerance_percent: erlaubte Belichtungsabweichung beim Dark-Matching.calibration.dark_match_use_temp: aktiviert temperaturbasiertes Dark-Matching.calibration.dark_match_temp_tolerance_c: erlaubte Temperaturabweichung bei aktivem Temp-Matching.calibration.bias_dir,darks_dir,flats_dir: Quellordner für Kalibrierframe-Findung.calibration.bias_master,dark_master,flat_master: explizite Pfade zu Master-Kalibrierframes.calibration.pattern: Glob-Muster für Kalibrierdatei-Lookup.assumptions.frames_min: minimale nutzbare Frame-Anzahl vor Abort oder Emergency-Reduced-Mode.assumptions.frames_reduced_threshold: Umschaltpunkt Reduced- vs. Full-Mode.assumptions.reduced_mode_skip_clustering: deaktiviert teures State-Clustering im Reduced-Mode.assumptions.reduced_mode_cluster_range: begrenzter K-Suchraum falls Clustering im Reduced-Mode läuft.
A.3 Normalization / Registration / Dithering¶
normalization.enabled: methodikgetrieben verpflichtend (normalerweise aktiv lassen).normalization.mode: Hintergrund- vs. Median-zentrierte Normalisierungsstrategie.normalization.per_channel: kanalweise (OSC/RGB) Normalisierung zur Balance-Erhaltung.registration.engine: bevorzugte Startmethode; Laufzeit nutzt trotzdem Fallback-Kaskade.registration.enable_star_pair_fallback: aktiviert/deaktiviert den zusätzlichen (nicht-normativen) Star-Pairs-Fallback.registration.allow_rotation: erlaubt Rotationsanteile in globalen Warps (Pflicht für Alt/Az).registration.star_topk: Anzahl starker Sterne für sternbasierte Engines.registration.star_min_inliers: minimale akzeptierte Inlier-Korrespondenzen.registration.star_inlier_tol_px: geometrische Inlier-Toleranz.registration.star_dist_bin_px: Distanzhistogramm-Quantisierung für Star-Similarity.registration.reject_outliers: robustes Verwerfen unplausibler Warps nach Matching.registration.reject_cc_min_abs: absolute NCC-Untergrenze in Outlier-Logik.registration.reject_shift_px_min: absolute Shift-Untergrenze für Shift-Outlier.registration.reject_shift_median_multiplier: relativer Shift-Schwellwert zur Median-Shift.registration.reject_scale_min,reject_scale_max: erlaubtes Similarity-Scale-Band.dithering.enabled: aktiviert Dither-Diagnostik im Registration-Artefakt.dithering.min_shift_px: Mindest-Frame-Shift, um als Dither zu zählen.
A.4 Tile Denoise / Chroma Denoise¶
tile_denoise.soft_threshold.enabled: aktiviert räumliches Highpass-Soft-Thresholding.tile_denoise.soft_threshold.blur_kernel: Kernelgröße für Hintergrundschätzung des Residuals.tile_denoise.soft_threshold.alpha: Denoise-Stärke (tau = alpha * sigma).tile_denoise.soft_threshold.skip_star_tiles: überspringt Denoise auf stern-dominierten Tiles.tile_denoise.wiener.enabled: aktiviert frequenzdomänigen Wiener-Zweig.tile_denoise.wiener.snr_threshold: Wiener-Gate; niedrige SNR wird eher gefiltert.tile_denoise.wiener.q_min,q_max,q_step: interner Wiener-Qualitätssuchraum.tile_denoise.wiener.min_snr: minimale SNR für stabile Wiener-Parametrisierung.tile_denoise.wiener.max_iterations: Iterationsobergrenze des Wiener-Tunings.chroma_denoise.enabled: aktiviert chroma-fokussierte Denoise (OSC-Pfad).chroma_denoise.color_space: Chroma/Luma-Transform (ycbcr_linearoderopponent_linear).chroma_denoise.apply_stage: Ausführung vor Tile-OLA oder nach finalem linearem Stack.chroma_denoise.protect_luma: schützt Luminanzstrukturen vor Chroma-Nebenwirkungen.chroma_denoise.luma_guard_strength: Stärke der Luma-Schutzmaske.chroma_denoise.star_protection.enabled: Sternmasken-Schutz für Kerne/Halos.chroma_denoise.star_protection.threshold_sigma: Schwelle für Sternmaskenbildung.chroma_denoise.star_protection.dilate_px: Ausdehnungsradius der Sternmaske.chroma_denoise.structure_protection.enabled: kanten-/strukturabhängiger Chroma-Schutz.chroma_denoise.structure_protection.gradient_percentile: Gradient-Cutoff für Strukturmaske.chroma_denoise.chroma_wavelet.enabled: Wavelet-basierte Chroma-Dämpfung.chroma_denoise.chroma_wavelet.levels: Anzahl Wavelet-Zerlegungsebenen.chroma_denoise.chroma_wavelet.threshold_scale: Wavelet-Schwellen-Multiplikator.chroma_denoise.chroma_wavelet.soft_k: Weichheit der Wavelet-Schrumpfung.chroma_denoise.chroma_bilateral.enabled: bilaterale Glättung auf Chroma-Komponenten.chroma_denoise.chroma_bilateral.sigma_spatial: räumliche bilaterale Stärke.chroma_denoise.chroma_bilateral.sigma_range: Farbdistanz-Selektivität bilateral.chroma_denoise.blend.mode: aktuell chroma-only Blending-Modus.chroma_denoise.blend.amount: Mischanteil Original vs. denoised Chroma.
A.5 Global/Local Metrics / Tile / Synthetic / Reconstruction¶
global_metrics.weights.background,noise,gradient: gewichtete Terme der globalen Frame-Qualität.global_metrics.clamp: harte Grenzen vor exponentiellem Weight-Mapping.global_metrics.adaptive_weights: Auto-Anpassung der Metrikgewichte aus Streuung.global_metrics.weight_exponent_scale: Trennschärfe inexp(k*Q).tile.size_factor: Grund-Tilegröße aus gemessenem Seeing/FWHM.tile.min_size: Untergrenze gegen zu kleine, instabile Tiles.tile.max_divisor: Obergrenze über Bildseiten-Divisor.tile.overlap_fraction: Überlappungsanteil für glattes Overlap-Add.tile.star_min_count: Schwelle STAR vs. STRUCTURE Tile-Klasse.local_metrics.clamp: Clamp lokaler Qualität vor Gewichtsbildung.local_metrics.neighborhood_normalization.enabled,radius,blend: stabilisieren die lokale Metrik-Normierung durch Mischung aus tile-lokalen und nachbarschaftsgepoolten robusten z-Scores.local_metrics.spatial_regularization.enabled,lambda,passes: nachbarschaftsbasierte Regularisierung lokaler Tile-Scores vor der Exponential-Gewichtsbildung.local_metrics.star_mode.weights.fwhm,roundness,contrast: STAR-Tile-Qualitätsmischung.local_metrics.structure_mode.metric_weight,background_weight: STRUCTURE-Tile-Qualitätsmischung.synthetic.weighting: Methode zur Synthetic-Frame-Erzeugung (globalvstile_weighted).synthetic.frames_min: minimale Clustergröße für Synthetic-Output.synthetic.frames_max: maximale Anzahl Synthetic-Outputs.synthetic.clustering.mode: Clustering-Backend für Zustandsgruppen.synthetic.clustering.cluster_count_range: erlaubtes K-Suchfenster.- Rekonstruktion/OLA ist aktuell interner Runner-Ablauf ohne eigenen
reconstruction:-Config-Block.
A.6 Debayer / Astrometry / PCC / Stacking / Validation / Runtime¶
- Debayer ist eine automatische OSC-Pipeline-Phase und kein separater Config-Schalter mehr.
astrometry.enabled: aktiviert Plate-Solving-Phase.astrometry.astap_bin: Pfad zur ASTAP-Binary.astrometry.astap_data_dir: Pfad zu ASTAP-Katalogdaten.astrometry.search_radius: Blind-Solve vs. eingeschränkter Suchradius.pcc.enabled: aktiviert photometrische Farbkalibrierung.pcc.source: Katalog-/Provider-Auswahl.pcc.mag_limit,mag_bright_limit: Magnitudengrenzen für Sternselektion.pcc.aperture_radius_px,annulus_inner_px,annulus_outer_px: Photometrie-Aperturgeometrie.pcc.min_stars: Mindestanzahl gültiger Sterne für stabilen PCC-Fit.pcc.sigma_clip: Outlier-Rejection im PCC-Fit.pcc.background_model: lokales Hintergrundmodell fuer Sternphotometrie.pcc.max_condition_number,pcc.max_residual_rms: Stabilitaetsgrenzen fuer Matrix/Fit.pcc.radii_mode,pcc.aperture_fwhm_mult,pcc.annulus_inner_fwhm_mult,pcc.annulus_outer_fwhm_mult,pcc.min_aperture_px: adaptive Radiussteuerung.pcc.siril_catalog_dir: optionaler lokaler Siril-Katalogpfad.pcc.apply_attenuation,pcc.background_neutralization_mode,pcc.chroma_strength,pcc.k_max: optionale PCC-Apply-/Hintergrundneutralisierungs-Kontrollen.stacking.method: finaler Kombinationsmodus (rejvsaverage).stacking.common_overlap_required_fraction: erforderliche Pixel-Abdeckung ueber alle nutzbaren Frames fuerCOMMON_OVERLAP.stacking.tile_common_valid_min_fraction: minimaleCOMMON_OVERLAP-Abdeckung pro voller Tile-Flaeche.stacking.sigma_clip.sigma_low,sigma_high: untere/obere Rejection-Schwellen.stacking.sigma_clip.max_iters: maximale Clip-Iterationen.stacking.sigma_clip.min_fraction: Mindestanteil verbleibender Samples (Fallback-Schutz).stacking.cluster_quality_weighting.enabled: aktiviert Synthetic-Cluster-Qualitätsgewichtung.stacking.cluster_quality_weighting.kappa_cluster: Exponent der Qualitätsgewichtung.stacking.cluster_quality_weighting.cap_enabled: expliziter Dominanz-Cap-Schalter.stacking.cluster_quality_weighting.cap_ratio: Dominanz-Cap-Level bei aktivem Cap.- Laufzeit-Schutz: Für Synthetic-Stacking wird standardmäßig ein Dominanz-Cap angewendet, auch wenn
cap_enabled=false, um Dynamik-Kollaps diffuser Signale zu verhindern. stacking.output_stretch: optionales lineares Nachskalieren der Ausgabedaten auf den vollen 16-bit-Bereich.stacking.cosmetic_correction: optionale Hotpixel-artige Korrektur nach dem Stacking.stacking.cosmetic_correction_sigma: Schwellwert der Cosmetic-Korrektur.validation.min_fwhm_improvement_percent: notwendige Schärfeverbesserung.validation.max_background_rms_increase_percent: Schutz gegen Hintergrundverschlechterung.validation.min_tile_weight_variance: Sanity-Check gegen degenerierte lokale Gewichte.validation.require_no_tile_pattern: Checker/Grid-Artefakt-Prüfung.runtime_limits.parallel_workers: Obergrenze für Worker-Threads.runtime_limits.memory_budget: Speicherbudget, das effektive Parallelität begrenzen kann.runtime_limits.tile_analysis_max_factor_vs_stack: Warnschwelle für Laufzeit-Anomalien.runtime_limits.hard_abort_hours: absolute Runtime-Sicherheitsgrenze.runtime_limits.allow_emergency_mode: erlaubt Verarbeitung unterhalb normaler Annahmen.