Кодировка изображений
Под изображением будем понимать прямоугольную область, закрашенную непрерывно изменяющимся цветом. Поэтому для представления изображений в целых числах необходимо отдельно дискретизировать прямоугольную область и цвет.
Для описания областиона разбивается на множество точечных элементов – пикселов [pixel]. Само множество называется растром [bit map, dot matrix, raster] а изображения, которые формируются на основе растра, называются растровыми.
Число пикселов называется разрешением [resolution]. Часто встречаются значения 640х480, 800х600, 1024х768, 1280х1024. Каждый пиксел нумеруется, начиная с нуля слева направо и сверху вниз.
Для представления цвета используются цветовые модели.
Цветовая модель [color model] это правило, по которому может быть вычислен цвет. Самая простая цветовая модель – битовая. В ней для описания цвета каждого пиксела (чёрного или белого) используется всего один бит. Для представления полноцветных изображений используются несколько более сложных моделей.
Известно, что любой цвет может быть представлен как сумма трёх основных цветов: красного, зелёного и синего. Если интенсивность каждого цвета представить числом, то любой цвет будет выражаться через набор из трёх чисел. Так определяется наиболее известная цветовая RGB-модель. На каждое число отводится один байт. Так можно представить 224 цвета, то есть примерно 16,7 млн. цветов. Белый цвет в этой модели представляется как (1,1,1), чёрный – (0,0,0), красный (1,0,0), синий (0,0,1). Жёлтый цвет является комбинацией красного и зелёного и потому представляется как (1,1,0).
Цветовая модель RGB [Red-Green-Blue] была стандартизирована в 1931 г. и впервые использована в цветном телевидении. Модель RGB является аддитивной моделью, то есть цвет получается в результате сложения базовых цветов. Существуют и другие цветовые модели, которые для ряда задач оказываются более предпочтительными, чем RGB-модель.
Например, для представления цвета в принтере используется субтрактивная CMY-модель [Cyan-Magenta-Yellow], цвет в которой получается в результате вычитания базовых цветов из белого цвета. Белому цвету в этой модели соответствует (0,0,0), чёрному - (1,1,1), голубому - (1,0,0), сиреневому - (0,1,0), жёлтому - (0,0,1).
В цветовой модели HSV [Hue-Saturation-Value] цвет представляется через цвет, насыщенность и значение, а в модели HLS [Hue-Lightness-Saturation] через оттенок, яркость и насыщенность. Современные графические редакторы, как правило, могут работать с несколькими цветовыми моделями.
Наиболее популярными являются графические форматы: BMP [Bit MaP], PCX, GIF [Graphics Interchange Format], TIFF [Tagged Image File Format], JPEG [Joint Photographic Experts Group], которые по существу различаются между собой используемыми методами сжатия. Форматы BMP и PCX используют RLE-алгоритм, форматы GIF и TIFF – LZW-алгоритм, JPEG использует одноимённый алгоритм сжатия.
Пример:Пусть имеется изображение вида
Будем считать, что белый цвет представляется нулём, а чёрный – единицей, тогда в однобитовой модели такое изображение представится в виде:
0000111110000000
0000100010000000
0000100010000000
0000111110000000
В шестнадцатеричном виде этот двоичный набор будет выглядеть так:
00 00 00 00 0F 80 08 80 08 80 0F 80 00 00 00 00
Всего для хранения такого изображения потребуется 16 байт.
Данное изображение легко преобразовать в RGB-модель. Достаточно заменить все нули тройками (1,1,1), а все единицы - тройками (0,0,0). Тогда получим следующее шестнадцатеричное представление изображения:
FF FF FF FF FF FF FF FF FF FF FF FF FF F0 00 1F FF FF
FF F1 FF 1F FF FF FF F1 FF 1F FF FF FF F0 00 1F FF FF
FF FF FF FF FF FF FF FF FF FF FF FF
Для хранения такого изображения потребуется 48 байт.