Sparse Deconvolution

Status
Es sind keine weiteren Antworten möglich.

Counterfeiter

Aktives Mitglied
Hallo,

ich hatte gestern Abend kurz eine Sparse Deconvolution getestet. Diese wurde im Grunde für Microscopy entwickelt und hatte wohl schon in den letzten zwei Jahren einige Nature Artikel, in der Abteilung Biologie, hervorgebracht.

Ich denke die Webseite des Autors mal kurz durchgescrollt und ihr habt ein Bild von seiner Arbeit:
Weisong Zhao (赵唯淞)


Zumindest hatte ich mal seine Arbeit für den Astrobereich antesten wollen und da er ein Github-Repo mit Python-Code bereit stellt, war das auch recht schnell aufgesetzt:

Ich habe es jetzt eher kurz angetestet und ich will noch so viel Testen, aber für ein erstes Review reicht es vielleicht schon:

Was auffällt, es gibt sehr weniger Parameter zum Tunen und es bleibt immer so stabil, dass es (fast) kein Ringing, um selbst stark ausgebrannte Sterne, gibt.

Im Grunde stellt man nur Sigma von der Gauss-Funktion ein (das lässt sich einfach aus dem FWHM berechnen) und die sparsity. Die sparsity ist, einfach ausgedrückt, eine Art Kompression die für eine Noiseunterdrückung sorgt. Es gibt weiter Parameter, die ich bisher noch nicht getestet habe, z.B. unterschiedliche Backgroundmodel und ein fidelity Parameter, den ich noch nachvollziehen muss.

Mein Workflow:
  1. Ein sparsity zwischen ca. 5 und 15 (% ?) finden, die keine Details verschluckt, aber das Noise unterdrückt.
  2. Die Eingangs-FWHM leicht variieren, bis das Ergebnis zufriedenstellend aussieht
Ergebnis:
Eingangsmaterial war ein Ausschnitt vom Orion (30 Sekunden x 70 mit Canon 600D bei 3'' Guidingfehler) - also qualitativ minderwertiges Material:

1676192665362.png
1676192704712.png



Was mir auffällt: Im Gegensatz zu dieser starken Schärfung des Nebelbereichs ist das Rauschen sehr gering und vor allem werden die Sterne wenig verändert. Was mich doch sehr verwundert. Die Sterne werden zwar auch wenig verkleinert, dafür entsteht aber auch kein auffälliges ringing.
Es ist natürlich ein leichtes Pattern auf dem Bild, ich denke das ist durchaus noch optimierbar und kann noch nachgearbeitet werden.

Was mir sonst mit dem gezeigten Material beim Schärfen passiert:
  1. Das Rauschen wäre bei dieser Schärfung schon durch die Decke gegangen
  2. Die Sterne werden so stark geschärft, dass sie recht schnell unnatürlich aussehen
  3. Insgesamt ist mein Eingangmaterial mit dem schlechten SNR sehr schwer "klassisch" zu schärfen und es kommt schnell zu Artefakten

Leider konnte ich bisher noch kein größeres Bild komplett schärfen, da alle auf der GPU berechnet wird und ich nicht genug Videospeicher habe (6 GB). Aber das bekomme ich noch irgendwie in den Griff oder ich nehme die CPU, wenn ich die passenden Parameter gefunden habe.

Vielleicht hat der ein oder andere Lust es auch mal zu probieren und ich konnte einen Anstoß liefern. Ich weiß, dass dieser Beitrag sicher viele aufkommende Fragen noch nicht beantworten kann.

Viele Grüße

Sebastian
 
Hallo,

ich habe sehr intensiv weiter probiert und mein Material verwendet: Die EQ-Plattform reduziert auf 45 Minuten Licht und damit das SNR in jedem Bild. Nach drei Tagen intensiven Tests finde ich es einen Segen für meine Bilder.

Ganz so einfach ist es mit dem Parametertuning dann doch nicht. Der Autor hat einen Workflow vorgeschlagen, aber dieser funktioniert für mich nicht. Es sind insgesamt 4 Parameter sehr relevant: sparsity, fidelity für die Rauschreduzierung und die Optimierung nach der L1 Norm. Zum Glück hängt fidelity mit dem Faktor 3 bis 20 von sparitiy ab. Weiterhin, und eigentlich vom "0 Setzen" der Ränge unabhängig, ist die Deconvolution und die ganz klassisch über den Richardson und Lucy Ansatz. Man kann den Prozess hier theoretisch auftrennen.

Möglich wäre ein Grid-Search, da es aber vier Parameter gibt (Suchraum hoch 4), habe ich mich für Zufallsparameter entschieden. Diese habe ich auf der GPU rechnen lassen und anschließend in ein animiertes GIF gespeichert. Anschließend habe ich die Bilder durchgeschaut und den Parametersuchraum weiter eingeschränkt. Im Grunde sind es nur zwei Arbeitsschritte mit jeweils 50 Bildern zum "Durchselektieren".

Das Eingangsmaterial habe ich so weit gestreckt, bis das Rauschen in den Augen weh tut. Es ist schon sehr erstaunlich welche Stern hinter dem Rauschen noch herausgekommen sind.

best_result.gif

Die Schärfung habe ich eher Dezent mit 5 Iterationen RL selektiert.
Parameter für das Ergebnis: sparsity=105, fidelity=sparsity*5, iter_rl=5, PSF sigma size=8 pixel

Zugegeben: Wissenschaftlich wäre es jetzt, dass Selbe oder ein besseres Ergebnis mit einer anderen Methode zu versuchen. Vielleicht folgt das noch.

Hoffe es ist für den Ein oder Anderen interessant.

Viele Grüße

Sebastian
 
Hallo,

das Interesse daran scheint gering. Ich würde aber gern die Methode noch mit einer zweiten, bzw. dritten Methode Vergleichen. Also den "Blacklevel" einfach über das Histogram anpassen, ergibt nicht das selben Bild. Auch sind diverse Denoise Varianten in Siril nicht dazu im Stande. Es zeigt sich auch schon im Historgram
Ich vermute aber stark, dass Machine Learning Varianten mit NXT und BXT schnell ein ähnliches Ergebnis erreichen können. Könnte das jemand mit entsprechenden Lizenzen für mich vergleichen? Das fits gibt es hier. Es würde nicht darum gehen ein besonders schönes harmonisches Bild zu genieren. Wer es versuchen möchte, bitte einfach auf das selbe Ergebnis kommen, wie im gezeigten Bild. Also auch nicht die Sterne mit BXT besonders verkleinern oder ähnliches. Danke schon mal.

Hier noch das Ergebnis meiner neusten Versuche mit RGB-Daten. Hier muss leider für jeden Farbkanal ein passender Parameter gefunden werden, dass geht nun bei mir deutlich schneller.
Input: (15sx75 Bilder ~ 19 Minuten Integration mit normaler Canon 600D)
Bearbeitung: Farbkalibrierung + Streckung (starke)
input.jpeg


Nach der Sparsity-Berechnung:
result_sparse.jpeg


Nach zwei Iterationen RL (deconvolution):
result_conv.jpeg



Abschließend kann ich sagen: Mehr Signal war (leider) nicht drin... aber Rauschen und Nutzsignal konnten meiner Meinung nach sehr gut getrennt werden. Es ist leicht etwas vom roten Kanal verloren gegangen, wohl auch der schwierigste Kanal bei dem Objekt und der unmodifizierten Kamera auf 15 Sekunden Belichtung.
Ich muss aber dazu sagen, ich weiß nicht ob sich der Aufwand bei gutem bis sehr gutem Material lohnt. Vielleicht eher was für Lucky Imaging Techniken....

Abschließend noch ein paar "Farbspratzler" vom RL entfernen: Total-variation denoising (kein Schritt aus dem Paper!):
result_denoise.jpeg


Ich fand es ganz anschaulich mir mal das Histogram eines Farbkanals über die 100 sparsity Iterationen anzuschauen (Beide Achsen Log10 zu besseren Übersicht):
hantelnebelcrop.fit_32_3_484600.gif



Ich hatte mit einem der Autoren Kontakt und das interessante an seiner Variante ist wohl, dass es auch eine sparsity in Z- oder t-Richtung ebenfalls bestimmen kann und der Algorithmus davon profitieren soll. Die Z-Richtung ist bei uns schwer möglich, da könnten wir nur leicht defokussieren in zwei Richtungen. Was vielleicht interessant wäre, ist eine Lucky Imaging Reihe hineinzugeben. Also meine Versuchsreihen sind noch nicht ausgeschöpft.

Viele Grüße

Sebastian
 
Hallo Sebastian,
das ist eine sehr interessante Sache. Mich wundert, dass kein Astrofotograf darauf anspringt.
Ich mache gelegentlich UV- und NIR-Bilder vom Kopter aus. Wenn du magst, kann ich dir ein paar zum Testen hier hochladen.
Einen schönen Tag wünsche ich,
viele Grüße
Wilhelm
 
Hallo Sebastian,

danke für den Link und den Tipp, ich werde es definitiv mal für die Arbeit testen (Fluoreszenz). Falls du mit anderen Methoden vergleichen möchtest, bietet zum Beispiel scikit-image eine Möglichkeit oder ein Napari Plugin:


Google Colab bietet kostenlos GPU Unterstützung, zum Prototypen eventuell praktisch.

Grüße
Stefanie
 
Hi Sebastian,

bin mal in Affinity Photo mit meinen völlig intuitiven EBV Schritten und dem NoiseXterminator über dein JPEG gegangen:

input-afp-NXT.jpg


Keine Ahnung, ob das jetzt besser oder schlechter ist.

Gruß
Peter
 
Hallo Peter,
erstmal danke für deine Mühe... Ich finde es sieht visuell erstmal besser aus. Etwas weniger vom Rand zu sehen, dafür geht es besser ins "nichts" über.

Im Vergleiche ist es um einiges dunkler, also das Noise hast du auch über die Farbkurve ins dunkle gezogen?
Wie hast du die deconvolution gemacht bzw geschärft?

Danke,
Basti
 
@AstroPZ irgendwie sehe ich auch gerade das deine größeren Sterne wie Donuts aussehen. Wie kommt das?

Hm, ich weiß nicht ob sich das alles so gut vergleichen lässt. Da gibt es ja keine Norm... Jedes Bild hat durch die einzelnen Arbeitsschritte etwas "eigenes"... daher dachte ich wir finden vielleicht eine Vergleichbarkeit, wenn nur die Schritte Denoising und Deconvolution angewendet werden. Aber selbst da wird der Vergleich hinken, würde ich jetzt mal vermuten...

Das jedenfalls ein interessantes Problem, mit der Vergleichbarkeit. Ich finde auch, dass die Autoren des Papers selbst recht wenig Vergleiche präsentieren haben. Es wurde, meiner Meinung nach, nur das verrauschte Bild per deconvolution bearbeitet und dann das sparse gerechnete Bild. z.B. Wurde nicht vergleich, was passiert, wenn man den Threshold für das Blacklevel einfach niedriger ansetzt und dann eine deconvolution durchgeführt wird.

@Wilm-52 mal schauen, vielleicht ist es auch nicht auf Astronomie anwendbar oder es ist auch nicht alles der Goldstandard in Nature.

@particle_gun sieht auch sehr interessant aus! Wenn es weniger um schöne Bilder und mehr um Wissenschaft geht, wird auch gern ImageJ verwendet. Das Tooling fand ich auch schon immer interessant.

Viele Grüße

Sebastian
 
Status
Es sind keine weiteren Antworten möglich.
Zurück
Oben