Am 2012-07-04 09:53, schrieb Stefan:
> Jetzt sollte es aber je grundsätzlich kein Problem sein, das gemessene
> Spektrum in RGB Werte und dann in L*a*b* umzurechnen.
> RGB -> L*a*b* ist kein Problem, das haben wir bereits früher gemacht.
>
> Was ich jetzt benötige sind die Filterkurven für RGB, damit ich aus dem
> Spektrum die RGB-Werte berechnen kann:
Der Standardweg geht über CIE 1931 (richtig, 1931; es gibt modernere
Versionen des CIE-Standardfarbraums, aber der alte gilt nach wie vor als
Referenz für z.B. alle photometrischen Größen).
Um aus dem Spektrum die Koordinaten X,Y,Z zu gewinnen, benötigt man die
CIE Color Matching Functions, die Du auf
http://cvrl.ioo.ucl.ac.uk/
als downloadbare ASCII-Dateien findest (auch fast alles andere,
nebenbei). Diese werden numerisch intergriert (d.h. bei 32 Spektral-Bins
einfach aufsummiert), und daraus die Chromatizitäten x,y,z
(kleingeschrieben) bestimmt:
x = X/(X+Y+Z), y=Y/(X+Y+Z)
z = 1-x-y
http://en.wikipedia.org/wiki/CIE_1931_color_space
Dies ist bereits der wichtigste und rechenaufwendigste Schritt. Daraus
kann man die RGB-Werte und die L*a*b*-Werte über analytische Formeln
gewinnen:
http://en.wikipedia.org/wiki/SRGB
http://en.wikipedia.org/wiki/Lab_color_space
Für RGB würde ich nicht die Wikipedia-Matrizen nehmen (auch wenn die aus
offiziellen Quellen stammen), sondern die von Bruce Lindbloom:
http://www.brucelindbloom.com
Da findet man unter Math alles, was man braucht. Anschließend die
Gammakorrektur (steht auch bei Wikipedia unter SRGB) nicht vergessen.
L*a*b* aus X,Y,Z funktioniert ähnlich, allerdings braucht man da nicht
mal Matrixrechnung.
Die Formeln kann man ggf. sogar in einem Excel-Spreadsheet unterbringen
(Integration entweder durch einfaches Summieren oder ggf. über
Simpsonregel; komplexere Algorithmen wären hier totaler Overkill), oder
sich ein eigenes Programm schreiben. Evtl. geistert sogar der eine oder
andere (dann vermutlich eher C/C++ als Pascal)-Code dazu herum.
Der Umweg über XYZ wirkt zunächst mal unintuitiv (intuitiv wäre es eher,
R,G,B direkt aus den Spektren herzuleiten, aber das hat andere
Nachteile), aber er hat den Vorteil, dass die Luminanz in einer einzigen
Variablen (Y; die Y-CMF ist zugleich die photopische
Empfindlichkeitskurve des Durschnittsauges). Zumindest hat der
CIE-1931-Farbraum eine gewisse Prominenz (jeder dürfte dieses
"Farb-Steak" schonmal gesehen haben).
HTH,
Ingo