Lineare FITSs – wie funktioniert "auto-stretch"?

Status
Es sind keine weiteren Antworten möglich.

Ikarus

Mitglied
Hallo zusammen,

ich würde gerne verstehen und suche eine Formel (bzw. Algorithmus), wie der "auto-stretch" beispielsweise in Siril funktioniert.

Es geht darum, einen "normalen" Bildbetrachter um die automatische und schnelle Anzeige von linearen FITSs für eine erste, schnelle Übersicht / Qualitätsprüfung zu erweitern. Diese sollten dann natürlich auch gleich "auto-gestretcht" erscheinen, weil man sonst nix sieht.

Danke für jeden Tipp / Link / Algorithmus / Quellcode ...

Viele Grüße aus den Alpen,
Frank
 
Danke, Steffen! Der C-Code ist allerdings sehr speziell, vor allem "GUI lastig", also ganz viel für die Steuerung, Event-Handling, Berechnung für die Kurven-Darstellung ...

Du kannst natürlich nicht wissen – weil ich's nicht ausdrücklich erwähnt habe – dass ich bei Code an ein Beispiel dachte, in dem der Kern-Algorithmus, also die Berechnung der Streckung für jeden Pixel in einer "Funktion" (z.B. "function()" in C) vorliegt.

Es müsste ja eine mathematische Funktion sein, in der im wesentlichen berechnet wird, wie mit jedem einzelnen Pixel zwischen "0.000" (schwarz) und "1.000 (weiß) zu verfahren ist, um diesen "gestretcht" darstellen zu können.

Offensichtlich spielt da der Mittelwert ("0.500") eine große Rolle, weil dieser ja meistens erheblich in Richtung "0.000" verschoben werden muss ... und dann die Skalierung nicht mehr linear sein kann.

asinh (auch: arsinh) ist ja sowas wie "ein bisschen stretchen". asinh ist eine sogenannte "Areafunktion", in diesem Falle die areasinus hyperbolicus. Da gibt es eine klare mathematische Formel und die kann man ziemlich genau so programmieren.

Bisher habe ich also erfolglos nach einer derartigen Autostretch–"Formel" gesucht, obwohl das doch so ziemlich jede AIP Software zur Verfügung stellt ...

Vielleicht fällt einem dazu noch mehr ein!?

CS (wenigstens bei Vollmond),
Frank
 
Die angegebene Codestelle sieht schon genau nach dem aus, was Du wissen wolltest. Der komplette Verzicht auf Kommentare ist natürlich keine Hilfe, um zu verstehen was findMidtonesBalance() macht und warum die highlights zum stretching ignoriert werden.

Das Problem ist, dass man ein HDR Bild mit nur 8 bit so abbilden will, dass man möglichst viel sieht. Dazu gibt es viele Lösungen, je nach dem welche Metrik benutzt wird, um den Darstellungsfehler zu messen. Was in Siril gemacht wird, verstehe ich auch nicht auf Anhieb. Eine beliebte Methode ist sich den Dynamikbereich zu suchen, bei dem die wenigsten Pixel ins Clipping abgebildet werden. Das geht mit dem Histogramm sehr gut.

Michael
 
Die angegebene Codestelle sieht schon genau nach dem aus, was Du wissen wolltest. Der komplette Verzicht auf Kommentare ist natürlich keine Hilfe, um zu verstehen was findMidtonesBalance() macht und warum die highlights zum stretching ignoriert werden.
Immerhin gibt es schon mal "sprechende" Funktionsnamen, wie man so schön sagt. Aber diese mehrfach verschachtelten Aufrufe bis dorthin zu tracen, wo die eigentliche Arbeit passiert, übersteigt meine Kenntnisse ...

Das Problem ist, dass man ein HDR Bild mit nur 8 bit so abbilden will, dass man möglichst viel sieht. Dazu gibt es viele Lösungen, je nach dem welche Metrik benutzt wird, um den Darstellungsfehler zu messen. Was in Siril gemacht wird, verstehe ich auch nicht auf Anhieb. Eine beliebte Methode ist sich den Dynamikbereich zu suchen, bei dem die wenigsten Pixel ins Clipping abgebildet werden. Das geht mit dem Histogramm sehr gut.
Man kann sowohl in Siril als auch besonders in FITS Liberator sehr intuitiv und anschaulich verfolgen, wie sich das Histogramm verändert, je nachdem, welchen Regler man schiebt (SIRIL > Histogramm Transformation) oder mit welchen Funktionsparameter (FITS Liberator > Pow oder Asinh) man initialisiert.

Nur das "Wie?" – also der dahinter steckende Algorithmus / der "Rechenweg" – ist mir bisher noch nicht begegnet. Ich verstehe auch nicht viel davon, deshalb müsste ich das möglichst schlicht, kompakt und nachvollziehbar gezeigt bekommen ... so etwa nach dem Muster "y = 3x + 1" (sofern lösbar).

Good night,
Frank
 
Status
Es sind keine weiteren Antworten möglich.
Zurück
Oben