Hinweis: Dieser Artikel ist ein Beitrag zum ScienceBlogs Blog-Schreibwettbewerb 2015. Hinweise zum Ablauf des Bewerbs und wie ihr dabei Abstimmen könnt findet ihr hier. Informationen über die Autoren der Wettbewerbsbeiträge findet ihr jeweils am Ende der Artikel.
sb-wettbewerb
——————————————
Vor ein paar Wochen stand ich wegen einem Zugausfall im Regen und als für einen kurzen Moment die Sonne raus kam, konnte ich einen Regenbogen bewundern. Das Simulieren von einem Regenbogen gehört in der Computergrafik zu den anspruchsvolleren Aufgaben und so hab ich die restliche Wartezeit damit verbracht, mir ein wenig Gedanken zur Computergrafik und der beteiligten Physik zu machen.

Ein Regenbogen entsteht vereinfacht gesagt dadurch, dass Sonnnlicht sich in einem Regentropfen bricht und nach einer Reflektion im Tropfen in einem anderen Winkel zurück gestrahlt wird. Durch der Brechung ist dieser Winkel für jede Frabe des Spektrums ein klein wenig anders wodurch sie dann an einer anderen Stelle des Himmels erscheint. Das nennt man Dispersion, die auch Prinzipt hinter den Farbeffekten bei Prismen ist. Genau wegen dieser Eigenschaft sind Prismen wie auch der Regenbogen nicht ganz leicht mit dem Computer zu simulieren.

In der Computergrafik rechnet man meistens mit RGB Farben. Das heißt Displays erzeugen Farbeindrücke dadurch, dass für jeden Bildpunkt rotes, grünes und blaues Licht mit unterschiedlicher Stärke gemischt wird. Für die häufigsten der in der Natur vorkommenden Farben gibt es eine solche Mischung aus Rot, Grün und Blau die im menschlichen Auge den gleichen Effekt auslösst wie die eigentliche Farbe. Zu den selteneren Farben, die man auf diesem Weg nicht simulieren kann gehören dann besonders intensive, reine Farbe. Alle vom Computer darstellbaren Farben können, weil sie aus drei Grundfarben gemischt werden, durch den Anteil der jeweiligen Grundfarbe beschrieben werden. Und genau das wird meistens auch gemacht, wie man bei der Bildberarbeitung, der Gestaltung von Webseiten und vielen anderen Bereichen feststellen kann.

Lichtbrechung in Flintglas (Bild: Zátonyi Sándor, CC BY-SA 3.0)

Lichtbrechung in Flintglas (Bild: Zátonyi Sándor, CC BY-SA 3.0)

In der Natur kommen wesenlich mehr als nur diese drei Grundfarben vor. Selbst die Annahme, dass unsere Augen Rot, Grün und Blau als Grundfarben wahrnehmen ist nicht ganz richtig. Die Details dazu sind aber ein eigenes Thema, für das ich mal einen eigenen Post schreiben müsste. Licht besteht natürlich aus alle Bestandteilen des Spektrums und selbst der sichtbare Teil des Spektrums enthält unendlich viele verschiedene Farben. Diese kann das Auge aber nicht einzeln unterscheiden, sondern liefert nur einen Gesamteindruck, wewegen der Trick mit den drei Grundfarben auch super funktioniert.

Trifft Licht allerdings auf ein Prisma, so spaltet es sich auf und die einzelnen Farbanteile werden sichtbar. Will man das am Computer simulieren, hat man aber meist statt dem gesamten Spektrum nur den RGB-Wert für das eintreffende Licht. Man weiß also bei einem gelben Lichtstrahl nicht, ob das Licht jetzt wie am Computerdisplay aus Rot und Grün gemischt wurde oder nur aus dem gelben Anteil des Spektrums besteht. Es kann natürlich auch eine Mischung aus Beidem, also Rot, Grün und dem daziwschen liegendem Gelb sein. Es gibt für einen gegebenen RGB-Farbwert quasi unendlich viele Spektren, die genau den gleichen Eindruck erzeugen, aber hinter einem Prisma unterschiedlich Bilder erzeugen. Und genau das ist das Problem, weil woher soll man wissen, welches Spektrum sich wirklich hinter der Farbe versteckt?

Bei Regenbögen behilft man sich meistens damit, dass Regenbögen nur unter bestimmten Bedingungen (relativ flacher Sonnenstand, hohe Feuchtigkeit der Luft) auftreten und Sonnenstrahlen dann ein recht ähnliches Spektrum besitzen. Dieses Spektrum ist auch relativ gleichmäßig, weswegen der Bogen alle Farben enthält. Wäre dies nicht der Fall, würden einzelne Farben fehlen oder wären deutlich schwächer. Gerade bei künstlicher Beleuchtung trifft man solche Spektren durchaus an.

Mir hatte sich an dem regnerischen Nachmittag die Frage gestellt, ob die Benutzung von RGB-Farben statt dem gesamten Spektrum sich nicht nur bei Dispersion sondern auch unter ganz “normalen” Bedingungen auswirkt. Immerhin könnte es ja ein Material geben, dass nur gelbes Licht aber kein grünes und rotes Licht reflektiert. Bestrahlt man so ein Material mit weißem oder “echtem” gelbem Licht so würde es den gelben Anteil wieder abstrahlen und es hätte daher eine gelbe Farbe. Bestrahlt man so ein Material hingegen mit einem gelb wirkenden Licht, das in Wirklichkeit aus Rot und Grün gemischt wurde, so würde dieses Licht nicht reflektiert sonder absorbiert und das Material würde schwarz wirken. In beiden Fällen wären der RGB-Wert des Lichtes der gleiche gewesen obwohl sie zu einem vollkommen verschiedenen Ergebnis geführt hätten. Auch wenn es wahrscheinlich nicht allzu viele Materialien gibt, die sich so extrem verhalten (immerhin haben computergenerierte Bilder ja zumindest annähernd die gleichen Farben wie auf Fotos), dürfte man den Effekt trotzdem antreffen.

Simulationsergebnis

Simulationsergebnis

Daher habe ich mich dann zuhause dazu entschieden, das ganze mal am Computer zu simulieren. Dazu habe ich das zurückgestrahlte Licht für verschiedene Materialien unter verschiedenen Beleuchtungen berechnet. Ich habe jeweils für das Licht und das Reflektionsspektrum den RGB-Wert bestimmt und einmal direkt damit gerechnet. Und zum Vergleich das ganze nochmal mit dem gestamten Spektrum durch gerechnet und erst anschließend für das reflektierte Licht einen RGB-Wert bestimmt und die beiden verglichen. Leider konnte ich für detailierte Spektren so gut wie keine Quellen finden, die eine Lizenz mit offenen Nutzungsbedingungen hatten. Deswegen beschränke ich mich hier auf ein paar von mir rekonstruierte Spektren [1] und solche Lichtspektren [2], die zwar frei verwendbar sind, dafür aber nicht zu 100% genau sind. Das macht allerdings nichts, weil der Effekt selbst dadurch nicht beeiflusst wird und ich zum Vergleich noch Simulationen mit Spektren aus anderen Quellen mit ähnlichem Ergebnis gemacht hatte.

Das Ergebnis meiner kleinen Simulation scheint meine Vermutung zu bestätigen. Für Gold sind klare Unterschiede zu erkennen, wenn statt dem vollen Spektrum nur mit Rot, Grün und Blau gerechnet wird. Allerdings sind bei Silber die Unterschiede kaum noch zu erkennen und bei Aluminium gar nicht mehr vorhanden. Man muss sich also bei unserer heutigen Computergrafik noch keine großen Gedanken über die Grenzen von RGB-Farben machen. Zumindest solange man mit den gängigen Verfahren noch andere wesentlichere Abweichungen erhält. Nähert man sich allerdings der Perfektion oder braucht man aus anderen Gründen (zum Beispiel weil man an den Dispersionseffekten interessiert ist oder für wissenschaftliche Simulationen). Und weil das natürlich auch schon länger bekannt ist, gibt es genau für solche Zwecke auch Programme. Mit der Open-Source Software Pov-Ray oder mit Blender und kann das jeder selbst ausprobieren. Allerdings sind diese nicht gerade ganz leicht zu bedienen. Und wäre ich gleich auf die Idee gekommen, das damit zu berechnen (das Program enthält eigene Spektren), hätte ich mir etwas Arbeit gespart, wäre aber mit Sicherheit nicht über die vielen interessanten Artikel zu dem Thema gestolpert. So oder so freue ich mich natürlich auch weiterhin über jeden Regenbogen.

P.S.: Sollte es Interesse an diesem oder ähnlichen Themen geben, werde ich versuchen auch außerhalb des Schreibwettbewerbs etwas dazu zu schreiben und die Chance nutzen, dabei wieder viel neues zu lernen.

Regenbogen über dem Lipno Stausee (Bild: Alexis Dworsky, CC BY 2.0 DE)

Regenbogen über dem Lipno Stausee (Bild: Alexis Dworsky, CC BY 2.0 DE)

[1] Reflektions-Spektren der Metalle aus einem Diagram von DrBob bei Wikipedia entnommen (CC BY-SA 3.0 Unported, https://en.wikipedia.org/wiki/File:Image-Metal-reflectance.png)

[2] Licht-Spektren von https://spectralworkbench.org/ (Public Domain)

————————————————-
Hinweis zum Autor: Dieser Artikel wurde von Johannes (“JoselB”) geschrieben: “Ich bin Softwareingenieur und das ist mein erster Blogbeitrag seit meiner kurzen OpenSource-Zeit während dem Studium.”

Kommentare (21)

  1. #1 Gerrit
    29. September 2015

    Interessanter Artikel. Ein hochauflösendes Solarspektrum findest du beim Harvard-Smithsonian Center for Astrophysics (https://www.cfa.harvard.edu/atmosphere/, oben rechts) und
    Reflektionsspektren gibt es z.B. in der ASTER Spectral Library (https://speclib.jpl.nasa.gov/). Allerdings bin ich mir bei den Lizenzen nicht sicher.

  2. #2 JoselB
    29. September 2015

    Sorry für die Rechtschreibfehler und den fehlenden Halbsatz vor der Nennung von Pov-Ray. Man sollte halt beim Korrekturlesen in der Hektik nicht das Speichern vorm Abschicken vergessen 🙁

  3. #3 JoselB
    29. September 2015

    @Gerrit: Danke für den Tip! Ich hatte noch ein paar andere Quellen unter anderem auch von der NASA, aber leider alle mit unklaren oder zu restriktiven Lizenzen. Ich denke aber, dass ich die Simulation mal mit mehr Spektren wiederholen werde und vielleicht auch mal eine Simulation mit Pov-Ray machen werde.

  4. #4 Marco
    29. September 2015

    Bei Farben oder Lacken kann es durchaus zu untershciedlichen Wahrnehmung unter unterschiedlichen Spektren kommen.
    Auch in der Fotografie ist mir dieses Phänomen schon begegnet. Besonders bei einer Violetten Blüte. Ein wunderbar intensives, leuchtendes violett!
    Ich fotografierte die Pflanze und betrachtete das Bild auf dem Display meiner Spiegelreflex und es war ok.
    Neben mir hat jemand mit einer Kompaktkamera dieselbe Pflanze fotografiert und bekam blaue Blumen auf dem Display angezeigt. Sah auch schön aus, war aber nicht das erwartete Ergebnis.

    Meine Vermutung daraus, dass die Pflanze intensiv im violetten (bis UV) leuchtet und nicht rot und blau reflektiert. D.h. die auf rot empfindlichen Photodioden in der Kamera sehen “nichts” und nur die Blauen werden belichtet. Wie es meine Kamera torzdem geschafft hat, das Bild “korrekt” dar zu stellen, ist mir bis heute ein Rätsel!

    Lustig war, dass unterschiedliche Kameras mit solchen Situationen offensichtlich unterschiedlich umgehen.

  5. #5 thebaron
    Düsseldorf
    29. September 2015

    Aus dem Männermanifest:
    16. ALLE Männer sehen nur 16 Farben. Pfirsich ist eine Frucht und keine Farbe!

    17. Und was für eine Farbe ist überhaupt Apriko(t), und wie zur Hölle schreibt man das?

  6. #6 Alderamin
    29. September 2015

    @Marco

    Alle guten Kameras haben einen IR-Sperrfilter, denn die CCD- und CMOS-Sensoren sind empfindlich für IR-Licht bis über 1000 nm Wellenlänge. Die Sperrfilter sind aber durchaus nicht alle gleich. Was hier passiert sein kann ist, dass der Sperrfilter bei Dir mehr IR durchgelassen hat und damit den Rotanteil bei der Blüte angehoben (denn IR wird natürlich von den rotempfindlichen Pixeln registriert). Bei der anderen Kamera wurde vielleicht auch schon etwas Rot unterdrückt. Daher wirkte die Blüte dann bläulicher als bei Deiner Kamera.

    Außerdem kommt es selbstverständlich auf den Weißabgleich an. Wenn die Bilder generell verschiedenfarbig wirkten, wird es daran gelegen haben, wenn’s nur die Blüten waren, dann eher am IR-Filter.

  7. #7 sibaku
    29. September 2015

    Schöner Artikel 🙂
    Man erkennt, dass es nicht ausreicht, nur mit RGB Farben zu arbeiten.
    Mich würde interessieren, wie du die RGB Werte aus dem Sprektrum errechnet hast? Sinnvoller wären hier meines Erachtens wahrscheinlich XYZ Komponenten (oder vergleichbare), da diese über einen menschlichen “Normbetrachter” definiert sind (durchschnittliche Wahrnehmungskurven des Menschen, definiert durch 3 Sprektren – https://www.cvrl.org/). RGB selbst hat ja nicht direkt eine genaue Bedeutung. Alternativ bietet sich danach auch z.B. Lab an, da hier der wahrnehmbare Fehler genauer quantifiziert werden kann.

    In der Computergrafik wird die Vereinfachung vor allem wegen der Geschwindigkeit gemacht. In Standardverfahren wird auch sehr dubiose Mathematik betrieben (Farbe*Farbe), die in einem Fehler endet, der aber bei vielen Echtzeit-Renderings nicht weiter ins Auge fällt.
    Allgemein wird dem spektralen Rendering/Aufnehmen nicht genug Beachtung zugesprochen, so gibt es anscheinend keine Kamera, die den gleichen Farbraum wie die Wahrnehmung des Menschen aufnimmt, was eine getreue Rekonstuktion quasi unmöglich macht.
    Sehr interessantes Thema, das vor allem bei Photorealistischer Grafik, Simulationen aber auch zum Beispiel bei Computer Vision wichtig ist (wann haben aufgenommene Werte die gleiche Farbe?).

    Sorry für den langen Text, es gibt aber auch so viel dazu zu sagen 😀

  8. #8 JoselB
    29. September 2015

    Theoretisch müsste es doch möglich sein, mit Filtern die XYZ Wahrnehmung auf dem Sensor nachzustellen und nachträglich in RGB umzurechnen. Damit könnte man dan Originaltreue Aufnahmen machen. Wobei eventuell ein subjektiver Weißabgleich trotzdem nötig ist

  9. #9 sibaku
    29. September 2015

    @JoseIB
    Das sollte meines Erachtens nicht möglich sein, da das nach den Filtern herauskommende Sprektrum weiterhin auf die Sensorantwortkurven projiziert wird. Diese spannen einen Farbraum auf, der generell bei Kameras nicht der gleiche ist, wie der des menschlichen Auges. (Das ist eine Verletzung der sogenannten Luther-Yves Bedingung, die Farbkonsistenz garantiert). Dadurch lassen sich die RGB Koordinaten nicht exakt im Normfarbraum von XYZ darstellen -> Es entsteht ein Fehler abhängig vom Ausgangssprektrum.

  10. #10 JoselB
    29. September 2015

    @sibaku: Ich habe das Spektrum zunächst in CIE XYZ Farben umgerechnet, diese anschließend in den linearen CIE RGB Farbraum umgerechnet (in diesem habe ich auch die auf RGB basierenden Berechnungen durchgeführt) und anschließend zur Anzeige in sRGB weil das “der Standard” ist.

    An sich ist Farbe*Farbe ja gar nicht so problematisch, zumindest solange die Berechnung in einem linearen Farbraum durchgeführt wird. Es ist erschreckend, dass bis vor ein paar Jahren selbst teilweise die großen CG-Anwendungen noch falsch gemacht haben und stattdessen direkt gammakorrigierte Werte multipliziert hatten.

  11. #11 sibaku
    29. September 2015

    @ JoseIB
    Danke für die Antwort 🙂

    Und Farbe*Farbe ist eher problematisch, da es keine direkte mathematische Grundlage hat, auch wenn es halbwegs intuitiv ist. Ohne Referenzbild siehts ja trotzdem normal gut genug aus, da das Abschätzen von wirklichen Farben nicht gerade leicht ist. Aber wird wohl noch ein Weilchen dauern, bis man auf der Grafikkarte gut spektral rendern kann. Bis dahin muss man halt ein bisschen tricksen ^^

  12. #12 bruno
    29. September 2015

    ah, sorry,!
    hir wurde so fiel auf rächscreibfelhners rumgeritten – häute muss ichmal mäckkern! sorry für das verfrühte Abschicken – aber dass auch das Dativ den Genitiv nicht guttut, wissen wir ja…

    Bitte (!), schau nochmal in die dt. Grammatik!
    Sicher ein interessantes Thema von dir – ich konnte mir den Beitrag allerdings nicht zu Ende durchlesen… sorry.

    Mache ich, wenn ich ausgenörgelt bin 😉

  13. #13 Dampier
    29. September 2015

    Der Artikel hat mir gut gefallen, allerdings war mir nicht immer klar, wann du dich auf die reale und wann auf die virtuelle Welt beziehst. Außerdem würde mich interessieren, wie man in einem 3D-Programm ein Prisma simuliert bzw. wie man dessen Werte messen kann.

    Danke und Gruß

  14. #14 Rüdiger Kuhnke
    München
    29. September 2015

    Aus des Druckers subtrakriver Sicht: Yellow, Magenta und Cyan sind die Farben, auf die es ankommt!
    Aus des Lichttechnikers additiver Sicht: Rot, Grün und Blau sind die Farben, auf die es ankommt!
    Aus des Malers Sicht: Gelb! Ihr habt alle die Grundfarbe gelb vergessen!

  15. #15 Hans
    30. September 2015

    Hinweis zum Autor: Dieser Artikel wurde von Johannes (“JoselB”) geschrieben:

    Ist ja sehr interessant. Hinter “JoselB” steckt also ein Johannes. Ich hab bisher immer gedacht, das sich hinter dem Nick eine Frau verbirgt, die sich “Jose_i_B” nennt… – Das kleine “ell” und das grosse “i” sehen sich in San Serif Zeichensätzen ja leider zum verwechseln ähnlich, so das ich das “ell” in “JoselB” erst als solches erkannt habe, als ich den Namen in einem Hexeditor betrachtet habe:

    Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

    00000000 48 69 6E 77 65 69 73 20 7A 75 6D 20 41 75 74 6F Hinweis zum Auto
    00000010 72 3A 20 44 69 65 73 65 72 20 41 72 74 69 6B 65 r: Dieser Artike
    00000020 6C 20 77 75 72 64 65 20 76 6F 6E 20 4A 6F 68 61 l wurde von Joha
    00000030 6E 6E 65 73 20 28 93 4A 6F 73 65 6C 42 94 29 20 nnes (“JoselB”)
    00000040 67 65 73 63 68 72 69 65 62 65 6E 3A 20 geschrieben:

    Soviel dazu. – Zum Text selbst. Sehr interessante Aufklärung, denn mir war der Sinn der unterschiedlichen “Farbräume” (wie man ja auch sagt) bisher nicht wirklich klar. – Okay, beim Unterschied zwischen Bildschirm und Drucker von wegen additiver und subtraktiver Farbmischung schon, aber warum zum Geier es neben RGB auch noch HSV oder anderes gibt, war mir nicht klar. Dieser Artikel bringt da etwas Licht ins Dunkel.

  16. #16 JoselB
    30. September 2015

    @Rüdiger: Naja, ein Farbfetischist könnte behaupten, dass jede Farbmischung zu Fehlern führt und nur die echten Farben (im Sinne von Verwendung des darzustellenden Materials für die Darstellung) richtig sind. Und er hätte insofern recht, dass fast alle anderen Methoden für jeden Beobachter leicht andere unterschiedliche Abweichungen erzeugen. Aber dazu gehört auch das richtige Licht, der richtige Betrachtungswinkel und so weiter.

  17. #17 JoselB
    30. September 2015

    @Hans: Naja es ist ein Josel-B, dass B um mich von anderen Josels (schließlich ist das im südamerikanischem Raum ein verbreiteter Jungenname) abzuheben. Josel, weil sich das schon vor langer Zeit auch ausserhalb des Internets etabliert hatte (mit unterschiedlichen Schreibweisen und Aussprachen, aber das macht ja nichts). Johannes, weil das mein Vorname ist. So viel zu meinem Namen.

    Zu den Farbräumen: Derer gibt es wie Sand am Meer. Wobei man die entweder nach ihrer Funktion (RGB für Bildschirme, CMYK zum Drucken, HSL und HSV für subjektive Farbmanipulation wie Aufhellen, Farbintensivierung etc) oder nach dem damit erreichbaren Farbeindrücken (Adobe RGB beherrscht mehr Farben als sRGB) unterschieden. Allen gemein ist, dass sie nur subjektive Farbeindrücke für Menschen beherrschen und ansonsten relativ nutzlos sind. Einen Fangschreckenkrebs dürften sie zumindest nicht beeindrucken können.

  18. #18 JoselB
    30. September 2015

    @Dampier: Ich werde versuchen, in Zukunft besser darauf zu achten. Und ich nehme mir jetzt einfach mal vor, irgendwann einen Artikel über die Physik von Dispersion zu schreiben. Immerhin muss ich mal anfangen, sowas wie Schreibkünste zu entwickeln. Wenn ich nicht erst in den letzten zehn Minuten vorm Ende des Wettbewerbs abschicke, dürfte auch das mit der Rächtschraipung besser klappen. Ich hatte nur komplett den Arbeitsaufwand für die Bilder unterschätzt.

    Zur Simulation von Prismen: Entweder berechnet man das ganze spektral mit den physikalischen Gesetzen oder man faked den Effekt komplett (z.B. mit nem Spotlight mit Textur). Kann in Computerspielen dann daran erkannt werden, dass ein Prisma einen wunderschönen Regenbogeneffekt erzeugt, aber die restlichen Prismen nicht einmal das Licht ablenken.

  19. #19 HF
    30. September 2015

    Nur selten ergeben sich frappierende Unterschiede in der wahrgenommenen Farbe. aber ein schönes Beispiel ist der Alexandrit. https://de.wikipedia.org/wiki/Alexandrit-Effekt

  20. #20 Hans
    1. Oktober 2015

    JoselB, #17

    @Hans: Naja es ist ein Josel-B, dass B um mich von anderen Josels (schließlich ist das im südamerikanischem Raum ein verbreiteter Jungenname) abzuheben.

    Ah ja. Das wusst ich bisher zwar auch nicht, aber die Brgründung klingt einleutend.

    Zu den Farbräumen: Derer gibt es wie Sand am Meer. … Allen gemein ist, dass sie nur subjektive Farbeindrücke für Menschen beherrschen und ansonsten relativ nutzlos sind.

    Naja, es waren ja auch Menschen, die sie entdeckt oder für irgendeinen Zweck erdacht haben, etwa um bei anderen Menschen Eindruck zu schinden. Das Tiere davon mehr oder weniger unbeeindruckt sind, ist doch völlig klar. Vor allem, wenn man bedenkt, das Tieraugen auf die Wahrnehmung anderer Wellenlängen ausgelegt sein können, als menschliche Augen. Oder wie Katzen sowas wie “Restlichtverstärker” eingebaut haben.
    Dennoch besten Dank für die Aufklärung über die verschiedenen Farbräume.

  21. #21 Dampier
    1. Oktober 2015

    @HF

    Nur selten ergeben sich frappierende Unterschiede in der wahrgenommenen Farbe. aber ein schönes Beispiel ist der Alexandrit.

    So ein Hemd hatte ich mal B)