Rechnerisch ermitteln, ob ein Bild unter- oder überbelichtet ist?



  • Guten Tag,

    ich häng da gerade ein wenig. Ich berechne in C++ das Histogramm für ein Graustufenbild. Jetzt gilt: Im Idealfall ist die Dynamik so groß, dass jeder Pixelwert einmal vorkommt. Bzw. im Idealfall hat man eine Glockenkurve in der Mitte des Bildes. Sind die meisten dunklen Pixel links im Bild, so ist das Bild unterbelichtet, sind die meisten Pixel rechts, so ist das Bild überbelichtet. Na ja, so die grobe Theorie. Siehe:

    http://www.olafbathke.de/blog/2010/02/09/hdr-fotografie-teil-3-exkurs-tonwerte-und-histogramm/

    Ich hab da einen Ansatz, aber ich würde gerne mal eure Ideen hören. Deswegen verrate ich meine Idee später. Oder falls gewünscht, geb ich sie auch gleich preis, wie ihr wollt 😉



  • Naja, was Du natuerlich machen kannst, ist Mittelwert und Momente ausrechnen und die dann mit dem Optimalfall vergleichen. Wenn Du die falsche Belichtung gleich korrigieren moechtest, ist "Histogrammegalisierung" der Suchbegriff:

    http://en.wikipedia.org/wiki/Histogram_equalization



  • Okay, Mittelwert war auch mein Ansatz. Das funktioniert soweit auch "ganz gut". Trotzdem lässt sich damit nicht immer feststellen, ob das Bild zu hell oder zu dunkel ist. Ist eben ein Mittelwert.



  • Hi,

    ich würde nicht sagen, dass dder Mittelwert so sehr wichtig ist. Was brigt es, wenn alle Bilder auf den gleichen Mittelwert gebracht werden, dann gibt es keinen Helligkeitsunterschied mehr zwischen einer Aufnahme um Mitternacht und einer 12 Uhr Mittags. Will man wirklich Rembrands Nachtwache zu einer Mittagsaufnahme machen?

    Wichtiger ist da schon, ob das Histogramm an den Rändern eingermaßen gegen Boden strebt. Wobei ich der Meinung bin, dass bei einer Aufnahme in sehr dunkler Umgebung durchaus größere Bereiche komplett schwarz sein können, wenn es zu der Aufnahme insgesamt passt. Kritischer sind eigentlich überbelichtete Bildteile, wobei auch die nicht immer völlig vermeidbar sind. Wenn man Lampen dabei direkt mit fotografiert, dann kann der eigentliche Leuchtkörper schon mal überstrahlt werden. Kritisch wird es aber, wenn nicht nur der Leutkörper selber sondern auch seine Umgebung mit überstrahlt wird. Aber wie will man das messen, eventuell in dem man vorgibt wieviele Pixel maximal überstrahlt werden dürfen. Aber da ist es auch ein Unterschied, ob man einen flächig sehr weit überstrahlten Bereich hat, oder viele kleine nur eng begrenzt überstrahlte Punkte. Eventuell kann da der Helligkeitsverlauf an der Kante zum Überstrahlten die Lösung liefern. Wenn nur der eigentliche Leutchkörper überstrahlt ist, hat man einen scharfen Übergang und einen abrupten Abfall der Helligkeit in der Umgebung. Bei flächiger Überstahlung dagegen, wo auch noch die Umgebung überstrahlt wird fehlt das und der Helligkeitsabfall ist über eine größere Strecke gegeben.

    Auch bin ich nicht der Meinung, dass es ausreicht, nur das Histogramm des Schwarzweißbildes zu betrachten, man muss schon jede Farbe für sich auf Überstrahlung bzw. Unterbelichtung testen.

    Gruß Mümmel



  • Du beschreibst exakt die Effekte und Überlegungen, die auch hatte. Was mich interessiert: Wie funktioniert der Algorithmus in Photoshop? Da warnt doch immer so ein Ausrufezeichen vor mangelnder Dynamik. Da steckt doch auch nur ein Algorithmus hinter



  • ob ein bild unter oder ueberbelichtet ist, sieht man nicht am histogram vom LDR bild nach dem exposure, sondern vom HDR nach dem exposure. wenn viele werte weit ueber oder unter dem sichtbaren bereich liegen, verlierst du viel bild information und dann ist es over/under exposure.

    wenn du z.b. ein bild vom himmel hast und die sonne mappt auf 240-255 (womit sie weiss aussieht), wird der algorithmus vermutlich nicht meckern. mapt hingegen der ganze himmel auf 500 bis 1000 (womit du im LDR histogram 255==weiss hast), wird der algorithmus meckern.


Anmelden zum Antworten