YAFFT, yet another flatfield tool

  • Hallo,

    nach einer längeren Pause möchte ich mich heute mal wieder mit einem Beitrag melden.Ich möchte ein von mir geschriebenes Programm zur Flatfieldkorrektur vorstellen. Ich habe das Programm „yafft“ genannt, eine Abkürzung für „yet another flatfield tool“.

    Ein Problem in der Mikrofotografie ist die Eliminierung von Vignettierungen, Sensorflecken und Verunreinigungen im Strahlengang aus einem Mikrofoto. Um diese Fehler zu korrigieren kann man zusätzlich zum eigentlichen Bild, auch „light“ genannt, ein Bild ohne Probe unter sonst gleichen Bedingungen aufnehmen. Dieses Bild, auch „flat“genannt, wird dann mit dem light verrechnet.

    Mir bekannte Tools, die eine solche Flatfield Korrektur anbieten, sind beispielsweise „Picolay“ und Rawtherapee“. Als nachteilig bei beiden Programmen habe ich die folgenden Punkte empfunden:

    • Es kann immer nur ein Flatfield Bild verwendet werden. In der Astrofotografie dagegen ist es beispielsweise üblich mehrere Flatfield Bilder zu einem Masterflat zu mitteln.
    • Es kann immer nur einzelnes Bild (ab jetzt „light“ genannt) korrigiert werden. Will man über die reine Flatfieldkorrektur hinaus noch eine Rauschreduzierung erreichen, ist es aber üblich viele einzelne lights zu mitteln.
    • Zur Rauschreduzierung der lights ist es weiterhin üblich sogenannte dark frames, und zur Rauschreduzierung der flats sogenannte bias frames oder dark-flat frames zu verwenden. Sowohl dark frames als auch dark-flats werden mit gleichem ISO Wert und gleicher Belichtungszeit wie die darks bzw, die dark-flats aufgenommen. Bias frames werden mit der kürzest möglichen Belichtungszeit bei gleichem ISO Wert aufgenommen. Für alle gilt, dass der Sensor möglichst gut abgedunkelt sein muss. Insbesondere bei längeren Belichtungszeiten macht sich Anwendung von darks, bias, flatdarks positiv bemerkbar. Bei meinen eigenen Aufnahmen mit einer sehr amateurhaften Fluoreszenzeinrichtung kann ich nur mit Belichtungszeiten im Bereich von 1 s bis zu 10 s arbeiten. Durch die Anwendung der darks und bias frames konnte das Rauschen im Ergebnis reduziert werden.

      In Picolay ist keine der genannten Methoden möglich, Rawtherapee kann nur ein einzelnes dark frame anwenden, nicht aber mehrere dark frames mitteln.

    Dies alles mit den darks, flats und bias frames ist auf den ersten Blick sehr verwirrend, daher hier der Link zu einer ausführlichen Erläuterung: https://astrobasics.de/grundlagen/bia…arks-darkflats/

    Das folgende Beispiel zeigt anhand eines Querschnitts durch die Lobe einer Lobaria pulmonaria wie das Programm arbeitet.

       

    Unkorrigiertes light Flatfield Bild Mit yafft korrigiertes Bild


    Das Programm (Windows .exe) kann von hier geladen werden:


    https://www.dr-ralf-wagner.de/Forum/yafft.exe

    Der Quellcode sowie eine ausführliche Beschreibung (in Englisch) zum konkreten Programmablauf findet sich hier:

    GitHub - RalfWagner1956/yafft-flatfield-correction
    Contribute to RalfWagner1956/yafft-flatfield-correction development by creating an account on GitHub.
    github.com

    Es sind im Programm sicherlich noch Fehler, die ich beim Testen nicht gefunden habe, vorhanden. Über Rückmeldungen hierzu würde ich mich freuen.

    Ich hoffe, dass der eine oder andere Kollege das Programm als nützlich empfindet!


    VG Ralf

  • Guten Abend Ralf,

    schön von Dir zu lesen und wie ich sehe bist du unter die Programmierer gegangen :) . Vor knapp zwei Jahren habe ich die Windowswelt verlassen und kann deshalb Dein Programm nicht ausprobieren. Anhand deiner Bilder würde mir noch eine automatisierte Grauwertspreizung einfallen, um den Kontrast zu erhöhen. Ggf. kann man die Intensität auch über einen Fader einstellbar machen.

    Viele Grüße

    Erik

  • Halo Erik,

    das Programm läuft auch unter Linux. Du musst

    a) einen Python Interpreter (ich nehme PyCharm) installieren

    b) den Quellcode von hier laden

    dann das Modul yafft_dateitypen.py starten.

    Wie man aus dem Quellcode ein ausführbares Programm unter Linux erstellt weiß ich leider nicht, habe nur rudimentäre Linuxkenntnisse.

    Grauwertspreizung und Intensitätserhöhung überlasse ich den profi Bildbearbeitungen wie Gimp oder Photoshop. Das Resultat von yafft muss eh noch wieter bearbeitet werden.

    Viele Grüße in den hohen Norden!

  • Was noch in der flatfield correction Software Aufzählung fehlt sind imageJ (Fiji) und ICY. Open source image processing Software mit einer Riesen Community aus der akademischen und industriellen Welt. Siehe auch

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    und

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.

    .

    VG
    Klemens

  • Hallo Klemens,

    danke für deinen Hinweis auf weitere Programme zur Flatfieldkorrektur. Beide habe ich bisher noch nicht gekannt.

    ImageJ habe ich mir jetzt einmal angesehen und folgendes gefunden:

    • Es kann immer nur ein Dark Bild verwendet werden. Dieses wird sowohl zur Korrektur des Light Bildes als auch zur Korrektur des Flat Bildes verwendet. Dies macht nur dann Sinn, wenn Light und Flat unter gleichen Aufnahmebedingungen gemacht wurden. Oft ist es aber so, dass gerade das Flat Bild mit anderen Belichtungszeiten bzw. ISO Werten aufgenommen werden muss, um ein vernüftiges Flat zu erhalten. YAFFT bietet diese Möglichkeit der separaten Korrektur für Lights und Flats durch die Verwendung von Darks zur Korrektur der Lights und die Verwendung von Darkflats bzw, Bias Bildern zur Korrektur der Flats.
    • Dark Bilder können nur einzeln verwendet werden. Die Mittelung mehrerer Darks ist ist nicht möglich.
    • Es kann immer nur einzelnes Light Bild korrigiert werden. Will man über die reine Flatfieldkorrektur hinaus noch eine Rauschreduzierung erreichen, ist es aber üblich viele einzelne Lights zu mitteln.

    Das Programm ICY konnte ich nicht finden. Kannst du bitte einen Link dazu posten?

  • Hallo Klemens,

    danke für den Link. Da findet man tatsächlich eine Menge an Tools. Wahrscheinlich bin ich schon zu senil, denn ich habe in der Vielzahl der dort gelisteten Tools kein Programm zur Flatfieldkorrektur finden können. Daher meine Bitte: Wie heißt denn das Flatfieldtool oder am besten poste doch gleich einen direkten Link. Vielen Dank im voraus.

  • Guten Abend Zusammen,

    ich habe Ralf´s-Idee aufgegriffen und ein kleines Programm zur Flatfieldkorrektur für Mac-User geschrieben. Es findet nach dem Auswählen des Objektbildes automatisch eine Flatfielkorrektur mit anschließender Autokontrastierung statt. Das Bild kann dann abgespeichert werden:

    Leider ist die Datei mit 2.9 MB zu groß für den Anhang. Wer Interesse hat kann mich gerne anschreiben und bekommt das Programm als zip-Datei zugesendet.

    Viele Grüße

    Erik

  • Guten Tag Zusammen,

    ich bin noch am Optimieren, um die Praxistauglichkeit zu verbessern:

    Bei Staubkörnern kann der User nun einen Medianfilter nutzen, das vermeidet Überbelichtungen im korrigierten Bild. Die Autokontrastfunktion ist deaktivierbar. Es können nun bis zu zehn Leer- und Objektbilder geladen werden, die vor der Korrektur gemittelt werden.

    Ein direkter Link zu meinem Youtube-Kanal wurde eingefügt.

    Aktive Nutzer dieses Forums erhalten die aktuellste MAC-Version gerne per Email (als zip-Datei).

    Viele Grüße,

    Erik

  • Guten Abend Erik,

    das freut mich sehr, dass du meine Idee aufgegriffen und nach deinen Vorstellungen umgesetzt hast. Vielfalt ist hier sehr nützlich.

    Leider kann ich dein Programm ncht testen, da ich keinen Mac oder Iphone habe. In welcher Programmiersprache hast du das Programm geschrieben? Eventuell kann ich den Quellcode, sofern du ihn offenlegen möchtest, für Windows compilieren.

    Gruß nach Hamburg

    Ralf

  • Guten Abend Ralf,

    das Programm ist mit SWIFT geschrieben. Das erschwert ungemein die Portierbarkeit in andere Programmiersprachen und du wirst ihn nicht ohne SWIFT- und Zielsprachenkenntnisse umwandeln können. In welcher Sprache brauchst du den Code und womit compilierst du?

    Viele Grüße

    Erik

    Leerbild:

    Objektbild:

    korrigiertes Bild:

    korrigiertes Bild & Autokontrast:

  • Hi,

    mein Programm habe ich in Python mit dem Editor PyCharm geschrieben und compiliert. Den Quellcode findest du hier:

    GitHub - RalfWagner1956/yafft-flatfield-correction
    Contribute to RalfWagner1956/yafft-flatfield-correction development by creating an account on GitHub.
    github.com

    Falls das zu umständlich ist, schicke ich dir den Code gerne als .zip per mail.

  • Hallo Ralf,

    danke für die Bereistellung von yafft.

    Bei GitHub wird angezeigt, dass als RAW Dateien nur Nikon und Canon (cr2 alt) unterstützt werden. Sicher ist es schwierig hier "alle" Rawˋs aller Hersteller zu unterstützen! Aber wäre es nicht auch sinnvoll zumindest noch DNG zu implementieren?

    LG Frank

    LG aus Minden, Frank

  • Hallo Ralf. Ich hab irgendwie den Thread von damals aus den Augen verloren. Da hab ich imageJ "angepriesen". Ich weiß zwar nicht, was du genau vor hast mit Light, Dark, etc. aber mit ImageJ kannst du so ziemlich alle Operationen, die man sich vorstellen kann natürlich einzeln nacheinander machen oder aber diese einmal vormachen und in einem Programmfile speichern (verschiedene Sprachen möglich), anpassen, "abspielen". Es wird sehr viel im akademischen Bereich entwickelt und verwendet, kann also nicht so schlecht sein. Ein LEGO Baukasten für image processing.

    Alleine unter Process gibt es zig Operationen, die für das Image processing ausreichen. Und dann gibt es noch Plugins für fast jeden Zweck.

    @Bernd Interessante Software: https://micro-manager.org/
    Ich hab da mal mit verschiedenen Kameras herumgespielt und meinen motorisierten Tisch angesteuert.

    VG Klemens

  • So, jetzt hab ich mal ein wenig nachgelesen und in Wikipedia auch gleich das gefunden (muss man selber weniger denken :99:)

    C=(R-D) * m / (F-D) = (R-D) * G

    • C = corrected image
    • R = raw image
    • F = flat field image
    • D = dark frame image
    • m = image-averaged value of (FD)
    • G = Gain = m * (F-D) * m/(F-D)

    Solche Operationen lassen sich in ImageJ ganz einfach machen. Diese Vorgangsweise in meiner Doku enthält das in einfacherer Form, ist aber beliebig ausbaubar z.B. mit Macros zum Wiederverwenden. Es geht auch in anderen integrierten oder externen Programmiersprachen. Editor mit Syntax Highlight, Recording und Einzelschritt sind vorhanden. Ich mag das Programm, da man sich auf's image processing konzentrieren kann und nicht auf's Programmieren. Man hatte sehr viele brauchbare Tools zur Hand und es läuft auf allen gängigen OS.

    Mit openCV arbeitet ImageJ auch zusammen https://imagej.net/software/opencv. Ebenso gibt es eine OpenAI Schnittstelle.

    Python und openCV auf die Schnelle: https://stackoverflow.com/questions/7478…n-opencv-python

    VG Klemens

  • Hallo Klemens,

    es hat ja keiner behauptet, dass es damit nicht geht. Schau dir erst mal die Funktionalität von Ralfs Programm an. Es ist eine Flatfieldkorrektur mit zusätzlicher Mittelung der Bilder. Bau doch ein Makro mit diesem Workflow in ImageJ zusammen und stell es uns zur Verfügung.

    VG, Erik

  • Hab ich vor. Hab ja schon mal die Vorgehensweise als Doku in der Filebase zur Verfügung gestellt.

    Es ist zwar sehr lehrreich das Rad selber neu zu erfinden. Ich bin aber der Ansicht, dass man mit bestehenden und erprobten Mitteln, die Standards verwenden und eine große Community haben, schneller zum Ziel kommt, wenn das Ziel z.B. eine FF-Korrektur ist und nicht die Programmierung an sich.

    VG Klemens

Jetzt mitmachen!

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