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

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

терминология
Адаптивная цветовая палитра расширяется от 2 цветов до 256 цветов, демонстрируя, как изменяется изображение (нажмите, чтобы увидеть анимацию).
В зависимости от контекста, термин палитра и связанные с ней термины, такие как палитра «Интернет» и палитра RGB, могут иметь несколько иные значения. Ниже приведены некоторые из широко используемых значений для палитры в компьютерной графике:

Общее количество цветов, которые данная система может генерировать или управлять (хотя из-за ограничений видеопамяти она может не отображать их одновременно):
полная палитра: например, на дисплеях Highcolor имеется 16-битная палитра RGB.

Ограниченный выбор цветов, которые могут отображаться одновременно:
На весь экран:
фиксированный выбор палитры: данный адаптер дисплея может предлагать фиксированный выбор цвета, если его аппаратные регистры установлены надлежащим образом. Например, адаптер цветной графики (CGA) в одном из стандартных графических режимов может быть установлен так, чтобы отображать так называемую палитру # 1 или палитру # 2: две комбинации из трех фиксированных цветов и один определенный пользователем цвет фона каждый.
выбранные цвета или выбранные цвета. В этом случае выбор цвета, обычно из более широкой явно доступной полной палитры, всегда выбирается программным обеспечением, как пользователем, так и программой. Например, стандартный адаптер VGA-дисплея, как говорят, обеспечивает палитру из 256 одновременных цветов из 262144 разных цветов.
палитру по умолчанию или системную палитру: данные выбранные цвета официально стандартизованы каким-либо органом или корпорацией. Например, известные веб-безопасные цвета для использования с интернет-браузерами или палитра Microsoft Windows по умолчанию.

На индивидуальном изображении:
цветной или цветной таблицы: ограниченный выбор цвета сохраняется внутри данного файла с индексированным цветным изображением. Например, GIF.
палитру изображений или цвета изображения. Предполагается, что ограниченный выбор цвета является полным списком цветов, данных данным цифровым изображением, даже если файл изображения не использует кодирование с кодировкой цветного пикселя.
Основное оборудование, которое может использоваться для хранения этих одновременных цветов:
аппаратная палитра или таблица цветного просмотра (CLUT): чтобы показать их, значения выбранных цветов должны быть загружены в регистры аппаратного обеспечения цветности подсистемы отображения. Например, аппаратные регистры Commodore Amiga известны как их цветовая палитра, так и их CLUT, в зависимости от источников.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Программные палитры

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

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

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

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

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

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