Здравствуйте, _hunter, Вы писали:
_>как имея палитру и код пиксела определить цвет пиксела? (или где об этом можно прочитать)
_>заранее спасибо за ответ.
Палитра — это таблица (массив) цветов, в котором код пиксела является индексом.
Так что:
Color = pPalleteColors[ pixelCode ];
AF>Палитра — это таблица (массив) цветов, в котором код пиксела является индексом. AF>Так что: AF> Color = pPalleteColors[ pixelCode ];
AF>С Уважением, Андрей
_>а как определить что рисунок — в оттенках серого?
Пробежать по палитре и убедиться, что R,G и B составляющие одинаковы для каэдого эл-та палитры (например, 0xC1C1C1)
Учти, что иногда первые и последние 10 цветов палитры не используют (системные цвета Windows)
AF>>Палитра — это таблица (массив) цветов, в котором код пиксела является индексом. AF>>Так что: AF>> Color = pPalleteColors[ pixelCode ];
AF>>С Уважением, Андрей
_>а как определить что рисунок — в оттенках серого?
_>Заранее спасибо за ответ.
Простой способ таков:
Убедиться в том, что все компоненты цвета, для каждой точки экрана, совпадают: R == G == B
Однако у этого способа есть недостатки. Например такой. Если изображение — это цветной скан чёрнобелой картинки, то почти наверняка компоненты цвета будут различны. Роэтому в данном случае используют другие подходы.
Например:
M = ( R + G + B ) / 3
Mmin = M * ( 1 — Eps )
Mmax = M * ( 1 + Eps )
Где Eps = [0,1] — коеффициент отклонения цвета.
Должно выполняться условие:
Mmin <= C <= Mmax, где С — компонента цвета (R, G, B)
При этом обычно Eps = 1/32 (из соображений режима HiColor) или более.
С Уважением, Андрей