Цветовая модель RGBA

Цветовая модель RGB с каналом непрозрачности

Пример изображения RGBA, наложенного на фон с шахматной доской. Альфа-канал равен 0% вверху и 100% внизу.

RGBA означает красный зеленый синий альфа . Хотя его иногда описывают как цветовое пространство , на самом деле это трехканальная цветовая модель RGB, дополненная четвертым альфа-каналом . Альфа указывает, насколько непрозрачен каждый пиксель, и позволяет объединять изображение поверх других с помощью альфа-композиции , с прозрачными областями и сглаживанием краев непрозрачных областей. Каждый пиксель представляет собой 4D-вектор .

Термин не определяет, какое цветовое пространство RGB используется. Он также не указывает, умножаются ли цвета предварительно на альфа-значение, и если да, то не указывает, в каком цветовом пространстве было сделано предварительное умножение. Это означает, что для определения того, как обрабатывать изображение, требуется больше информации, чем просто «RGBA».

В некоторых контекстах аббревиатура «RGBA» означает определенную схему памяти (называемую ниже RGBA8888), а другие термины, такие как «BGRA», используются для альтернатив. В других контекстах «RGBA» означает любую схему.

Представление

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

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

  • В схеме порядка байтов «RGBA» понимается как байт R, за которым следует байт G, за которым следует байт B и за которым следует байт A. Эта схема обычно используется для описания форматов файлов или сетевых протоколов, которые оба являются байт-ориентированными.
  • В схеме порядка слов «RGBA» понимается как полное 32-битное слово, где R имеет большее значение, чем G, который имеет большее значение, чем B, который имеет большее значение, чем A.

В системе big-endian эти две схемы эквивалентны. Это не относится к системе little-endian , где две мнемоники являются обратными друг другу. Поэтому, чтобы быть однозначным, важно указать, какой порядок используется при ссылке на кодировку. В этой статье будет использоваться схема, которая имеет некоторую популярность, которая заключается в добавлении суффикса "8888", чтобы указать, обсуждаются ли 4 8-битных блока или "32", если обсуждается один 32-битный блок.

Конвертер представления RGBA
Прямой порядок байтовBig-endian
RGBA8888ABGR32RGBA32
ARGB32BGRA8888ARGB8888
RGBA32ABGR8888RGBA8888

RGBA8888

В OpenGL и Portable Network Graphics (PNG) используется порядок байтов RGBA, где цвета хранятся в памяти таким образом, что R находится по самому низкому адресу, G следует за ним, B следует за ним и A — последним. В архитектуре с прямым порядком байтов это эквивалентно ABGR32. [1]

Во многих системах, когда на канал приходится более 8 бит (например, 16 бит или с плавающей точкой), каналы хранятся в порядке RGBA, даже если 8-битные каналы хранятся в каком-то другом порядке.

ARGB32

Каналы организованы в памяти таким образом, что одно 32-битное целое число без знака имеет альфа-выборку в старших 8 битах, за ней следует красная выборка, зеленая выборка и, наконец, синяя выборка в младших 8 битах:

Пример макета в типичном 32-битном пикселе
Пример макета в типичном 32-битном пикселе

Значения ARGB обычно выражаются с помощью 8 шестнадцатеричных цифр, причем каждая пара шестнадцатеричных цифр представляет значения каналов Alpha, Red, Green и Blue соответственно. Например, 80FFFF00представляет 50,2% непрозрачного (не предварительно умноженного) желтого цвета. 80Шестнадцатеричное значение, которое равно 128 в десятичном виде, представляет 50,2% альфа-значение, поскольку 128 составляет приблизительно 50,2% от максимального значения 255 (FF hex); чтобы продолжить расшифровку значения 80FFFF00, первое FFпредставляет максимальное значение, которое может иметь красный цвет; второе FFпохоже на предыдущее, но для зеленого цвета; последнее 00представляет минимальное значение, которое может иметь синий цвет (фактически – никакого синего цвета). Следовательно, красный + зеленый дает желтый цвет. В случаях, когда альфа не используется, это можно сократить до 6 цифр RRGGBB, поэтому было решено поместить альфа в верхние биты. В зависимости от контекста перед шестнадцатеричными цифрами ставится a 0xили знак числа (#) [2] .

Эта раскладка стала популярной, когда на персональных компьютерах появился 24-битный цвет (и 32-битный RGBA). В то время программам было гораздо быстрее и проще манипулировать одним 32-битным блоком, чем четырьмя 8-битными блоками.

В системах с прямым порядком байтов это эквивалентно порядку байтов BGRA. В системах с обратным порядком байтов это эквивалентно порядку байтов ARGB.

RGBA32

В некотором программном обеспечении, созданном на машинах с обратным порядком байтов, таких как Silicon Graphics , цвета хранились в 32 битах, подобно ARGB32, но с альфа в нижних 8 битах, а не в верхних. Например, 808000FFбудет Red and Green:50.2%, Blue:0% и Alpha:100%, a brown. Это то, что вы получите, если данные RGBA8888 будут прочитаны как слова на этих машинах. Он используется в Portable Arbitrary Map и в FLTK , но в целом встречается редко.

Макет пикселей RGBA

Байты хранятся в памяти на машине с прямым порядком байтов в порядке ABGR.

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

Ссылки

  1. ^ "Спецификация Portable Network Graphics (PNG) (Второе издание)". www.w3.org . Получено 25 ноября 2021 г. .
  2. ^ Справочник по цветовой структуре Microsoft MSDN XAML (XAML/WPF/Silverlight), включая #aarrggbbиsc# scA,scR,scG,scB
  • Альфа-прозрачность по спецификации W3C PNG
  • Цвета RGBA – Страница предварительного просмотра с информацией о реализации на CSS3.info
Retrieved from "https://en.wikipedia.org/w/index.php?title=RGBA_color_model&oldid=1236244832"