Adaptive Quality Map Hyperstacking (AQMH) – Methodik v0.2.1¶
Dokumentstatus: Normativ für die Konfigurationsfamilie v0.2.1.
Ersetzt: aqmh_methodik_en_v0.2.0.md bzw. deren deutsche Übersetzung.
Sprache: Deutsch. Für die englische Version siehe aqmh_methodik_en_v0.2.1.md.
0. Dokumenthistorie und Geltungsbereich¶
0.1 Änderungen gegenüber v0.2.0¶
Version v0.2.1 ist eine strikte Obermenge von v0.2.0. Alle mathematischen
Definitionen, Invarianten, normativen Vorgabewerte und diagnostischen
Anforderungen aus v0.2.0 bleiben verbindlich. v0.2.1 formalisiert vier
Erweiterungen, die in der Referenzimplementierung nach der v0.2.0-Basis
hinzugekommen sind:
-
Hintergrundgradienten-Strafe in der globalen Frame-Qualität (§1.5, §4.2).
Ein drittes globales Qualitätssignal bestraft Frames mit starkem großskaligem Hintergrundgradienten (z. B. Lichtverschmutzung, Mondglühen). Das Signal wird aus einem quadrantenbasierten Sky-Gradient-Schätzer gewonnen, nicht aus der AQMH-Quality-Map selbst. Es wird daher als zulässige Cross-Infrastructure-Erweiterung dokumentiert, die mit dem AQMH-Unabhängigkeitsprinzip (§0.3) vereinbar bleibt. -
Registrierungs-Gewichtsschutz (§4.3).
Vor der pixelweisen gewichteten Rekonstruktion kann das globale AQMH-Gewicht jedes Frames mit einem Registrierungs-Konfidenzfaktor gedämpft werden, der aus dem gemeinsamen Global-Registration-Artefakt abgeleitet wird. Dieser Schutz ist eine reine Robustheitsmaßnahme; er ändert nicht die Rekonstruktionsformel und bleibt ein Frame-Multiplikator. -
Adaptive Niederfrequenz-Neutralisierung und strukturmaskierte Detail-Blending (§6.3, §6.4).
Nach der gewöhnlichen AQMH-Rekonstruktion kann eine optionale Nachverarbeitung niederfrequente „Veil“-Residuen entfernen, indem eine stark geglättete Differenz zwischen dem AQMH-Ergebnis und einem uniformen Kontrollmittel (ungewichteter Mittelwert) subtrahiert wird. Anschließend wird Detail in strukturreichen Regionen selektiv zurückgeblendet. Ein Validierungsgate entscheidet, ob das neutralisierte/geblendete Ergebnis übernommen wird; andernfalls bleibt das rohe AQMH-Ergebnis erhalten. Das uniforme Kontrollmittel darf das rohe AQMH-Ergebnis nicht als stillen Fallback ersetzen.
Ziel dieser Ergänzungen ist es, das v0.2.0-Pixelqualitätsmodell zu erhalten, während drei praktische Fehlermuster reduziert werden:
- Großskalige Hintergrundgradienten, die den finalen Stack dominieren würden, weil jeder Frame einen ähnlichen additiven Gradienten trägt.
- Restschwächen der Registrierung (niedrige Korrelation oder tief verkettete Vorhersage-Frames), die durch hohe AQMH-Qualitätswerte verstärkt werden.
- Niederfrequenter „Veil“ oder Hintergrund-Nichtlinearität, der durch die gewichtete Rekonstruktion selbst entstehen kann.
0.2 Unabhängigkeit und gemeinsame Infrastruktur¶
AQMH bleibt eine unabhängige Rekonstruktionsmethode. Sie darf gemeinsame Pipeline-Infrastruktur wiederverwenden, aber ihr Qualitätsmodell und ihre Rekonstruktionsgewichte dürfen nicht aus den lokalen/Tile-Metriken von Classic Tile Compile abgeleitet sein.
Gemeinsame Infrastruktur kann umfassen:
- Input-Scan und nicht-qualitätsbasierte Eligibilitätsfilter (Lesbarkeit, Verfügbarkeit von Kalibration, explizite Benutzer-Ausschlüsse);
- Kalibration und Registrierung/Prewarping;
- globale photometrische Normalisierung;
- globale Output-Canvas-Maske
Cund frame-spezifische registriert-gültige MaskenM_f; - Run-Management, Logging, Artefakte, Reports, UI-Plumbing.
Der AQMH-Algorithmus selbst besteht aus:
- Berechnung dichter AQMH-Quality-Maps;
- pixelweiser gewichteter AQMH-Rekonstruktion;
- AQMH-Diagnostik und optionaler Region-Extraktion.
Classic Tile Compile und AQMH müssen unabhängig voneinander ausführbar sein. Das Aktivieren oder Deaktivieren einer Methode darf die mathematische Definition der anderen nicht verändern.
0.3 Cross-Infrastructure-Erweiterungen¶
v0.2.1 erlaubt ausdrücklich die folgenden sorgfältig abgegrenzten Eingaben
aus der gemeinsamen Infrastruktur, sofern sie dokumentiert sind und keine
AQMH-eigenen Signale ersetzen:
-
Sky-Gradient-Zusammenfassung für die Hintergrundstrafe (§1.5).
Dies ist ein Skalar pro Frame, abgeleitet aus dem hintergrundmaskierten Eingabebild nach der Registrierung. Er wird nur innerhalb des globalen Qualitäts-Sigmoid verwendet und bleibt orthogonal zur Berechnung der within-frameQ_map. -
Registrierungs-Konfidenz-Metadaten für den Gewichtsschutz (§4.3).
Dies ist ein Skalarmultiplikator pro Frame, abgeleitet aus dem bestehenden Global-Registration-Artefakt. Er modifiziert den globalen FaktorG_f, beeinflusst aber nichtQ_map. -
Uniformes Kontrollmittel für die Neutralisierungsvalidierung (§6.3).
Der ungewichtete Mittelwert der registrierten Frames wird als Nebenprodukt der AQMH-Rekonstruktion berechnet (compute_uniform_control = true). Er wird nur für die Validierung und optionales Blending nach der Rekonstruktion verwendet, nicht als primärer Qualitätseingang. -
PSF-FWHM-Schärfeproxy für die globale Schärfezusammenfassung
g_sharp(§1.1, §4.2).
Wenn pro-Frame-Sternmetriken aus der gemeinsamen Metrik-Phase verfügbar sind, kann der Runner1 / wfwhm(gewichteter FWHM, invertiert, so dass kleinerer FWHM einen höheren Schärfeewert ergibt) anstelle der AQMH-Map-g_sharp-Zusammenfassung verwenden. Dies ist ein Skalar pro Frame, abgeleitet aus der PSF-Sternentdeckung auf dem registrierten Frame. Er wird nur innerhalb des globalen Qualitäts-Sigmoid verwendet und bleibt orthogonal zur within-frame-Q_map-Berechnung. Die AQMH-Map-g_sharpdient als Fallback, wenn Sternmetriken nicht verfügbar oder ungültig sind. Die ausgewählte Quelle wird pro Frame alsglobal_sharpness_source("laplacian_variance"oder"psf_wfwhm_inverted") inaqmh_metrics.jsondokumentiert.
Begründung. Das AQMH-Map-Schärfesignal Phi_sharp_0 basiert auf
local_variance(laplacian), welches die lokale Hochfrequenzvarianz misst.
Bei stern-dominierten Feldern ist dies ein ausgezeichneter Schärfeproxy. Bei
Extended-Emission-Objekten (Galaxien, Nebel) wird dasselbe Signal jedoch von
der Nebeltextur dominiert statt von der stellaren PSF-Breite, und kann
positiv mit dem Seeing-FWHM korrelieren — was zu einer Inversion führt,
bei der schlechtere Frames ein höheres g_sharp und damit höhere Gewichte
erhalten. Der PSF-FWHM-Proxy ist immun gegen diese Inversion, da er die
Sternbildbreite direkt misst, unabhängig vom Extended-Emission-Inhalt.
1. Prinzipien und Definitionen¶
1.1 Physikalisches Ziel¶
Die Methode modelliert die pixelweise Beobachtungsqualität als Produkt zweier separabler Komponenten:
- Frame-Level-Qualität: der globale atmosphärische/technische Zustand des
Frames
f, erfasst durch den strikt positiven AQMH-FaktorG_{f,c}. - Räumliches Qualitätsfeld: die kontinuierliche Qualitätsverteilung im
Frame, erfasst durch
Q_map_{f,c}(x,y).
Für jeden Frame/Kanal leiten wir die globalen Pre-Z-Score-Zusammenfassungen aus seinen AQMH-Maps ab:
g_sharp_{f,c} = median_{p source-valid}(Phi_sharp_0(p))
g_snr_{f,c} = median_{p source-valid}(Phi_snr_1(p))
wobei der feinste verfügbare Skala verwendet wird, falls Skala 1 ausgelassen wird.
Post-v0.2.1-Erweiterung — PSF-FWHM-Schärfeproxy. Wenn pro-Frame-
Sternmetriken verfügbar sind, kann der Runner g_sharp durch 1 / wfwhm
(invertierten gewichteten FWHM) aus der gemeinsamen PSF-Sternentdeckungs-
Phase ersetzen. Dies vermeidet eine bekannte Inversion von
local_variance(laplacian) bei Extended-Emission-Objekten (§0.3). Die
AQMH-Map-g_sharp wird als Fallback verwendet, wenn Sternmetriken nicht
verfügbar sind. Die ausgewählte Quelle wird pro Frame als
global_sharpness_source ("laplacian_variance" oder
"psf_wfwhm_inverted") in aqmh_metrics.json dokumentiert.
1.2 Effektives Pixelgewicht¶
Das effektive pixelweise Rekonstruktionsgewicht ist:
v0.2.1 erlaubt zusätzlich einen Frame-weise Registrierungs-Konfidenz-
Multiplikator R_f ∈ [r_floor, 1] (§4.3). Wenn aktiviert, lautet das Gewicht:
R_f ist ein gemeinsamer Infrastruktur-Schutz, kein Bestandteil des
AQMH-Qualitätsmodells. Er muss in aqmh_reconstruction.json protokolliert
werden.
1.3 Invarianten (verbindlich)¶
Die folgenden Invarianten aus v0.2.0 bleiben verbindlich:
- Keine Frame-Selektion: Ganze Frames dürfen nicht auf Basis der Qualität entfernt werden.
- Bedingte photometrische Linearität: Sobald deterministische Gewichte
berechnet sind, bleibt die finale Rekonstruktion
R(p) = sum_f w_f(p) * I_f(p) / sum_f w_f(p)mitw_f(p) >= 0. AQMH darf keine nichtlinearen Intensitätstransformationen auf die in den Akkumulator eingehenden Samples anwenden. - Determinismus: Alle Quality-Map-Berechnungen müssen deterministisch und reproduzierbar sein.
- Canvas-Ausschluss: Canvas-ungültige Pixel werden aus allen AQMH- Akkumulatoren und Statistiken ausgeschlossen.
- Keine Halluzination: AQMH-Ausgaben sind Gewichte und Masken. Es werden keine Pixelintensitäten generiert oder vorhergesagt.
- Sample-Count-Suffizienz für optionale Selektionsmodi: Cherry-Pick und jeder andere per-Pixel-Selektionsmodus müssen eine dokumentierte minimale Anzahl beibehaltener Samples erzwingen; unterschreitet sie, wird der Modus automatisch deaktiviert.
v0.2.1 ergänzt die folgenden abgeleiteten Invarianten für die neuen
Erweiterungen:
-
Cross-Infrastructure-Erweiterungen müssen monotone Frame-Level-Schütze sein.
Der Registrierungs-Gewichtsschutz und die Hintergrundstrafe dürfen das globale Frame-Gewicht nur mit einem nicht-negativen Skalar multiplizieren. Sie dürfenQ_mapnicht verändern, dürfen keine pixelabhängigen Gewichte einführen und müssen unabhängig deaktivierbar sein. -
Nachverarbeitung muss zwei Referenzen bestehen. Das rohe AQMH-Ergebnis
Aist die unveränderliche Qualitäts-Baseline. Jeder nachverarbeitete Kandidat muss sowohl gegen das uniforme KontrollmittelUals auch gegenAalle jeweils anwendbaren Regressionsschwellen bestehen. Besteht kein Kandidat beide Vergleiche, istAdas Endergebnis. Der Run muss den ausgewählten Kandidaten, beide Vergleiche und den Auswahlgrund aufzeichnen. Eine Verbesserung einer Einzelmetrik darf keine Lockerung einer anderen Schwelle auslösen.
1.4 Deterministische Statistik-Konvention¶
(Identisch zu v0.2.0 §1.4.)
Überall wird der robuste Z-Score verwendet: z(x) = (x - med) / (1.4826 * MAD)
über finite, source-valid Samples auf derselben Aggregationsebene. Degenerierte
Mengen (MAD = 0 oder weniger als drei finite Samples) erhalten für gültige
Eingaben Z-Score 0 und werden andernfalls als ungültig markiert.
1.5 Globale Qualität mit Hintergrundstrafe (v0.2.1-Ergänzung)¶
v0.2.1 führt ein optionales drittes globales Qualitätssignal ein:
wobei sky_gradient_f ein dimensionsloser relativer Großskalengradient ist:
background_fist der maskierte Medianhintergrund von Framef.- Das Bild wird in vier Quadranten unterteilt. Für jeden Quadranten
qwird der maskierte Medianhintergrundb_qberechnet. q_min = min_q(b_q),q_max = max_q(b_q).
Ist background_f <= 0 oder gibt es weniger als vier gültige Quadrantenwerte,
so ist die Zusammenfassung ungültig.
Die Hintergrundstrafe geht als subtraktiver Term in die globale Qualität ein:
z_s,f = robust_zscore(g_sharp)
z_n,f = robust_zscore(g_snr)
z_b,f = robust_zscore(g_background)
score_f = w_sharp * z_s,f + w_snr * z_n,f - w_background * z_b,f
G_f = g_floor + (1 - g_floor) * sigmoid(clamp(g_k_scale * score_f, -8, 8))
mit sigmoid(v) = 1 / (1 + exp(-v)).
Post-v0.2.1-Erweiterung — Sigmoid-Temperatur und Score-Clipping. Die
Implementierung multipliziert score_f mit einem konfigurierbaren
Temperaturfaktor g_k_scale (Default 1.5) vor der Sigmoid-Anwendung und
clippt den skalierten Score auf [-8, 8] zur numerischen Stabilität. Die
v0.2.1-Referenzformel verwendet eine implizite Skalierung von 1.0 und kein
Clipping. Der Temperaturfaktor ist notwendig, weil robust_zscore (MAD-basiert)
typischerweise kleinere Absolutwerte liefert als Standard-z-Scores; ohne
Skalierung clustern alle G_f-Werte nahe g_floor + 0.5 * (1 - g_floor), was
den gewichteten Stack fast ungewichtet macht. Das Clipping ist ein
Sicherheitsnetz, das in der Praxis nie aktiv wird, da einzelne z-Scores bereits
auf [-5, 5] begrenzt sind, aber exp-Überlauf bei extremen Eingaben
verhindert.
Die Gewichte w_sharp, w_snr, w_background werden direkt als
g_w_sharp, g_w_snr, g_w_background_penalty konfiguriert. Zur Laufzeit
werden sie in effektive Gewichte w_*_eff umgerechnet:
- Ist ein konfiguriertes Gewicht
<= 0, so ist sein effektives Gewicht0. - Gibt es weniger als drei finite positive Zusammenfassungswerte, so ist das
effektive Gewicht
0. - Ist der Variationskoeffizient
CV = MAD / mediander endlichen positiven Zusammenfassungswerte unter0.01, so ist das effektive Gewicht0. Damit wird verhindert, dass nahezu konstante Signale Rauschen verstärken und die Qualitätsrangfolge invertieren.
Die verbleibenden effektiven Gewichte werden so renormiert, dass gilt:
sofern mindestens ein effektives Gewicht positiv ist. Sind alle effektiven
Gewichte null, ist score_f = 0 und jeder Frame erhält dasselbe Gewicht
G_f = g_floor + 0.5 * (1 - g_floor). Die absolute gemeinsame Skalierung ist
für den gewichteten Mittelwert irrelevant.
Normative Vorgabewerte (v0.2.1):
Die v0.2.1-Referenzwerte sind:
g_floor = 0.05g_w_sharp = 0.6g_w_snr = 0.4g_w_background_penalty = 0.3
Die aktuellen Betriebswerte (Post-v0.2.1-Revision) sind:
g_floor = 0.03g_w_sharp = 0.55g_w_snr = 0.30g_w_background_penalty = 0.25
Diese wurden empirisch optimiert: der niedrigere Floor und die ausgewogeneren Gewichte verhindern, dass wenige hochwertige Frames den Stack dominieren, bei typischen Deep-Sky-Datensätzen mit moderer Frame-zu-Frame-Qualitätsvariation.
Post-v0.2.1-Erweiterung-Default:
g_k_scale = 1.5(Sigmoid-Temperatur;1.0stellt die v0.2.1-Referenzformel wieder her)
Die Sigmoid-Abbildung begrenzt G_f auf [g_floor, 1]. Dadurch kann kein
einzelner Frame durch ein exponentiell wachsendes globales Gewicht die lokalen
Quality-Maps dominieren. Mit g_w_background_penalty = 0.0 wird nur die
Hintergrundstrafe deaktiviert; die begrenzte v0.2.1-Abbildung bleibt aktiv.
Begründung. Ein starker Großskalengradient bedeutet, dass das vom SNR-
Signal verwendete Hintergrundmodell (b_s in §2.3.2(b)) lokal verzerrt ist.
Frames mit sehr flachem Hintergrund tendieren zu saubereren und lineareren
Bedingungen; Frames mit starkem Mondglühen- oder Lichtverschmutzungsgradienten
erhalten ein niedrigeres globales Gewicht, ohne jedoch ganz entfernt zu werden.
Kompatibilitätshinweis. Die Hintergrundstrafe ist nicht aus Q_map
abgeleitet. Sie ist daher eine Erweiterung von v0.2.0, keine
Widersprüchlichkeit. Sie muss in aqmh_metrics.json als Frame-Feld
global_background_penalty_input mit der Quelle
global_background_penalty_source: "sky_gradient" dokumentiert werden. Das
konfigurierte Strafgewicht gehört zur AQMH-Global-Quality-Konfiguration und
nicht zum Artefakt registration_weight_guard.
2. Quality-Map-Berechnung¶
2.1 Übersicht¶
Identisch zu v0.2.0. AQMH berechnet für jedes Frame/Kanal-Paar eine dichte Quality-Map durch Fusionierung mehrskaliger lokaler Schärfe-, SNR- und Artefakt-Anomalie-Signale.
2.2 Gemeinsame Vorverarbeitung¶
Identisch zu v0.2.0. Alle Frames müssen vor der AQMH-Map-Berechnung kalibriert, registriert und auf einen gemeinsamen Output-Canvas prewarped sein.
2.3 Mehrskalige Pyramide¶
Identisch zu v0.2.0 §2.3. Die vier Skalen, die Auslassungsregel, die Berechnung von Schärfe, SNR und Artefakt sowie die geometrische Mittelwertfusion bleiben unverändert.
2.4 Mehrskalen-Fusion¶
Identisch zu v0.2.0 §2.4.
implementiert als exp(mean_s(log(Psi_s^{up}))) mit dem Exact-Zero-Veto und
dem Output-Guard.
2.5 Block-Level-Diagnose-Zusammenfassungen¶
Identisch zu v0.2.0 §2.5.
3. Quality-Map-Speicher und Speichermodell¶
Der Standard-Speichermodus ist Full-Resolution float32 mit
resolution_divisor = 1. Ein optionaler Performance-Modus verwendet uint16
mit resolution_divisor = 2 für reduzierten Speicherbedarf; dies ist nicht
der Standard und muss explizit berichtet werden. Cherry-Pick erfordert den
Referenzmodus, weil eine reduzierte oder quantisierte Map die per-Pixel-
Rangfolge verändern kann. Jeder Run muss Auflösung und Datentyp berichten.
Das Hintergrundstrafe-Signal beeinflusst den Quality-Map-Speicher nicht; es ist
ein Frame-skaliger Wert, der während oder nach der Map-Berechnung ermittelt
und in aqmh_metrics.json abgelegt wird.
4. Pipeline-Integration¶
4.1 AQMH-Verarbeitungsstufen¶
Identisch zu v0.2.0:
Die Ausgabe von AQMH_RECONSTRUCTION wird zusätzlich unverändert als
outputs/aqmh_reconstructed_raw.fit gespeichert. Dieses Artefakt enthält bei
OSC-Daten weiterhin das CFA-Muster und ist die einzige zulässige Eingabe für
ein Resume ab STACKING. reconstructed_L.fit ist kein Resume-Artefakt: Es
wird in STACKING durch die skalierte Luminanzausgabe ersetzt. Fehlt das rohe
Artefakt bei einem älteren Run, muss der Runner AQMH_RECONSTRUCTION aus den
Map- und Prewarp-Caches erneut ausführen. Eine bereits gestackte Luminanz darf
nie erneut als CFA debayert werden.
Mit aqmh.reconstruction.delete_prewarped_cache_after_run: false kann der
Cache cache/prewarped_frames gezielt für spätere Resumes erhalten bleiben; der Default true
löscht ihn weiterhin zur Speicherplatzfreigabe.
4.2 Global-Quality-Stufe (v0.2.1-Aktualisierung)¶
Die Stufe berechnet nun pro Frame die drei Zusammenfassungsvektoren
g_sharp, g_snr, g_background und übergibt sie an
compute_aqmh_global_quality. Das Ergebnis ist ein Vektor G_f pro Frame.
Alle drei Eingaben werden pro Frame in aqmh_metrics.json erfasst:
global_sharpness_inputglobal_sharpness_source: "laplacian_variance"oder"psf_wfwhm_inverted"(Post-v0.2.1-Erweiterung)global_snr_inputglobal_background_penalty_inputglobal_background_penalty_source: "sky_gradient"global_quality_input_invalidglobal_quality(der finaleG_f)
Wenn der PSF-FWHM-Schärfeproxy verwendet wird, enthält global_sharpness_input
bereits den 1 / wfwhm-Wert.
4.3 Registrierungs-Gewichtsschutz (v0.2.1-Ergänzung)¶
Vor der Rekonstruktion kann der Runner optional einen
Registrierungs-Gewichtsschutz auf G_f anwenden. Er liest das gemeinsame
global_registration.json-Artefakt, das pro Frame die Felder cc
(Kreuzkorrelations-Konfidenz), source (Registrierungs-Quelltyp) und optional
chain_depth enthalten muss.
Für jeden Frame f:
- Kreuzkorrelations-Abbildung. Direkte und Referenz-Lösungen erhalten oberhalb des Floors keine kontinuierliche Dämpfung:
Für sequenzielle, vorhergesagte, interpolierte oder unbekannte Lösungen gilt:
mit den Vorgaben r_floor = 0.30, cc_floor = 0.35, cc_full = 0.80.
-
Dämpfung nach Registrierungsquelle.
-
Falls
source == "sequential_refined":r_f *= sequential_factor(Vorgabe0.92). -
Falls
sourceden String"predicted","interpolated"enthält oder"unknown"ist:r_f *= predicted_factor(Vorgabe0.50). -
Kettentiefen-Dämpfung für nicht-direkte Lösungen.
depth_penalty = min( depth_max, max(0, depth_f - 1) * depth_penalty_per_step )
r_f *= (1 - depth_penalty)
mit den Vorgaben depth_penalty_per_step = 0.03, depth_max = 0.15.
- Clamping.
Das effektive globale Gewicht in der Rekonstruktion lautet:
Der Schutz ist standardmäßig aktiviert (registration_weight_guard: true) und
wird in aqmh_reconstruction.json unter registration_weight_guard berichtet.
Begründung. Tief verkettete oder schwach korrelierte Frames können die Eligibilitätsfilterung überstehen, aber dennoch eine geringere Registrierungsgenauigkeit besitzen. Der Schutz verhindert, dass hohe AQMH-Qualitätswerte Registrierungsfehler verstärken. Da er ein Multiplikator aus der gemeinsamen Infrastruktur ist, wird er als Robustheits- erweiterung dokumentiert, nicht als Bestandteil des AQMH-Kernqualitätsmodells.
4.4 Vorverarbeitung der Registrierungs-NCC (v0.2.1-Ergänzung)¶
Vor den NCC-Vergleichen der Registrierung werden die normalisierten Proxy-Bilder für eine robuste Korrelation vorbereitet:
- Begrenze das Proxy-Bild auf nichtnegative Werte, um negative Werte aus der Hintergrundsubtraktion zu entfernen.
- Wende einen Gaussian-Blur mit
sigma = 1.5 pxan, um den Einfluss von Hotpixeln und isolierten Defekten zu reduzieren. - Berechne sowohl die Identity-Overlap-NCC als auch die Warped-Overlap-NCC aus diesen vorbereiteten Bildern.
Ein Near-Identity-Ergebnis wird nur akzeptiert, wenn alle folgenden Bedingungen erfüllt sind:
- Die Gesamtverschiebung ist kleiner als
star_inlier_tol_px. - Die absolute Rotation liegt unter
0.1°. - Die Warped-NCC liegt höchstens
0.02unter der Identity-Overlap-NCC. - Die Identity-Overlap-NCC ist größer als
0.7.
Die letzte Bedingung verhindert, dass eine nahezu nullgroße Verschiebung mit
niedriger Korrelation akzeptiert wird, nur weil der Optimierer keine sinnvolle
Verschiebung gefunden hat. Diese Registrierungsänderung liegt vor AQMH und
verändert Q_map nicht; sie verbessert die Zuverlässigkeit der Metadaten
cc, source und chain_depth, die vom Registrierungs-Gewichtsschutz genutzt
werden.
5. Pixelweise gewichtete Rekonstruktion¶
5.1 Rekonstruktionsformel¶
Identisch zu v0.2.0. Für jeden Output-Kanal:
wobei w_f(p) = G_f^{eff} * Q_map_{f,c}(p) und V_c^I(p) die Menge der
Frames mit finite Intensität und finite Quality-Map an Pixel p ist.
Der geometrische Support jedes registrierten Frames ist Bestandteil von
V_c^I(p). Prewarp-Pixel außerhalb dieses Supports müssen als ungültig
(NaN plus Frame-Support-Maske) erhalten bleiben; nullgefüllte Warpränder
dürfen niemals als reale Intensitätswerte in AQMH eingehen. Dabei gelten drei
getrennte Maskenrollen:
- Die Frame-Support-Maske beschreibt, welche Pixel ein einzelner Frame liefert.
- Die Common-Overlap-Maske dient ausschließlich Analyse, Validierung und Kalibrierung mit der konfigurierten Mindestüberdeckung.
- Die Output-Maske ist die Vereinigung der Frame-Support-Masken und erhält alle tatsächlich rekonstruierbaren Randstrukturen.
Die Common-Overlap-Maske darf weder die AQMH-Rekonstruktion noch BGE-, PCC- oder
HMS-Ausgaben auf den gemeinsamen Kern beschneiden. Pixel, welche
min_n_eff nicht erfüllen, bleiben als nicht ausreichend gestützte Pixel
diagnostizierbar; ihre Existenz darf jedoch nicht dazu führen, dass gültige
Nachbarpixel aus wenigen Frames mit nicht vorhandenen Nullsamples verdünnt
werden.
5.2 Sigma-Clipping und effektive Sample-Suffizienz¶
Iteratives asymmetrisches Sigma-Clipping verwendet standardmäßig
clip_sigma_low = 2.0, clip_sigma_high = 2.0 und clip_iterations = 4.
Die strengere Oberseite unterdrückt positive Ausreißer wie Satellitenspuren,
Hotpixel und nicht vollständig maskierte Sterne, ohne die Unterseite gleich
stark abzuschneiden. Es gelten außerdem min_n_eff = 2.0 und
min_fraction = 0.40. Reicht die Sample-Suffizienz nicht aus, darf kein
scheinbar qualitätsverbesserter Wert aus einer zu kleinen Restmenge entstehen.
5.3 Cherry-Pick-Stacking-Modus¶
Identisch zu v0.2.0 §5.3. Das Run-Level-K_nominal_median-Floor, die
Per-Pixel-Regel K(p) = max(k_min_required, K_nominal(p)), Tiering und die
Rank-Separation-Diagnostik bleiben unverändert.
6. Robustheits-Erweiterungen nach der Rekonstruktion (v0.2.1)¶
6.1 Uniformes Kontrollmittel¶
Wenn compute_uniform_control: true gesetzt ist, berechnet die
Rekonstruktionsroutine zusätzlich den ungewichteten Mittelwert der
registrierten Frames über dieselbe Menge gültiger Pixel. Dieses Mittel wird
uniformes Kontrollmittel U(p) genannt:
U(p) ist kein qualitätsgewichtetes Ergebnis; es ist ein diagnostischer
Referenzwert.
6.2 Validierungsmetriken¶
Das rohe AQMH-Ergebnis A(p) wird mit U(p) verglichen. Jeder
nachverarbeitete Kandidat wird zusätzlich mit A(p) verglichen. Dazu dienen
dieselben Metriken wie die v0.2.0-Validierung:
seam_score_regressionfwhm_regressionbackground_rms_regressiontail11_abs_regressionelongation_regression
background_rms bezeichnet dabei nicht die globale Helligkeitsstreuung des
Bildes. Es wird robust aus horizontalen und vertikalen Pixel-Differenzen
bestimmt (1,4826 * MAD(diff / sqrt(2))). Dadurch werden langsam veränderliche
Nebel-, Galaxien- und IFN-Strukturen nicht als Hintergrundrauschen klassifiziert.
Für Tail- und Elongationsmetriken werden Sterne genau einmal in der jeweiligen Referenz erkannt und anschließend in Kandidat und Referenz an denselben Koordinaten vermessen. Unabhängige Sternerkennungen sind für einen Regressionsvergleich unzulässig, weil sie unterschiedliche Sternpopulationen und damit eine künstliche Regression erzeugen können. Tail und Elongation sind nur bei mindestens zwölf gemeinsam messbaren Sternen anwendbar.
Diese Vergleiche und ihre Anwendbarkeit werden in
aqmh_reconstruction.json protokolliert. Nicht anwendbare Metriken gelten
nicht als Fehler, dürfen aber auch nicht als Verbesserung ausgelegt werden.
6.3 Adaptive Niederfrequenz-Neutralisierung¶
Ist das uniforme Kontrollmittel U(p) verfügbar, wird ein optionaler
neutralisierter Kandidat N(p) berechnet:
Das Blurring verwendet den Reflektionsrandmodus REFLECT101. Die Sigma von 96 px wurde empirisch gewählt, um großskalige „Veil“-Residuen anzugehen, ohne Struktur auf kleineren Skalen zu beeinträchtigen.
Die Vergleiche compare(N, U) und compare(N, A) werden berechnet. N(p)
wird gegenüber A(p) nur dann ausgewählt, wenn der Hintergrundvergleich
anwendbar ist, A gegenüber U tatsächlich einen schlechteren Hintergrund
besitzt, N diesen verbessert und beide Vergleiche alle Schwellen bestehen:
background_rms_regression(N, U) < background_rms_regression(A, U)
background_rms_regression(A, U) > 0
gate(N, U) && gate(N, A)
Das ausgewählte Basisbild wird B(p) genannt (entweder A(p) oder N(p)).
Begründung. Der per-Pixel-gewichtete Mittelwert kann in seltenen Fällen eine niederfrequente Residuum erzeugen, die glatter ist als der wahre Hintergrund. Die Subtraktion des geglätteten Unterschieds zum ungewichteten Mittel entfernt diese additive Niederfrequenzkomponente, während höherfrequentes Detail erhalten bleibt.
6.4 Strukturmaskiertes Detail-Blending¶
Nach Auswahl der Basis B(p) wird ein zweiter optionaler Kandidat berechnet,
der AQMH-Detail in strukturreichen Regionen bewahrt, während der glattere
Hintergrund von B(p) erhalten bleibt:
- Berechne die Gradientenbetrag
grad(U)des uniformen Kontrollmittels. - Erstelle eine weiche Strukturmaske
M_s(p), indem der Gradientenbetrag von dem Quantillow_q = 0.40auf das Quantilhigh_q = 0.90auf[0, 1]abgebildet und anschließend mitsigma = 4 pxgeglättet wird. Die v0.2.1-Referenzwerte warenlow_q = 0.70,high_q = 0.97,sigma = 2 px; die aktuellen Betriebswerte wurden erweitert, um mittelgradientige Struktur (Spiralarme, Staubbänder) zu erhalten, die der ursprünglich enge Bereich unterdrückte. - Berechne den Detail-Kandidaten:
In strukturreichen Regionen (M_s ≈ 1) folgt D(p) der AQMH-Basis; in
glatten Regionen (M_s ≈ 0) folgt es dem uniformen Kontrollmittel.
D(p) wird akzeptiert, wenn er alle Validierungsschwellen sowohl gegen U
als auch gegen die unveränderliche Baseline A besteht:
background_rms_regression(D, U) <= max_background_rms_regression
fwhm_regression(D, U) <= max_fwhm_regression
seam_score_regression(D, U) <= max_seam_score_regression
tail11_abs_regression(D, U) <= max_tail11_abs_regression
elongation_regression(D, U) <= max_elongation_regression
gate(D, A)
und zumindest FWHM oder Seam-Score gegenüber U verbessert.
Schlägt D(p) fehl, wird eine Alpha-Blend-Attenuierung über
alpha ∈ [0, 1] gesucht:
Das größte alpha, das gate(D_alpha, U) und gate(D_alpha, A) besteht und
FWHM oder Seam-Score gegenüber U verbessert, wird ausgewählt. Gibt es kein
alpha > 0, das beide Vergleiche besteht, bleibt die bereits validierte Basis
B(p) erhalten.
6.5 Finales Schutzgate¶
Nach der gesamten Nachverarbeitung wird das ausgewählte Ausgabebild O(p)
nochmals gegen U(p) und die unveränderliche Raw-AQMH-Baseline A(p)
validiert. Falls gilt:
oder eine andere konfigurierte Schwelle überschritten wird, verwirft der
Runner den nachverarbeiteten Kandidaten und gibt A(p) aus. U(p) bleibt
ausschließlich eine diagnostische Referenz. Ein Blend in Richtung U(p) ist
unzulässig, weil ein solcher Blend schwache diffuse Signale entfernen kann,
während einseitige Rauschmetriken scheinbar besser werden.
6.6 Reporting-Anforderungen¶
aqmh_reconstruction.json muss enthalten:
low_frequency_neutralization_applied(true/false)low_frequency_neutralization_evaluated(true/false)low_frequency_neutralization(Vergleichsmetriken plussigma_px)structure_masked_detail_applied(true/false)structure_masked_detail_alpha(finale Blend-Alpha, falls Attenuierung verwendet wurde)structure_masked_detail_validationuniform_control_gate_triggered(true/false)raw_aqmh_validationfinal_vs_raw_aqmh_validationraw_aqmh_preserved_by_guard(true/false)selected_candidate
7. Validierung¶
7.1 Regressionsvalidierung gegen das Uniforme Kontrollmittel¶
Identisch zu v0.2.0 §9. Das rekonstruierte Ergebnis wird mit dem uniformen Kontrollmittel verglichen. Regressionsschwellen:
Aktuelle Betriebswerte (Post-v0.2.1-Revision):
max_seam_score_regression = 0.05max_fwhm_regression = 0.02max_background_rms_regression = 0.05max_tail11_abs_regression = 0.10max_elongation_regression = 0.08
Die v0.2.1-Referenzwerte waren 0.02 für Seam/FWHM/Hintergrund und 0.05
für Tail/Elongation. Die aktuellen Werte sind weiter für Seam, Hintergrund,
Tail und Elongation, um Fehlablehnungen bei realen Datensätzen zu reduzieren,
wo sub-Schwellen-Regressionen häufig sind und keine bedeutsame
Qualitätsminderung anzeigen.
7.2 Zero-Veto-Test¶
Identisch zu v0.2.0. Sind alle Gewichte null, muss die Ausgabe null sein, kein ungewichteter Mittelwert.
7.3 Keine Strukturinjektion¶
Identisch zu v0.2.0. Die AQMH-Ausgabe darf keine Struktur einführen, die das uniforme Kontrollmittel um mehr als die konfigurierten Regressionsschwellen übersteigt.
8. Diagnostik¶
Identisch zu v0.2.0 §6 und §7, ergänzt um die in §6.6 genannten Felder.
Per-Frame-Diagnostiken in aqmh_metrics.json umfassen:
map_mean,map_p10,map_p90artifact_fracsharpness_p50,snr_p50n_regionsglobal_qualityglobal_sharpness_input,global_snr_inputglobal_sharpness_source: "laplacian_variance"oder"psf_wfwhm_inverted"(Post-v0.2.1-Erweiterung)global_background_penalty_inputundglobal_background_penalty_source: "sky_gradient"(v0.2.1)global_quality_input_invalid
9. Konfigurationszusammenfassung¶
9.1 Daten und Pipeline¶
data.color_mode:OSCfür One-Shot-Color-Daten.data.bayer_pattern: Standardauto. Die FITS-Header-WerteBAYERPATundCOLORTYPhaben Vorrang; ein Config-Wert wird nur als Fallback verwendet, wenn der Header keine Bayer-Metadaten enthält. Diese Änderung wurde eingeführt, damit Beispiel-Config-Defaults Kamera-Metadaten nicht überschreiben.
9.2 AQMH-Kernparameter (unverändert gegenüber v0.2.0)¶
aqmh.pyramid.scales = 4aqmh.pyramid.base_window_px = 4aqmh.pyramid.w_sharp = 0.6aqmh.pyramid.w_snr = 0.4aqmh.pyramid.k_artifact = 3.0aqmh.pyramid.frac_artifact_max = 0.25aqmh.storage.resolution_divisor = 1aqmh.storage.dtype = "float32"
9.3 Globale Qualität (v0.2.1)¶
aqmh.global_quality.g_floor = 0.03aqmh.global_quality.g_w_sharp = 0.55aqmh.global_quality.g_w_snr = 0.30aqmh.global_quality.g_w_background_penalty = 0.25aqmh.global_quality.g_k_scale = 1.5(Post-v0.2.1-Erweiterung;1.0stellt die v0.2.1-Referenzformel wieder her)
Die v0.2.1-Referenzwerte waren g_floor=0.05, g_w_sharp=0.6,
g_w_snr=0.4, g_w_background_penalty=0.3.
Mit g_w_background_penalty = 0.0 wird die Hintergrundstrafe deaktiviert; die
begrenzte v0.2.1-Sigmoid-Abbildung bleibt aktiv.
9.4 Registrierungs-Gewichtsschutz (v0.2.1)¶
aqmh.reconstruction.registration_weight_guard = trueaqmh.reconstruction.registration_weight_floor = 0.30aqmh.reconstruction.registration_cc_floor = 0.35aqmh.reconstruction.registration_cc_full = 0.80aqmh.reconstruction.registration_sequential_factor = 0.92aqmh.reconstruction.registration_predicted_factor = 0.50aqmh.reconstruction.registration_chain_depth_penalty = 0.03aqmh.reconstruction.registration_chain_depth_max_penalty = 0.15
9.5 Neutralisierung und Blending (v0.2.1)¶
- Neutralisierungs-Blur-Sigma:
96 px(fest verdrahtet). - Strukturmaske-Quantile:
low_q = 0.40,high_q = 0.90. - Strukturmaske-Blur-Sigma:
4 px. - Sigma-Clipping:
low = 2.0,high = 1.5,4Iterationen. - Die Validierungsschwellen stammen aus
aqmh.validation.
Die v0.2.1-Referenzwerte waren low_q=0.70, high_q=0.97, Blur-Sigma
2 px; die aktuellen Betriebswerte sind weiter, um mittelgradientige
Struktur zu erhalten.
9.6 Cherry-Pick (unverändert)¶
aqmh.cherry_pick.enabled = falsestandardmäßig.k_frac = 0.30k_min_required = 20margin_min = 0.02
10. Konformitätsaussage¶
Ein Run ist v0.2.1-konform, genau dann wenn:
- Er alle verbindlichen Invarianten von v0.2.0 (§1.3) einhält.
- Er
Q_mapgemäß §2 und §3 berechnet und den verwendeten Speichermodus berichtet; Cherry-Pick verwendet zwingend Full-Resolution-Float32. - Er die globale Qualität mit der erweiterten Formel aus §1.5 berechnet,
wenn
g_w_background_penalty > 0, oder mit der v0.2.0-Formel, wenn der Wert0ist. - Er den Registrierungs-Gewichtsschutz wie in §4.3 beschrieben anwendet, wenn er aktiviert ist, und das Ergebnis protokolliert.
- Er die Nachverarbeitungs-Validierung und die optionale Neutralisierung gemäß §6 durchführt und den ausgewählten Kandidaten sowie eventuelle Rückfälle aufzeichnet.
- Er
aqmh_metrics.json,aqmh_reconstruction.jsonund alle erforderlichen Diagnosefelder erzeugt.
Ein Run ist strikt v0.2.0-konform, wenn g_w_background_penalty = 0,
registration_weight_guard = false und alle Nachverarbeitungs-
erweiterungen deaktiviert sind. Ein solcher Run ist eine gültige Teilmenge von
v0.2.1.
11. Referenzen¶
aqmh_methodik_en_v0.2.0.md— Basismethodik.tile_compile_cpp/include/tile_compile/config/configuration.hpp— Konfigurationsstrukturen.tile_compile_cpp/src/metrics/aqmh_global_quality.cpp— Berechnung der globalen Qualität.tile_compile_cpp/apps/runner_phase_aqmh_reconstruction.cpp— Registrierungs-Gewichtsschutz, Neutralisierung und Blending.tile_compile_cpp/src/metrics/aqmh_quality_map.cpp— Quality-Map- Berechnung.tile_compile_cpp/src/reconstruction/aqmh_reconstruction.cpp— Gewichtete Rekonstruktion und Cherry-Pick-Logik.