HSV_(grafika) - Encyklopedia

Pozycjonowanie oraz tworzenie stron www. Informacje na temat programu Google Adsense. Druk cyfrowy na życzenie - książki, recepty, katalogi - tanio! Pomysł na upominek na wesele twojej znajomej! Podkarpacki OTS, zdrowie omówienie chorób - objawy, leczenie

HSV_(grafika)

Tekst z tej strony jest kopią wikipedii: pl.wikipedia.org/.
Na licencji GNU Free Documentation License

HSV (ang. Hue Saturation Value) – model opisu przestrzeni barw zaproponowany w 1978 roku przez Alveya Raya Smitha.

Stożek przestrzeni barw HSV.

Model HSV nawiązuje do sposobu, w jakim widzi ludzki narząd wzroku, gdzie wszystkie barwy postrzegane są jako światło pochodzące z oświetlenia. Według tego modelu wszelkie barwy wywodzą się ze światła białego, gdzie część widma zostaje wchłonięta a część odbita od oświetlanych przedmiotów.

Symbole w nazwie modelu to pierwsze litery nazw angielskich dla składowych opisu barwy: H – częstotliwość światła (ang. Hue) wyrażona kątem na kole barw przyjmująca wartości od 0° do 360°. Model jest rozpatrywany jako stożek, którego podstawą jest koło barw.

Wymiary stożka opisuje składowa S – nasycenie koloru (ang. Saturation) jako promień podstawy oraz składowa V – (ang. Value) równoważna nazwie B – moc światła białego (ang. Brightness) jako wysokość stożka.

Przyporządkowanie częstotliwości fal świetlnych na kole barw w modelu HSV jest takie same jak w modelach HLS lub HSL, tzn. centrum barwy czerwonej odpowiada kąt 0° lub 360°. Centrum barwy zielonej odpowiada kąt 120°. Centrum barwy niebieskiej odpowiada kąt 240°. Pozostałe barwy pośrednie dla składowej Hue są odpowiednio rozłożone pomiędzy kolorami czerwonym, zielonym i niebieskim.

[ Konwersja modelu RGB na HSV (Delphi/Object Pascal)

Aby zamienić składowe RGB na HSV można skorzystać z poniższej funkcji konwertującej. Przy czym należy pamiętać, aby do listy używanych modułów włączyć moduł matematyczny (w Delphi do listy uses należy dodać moduł Math). Rekordy TRGB i THSV mają następującą budowę:

TRGB = record red : byte; green : byte; blue : byte; end; THSV = record hue : byte; saturation : byte; value : byte; end;

Jako parametr funkcji podajemy wypełniony rekord typu TRGB, funkcja zwraca wypełniony rekord typu THSV.

function KonwertujRGBnaHSV(RGB : TRGB) : THSV;var temp, licznik, mianownik, stopnie : integer;begin temp := MIN(MIN(RGB.red, RGB.green), RGB.blue); // Obliczanie składowej Value Result.value := MAX(MAX(RGB.red, RGB.green), RGB.blue); // Zmienna TEMP jest teraz najmniejszą składową, a zmienna Result.value największą składową // Obliczanie składowej Hue mianownik := Result.value-temp; if mianownik = 0 Then begin Result.hue:=0; Result.saturation:=0; Exit; end else begin if temp=RGB.red Then begin licznik := RGB.green-RGB.blue; if RGB.green >= RGB.blue Then stopnie := 0 else stopnie := 360; end else if temp=RGB.green Then begin licznik := RGB.blue-RGB.red; stopnie := 120; end else if temp=RGB.blue Then begin licznik := RGB.red-RGB.green; stopnie := 240; end; Result.hue := Round(60*(licznik/mianownik)+stopnie); end; // Obliczanie zmiennej Saturation if temp=0 Then Result.saturation := 0 else Result.saturation := Round(255-255*(temp/Result.value));end;

Zobacz też

Linki zewnętrzne

http://www.algorytm.org/index.php?option=com_content&task=view&id=129&Itemid=28