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

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

изменить яркость, контраст и цветность [D7, WinXP]


ndg ©   (2007-02-20 19:17:00) 

Подскажите, может кто сталкивался с этим:
как программно, не используя доп. компоненты, изменять яркость, контрастность и цветность изображения ?
Если поможете кодом, буду благодарен.


Pavia   (2007-02-24 01:40:00) [1]

R, G, B это уровни. Каждый уровень численно характерезуется интенсивностью.
Изменяя их мы приводим к изменению яркости, контрасности и цветность изображения.
Интенивность, Яркость, контрасность имеют связь поэтому изменение одного параметра приводит к изменению другого.

Чтобы изменить кантрасность нужно растянуть, сжать интенсивность. Другими словами в самом простом случаи нам хватит умножения.
А вот чтобы изменить яркость нам нужно увеличить, уменьшить интенсивность. Другими словами нужно либы прибавить либы удалить некоторое значение.


Ricks   (2007-02-23 16:31:00) [2]


> Это контраст, а не яркость

Это даже не контраст. В фотошопе это levels (уровни). Согласись, если k >= 255 тогда вся картинка будет белой, за исключением точек, в которых одна из составляющих RGB равна нулю, а если k = 0 тогда ВСЕ черное, а если k < 0, тогда что?


MBo   (2007-02-22 10:32:00) [3]

>TRUNK ©   (22.02.07 10:29) [4]
>Изменять нужно так:new.r := trunc(old.r*k);

Это контраст, а не яркость.

Intensity = Brigtness + Contrast * Value


TRUNK   (2007-02-22 10:29:00) [4]


> Ricks ©   (21.02.07 21:41) [3]

Такое изменение может привести к искажению оттенка.
Изменять нужно так:

new.r := trunc(old.r*k);
new.g := trunc(old.g*k);
new.b := trunc(old.b*k);

И следить при этом, чтобы значения не переходили
через 0 при уменьшении и через 255 при увеличении яркости.
А вообще проще использовать HSV, в этом я согласен с [2] Jeer ©.


Ricks   (2007-02-21 21:41:00) [5]

Если для тебя яркость <=> Lightness (что-то типа светлоты), то добавляй просто к каждому RGB пикселю значение, на которое ты хочешь изменить якрость
new.r:=old.r + a;
new.g:=old.g + a;
new.b:=old.b + a;


Jeer   (2007-02-21 16:22:00) [6]

от цветового пространства RGB перейти к HSL, а затем обратно.


TRUNK   (2007-02-21 10:31:00) [7]

Какого изображения? Изображения где?


Наверх

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