![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
RGB в GrayScale [D7, XP]
DFT © (2008-11-13 11:42:00)Здравствуйте!
Подскажите пожалуйста, никак не пойму.
У меня есть 8 битовое изображение в тонах серого (grayscale) , то есть каждый пиксель равен 1 байту (x = 0 .. 255).
Вопрос: в RGB представлении этот байт цвета будет представлен как RGB(x,x,x) или значение x может отличаться? Почемуто в моем случае оно отличается и я не пойму почему.
SergeyIT (2008-11-13 13:25:00) [1]Почитайте про палитру в GrayScale битмепе.
Anatoly Podgoretsky (2008-11-13 13:03:00) [2]> DFT (13.11.2008 12:32:04) [4]
Это не GrayScale
Anatoly Podgoretsky (2008-11-13 12:53:00) [3]Потому что GrayScale это индекс, а RGB это значения.
DFT (2008-11-13 12:32:00) [4]
> потому что серый - это не равное смешение разных цветов
Я совсем окончательно запутался. Но ведь функция получения оттенка серого цвета из RGB цвета ...
function GetGreyScale(red, blue, green: TColor): TColor;
var
Color: Integer;
begin
Color := Round(red * 0.56 + green * 0.33 + blue * 0.11);
Result := RGB(Color, Color, Color);
end;
... подразумевает что все составляющие одинаковы.
Очень прошу, развейте мою неграмотность
Правильный$Вася (2008-11-13 12:27:00) [5]
> получай значение отличное от 100
потому что серый - это не равное смешение разных цветов
DFT (2008-11-13 11:53:00) [6]
> Каком?
Имею 8 битовый растр в серых тонах.
Считываю с помощью ScanLine и получаю в n-ом пикселе значение байта к примеру 100.
Затем считываю тотже пиксел при помощи GetRValue(tempBMP.Canvas.Pixels[j,i]) и получай значение отличное от 100.
SergeyIT (2008-11-13 11:49:00) [7]
> в моем случае
Каком?