stringtranslate.com

Палитра (вычисления)

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

Описание

По состоянию на 2019 год наиболее распространенным цветовым пространством изображений в видеокартах является цветовая модель RGB с глубиной цвета 8 бит на пиксель . При использовании этой техники 8 бит на пиксель используются для описания уровня яркости в каждом из каналов RGB , поэтому 24 бита полностью описывают цвет каждого пикселя. Таким образом, полная системная палитра для такого оборудования имеет 2 24 цвета. Целью использования меньших палитр через CLUT является снижение количества бит на пиксель за счет сокращения набора возможных цветов, которые должны обрабатываться одновременно (часто с использованием адаптивных методов). Каждому возможному цвету назначается индекс, что позволяет ссылаться на каждый цвет, используя меньше информации, чем необходимо для полного описания цвета. Примером является 256-цветная палитра, обычно используемая в формате файла GIF , в которой 256 цветов, которые будут использоваться для представления изображения, выбираются из всего 24-битного цветового пространства, каждому из которых назначается 8-битный индекс. Таким образом, хотя система потенциально может воспроизводить любой цвет в цветовом пространстве RGB (при условии ограничения в 256 цветов), требования к объему памяти на пиксель снижаются с 24 до 8 бит на пиксель.

Основная палитра

Адаптивная цветовая палитра, расширяющаяся с 2 до 256 цветов, демонстрирующая, как меняется изображение (кликните, чтобы увидеть анимацию)

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

Это делается путем выбора цветов таким образом, что основная палитра включает в себя полное цветовое пространство RGB «в миниатюре», ограничивая возможные уровни, которые могут иметь красный, зеленый и синий компоненты. Такой тип расположения иногда называют однородной палитрой . [1] Нормальный человеческий глаз имеет чувствительность к трем основным цветам в разной степени: чем больше к зеленому, тем меньше к синему. Поэтому расположения RGB могут воспользоваться этим, назначая больше уровней для зеленого компонента и меньше для синего.

Основная палитра, созданная таким образом, может быть заполнена до 8R×8G×4B = 256 цветами , но это не оставляет места в палитре для зарезервированных цветов, индексов цветов, которые программа могла бы использовать для специальных целей. Более общим является использование только 6R×6G×6B = 216 (как в случае с цветами Web ), 6R×8G×5B = 240 или 6R×7G×6B = 252 , что оставляет место для некоторых зарезервированных цветов.

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

Адаптивная палитра

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

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

Прозрачность в палитрах

Отдельная запись палитры в индексированном цветовом изображении может быть обозначена как прозрачный цвет, чтобы выполнить простое наложение видео : наложение заданного изображения на фон таким образом, что некоторая часть наложенного изображения закрывает фон, а остальная часть — нет. Наложение титров и титров фильмов/телевидения — типичное применение наложения видео.

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

Эта техника используется для указателей, в типичных 2D видеоиграх для персонажей, пуль и т. д. (спрайтов ) , для создания титров видео и других приложений для микширования изображений.

Некоторые ранние компьютеры, такие как Commodore 64 , MSX и Amiga , поддерживают спрайты и/или полноэкранное видеоналожение аппаратно. В этих случаях номер записи прозрачной палитры определяется аппаратно и раньше был равен 0.

Некоторые индексированные цветные форматы файлов изображений, такие как GIF , изначально поддерживают обозначение заданной записи палитры как прозрачной , свободно выбираемой среди любых записей палитры, используемых для данного изображения.
Формат файла BMP резервирует место для значений альфа-канала в своей таблице цветов [2] , однако в настоящее время это пространство не используется для хранения каких-либо данных о полупрозрачности и установлено равным нулю. Напротив, PNG поддерживает альфа-каналы в записях палитры, обеспечивая полупрозрачность в палитровых изображениях.

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

Программы для двухмерной графики , такие как Microsoft Paint и Deluxe Paint , могут использовать заданный пользователем цвет фона в качестве прозрачного цвета при выполнении операций вырезания, копирования и вставки .

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

Палитры программного обеспечения

Майкрософт Виндоус

Приложения Microsoft Windows управляют палитрой 4-битных или 8-битных индексированных цветных устройств отображения через специализированные функции Win32 API . Применимость палитр в режимах отображения Highcolor и Truecolor становится под вопросом. Эти API имеют дело с так называемой «системной палитрой» и со многими «логическими палитрами».

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

Когда данное приложение намеревается вывести цветную графику и/или изображения, оно может установить свою собственную «логическую палитру», то есть свой собственный выбор цветов (до 256). Предполагается, что каждый графический элемент, который приложение пытается отобразить на экране, использует цвета своей логической палитры. Каждая программа может свободно управлять одной или несколькими логическими палитрами без дальнейшего ожидаемого вмешательства (заранее).

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

Конечный результат зависит от того, сколько приложений одновременно пытаются отобразить свои цвета на экране. Окно переднего плана всегда находится в приоритете, поэтому фоновые окна могут вести себя по-разному: от повреждения до быстрой перерисовки. Когда системная палитра изменяется, система запускает определенное событие , чтобы информировать каждое приложение. При получении окно может быстро перерисовать себя с помощью одной функции Win32 API. Но это должно быть сделано явно в программном коде; отсюда тот факт, что многие программы не справляются с этим событием, и их окна в этой ситуации становятся поврежденными.

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

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

Примечания

  1. ^ Руководство пользователя Image Alchemy от Handmade Software.
  2. ^ MSDN. «Запись таблицы цветов RGBQUAD»

Ссылки