Форум: "Media";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
ВнизАлгоритм уровней. Найти похожие ветки
← →
Maxim____ (2004-11-20 01:29) [0]Подскажите где найти, пишу в гоогл levels formula, levels rgb,
но ничего не находится. также впрочем и в рунете.
← →
MBo © (2004-11-20 09:06) [1]Гугл тебя не понял. Я тоже ;(
← →
Maxim____ (2004-11-21 01:39) [2]Алгоритм уровней, цвето(скорее свето)коррекция такая,
в фотошопе она есть.
← →
Maxim____ (2004-11-23 02:40) [3]смещение точки белого и точки чёрного
← →
Fenik (2004-11-23 17:42) [4]А подробнее не можешь написать?
← →
Maxim____ (2004-11-23 18:03) [5]могу только сказать что это растяжка гистограммы.
растяжка у меня более-менее получается, но хотелось бы плавнее,
мне нужен классический алгоритм.
подробнее ничего не знаю, поэтому и спрашиваю.
← →
Maxim____ (2004-11-23 22:13) [6]да, а "стяжка" т.е. сужение гистограммы у меня вообще не получается.
никто никогда не писал уровней?
← →
murtix (2004-11-24 00:46) [7]Меня тоже интересует этот вопрос по-моим наблюдениям :
при движении крайних ползунков например белого верхнего (Input Levels) происходит следующее : все точки (пикселы) цвет которых больше чем значение для данного ползунка приобретают белый цвет т.е.
if Color0 > ILW then Color0 := 255
else Color0 := K * Color0 + B;
ILW = Input Levels White
по-моему В = 0 всегда, а К > 1 и расчитывается из ILW
обычное линейное отображение
и т.д.
А работу среднего следует искать в так называемом Гамма
← →
Maxim____ (2004-11-26 16:17) [8]народ! научите пользоватьмя гуглом,
нашёл всё про гамму, и формула простая.
но с точками ничего не понятно.
← →
murtix (2004-11-26 20:16) [9]Может скинешь все в виде архива на мыло murtix@yandex.ru
разберемся
← →
programania © (2004-11-28 01:36) [10]>Maxim____
>мне нужен классический алгоритм
не надо никакого алгоритма, просто
вычитаем начало старого диапазона,
умножаем на отношение диапазонов
и прибавляем начало нового диапазона:
//в массиве br получили яркость: (p0[x1]*28+p0[x2]*151+p0[x3]*76) shr 8;
//находим минимальную и максимальную:
maxS:=0; minS:=$FFFF;
for y:=1 to h do for x:=1 to w do begin
z:=br[y,x];
if z<minS then minS:=z;
if z>maxS then maxS:=z;
end;
maxN:=200; minN:=50;//новый диапазон любой 0..255
p:=(maxN+1-minN) * 256 div (maxS-minS); //отношение диапазонов
for y:=1 to h do begin
p0:=bj.scanline[y-1];
x1:=0; x2:=1; x3:=2;
for x:=1 to w do begin
s:=br[y,x]; //старая яркость
n:=(s-minS)*p div 256 +minN; //новая
k:=n*256 div s; //коэфициент изменения
z:=p0[x1]*k div 256; if z>255 then z:=255; p0[x1]:=z;
z:=p0[x2]*k div 256; if z>255 then z:=255; p0[x2]:=z;
z:=p0[x3]*k div 256; if z>255 then z:=255; p0[x3]:=z;
inc(x1,3); inc(x2,3); inc(x3,3);
end
end;
← →
murtix (2004-12-05 00:45) [11]>programania
Это работа крайних ползунков, а со средним (гаммой) как быть.
>Maxim____
Не молчи плз. скажи до чего дошел
← →
programania © (2004-12-05 22:32) [12]>murtix
>Это работа крайних ползунков, а со средним (гаммой) как быть.
Гамму расчитать заранее в массив [0..255] of byte:
и использовать gamma[p0[x1]] вместо p0[x1]
function CalculateGamma(Gamma:Double;Value:Integer):Double;
begin
if Value>0 then result:=255* exp (Gamma * ln(Value/255))+0.5 else result:=0;
end;
PROCEDURE rGamm(var gamma:m255;z:integer);
var i: integer;
begin
//z=10..500
if z=0 then z:=100;
for i:=0 to 255 do gamma[i]:=trunc(CalculateGamma(100/z,i));
end;
У меня в photoPaint8 нет среднего ползунка,
но наверно это тоже самое, но только 2 диапазона.
А вообще я думаю лучше не дурить людям голову
уровнями и гистограммами а сделать кнопку auto-adjust
и растягивать диапазон яркости до предела 0..255
причем темную точку лучше не опускать больше чем
поднимать светлую иначе картинка заметно потемнеет.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c