
Методы сокрытия в графических изображениях с палитрой цветов
Использование палитры (еще говорят – отображения цветов) в графических форматах связанно с попыткой уменьшить размер хранимой информации. Вообще говоря, палитра впервые была применена в графических адаптерах, для упрощения их устройства и обеспечения большего разрешения при меньшем объеме оперативной памяти графического адаптера. Вслед за этим появились форматы хранения растровых графических изображений, основанные на использовании палитры, некоторые из которых активно используются и в наши дни. Ярким примером такого формата может служить GIF, который получил широкое распространение в сети Интернет и является неотъемлемой частью дизайна современных веб-страниц и Интернет рекламы. Количество передаваемых по сети файлов в форматеGIFболее чем в два раза превышает количество передаваемых страниц и писем (на смену устаревающего формата был разработан форматPNG, также позволяющий использовать палитру цветов, однако, он еще не получил большого распространения).
Каждая точка обычного растрового графического изображения задает интенсивность цветовых составляющих в каком-либо фиксированном цветовом пространстве (RGB,CMY,CMYKи т.д.). Если же формат хранения изображений использует палитру, то точки изображения могут принимать лишь один цвет из имеющихся в палитре. Палитра цветов – это набор изnэлементов, каждый из которых задает (как и точка обычного изображения) интенсивность цветовых составляющих в каком-либо фиксированном цветовом пространстве (обычноRGB), при этом каждая точка изображения содержит лишь номер цвета из палитры, а не информацию о ее цвете в цветовом пространстве.
Приведем простейший пример изображения с палитрой. Будем рассматривать обычное 8 битное RGBизображение с размером 4 на 4 точки, состоящее из чередующихся в шахматном порядке точек зеленого и синего цвета. Его можно записать в виде матрицыc(R,G,B) элементами:
( 0,255, 0) ( 0, 0,255) ( 0,255, 0) ( 0, 0,255)
( 0, 0,255) ( 0,255, 0) ( 0, 0,255) ( 0,255, 0)
( 0,255, 0) ( 0, 0,255) ( 0,255, 0) ( 0, 0,255)
( 0, 0,255) ( 0,255, 0) ( 0, 0,255) ( 0,255, 0)
Для хранения такой матрицы необходимо 4*4*(3*8)=384 бита памяти. Введем палитру, состоящую из 2 цветов:
0 -> ( 0,255, 0)
1 -> ( 0, 0,255)
В этой палитре наше изображение примет вид:
0 1 0 1
1 0 1 0
0 1 0 1
1 0 1 0
А для его хранения в памяти необходимо 48 бит для хранения информации о используемой палитре и 16 бит для хранения самого изображения.