Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Цветовые пространства

Читайте также:
  1. II. Организация сценического пространства.
  2. III. Структура «минус»-пространства, его семантика, его трансформации
  3. Аддитивные и субтрактивные цветовые модели
  4. Внутреннее познание пространства
  5. Документ 4.2. Картография внутреннего пространства
  6. КАТЕГОРИЯ ПРОСТРАНСТВА.
  7. Магистр пространства и времени (МПВ) – команда 6 _____________

Чтобы передать цвет, нужно задать несколько значений (обычно три), определяющих интенсивность каждого и s основных цветов (цветовых каналов), которые смешивают для получения составных цветов. Составной цвет задается упорядоченным набором значений. Конкретный цвет представляет собой точку на графическом отображении всех возможных цветов. Поэтому иногда говорят, что цвет — это точка в цветовом пространстве.

Наиболее распространенным способом передачи цвета является модель RGB. В этой модели цвета красный, зеленый и синий считаются основными, т.е. несоставными. Цвет задается посредством RGB-триплета — (R, G, В) Цветовые триплеты иногда интерпретируются как проценты, хотя фактически это не так. Цвета модели RGB можно было бы охарактеризовать следующим образом:

(0%, 0%, 0%) Черный

(100%, 100%, 100%) Белый

(100%, 0%, 0%) Красный

(50%, 50%, 50%) Светло-серый

и т.д.

Каждый из этих RGB-триплетов позволяет определить точку в пространстве RGB.

При сохранении цветовых данных в файле более практично задавать цветовые компоненты не в процентах, а в виде числовых величин. Если для каждого цветового компонента отводится 1 байт (8 битов), то диапазон допустимых величин составляет 0—255. Поскольку обычно цвета определяются 24 битами (3 байтами), то вполне разумно присвоить каждому из трех байтов значение одного из компонентов цветовой модели. Например, в модели RGB для каждого цвета используются 3 байта, а цвета обычно сохраняются в виде RGB-триплетов с диапазоном от 0 до 255, причем, значение О соответствует нулевой интенсивности, а значение 255 — максимальной.

RGB = ([0-2551, [0-255]/ [0-255])

Следовательно, в предыдущем примере пиксельные значения должны иметь следующий вид:

(0, 0, 0) Черный

(255, 255, 255) Белый

(255, 0, 0) Красный

(127, 127, 127) Светло-серый

Иногда создатели формата или программы извращают "естественный" смысл определения цветов: RGB (О, О, О) у них становится белым, a RGB (255, 255, 255) - черным. К счастью, это случается редко. RGB и другие цветовые модели рассматриваются в разделе "Как представляются цвета".

Часто набор цветов, который задается пиксельными значениями, записанными в файле, отличается от того, который может быть отображен на конкретном устройстве вывода. Задача согласования наборов цветов обычно решается программой визуализации, которая осуществляет преобразования цветов, заданных в файле, в цвета устройства отображения. Если количество цветов, заданных пиксельными значениями в файле (источнике), значительно меньше количества цветов, которые может отображать устройство вывода (адресат), то проблем обычно не возникает. В этом случае программа визуализации выбирает для каждого цвета источника соответствующий цвет адресата. В противном случае могут возникнуть определенные трудности. Рассмотрим следующие примеры.

Данные с четырьмя битами на пиксель (соответствующие 16 цветам) отображаются на устройстве, способном поддерживать 24-битовые данные (соответствующие более чем 16 миллионам цветов). Устройство вывода способно отобразить намного больше цветов, чем нужно для визуализации изображения из файла. Таким образом, цвета растровых данных будут без труда воспроизведены на выводящем устройстве при условии, что цвета исходного растра и устройства-адресата равномерно распределены среди всех возможных цветов.

Бывает так, что устройство вывода способно отобразить меньшее количество цветов, чем определено в исходных данных. Примером может служить воспроизведение данных с восемью битами на пиксель (соответствующих 256 цветам) на устройстве, способном отображать 4-битовые данные (соответствующие 16 цветам). В этом случае цвета, определенные в растре, не могут быть представлены 4-битовым устройством. Следовательно, программа визуализации должна выполнить определенную работу, сопоставляя наборы цветов источника и адресата: количество цветов, имеющихся в исходных данных, должно быть приведено в соответствие с тем количеством, которое способно отобразить устройство-адресат.

Этот процесс, называемый квантованием, сопровождается потерей данных. Если исходное изображение содержит много цветов, то квантование может привести к появлению нежелательных эффектов — артефактов квантования. Примерами артефактов квантования являются муар и возникновение новых контуров и цветов в конечном изображении. Тем не менее, артефакты квантования находят применение: один из типов процесса квантования, называемый сверткой, иногда используется для удаления "шумов" с изображения, хотя и может изменить цветовой баланс результирующего изображения по сравнению с исходным.

Очевидно, что пиксельные значения записываются в файл с учетом цвета. Рассмотрим некоторые аспекты задания цвета пикселя.

Однобитовые данные могут принимать значения 0 или 1 и представляют двухцветные изображения. Следовательно, сопоставить пиксельные значения в файле можно только с двумя цветами экрана. Чаще всего действующие соглашения однозначно определяют, какое значение какому цвету соответствует, хотя в некоторых случаях это сделать достаточно сложно. Кроме того, в процессе работы это соглашение может быть изменено программой визуализации

Пиксельные данные, содержащие более одного бита на пиксель, обычно представляются набором индексов в палитре цветов, хотя в некоторых случаях применяется непосредственное представление цвета в соответствии со схемой определения цветов

Определение цвета с помощью палитры

Палитра, называемая также картой цветов, картой индексов, таблицей цветов или таблицей перекодировки, представляет собой одномерный массив цветовых величин. Одним из синонимов термина палитра является таблица перекодировки С помощью палитры цвета задаются косвенно, посредством указания их позиций в массиве При использовании этого метода данные могут быть записаны в файл в виде последовательности индексов (обычно небольших целых чисел), что позволяет значительно сократить объем пиксельных данных о растровых изображениях, для обработки которых применяется такой способ представления цветов, говорят, что в них использовалась косвенная, или псевдоцветная запись.

Например, 4-битовые пиксельные данные могут быть использованы для представления изображений, содержащих 16 цветов. Эти 16 цветов обычно определены в палитре, которая почти всегда включается в тот же самый файл. Каждое пиксельное значение рассматривается как индекс в этой палитре и содержит одно из чисел в диапазоне 0—15 Программа визуализации, читая из файла пиксельное значение, использует его как индекс палитры, что позволяет получить из этой палитры то значение цвета, которое и будет использовано для окрашивания пикселя на устройстве вывода

Палитра представляет собой массив цветовых величин, заданных с максимально возможной точностью. На практике каждый элемент палитры обычно занимает 24 бита, или 3 байта, хотя с учетом возможных будущих расширений и зависимости от аппаратного обеспечения элементы палитры иногда сохраняются в 32 битах, или 4 байтах Любопытно отметать, что цветовые модели, многие из которых существуют с начала компьютерной эры, часто базируются на трех первичных цветах, следовательно, использование трех байтов для хранения данных в них также возможно.

Из изложенного следует, что объем памяти в байтах, занимаемый палитрой, в три или четыре раза больше, чем максимальное количество определяемых ею цветов. К примеру, объем памяти, занимаемой палитрой, которая задает 4-битовый цвет, определяется следующим образом:

3 байта на цвет * 16 цветов = 48 байтов

или

4 байта на цвет * 16 цветов = 64 байта

— в зависимости от того, три или четыре байта используются для хранения каждого цвета.

 

Аналогично 8-битовые пиксельные данные могут быть использованы для представления изображений, состоящих из 256 цветов. Каждое пиксельное значение будет принадлежать диапазону 0—255, представляя собой индекс в 256-цветной палитре. Объем памяти, занимаемый такой палитрой, составит:

3 байта на цвет * 256 цветов = 768 байтов

или

4 байта на цвет * 256 цветов == 1024 байта

 

Предположим, что в цветовой модели, используемой вашим форматом изображения, значение (255, О, О) соответствует красному цвету. Определим примерную палитру в виде массива из 16 элементов.

(0, 0, 0)

(255, 255, 255)

(255, 0, 0)

(0, 255, 0)

(0, 0, 255)

(255, 255, 0)

(0, 255, 255)

(255, 0, 255)

(128, 0, 0)

(0, 128, 0)

(0, 0, 128)

(128, 128, 0)

(0, 128, 128)

(128, 0, 128)

(128, 128, 128)

(255, 128, 128)

Поскольку в этой палитре значение (255,0,0) имеет третий элемент, то для записи этого цвета мы можем использовать значение 2 (естественно, если отсчет индексов этого массива начинается с 0), предположив в соответствии с принятым соглашением, что это значение будет интерпретировано как индекс данного массива. Следовательно, всякий раз, для того чтобы задать красный цвет в пиксельных данных, мы можем сохранять значение 2. Аналогичным образом мы будем поступать и в отношении всех остальных цветов, из которых состоит данное изображение.

Цветовая информация может занимать большой объем памяти. В некоторых случаях применение палитр значительно повышает эффективность использования памяти при сохранении цветов; в других случаях более эффективно прямое сохранение цветов.

В больших и сложных форматах изображений косвенное сохранение цветов с использованием палитр экономит память за счет сокращения объема данных, записываемых в файл. Например, если вы применяете формат, сохраняющий трехбайтовую цветовую информацию для каждого пикселя (наиболее распространенный случай), и используете 256 цветов, то пиксельные значения растра размером 320х200 пикселей потребуют 192000 (320 * 200 * 3) байтов памяти. Если это же изображение сохранить с использованием палитры из 256 3-байтовых элементов, то для каждого пикселя в растре потребуется только один байт, содержащий значение индекса в диапазоне от 0 до 255. В результате освободятся два из трех байтов, требуемых для каждого пикселя, и соответственно необходимый объем памяти сократится до 64000 (320 * 200 * 1) байтов.

В действительности мы должны учитывать еще и объем памяти, требуемый для сохранения самой палитры — 768 (256 * 3) байтов. В результате для сохранения данных такого файла потребуется 64768 байтов, что приблизительно в три раза меньше, чем в случае прямого сохранения цветов. Однако следует обратить внимание на то, что если объем растровых данных в файле невелик, то включение палитры может привести к обратному результату — требуемый объем памяти возрастет, если объем, необходимый для включения палитры, превысит сэкономленный.

Косвенное задание цветов с использованием палитры имеет несколько очевидных преимуществ. Во-первых, если вам нужно знать реальное количество цветов, сохраненных в изображении (256-цветное изображение не всегда содержит 256 цветов), то достаточно прочесть палитру и определить, какие из ее элементов используются иди повторяют другие. В большинстве форматов неиспользуемые элементы обычно установлены в 0.

С помощью палитр чрезвычайно удобно изменять цвета изображений. Например, если вы хотите заменить при визуализации изображения все красные пиксели зелеными, то вам достаточно просто изменить в палитре значение, определяющее красный цвет, на значение, определяющее зеленый.

Тем не менее, что использование палитры оправдано не во всех случаях. Ведь для сохранения ее самой требуется дополнительный объем памяти. Например, для размещения палитры, определяющей 32768 цветов, потребуется как минимум 98304 байта памяти. Исходя из этого, изображение, содержащее более 256 цветов, обычно сохраняется в формате без использования палитры, где каждое пиксельное значение прямо задает один цвет.

Применение палитр значительно упрощает решение проблемы, связанной с ограниченным количеством цветов на некоторых устройствах отображения. Однако если устройство не нуждается в помощи такого рода. то использование формата, основанного на палитре, усложняет процесс вывода изображения. Действительно, если устройство отображения может обеспечить truecolor, то, очевидно, целесообразнее применять формат, поддерживающий точное задание цвета, даже если изображение состоит всего из нескольких цветов. Как правило, для хранения изображения, которое включает тысячи и миллионы цветов, лучше применять формат, поддерживающий точное задание цвета, поскольку при использовании формата, основанного на палитре, может случиться так, что размер памяти для ее хранения превысит размер данных растрового изображения.

Прежде чем продолжить обсуждение проблемы сохранения цветов в файле, мы хотим немного отклониться от темы и вкратце обсудить вопрос определения цветов. Разговор о палитрах мы закончим в разделе "... И назад к палитрам", приведенном далее в этой главе.

Термин truecolor используется при работе с изображениями, в которых применяется большое количество цветов. Что мы подразумеваем здесь под понятием "большое количество"? Принимая во внимание нынешние цены на жесткие диски, а также то, что некоторые пользователи уже имеют в своем распоряжении более 1 Гб дискового пространства, мы, тем не менее, считаем, что большинство людей рассматривает объем в 100-200 Кб как сравнительно большой. Если вспомнить, что для сохранения палитры из 256 цветов потребуется не более 1 Кб памяти, а для сохранения палитры из 32768 и более цветов — как минимум около 100 Кб, то станет очевидным, что количество цветов 256 не считается "большим", а вот 32768, 65536 и 16,7 миллионов для большинства пользователей уже "большое". При этом мы рассматривали только объем памяти, необходимый для сохранения самой палитры, — а ведь еще есть данные изображения!

Вместо того, чтобы включать в файл палитры такого большого объема, можно представить пиксельные значения в виде явно заданных цветовых величин. На практике эти значения состоят из трех частей, каждая из которых представляет основной цвет в используемой цветовой модели, например в RGB. Пиксельные значения изображений, использующих 32768 или 65536 цветов, обычно сохраняются в двух смежных байтах (или 16 битах) файла, поскольку практически все компьютеры обрабатывают байты как минимально адресуемую единицу памяти. Программа визуализации должна в этом случае читать такие 16-битовые пиксельные значения и раскладывать их на 5-битовые цветовые составляющие:

16 битов = 2 байта = (8 битов, 8 битов) = (1, 5, 5, 5) = (1, R, G, В)

 

Каждый 5-битовый компонент может принимать значения из диапазона 0—32. В случае 32768-цветного RGB-изображения используются только 15 битов, а один бит отбрасывается или применяется для других целей. Для 65536-цветньи RGB-изображений 16-битовые пиксельные значения раскладываются асимметрично, чтобы использовать и этот лишний бит. Ниже приведен один из вариантов такого разложения:

16 битов = 2 байта = (8 битов, 8 битов) = (6, 5, 5) = (R, G, В)

На практике обычно используется следующее разложение:

16 битов = 2 байта = (8 битов, 8 битов) = (5, 6, 5) = (R, G, В)

При таком разложении лишний бит используется для зеленой составляющей, поскольку человеческий глаз более чувствителен к зеленому цвету, чем к красному или синему. Порядок следования цветовых составляющих произвольный, а порядок и обработка цветовых составляющих в пиксельном значении разные в различных форматах. Из этого следует, что составляющие 16-битового пиксельного значения могут быть интерпретированы и как (G, В, R), и как (R, G, В), и как (В, R, G). Задание цветов RGB в последовательности (R, G, В) представляется более предпочтительным, поскольку в данном случае цвета упорядочены в соответствии со своими электромагнитными частотами, определяющими их место в физическом спектре.

24-битовые пиксельные значения сохраняются либо в 3 байтах

24 бита = 3 байта = (8 битов, 8 битов, 8 битов) = (R,G,B)

либо в 4 байтах

24 бита = 4 байта = (8 битов, б битов, 8 битов, 8 битов) = (R, G, В, неиспользуемый)

Равномерное распределение памяти для цветовых составляющих модели (один байт на каждую составляющую) является наиболее распространенным.

Типы палитр

Говоря о палитрах, необходимо учитывать их особенности.

Одноканальная палитра предусматривает только одну цветовую величину для каждого элемента, причем эта цветовая величина явно указывает цвет пикселя. Каждый элемент одноканальной палитры может быть представлен, например, в таком виде:

(G) = (223)

Многоканальная палитра предусматривает две и более отдельные цветовые величины для каждого цветового элемента. Например, каждый элемент трехканальной палитры, использующей красный, зеленый и синий цвета, может быть представлен следующим образом:

(R, G, В) = (255, 128, 78)

В данном случае величина R определяет значение для первого канала, величина G — для второго, а В — для третьего канала. Если изображение состоит из четырех цветовых составляющих, как в случае цветовой системы CMYK, то используется четырехканальная цветовая таблица, и т.д.

Пиксельно-ориентированные палитры хранят все данные о цветах пикселей в виде последовательности битов в каждом элементе массива. Как мы уже отмечали, в палитре RGB каждый элемент представляет собой триплет цветовых величин, что соответствует способу сохранения в файле пиксельных значений.

В плоскостно-ориентированной палитре цветовые составляющие пикселя разделены; величины, соответствующие определенному цветовому каналу, сохраняются вместе, и палитра в этом случае как бы состоит из трех одноканальных палитр — по одной для каждого цветового канала. Этим определяется и способ записи пиксельных значений в файле (в виде множества цветовых плоскостей):

(RRRRR...GGGGG...ВВВВВ) ИЛИ (ВВВВВ...GGGGG...RRRRR)

Следовательно, маленькая палитра может выглядеть так:

(R) (R) (R) (G) (G) (G) (В) (В) (В) ИЛИ (В) (В) (В) (G) (G) (G) (R) (R) (R)

Хотя подобная палитра больше напоминает одну палитру, состоящую из трех цветовых плоскостей, но лучше ее визуализировать в виде трех отдельных палитр, каждая из которых состоит из одной цветовой плоскости.

Из изложенного очевидно, что и одноканальные, и многоканальные палитры могут быть как пиксельно, так и плоскостно-ориентированными. Перечислим их возможные варианты:

 

· Одноканальная пиксельно-ориентированная палитра содержит одно пиксельное значение на элемент.

• Многоканальная пиксельно-ориентированная палитра также хранит по одному пикселю на элемент, но каждый пиксель содержит два или более цветовых канала данных.

• Одноканальная плоскостно-ориентированная палитра хранит один пиксель на индекс и один бит на плоскость

• Многоканальная плоскостно-ориентированная палитра содержит одно значение цветового канала на элемент.

Количество элементов палитры определяется по формуле 2n (где я — размер пиксельного значения в файле) и обычно соответствует максимальному количеству цветов заданного изображения. Например, 8-битовое пиксельное значение может представлять 256 (28) различных цветов и поддерживается 256-элементной палитрой. Если изображение состоит из меньшего, чем палитра, количества цветов, то все неиспользованные элементы палитры должны иметь нулевые значения. Некоторые форматы, особенно CGM и TGA, могут при необходимости изменять количество элементов палитры Если TGA-изображение состоит только из 57 цветов, то оно может быть представлено палитрой, состоящей из 57 элементов

Также интересно отметить, что используемые элементы палитры не всегда следуют один за другим, не всегда упорядочены и не всегда начинаются с первого индексного значения. Двухцветное изображение с 256-цветной палитрой (да, бывает и такое) может использовать цвета, обозначенные в палитре индексами 0 и 1, 0 и 255, 254 и 255 или даже 47 и 156 Местоположение применяемых элементов палитры задается программой, записывающей изображение в файл, и, следовательно, тем программистом, который создавал эту программу.

 

 


Дата добавления: 2015-11-14; просмотров: 51 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Пиксельная глубина и устройства отображения| Примеры палитр

mybiblioteka.su - 2015-2024 год. (0.02 сек.)