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

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

Алгоритм изменения контраста [D7, WinXP]


dimon_prorammer ©   (2004-04-21 10:23:00) 

Подкинте пожалуйста алгоритм изменения контраста для 24 - битного
битмапа.


zoltan   (2004-04-21 17:09:00) [1]

Я просто в панике что за люди пошли человек задал вопрос, а вы разводите флуд, формули!!!! Держи

procedure Contrast(var clip: tbitmap; Amount: Integer);
var
p0:pbytearray;
rg,gg,bg,r,g,b,x,y:  Integer;
begin
 for y:=0 to clip.Height-1 do
 begin
   p0:=clip.scanline[y];
   for x:=0 to clip.Width-1 do
   begin
     r:=p0[x*3];
     g:=p0[x*3+1];
     b:=p0[x*3+2];
     rg:=(Abs(127-r)*Amount)div 255;
     gg:=(Abs(127-g)*Amount)div 255;
     bg:=(Abs(127-b)*Amount)div 255;
     if r>127 then r:=r+rg else r:=r-rg;
     if g>127 then g:=g+gg else g:=g-gg;
     if b>127 then b:=b+bg else b:=b-bg;
     p0[x*3]:=IntToByte(r);
     p0[x*3+1]:=IntToByte(g);
     p0[x*3+2]:=IntToByte(b);
   end;
 end;
end;


VMcL   (2004-04-21 11:51:00) [2]

>>[lamer]Barmaglot ©  (21.04.04 11:16) [1]

Не RTFM, а STFW :)


KA_   (2004-04-21 11:26:00) [3]

Повышение/снижение контрастности – это умножение/деление значения каждого канала на константу.
Яркость считается по формуле Y := 0.3 * R + 0.59 * G + 0.11 * B
Но есть один ньюанс - чтобы внешний вид изображения не искажался, средняя яркость после изменения контрастности должна остаться прежней. Поэтому сначала вычисляешь среднюю яркость изоражения, а потом изменяешь контрастность по формуле Y := ChangeCoeff * (Y - AverageY) + AverageY


[lamer]Barmaglot   (2004-04-21 11:16:00) [4]

RTFM?

http://algolist.manual.ru/graphics/filter/index.php


Наверх

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