КГ_1глава (1024098), страница 4
Текст из файла (страница 4)
Необходимо также отметить, что не всякие краски обеспечивают указанное выше вычитание цветов CMY. Подробнее об этом в [10].
В табл. 1.2 представлены некоторые цвета в моделях RGB и CMY.
Таблица 1.2
Цвет | Модель RGB | Модель CMY | ||||
R | G | B | С | M | Y | |
Красный | 1 | 0 | 0 | 0 | 1 | 1 |
Желтый | 1 | 1 | 0 | 0 | 0 | 1 |
Ярко-зеленый | 0 | 1 | 0 | 1 | 0 | 1 |
Голубой | 0 | 1 | 1 | 1 | 0 | 0 |
Синий | 0 | 0 | 1 | 1 | 1 | 0 |
Пурпурный | 1 | 0 | 1 | 0 | 1 | 0 |
Черный | 0 | 0 | 0 | 1 | 1 | 1 |
Белый | 1 | 1 | 1 | 0 | 0 | 0 |
Соотношение для перекодирования цвета из модели CMY в RGB:
И обратно — из модели RGB в CMY:
Здесь считается, что компоненты кодируются числами в диапазоне от 0 до 1. Для иного диапазона чисел можно записать соответствующие соотношения.
Другие цветовые модели
Для решения проблемы отрицательных коэффициентов, которая имеет место для модели RGB, в 1931 году Международной Комиссией по Освещению (CIE) была принятая колориметрическая система XYZ (рис. 1.30). В системе МКО XYZ в качестве основных цветов были приняты также три цвета, однако они являются условными, нереальными [1, 15].
Рассмотренные выше цветовые модели так или иначе используют смешивание некоторых основных цветов. Теперь рассмотрим цветовую модель, которую можно отнести к иному, альтернативному типу.
В модели HSV цвет описывается следующими параметрами — цветовой топ Н (hue), насыщенность S (saturation), яркость, светлота V (value). Значение Н измеряется в градусах от 0 до 360, поскольку здесь цвета радуги располагаются по кругу в таком порядке — красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый (известна поговорка "каждый охотник желает знать, где сидят фазаны"). Значения S и V находятся в диапазоне (0...1). Приведем примеры кодирования цветов для модели HSV (рис. 1.31). При S=0 (то есть на оси V) — серые тона. Значение V=0 соответствует черному цвету. Белый цвет кодируется как S=0, V=l. Цвета, расположенные по кругу напротив друг друга, то есть отличающиеся по Н на 180 градусов, являются дополнительными [28]. Задание цвета с помощью параметров HSV достаточно часто используется в графических системах, причем обычно показывается развертка конуса.
Существуют и другие цветовые модели, построенные аналогично HSV, например, модель HLS (Hue, Lighting, Saturation) также использует цветовой конус.
В [42] есть сведения о цветовой модели CIE L*a*b*, которая была принятая МКО.
Все вышеперечисленные цветовые модели описывают цвет тремя параметрами. Они описывают цвет в достаточно широком диапазоне. Теперь рассмотрим цветовую модель, в которой цвет задается одним числом, но уже для ограниченного диапазона цветов (оттенков).
На практике часто используются черно-белые (серые) полутоновые изображения. Серые цвета в модели RGB описываются одинаковыми значениями компонентов, то есть ri = gi = bi. Таким образом, для серых изображений нет необходимости использовать тройки чисел — достаточно и одного числа. Это позволяет упростить цветовую модель. Каждая градация определяется яркостью Y. Значение Y=0 соответствует черному цвету, максимальное значение Y — белому.
В качестве примера рассмотрим преобразование цветных изображений, представленных в системе RGB, в градации серого (подобно тому, как показываются цветные фильмы на черно-белом экране телевизора). Для этого можно воспользоваться соотношением
Y = 0.299 R + 0.587 G + 0.114 В,
где коэффициенты при R, G и В учитывают различную чувствительность зрения к соответствующим цветам и, кроме того, их сумма равна единице. Очевидно, что обратное преобразование R=Y, G=Y, B=Yw даст никаких других цветов, кроме градаций серого.
Еще один пример использования различных цветовых моделей. При записи цветных фотографий в графический файл формата JPEG выполняется преобразование из модели RGB в модель (Y, СЬ, Сг). Это используется для дальнейшего сжатия объемов информации растрового изображения. При чтении файлов JPEG выполняется обратное преобразование в RGB.
Разнообразие моделей обусловлено различными областями их использования. Каждая из цветовых моделей была разработана для эффективного выполнения отдельных операций: ввода изображений, визуализации на экране, печати на бумаге, обработки изображений, сохранения в файлах, колориметрических расчетов и измерений. Преобразование одной модели в другую может привести к искажению цветов изображения.
Кодирование цвета. Палитра
Для того чтобы компьютер имел возможность работать с цветными изображениями, необходимо представлять цвета в виде чисел — кодировать цвет. Способ кодирования зависит от цветовой модели и формата числовых данных в компьютере.
Для модели RGB каждая из компонент может представляться числами, ограниченными некоторым диапазоном— например, дробными числами от 0 до 1 либо целыми числами от 0 до некоторого максимального значения. В настоящее время достаточно распространенным является формат True Color, в котором каждая компонента представлена в виде байта, что дает 256 градаций для каждой компоненты: R=0...255, G = 0...255, В = 0...255. Количество цветов составляет 256x256x256 = 16.7 млн (224).
Такой способ кодирования цветов можно назвать компонентным. В компьютере коды изображений True Color представляются в виде троек байтов, либо упаковываются в длинное целое (четырехбайтное) — 32 бита (так, например, сделано в API Windows):
С = 00000000 bbbbbbbb gggggggg rrrrrrrr.
При работе с изображениями в системах компьютерной графики часто приходится искать компромисс между качеством изображения (требуется как можно больше цветов) и ресурсами, необходимыми для хранения и воспроизведения изображения, исчисляемыми, например, объемом памяти (надо! уменьшать количество бит на пиксел).
Кроме того, некоторое изображение само по себе может использовать ограниченное количество цветов. Например, для черчения может быть достаточно двух цветов, для человеческого лица важны оттенки розового, желтого, пурпурного, красного, зеленого; а для неба— оттенки голубого и серого. В этих случаях использование полноцветного кодирования цвета является избыточным.
При ограничении количества цветов используют палитру, представляющую набор цветов, важных для данного изображения. Палитру можно воспринимать как таблицу цветов. Палитра устанавливает взаимосвязь между кодом цвета и его компонентами в выбранной цветовой модели.
В качестве примера дадим стандартную палитру дисплейных 16-цветных видеорежимов EGA, VGA (табл. 1.3).
Таблица 1.3
Недостатком такой палитры можно считать отсутствие одного из важных цветов— оранжевого. Существуют также иные стандартные палитры, например, 256-цветная для VGA. Компьютерные видеосистемы обычно предоставляют возможность программисту установить собственную палитру.
Каждый цвет изображения, использующего палитру, кодируется индексом, который будет определять номер строки в таблице палитры. Поэтому такой способ кодирования цвета называют индексным.
Формат файлов для хранения растровых изображений
К настоящему времени известно много форматов файлов для растровых изображений. Здесь мы рассмотрим один из самых популярных форматов, который обязан своей распространенностью операционной системе Windows — формат BMP.
Общая структура BMP-файла такова:
Заголовок файла BMP называется BITMAPFILEHEADER. В нем помещается общее описание файла. Заголовок имеет следующие поля:
WORD bfТуре — хранит символы "ВМ". Это код формата.
DWORD bfSize — общий размер файла в байтах.
WORD bfReservedl — зарезервировано, пока что равно 0.