Gamma-Korrektur < Computergraphik < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Hallo zusammen,
ich habe da ein Verständnisproblem mit der Gamma-Korrektur. Ich hoffe, hier kann mir jemand weiterhelfen.
Angenommen, ich möchte 256 benachbarte Pixel darstellen, die einen stufenlosen Verlauf von Schwarz nach Weiß ergeben sollen. Dazu verwende ich lineare Grauwerte von 0..255. Aufgrund der Nichtlinearität des menschlichen Sehapparats darf der Monitor nun allerdings ja nicht die linearen Grauwerte 0..255 einfach in lineare physikalische Intensitätswerte umsetzen. Würden die Pixel einfach mit [mm] \bruch{1}{256}I_{max}, \bruch{2}{256}I_{max}, \bruch{3}{256}I_{max}, [/mm] etc. leuchten, so würden wir im dunklen Bereich zu große Helligkeitsunterschiede zw. zwei Pixeln wahrnehmen.
Glücklicherweise hat ein Monitor ja aber die reziproke Nichtlinearität zum menschlichen Auge. Das heißt, wenn wir in den Framebuffer lineare Werte x [mm] \epsilon [/mm] 0..255 reingeben, dann macht der Monitor daraus nichtlineare Intensitäten [mm] x^{\gamma}. [/mm] Da unser Auge aber genau anderesherum nichtlinear ist, empfinden wir am Ende einen gleichmäßigen, linearen Farbverlauf.
Wozu benötigen wir nun die Gamma-Korrektur. Ich habe dies in mehreren Büchern nachgelesen und dort steht immer, man wollte, dass der Monitor lineare Werte ausgibt. Die Nichtlinearität des Monitors müsse im Voraus durch die Gamma-Korrektur ausgeglichen werden. Mein Problem an dieser Stelle ist nun, dass wir dann doch aber keine linearen Werte mehr empfinden. Heißt wenn der Monitor wirklich dem ersten Pixel mit [mm] \bruch{1}{256}I_{max}, [/mm] den zweiten mit [mm] \bruch{2}{256}I_{max} [/mm] etc. darstellt, dann empfinden wir das doch gar nicht mehr als gleichmäßigen Verlauf.
Warum scheint dies doch genau so gewollt zu sein?
Vielen Dank im Voraus!
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:16 Fr 19.10.2012 | Autor: | Infinit |
Hallo Zweipunktnull,
das menschliche Auge empfindet in dunklen Bereichen einen Helligkeitsanstieg als steiler als in einem hellen Bereich. Möchte man einen technisch betrachtet linear ansteigenden Helligkeitsverlauf einem Betrachter auch linear präsentieren, so benötigt man die Gammaverzerrung, um diese Linearität hinzubekommen.
Deine Bezeichnung, die Du gefunden hast, dass der Monitor lineare Werte ausgibt, ist sehr missverständlich. Gemeint ist, dass die Vorverzerrung im Zusammenspiel mit dem menschlichen Sehapparat einen linearen Helligkeitszuwachs wahrnimmt. Beide Systeme, der Monitor und das Auge, müssen hierbei zusammenarbeiten.
Viele Grüße,
Infinit
|
|
|
|
|
So ähnlich habe ich mir das schon gedacht. Richtig verstanden habe ich es dennoch nicht. Zur Sicherheit frage ich noch mal nach:
a) Wenn ich einen Verlauf mit linearem Helligkeitszuwachs wahrnehme, dann haben die entsprechenden Pixel auf dem Monitor keineswegs linear ansteigende Intensitätswerte, sondern logarithmisch ansteigende Intensitäten. Richtig?
b) Angenommen, das Auge hat ein Gamma von 0.4 und ich habe einen Monitor mit der Charakteristik Gamma = 2.5, dann könnte ich einfach meine linearen Grauwerte in den Framebuffer schreiben und würde am Ende auch einen linearen Verlauf wahrnehmen. Eine Gammakorrektur wäre in diesem speziellen Fall nicht notwendig, da sich die Nichtlinearitäten von Monitor und Auge genau aufheben. Richtig?
Wenn diese beiden Aussagen aber stimmen sollten, dann stellt sich mir abermals die Frage, sowieso wir überhaupt eine Gammakorrektur brauchen. Laut Wikipedia hat ein typischer Monitor ein Gamma von 2,2. Wenn wir nun unangepasste lineare Grauwerte in den Framebuffer schreiben würden, dann würden wir genau dann auch tatsächlich einen linearen Grauverlauf wahrnehmen, wenn unser Auge gerade genau die Verzerrung des Monitors ausgleichen würde. Damit dies gelingt, müsste unser Auge gerade ein Gamma von [mm] \bruch{1}{2.2}=0.45 [/mm] haben. Laut Wikipedia hat unser Auge von Gamma zwischen 0.3 und 0.5, das heißt, das Ganze würde ja mehr oder minder genau passen. Das Verzerrung des Auges von [mm] \gamma=0.45 [/mm] würde die Verzerrung des Monitors von [mm] \gamma=2.2 [/mm] genau aufheben. Wir müssten uns keine Gedanken machen, die linearen Grauwerte noch irgendeine selbst zu verzerren.
|
|
|
|
|
Hallo!
Wenn ich den Wiki-Artikel lese, steht da, daß Monitore linear arbeiten:
"Soll das Helligkeitssignal eines linear arbeitenden Anzeigegerätes, beispielsweise eines Monitors, linear wahrgenommen werden, muss es daher mit dem reziproken des obigen Gammawerts (ca. 3,3 bis 2) vorverzerrt werden"
Diese Vorverzerrung wird von deiner Grafikkarte, und damit deinem Computer durchgeführt, und steht auf einem Standard-Wert von 2,2.
Aber auch ein Monitor arbeitet per se nicht linear, der wird eine interne Korrektur haben, um ein lineares Eingangssignal auch linear darzustellen.
Das gelingt mehr oder weniger gut, zudem hängt es von deinen Augen ab, ob du das Bild linear wahrnimmst. Daher kannst du selber nochmal an dem Gamma-Wert drehen, um den optimalen Wert zu ermitteln.
|
|
|
|