Model HSV
Model HSV (Hue, Saturation, Value) został zaproponowany w 1978 roku przez Alveya Raya Smitha. Jest to sposób opisu przestrzeni barw, który nawiązuje do postrzegania kolorów przez ludzki wzrok. W modelu tym wszystkie barwy wywodzą się ze światła białego, gdzie część widma jest wchłaniana, a część odbijana przez obiekty.
W modelu HSV wyróżniamy trzy podstawowe składowe:
- H (Hue) – odcień barwy, wyrażany kątem na kole barw, od 0° do 360°.
- S (Saturation) – nasycenie koloru, które można zobrazować jako promień podstawy stożka.
- V (Value) – moc światła białego, odpowiadająca wysokości stożka.
Przyporządkowanie kolorów na kole barw jest następujące: czerwony odpowiada kątowi 0°/360°, zielony 120°, a niebieski 240°.
Konwersja modelu RGB na HSV
Aby zamienić składowe RGB na HSV w języku Delphi/Object Pascal, należy skorzystać z poniższej funkcji. Wymagane jest dodanie modułu matematycznego do listy używanych modułów.
Struktury rekordów definiujących RGB i HSV są następujące:
TRGB = record
red: byte;
green: byte;
blue: byte;
end;
THSV = record
hue: word; // wartości od 0 do 359
saturation: byte; // wartości od 0 do 100
value: byte; // wartości od 0 do 100
end;
Funkcja konwertująca RGB na HSV wygląda następująco:
function KonwertujRGBnaHSV(RGB: TRGB): THSV;
var
temp: integer;
begin
temp := MIN(MIN(RGB.red, RGB.green), RGB.blue);
Result.value := MAX(MAX(RGB.red, RGB.green), RGB.blue);
if temp = Result.value then
Result.hue := 0
else begin
if RGB.red = Result.value then
Result.hue := 0 + ((RGB.green – RGB.blue) * 60 div (Result.value – temp));
if RGB.green = Result.value then
Result.hue := 120 + ((RGB.blue – RGB.red) * 60 div (Result.value – temp));
if RGB.blue = Result.value then
Result.hue := 240 + ((RGB.red – RGB.green) * 60 div (Result.value – temp));
end;
if Result.hue < 0 then Result.hue := Result.hue + 360;if (Result.value = 0) then Result.saturation := 0 else Result.saturation := (Result.value - temp) * 100 div Result.value;Result.value := (100 * Result.value) div 255; end;
Paleta kolorów
Paleta kolorów w modelu HSV opiera się na odcieniach, nasyceniu i jasności, co pozwala na szerokie zastosowanie w grafice komputerowej oraz projektowaniu wizualnym.