stringtranslate.com

Индексированный цвет

2-битное индексированное цветное изображение. Цвет каждого пикселя представлен числом; каждое число ( индекс ) соответствует цвету в таблице цветов (палитре ) .

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

Когда изображение кодируется таким образом, цветовая информация не передается напрямую пиксельными данными изображения, а хранится в отдельном фрагменте данных, называемом таблицей поиска цветов (CLUT) или палитрой : массивом цветовых спецификаций. Каждый элемент в массиве представляет цвет, индексированный по его положению в массиве. Каждый пиксель изображения не содержит полной спецификации своего цвета, а только его индекс в палитре . Этот метод иногда называют псевдоцветом [1] или косвенным цветом [2] , поскольку цвета адресуются косвенно.

История

Ранние графические системы отображения, которые использовали 8-битный индексированный цвет с кадровыми буферами и таблицами поиска цветов, включают SuperPaint Шупа (1973) и видеокадровый буфер, описанный в 1975 году Каджией, Сазерлендом и Чидлом. [3] [4] Они поддерживали палитру из 256 цветов RGB. SuperPaint использовал кадровый буфер со сдвиговым регистром , в то время как система Каджии и др. использовала кадровый буфер с произвольным доступом .

В некоторых более ранних системах использовался 3-битный цвет, но обычно биты рассматривались как независимые биты включения/выключения красного, зеленого и синего, а не как единый индекс в таблице CLUT.

Размер палитры

Палитра сама по себе хранит ограниченное количество различных цветов; наиболее распространенными являются 4, 16 или 256. Эти ограничения часто накладываются аппаратным обеспечением адаптера дисплея целевой архитектуры , поэтому не случайно эти числа являются точными степенями двойки ( двоичный код ): 2 2  = 4, 2 4  = 16 и 2 8  = 256. В то время как 256 значений можно уместить в один 8- битный байт (и тогда один индексированный цветной пиксель также занимает один байт), индексы пикселей с 16 (4 бита, полубайт ) или меньшим количеством цветов можно упаковать вместе в один байт (два полубайта на байт, если используются 16 цветов, или четыре 2-битных пикселя на байт, если используются 4 цвета). Иногда можно использовать 1-битные (2-цветные) значения, и тогда до восьми пикселей можно упаковать в один байт; Такие изображения считаются бинарными изображениями (иногда их называют растровыми или двухуровневыми изображениями ), а не индексированными цветными изображениями.

Если простое наложение видео предполагается через прозрачный цвет , одна запись палитры специально зарезервирована для этой цели, и она не учитывается как доступный цвет. Некоторые машины, такие как серия MSX , имели прозрачный цвет, зарезервированный аппаратно. [5]

Индексированные цветные изображения с размерами палитры более 256 записей встречаются редко. Практический предел составляет около 12 бит на пиксель, 4096 различных индексов. Использование индексированных 16 bpp или более не обеспечивает преимуществ природы индексированных цветных изображений, поскольку размер цветовой палитры в байтах больше, чем сами необработанные данные изображения. Кроме того, полезные прямые режимы RGB Highcolor могут использоваться от 15 bpp и выше.

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

Вот типичное индексированное 256-цветное изображение и его собственная палитра (представлена ​​в виде прямоугольника из образцов):

Цвета и палитры

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

Ранние методы работы с цветом

Многие ранние персональные и домашние компьютеры имели очень ограниченные аппаратные палитры , которые могли воспроизводить очень небольшой набор цветов. В этих случаях значение каждого пикселя напрямую отображалось на один из этих цветов. Известные примеры включают Apple II , Commodore 64 и IBM PC CGA , все из которых включали аппаратное обеспечение, которое могло воспроизводить фиксированный набор из 16 цветов. В этих случаях изображение может кодировать каждый пиксель 4 битами, напрямую выбирая цвет для использования. Однако в большинстве случаев аппаратное обеспечение дисплея поддерживает дополнительные режимы, в которых только подмножество этих цветов может использоваться в одном изображении, что является полезным приемом для экономии памяти. Например, режим разрешения CGA 320×200 мог отображать только четыре из 16 цветов одновременно. Поскольку палитры были полностью фирменными, изображение, созданное на одной платформе, не может быть напрямую просмотрено должным образом на другой.

Другие машины этой эпохи могли генерировать больший набор цветов, но обычно позволяли использовать в одном изображении только подмножество из них. Примерами служат палитра из 256 цветов на 8-битных машинах Atari или 4096 цветов терминала VT241 в графическом режиме ReGIS . В этих случаях изображение обычно позволяло отображать только небольшое подмножество от общего числа цветов одновременно, до 16 одновременно на Atari и VT241. В целом эти системы работали так же, как и их менее красочные собратья, но ключевым отличием было то, что в палитре было слишком много цветов для непосредственного кодирования в пиксельных данных, учитывая ограниченный объем видеопамяти . Вместо этого они использовали таблицу поиска цветов (CLUT), где данные каждого пикселя указывали на запись в CLUT, а CLUT настраивалась под управлением программы. Это означало, что данные CLUT изображения необходимо было хранить вместе с необработанными данными изображения, чтобы иметь возможность правильно воспроизвести изображение.

РГБ

Аппаратные палитры, основанные на компонентах видеоцветов , таких как YPbPr или подобных, были в целом заменены в середине 1980-х годов более гибкой цветовой моделью RGB , в которой заданный цвет может быть получен путем смешивания различных количеств трех основных цветов: красного, зеленого и синего. Хотя общее количество различных цветов зависит от количества уровней на основной цвет и от данной аппаратной реализации ( 9-битный RGB обеспечивает 512 комбинаций, 12-битный RGB обеспечивает 4096 и т. д.), в этой модели цифро-аналоговые преобразователи (ЦАП) могут генерировать цвета — упрощая аппаратную конструкцию — в то время как программное обеспечение может обрабатывать количество на используемые уровни абстрактно и управлять цветами RGB независимо от устройства. С цветами, сохраненными в формате RGB в палитрах индексированных файлов изображений, любое изображение может быть отображено (с помощью соответствующих преобразований) на любой такой системе, независимо от глубины цвета, используемой в аппаратной реализации.

Сегодня аппаратное обеспечение дисплея и форматы файлов изображений , которые работают с индексированными цветными изображениями, почти исключительно управляют цветами в формате RGB, причем фактически стандартной кодировкой является так называемый truecolor или 24-битный RGB с 16 777 216 различными возможными цветами . Однако индексированные цветные изображения на самом деле не ограничены 24-битной цветовой кодировкой RGB; палитры изображений могут содержать любой тип цветовой кодировки. Например, формат файла PDF поддерживает индексированный цвет в других цветовых пространствах, в частности CMYK , и Adobe Distiller по умолчанию преобразует изображения в индексированный цвет всякий раз, когда общее количество цветов в изображении равно или меньше 256. При использовании RGB форматы файлов TIFF и PNG могут опционально хранить триплеты RGB с точностью 16 бит (65 536 уровней на компонент), что дает в общей сложности 48 бит на пиксель. Предложенное расширение стандарта TIFF допускает [6] не-RGB цветовые палитры, но это никогда не было реализовано в программном обеспечении из-за технических причин. Таблица цветовой карты индексированного цветового режима формата файла BMP хранит свои записи в порядке BGR, а не RGB, и имеет (в текущей версии) дополнительный неиспользуемый байт для заполнения, чтобы соответствовать 32-битному выравниванию слов во время обработки, но по сути это все еще 24-битное кодирование цвета RGB. (Более ранняя версия формата BMP использовала три байта на 24-битную запись таблицы цветовой карты, и многие файлы в этом формате все еще находятся в обращении, поэтому многие современные программы, которые читают файлы BMP, поддерживают обе вариации.)

Расположение битов пикселей

За исключением графических режимов с очень низким разрешением, ранние домашние и персональные компьютеры редко реализовывали дизайн «всех пикселей-адресуемый» — то есть возможность изменять один пиксель на любой из доступных цветов независимо. Их ограничения были связаны с использованием отдельных атрибутов цвета или областей ОЗУ цвета , что приводило к эффектам столкновения атрибутов . Кроме того, биты пикселей и/или строки развертки видеопамяти обычно располагались странным образом, удобным для аппаратного обеспечения видеогенератора (таким образом, экономя затраты на оборудование на рынке с конкурентной стоимостью), но иногда создавая трудности для людей, пишущих графические программы. Биты пикселя в индексированных цветах, адресуемых по всем пикселям изображениях не всегда являются смежными в видеопамяти или файлах изображений (т. е. не всегда используется фрагментарная организация). Некоторое видеооборудование, такое как 16-цветные графические режимы Enhanced Graphics Adapter (EGA) и Video Graphics Array (VGA) для IBM PC-совместимых компьютеров [7] или видеобуфер Amiga [8] , организовано в виде ряда битовых плоскостей (в конфигурации, называемой планарной ), в которой связанные биты одного пикселя разделены между несколькими независимыми битовыми картами . Таким образом, биты пикселя концептуально выровнены вдоль трехмерной оси Z. (Понятие «глубины» здесь не то же самое, что и понятие глубины пикселя .)

Ранние форматы файлов изображений, такие как PIC , хранили не более чем голый дамп памяти видеобуфера данной машины.

Некоторые форматы файлов изображений с индексированными цветами, такие как Graphics Interchange Format (GIF), позволяют размещать строки сканирования изображения в чередующемся порядке (не в линейном порядке), что позволяет отображать на экране версию изображения с низким разрешением во время загрузки, чтобы пользователь компьютера мог получить представление о его содержимом за несколько секунд до загрузки всего изображения. Вот пример типичной загрузки с вертикальным чередованием в четыре этапа:

Как видно здесь, изображение разделено на четыре группы строк: группа A содержит каждую четвертую строку, группа B содержит строки, следующие сразу за строками в группе A, группа C также содержит строки, следующие сразу за строками в группе B, а группа D содержит оставшиеся строки, которые находятся между строками группы C (сразу выше) и строками группы A (сразу ниже). Они сохраняются в файле в порядке A, C, B, D, так что при передаче файла вторая полученная группа (C) строк лежит по центру между строками первой группы, что дает максимально пространственно однородное и узнаваемое изображение, состоящее только из двух групп строк. Тот же метод можно применять и к большему количеству групп (например, восьми), в этом случае на каждом шаге следующая отправляемая группа содержит строки, лежащие в центрах оставшихся полос, которые еще не заполнены данными изображения, или около них. Этот метод с четырьмя или восемью группами строк широко использовался в ранней Всемирной паутине во второй половине 1990-х годов. Вместо того, чтобы оставить фон (черный) видимым, как на иллюстрации выше, частичное изображение часто представлялось на экране путем дублирования каждой строки для заполнения пространства под ней вплоть до следующей полученной строки изображения. Конечным результатом было непрерывное изображение с уменьшенным вертикальным разрешением, которое увеличивалось до полного разрешения в течение нескольких секунд по мере поступления более поздних частей данных изображения.

Преимущества

Индексированный цвет экономит много памяти, места для хранения и времени передачи: при использовании truecolor каждому пикселю требуется 24 бита или 3 байта. Типичное несжатое изображение TrueColor с разрешением 640×480 VGA требует 640×480×3 = 921 600 байт (900 КиБ). Ограничивая цвета изображения до 256, каждому пикселю требуется всего 8 бит или 1 байт, поэтому для примера изображения теперь требуется всего 640×480×1 = 307 200 байт (300 КиБ) плюс 256×3 = 768 дополнительных байт для хранения карты палитры (предполагая RGB), что составляет примерно треть от исходного размера. Меньшие палитры (4 бита 16 цветов, 2 бита 4 цвета) могут упаковать пиксели еще больше (до одной шестой или одной двенадцатой), очевидно, за счет точности цвета.

Индексированный цвет широко использовался в ранних персональных компьютерах и аппаратном обеспечении видеоадаптеров для снижения затрат (в основном за счет уменьшения потребности в дорогостоящих на тот момент микросхемах ОЗУ ), а также для удобного управления изображениями с процессорами ограниченной мощности (порядка 4–8 МГц ), хранения файлов ( кассетные ленты и дискеты с низкой плотностью записи ). Известные компьютерные графические системы, широко (или даже исключительно) использовавшие псевдоцветовые палитры в 1980-х годах, включают CGA , EGA и VGA (для IBM PC-совместимых ), Atari ST и OCS и AGA от Amiga .

Файлы изображений, которыми обменивались через сеть CompuServe в начале 1990-х годов, были инкапсулированы в формате GIF . Позднее веб-страницы HTML использовали GIF вместе с другими индексированными форматами файлов с поддержкой цвета, такими как PNG , для быстрого обмена изображениями с ограниченным количеством цветов и их хранения в ограниченном пространстве для хранения.

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

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

Простое наложение видео можно легко осуществить с помощью техники прозрачного цвета .

Манипулируя цветовыми аппаратными регистрами ( таблица поиска цветов или CLUT) видеоадаптера в графических режимах индексированного цвета, можно добиться полноэкранных эффектов цветовой анимации без перерисовки изображения, то есть при низких затратах процессорного времени; одно изменение значений регистра влияет на весь экран сразу. Анимация цветовой карты, также известная как цветовой цикл , широко используется в демосцене . Экран логотипа загрузки Microsoft Windows в Windows 95, 98, ME и 2000 Professional (который использует режим отображения цветов VGA 320x200x256, поскольку это наибольший общий знаменатель на всех ПК) использует эту технику для прокручивающейся полосы градиента в нижней части экрана; изображение представляет собой статичное изображение без пикселей, перезаписанных после его первоначального отображения. Пользовательские изображения экрана загрузки могут использовать цикличные цвета для анимации других частей изображений.

Недостатки

Основным недостатком использования индексированного цвета является ограниченный набор одновременных цветов на изображение. Небольшие 4- или 16-цветные палитры все еще приемлемы для небольших изображений ( значков ) или очень простой графики, но для воспроизведения изображений реальной жизни они становятся практически бесполезными. Некоторые методы, такие как квантование цвета , сглаживание и дизеринг, объединенные вместе, могут создавать индексированные 256-цветные изображения, сопоставимые с оригиналом до приемлемого уровня.

Индексированные цветные изображения сильно зависят от собственных цветовых палитр. За исключением нескольких известных фиксированных цветовых палитр (например, Color Graphics Adapter — CGA), необработанные данные изображения и/или таблицы цветовой карты не могут быть надежно переданы между различными файлами изображений без какого-либо промежуточного сопоставления. Кроме того, если исходная цветовая палитра для данного индексированного изображения утеряна, ее может быть практически невозможно восстановить. Вот пример того, что происходит, когда индексированное цветное изображение (предыдущий попугай) связано с неправильной цветовой палитрой:

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

Следующее изображение представляет собой мозаику из четырех различных индексированных цветных изображений, визуализированных с помощью одной общей основной палитры 6-8-5 уровней RGB плюс 16 дополнительных оттенков серого. Обратите внимание на ограниченный диапазон цветов, используемых для каждого изображения, и на то, сколько записей палитры осталось неиспользованными.

Многие устройства отображения индексированных цветов не достигают 24-битного предела для полной палитры RGB. Например, VGA для совместимых с IBM PC устройств обеспечивает только 18-битную палитру RGB с 262 144 различными возможными цветами в обоих 16- и 256-индексированных цветных графических режимах.

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

Форматы файлов изображений, поддерживающие индексированный цвет

Это некоторые из наиболее представительных форматов файлов изображений, которые поддерживают индексированные цветовые режимы. Некоторые из них поддерживают другие режимы (например, truecolor), но здесь перечислены только индексированные цветовые режимы.

ПРИМЕЧАНИЕ: большинство форматов также поддерживают цветовую таблицу с меньшим количеством цветов, чем максимально возможное для данной битовой глубины.
* 64-цветный (правда, не EHB), 128- и 256-цветный режимы доступны только для чипсета AGA Amiga.
** Встроенная поддержка фирменных схем сжатия.
*** RLE с дополнительными фирменными дельта-скачками.

Примечания

  1. ^ Чарльз А. Пойнтон (2003). Цифровое видео и HDTV: алгоритмы и интерфейсы. Морган Кауфманн. ISBN 1-55860-792-7.
  2. Компьютерная графика, проф. Р. Экерт, лекция № 5, февраль 2001 г., Университет Бингемтона, Нью-Йорк
  3. ^ "Буфер видеокадров с произвольным доступом". Основополагающая графика: пионерские усилия, сформировавшие эту область. Том 1. Ассоциация вычислительной техники. Июль 1998 г. стр. 315–320. ISBN 9781581130522.
  4. ^ Джеймс Каджия; Иван Сазерленд; Эдвард Чидл (1975), «Буфер видеокадров с произвольным доступом», Конференция IEEE по компьютерной графике, распознаванию образов и структурам данных : 1–6
  5. ^ Онлайн-техническое описание видеочипа Texas Instruments TMS9918, используемого в MSX.
  6. ^ "Спецификация формата файла изображения TIFF" (PDF) . Архивировано из оригинала (PDF) 2006-10-17 . Получено 2006-10-16 .
  7. ^ Ричард Уилтон, Руководство программиста по ПК и PS/2 ВИДЕОСИСТЕМАМ, 1987, Microsoft Press. ISBN 1-55615-103-9 
  8. ^ Inc. Commodore-Amiga, Amiga Hardware Reference Manual, 1991, Addison-Wesley. ISBN 0-201-56776-8 

Смотрите также

Ссылки

Внешние ссылки