Lichtheid en verzadiging aanpassen in RGB

RGB, lichtheid en verzadiging

De weergave van kleuren in HSL is iets inzichtelijker dan die in RGB, maar ze zijn relatief eenvoudig in elkaar om te rekenen. De lichtheid en de verzadiging van een gegeven RGB-waarde veranderen is eenvoudig. De lichtheid wordt gedefinieerd als het gemiddelde van de kleinste en grootste waarde in de RGB-vector. Verzadiging wordt gedefinieerd als de verhouding puur verzadigd licht (bestaande uit maximaal twee kleuren) en het bijgemengde grijs (met gelijke R, G en B).

Lichtheid veranderen in RGB

L<128

Om lichtheid te veranderen in waarden onder L=128 moeten alleen de RGB-waarden verhoudingsgewijs worden aangepast.

Om de kleur (255,60,0) met L=128 aan te passen naar L=64 kunnen de RGB-waarden gehalveerd worden (180,30,0).

L>128

Als de kleur lichter wordt dan L=128, gaat het met bijmengen van wit licht.

Om de kleur(255,60,0) met L=128 een lichtheid te geven van L=192, moeten we eerst de lichtste kleur in het resulterende mengsel berekenen, in dit geval B. De resulterende lichtheid is het gemiddelde van de grootste en de kleinste waarde van de RGB-getallen. Dus 191=(255+G)/2. G=129. De kleur G is afkomstig van het bijgemengde witte licht (129,129,129). Het resultaat wordt RGB(255,G,129). Als we daar het witte licht van aftrekken houden we het oorspronkelijke licht over: RGB(126,G,0). Omdat we de R/G verhouding kennen kunnen we nu ook G van het oorspronkelijke licht voor de menging uitrekenen: G=60*(126/255)=30. RGB(126,30,0). Voegen we daar het witte licht bij, dan resulteert een RGB(255,159,129).

Verzadiging veranderen in RGB

Van een RGB-waarde de verzadiging veranderen kan eenvoudig op basis van de waarden van de maximale en minimale verzadiging. Neem RGB(96,47,32). Dit kan ik zien als een mengsel van grijs (32,32,32) en RGB(64,15,0). Deze kleur is maximaal verzadigd S=255 en half zo licht. Een even lichte kleur als de RGB(96,57,32) is RGB(128,30,0) allebei L=64. Een totaal onverzadigde grijze kleur is RGB(64,64,64). De tussenliggende kleuren met wisselende verzadiging is eenvoudig te berekenen als een mengsel van kleur en grijs: (S/255)*(R,G,B)+ (255-S)/S*(L,L,L). Voor de pure kleur RGB(255,60,0) met L=128 berekenen we voor een verzadiging van 64: (64/255)*(255,60,0)+((255-64)/255)*(128,128,128) oftewel RGB(64,15,0)+RGB(96,96,96)=RGB(160,111,96).