Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Преобразовать RGB [D5, D6, Win95/98, WinME, NT4, Win2k, WinXP]


Toltec ©   (2002-01-30 03:23:00) 

Можно ли преобразовать картинку в RGB-цветах к черно-белую?
Если да то как?


Фэ   (2002-01-30 13:10:00) [1]

1.Для линейной цветовой системы RGB.
1.1. Простейший способ
Y=(R+G+B)/3

1.2.С учетом особенностей люминофора CRT по Rec.709 ITU
Y = 0.212671 * R + 0.715160 * G + 0.072169 * B;

2.Для нелинейной цветовой системы RGB.

Вначале применяется гамма-коррекция
т.е. линеаризация нелинейной функции взаимосвязи ускоряющего напряжения и яркости для конкретного люминофора по каждой составляющей R,G,B.
R = (-0.16 + 1.16 * ((Rn / Rw)^(gammaR)))*255 Rn=[0..1]
G = (-0.16 + 1.16 * ((Gn / Gw)^(gammaG)))*255
B = (-0.16 + 1.16 * ((Bn / Bw)^(gammaB)))*255

где Rw.. - точки белого для каждого цвета
gammaR - коэф. гамма-коррекции по каждому цвету

Можно упростить
R = (-0.16 + 1.16 * ((Rn)^(gamma)))*255 // если использовать один коэф для всех цветов и не делать поправку на белую точку


Затем по Rec.601 вычисляется нелинейная яркость для уже нелинейной системы RGB.
Y = 0.299 * R + 0.587 * G + 0.114 * B;

Для ускорения преобразований можно заранее вычислить таблицу коррекции
for i := 0 to 255 do
raw := i / 255.0;
corr := pow (raw, gamma);
table[i] := trunc (0.5 + corr * 255.0)
end


Владимир Васильев   (2002-01-30 11:28:00) [2]

Сначала загляни сюда : http://www.efg2.com/Lab/

Если остануться вопросы или возникнут новые - плиз. мейлом.


Nikolay   (2002-01-30 11:26:00) [3]

смотри FAQ
http://delphi.mastak.ru/faq.shtml;+)


Наверх

Титульная страница Поиск, карта сайта Написать письмо