![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
изменить яркость, контраст и цветность [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]Какого изображения? Изображения где?