YAFFT, yet another flatfield tool

  • Hallo Klemens,

    Kannst meine Bilder verwenden und malst mit Paint einen grösseren schwarzen Punkt auf das Leerbild. Schwarz und weiss sind natürlich Extremfälle, wobei letzteres bei Überbelichtung bestimmt häufiger auftritt als schwarz. Für mich selbst habe ich entschieden, dem nicht weiter nachzugehen. Wenn es aber eine elegante einfache Lösung für dieses Problem gibt, würde ich es implementieren.

    Einmal editiert, zuletzt von Erik W. (1. August 2025 um 13:28)

  • Ich hab mal schnell ein paar Bilder gemacht mit einem Artefakt.

    Die Leerbilder (H) und Objektbilder (P) wurden gemittelt vom gemittelten Leerbild der mittlere Grauwert gemessen, die Bilder mit der Operation Result = (P/H) x k1 + k2 mit k1=104.9 k2=0

    k1 ist der mittlere Grauwert. Anschließend noch das Histogramm automatisch angepasst.

    Die Dunkelbilder hab ich nicht verwendet. Grauwerte sind bei mir normalverteilt im sehr dunklen Bereich.

    Alles mal ohne Kanaltrennung oder sonstige Optimierung. Monochrome Bilder gehen noch besser.

  • Hallo Erik, ich denke dass das nicht eine Aufgabe für die flat field correction ist. Diese korrigiert doch Sensorungleichmäßigkeiten oder "Probleme" im Strahlengang wie etwa Vignettierungen. Was auch geht sind leichte Verschmutzungen oder kleine Kratzer, aber die sind am Flat und am eigentlichen Bild gleich. Das lässt sich dann herausrechnen.
    Solche Effekte, die nur im Flat sind und nicht im eigentlichen Bild, können mit dieser Korrektur nicht entfernt werden. Ist ja auch Unsinn. Wieso sollte ich das Bild mit einem fehlerhaften Flat, das völlig andere Bildinformationen hat, korrigieren?

    Ungleichmäßige Ausleuchtung und Vignettierung kann man sogar so halbwegs aus dem Originalbild herausrechnen indem man einen Blur mit großem Radius erzeugt und das Original durch dieses Bild dividiert. Histogramm anpassen, fertig. Die Muster am korrigierten Bild kommen von der JPEG Kompression. Man könnte sicher noch mehr herausholen mit TIFF oder Raw.


    Median mit 50 pixel Radius

    (Original / Flat) * 79, dann am Histogramm herumgedreht

    VG Klemens

  • Im Grunde ist das in meinem "Tutorial" aus 2016 beschrieben. Ich mach dazu evtl. noch ein eigenes Thema auf.

    Ralfs Programm macht mathematisch prinzipiell das gleiche. Und ich denke, dass es ausgesprochen lehrreich ist, sich selbst so ein Programm zu erarbeiten.

    Ich war halt zu faul mir ein eigenes Programm zu schreiben (muss ich in der Arbeit ohnehin immer, das reicht mir). Meine Wahl wäre sonst Matlab, Octave oder Scilab gewesen. Da sind die Matrixoperationen einfach und schnell. ImageJ hat aber schon alles für dieses image processing an Bord und noch mehr.

    Aus jugendlicher Neugier habe ich in ChatGPT diesen Prompt eingegeben: Schreibe ein Programm in imagej/fiji, das bei einem Bild mit Vignettierung eine flat field correction macht.

    Klappt ausgezeichnet!

    VG Klemens

  • Hallo,

    Falls es noch von Interresse ist, habe ich fuer die Linuxuser Yafft als ausfuehrbare Datei erstellt. Der beschriebene Weg von Ralf es ueber PyCharm auszufuehren funktioniert wunderbar. Allerdings ist der Pycharm Download 1,2 GB gross. Die ausfuhrbare Datei "nur" so 77 MB.

    Die Datei kann man hier downloaden. Da leider die Ausfuehrbarkeit verloren zu gehen scheint, noch mit chmod im Terminal ausfuehrbar machen: chmod +x yafft

    VG Klaus

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!