Våglängd till RGB-färg omvandlare

Nedan finns ett Java-program som visar vilken färg som motsvarar ljus med en viss våglängd. Det är viktigt att komma ihåg att egentligen har ljuset självt ingen färg utan färgen skapas i ögat och i hjärnan. Färg är alltså inget absolut begrepp utan upplevelsen av färg varierar från människa till människa. I ögat finns det tre typer av sensorer för ljus, de så kallad tapparna, vilka har olika känslighet för ljusets våglängd. Dessutom finns det en fjärde typ av sensorer, de så kallade stavarna, som är viktiga för mörkerseendet men som inte spelar någon roll för färgseendet.

Då ögat har tre olika sensorer för färgseende så räcker det med tre grundfärger för att kunna blanda och återge alla färger vi kan se. Programmet visar därför också hur mycket av de tre grundfärgerna rött, grönt och blått som en viss våglängd motsvarar. Slutligen är det möjligt att själv blanda de tre grundfärgerna och se resultatet. Notera även att alla färger, som till exempel brunt, inte finns med i spektrat. Det beror på att de är blandningar av olika våglängder.

Man skulle kunna tro att en färgmonitor som en datorskärm eller TV kan återge alla färger men så är inte fallet. Det finns flera olika sorters färgsystem och vart och ett har sina begränsningar. Nedan finns en kortfattad beskrivning av hur man kan omvandla en viss våglängd till en blandning av rött, grönt och blått (RGB) vilket är det färgsystem som datorskärmar använder.

Commission Internationale de L'Éclairage (CIE) har fastlagt en standard för hur en normal observatör uppfattar ljus av en viss våglängd. Deras system består av tre olika komponenter, kallade X, Y och Z. Nedan finns en figur som visar hus mycket av de olika komponenterna som en viss våglängd motsvarar enligt CIEXYZ 1964 [CIE (1964) 10-deg color matching functions, tka4.org/materials/lib/Code/FileFormats/Color/cie-cmf.xls ].

xyz

De tre komponenterna XYZ kan omvandlas till RGB systemet med hjälp av följande linjära transformation.

R = 3.240479*X - 1.537150*Y - 0.4986535*Z
G = - 0.969256*X + 1.875992*Y + 0.041556*Z
B = 0.055648*X - 0.204043*Y + 1.057311*Z

Vilket ger följande kurvor. Notera att medan CIEXYZ systemet bara har positiva värden så motsvaras vissa våglängder av negativa RGB värden.

rgb