Форум: "Media";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
ВнизАлгоритм изменения контраста Найти похожие ветки
← →
dimon_prorammer (2004-04-21 10:23) [0]Подкинте пожалуйста алгоритм изменения контраста для 24 - битного
битмапа.
← →
[lamer]Barmaglot © (2004-04-21 11:16) [1]RTFM?
http://algolist.manual.ru/graphics/filter/index.php
← →
KA_ © (2004-04-21 11:26) [2]Повышение/снижение контрастности – это умножение/деление значения каждого канала на константу.
Яркость считается по формуле Y := 0.3 * R + 0.59 * G + 0.11 * B
Но есть один ньюанс - чтобы внешний вид изображения не искажался, средняя яркость после изменения контрастности должна остаться прежней. Поэтому сначала вычисляешь среднюю яркость изоражения, а потом изменяешь контрастность по формуле Y := ChangeCoeff * (Y - AverageY) + AverageY
← →
VMcL © (2004-04-21 11:51) [3]>>[lamer]Barmaglot © (21.04.04 11:16) [1]
Не RTFM, а STFW :)
← →
zoltan (2004-04-21 17:09) [4]Я просто в панике что за люди пошли человек задал вопрос, а вы разводите флуд, формули!!!! Держи
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;
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c