Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Алгоритмы / Графика /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Перевод цветов из режима RGB в HSV - Программирование от RIN.RU
Перевод цветов из режима RGB в HSV

Смит предложил построить модель субъективного восприятия в виде объемного тела HSV (цветовой тон, насыщенность, светлота).


Hасыщенность меняется от 0 до 1. Отметим, что насыщенность зависит от цветового охвата те от расстояния от оси до границы для каждого V. При S=1 цвета или их дополнения полностью насыщенны. Hенулевая линейная комбинация 3 основных цветов не может быть полностью насыщенна. Если S=0, то тон H неопределен, те на центральной оси находятся ахроматические, серые цвета.


Модель HSV соотвествует тому, как составляют цвета художники. Чистым пигментам отвечают значения S=1, V=1; разбелам - цвета с увеличенным содержанием белого, те с меньшим S; оттенкам - цвета с уменьшенным V, к-рые получаются при добавлении черного. Тон изменяется при уменьшении как V так и S.


Преобразование из цветового пространства RGB->HSV проводиться по данному ниже алгоритму, также взятому у Смита:



RGB - остновные цвета (0-1),
H - цветовой тон (0-360ш), 0ш - красный
S - насыщенность (0-1)
V - светлота (0-1)


MAX - функция определения максимума
MIN - функция определения минимума


/Определение светлоты/


V=MAX(R, G, B)


/Определение насыщенности/


TEMP=MIN(R, G, B)
if V=0 then S=0 else S=(V-TEMP)/V end if


/Определение цветового тона/


if S=0 then


H=Hеопределенность


else


Cr=(V-R)/(V-TEMP)
Cg=(V-G)/(V-TEMP)
Cb=(V-B)/(V-TEMP)


/Цвет между желтым и пурпурным/


if R=V then H=Cb-Cg


/Цвет между голубым и желтым/


if G=V then H=2+Gr-Cb


/Цвет между пурпурным и голубым/


if B=V then H=4+Cg-Cr
H=H*60


/Приведение к положительным величинам/


if H<0 then H=H+360 end if


finish




 8  Комментарии к статье  8 8  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь