stringtranslate.com

Альфа-композитинг

Альфа-канал этого изображения цветового спектра падает до нуля у основания, где он смешивается с цветом фона.

В компьютерной графике альфа - композитинг или альфа-смешивание — это процесс объединения одного изображения с фоном для создания видимости частичной или полной прозрачности . [1] Часто бывает полезно визуализировать элементы изображения (пиксели) отдельными проходами или слоями, а затем объединить полученные 2D-изображения в одно окончательное изображение, называемое составным . Композиция широко используется в кино при объединении элементов изображения, визуализированных на компьютере, с живыми кадрами . Альфа-смешение также используется в 2D-компьютерной графике для помещения растеризованных элементов переднего плана на фон.

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

Хотя самая основная операция объединения двух изображений — наложение одного на другое, существует множество операций или режимов наложения .

История

Понятие альфа-канала было введено Элви Рэем Смитом и Эдом Кэтмаллом в конце 1970-х годов в лаборатории компьютерной графики Нью-Йоркского технологического института . Брюс А. Уоллес вывел тот же прямой оператор на основе физической модели отражения / пропускания в 1981 году. [2] В статье 1984 года Томаса Портера и Тома Даффа была введена предварительно умноженная альфа с использованием геометрического подхода. [3]

Смит объясняет использование термина альфа следующим образом: «Мы назвали его так из-за классической формулы линейной интерполяции , которая использует греческую букву (альфа) для управления величиной интерполяции между, в данном случае, двумя изображениями A и B. ". [4] То есть при наложении изображения A поверх изображения B значение в формуле берется непосредственно из альфа-канала A.

Описание

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

Благодаря существованию альфа-канала можно выражать операции компоновки изображений с помощью алгебры композиции . Например, для двух изображений A и B наиболее распространенной операцией композиции является объединение изображений так, чтобы A появлялось на переднем плане, а B — на заднем. Это можно выразить как A над B. В дополнение к over Портер и Дафф [3] определили операторы композиции в , удерживаемые (эта фраза относится к матированию удержания и обычно сокращается out ), atop и xor (а также обратные операторы rover , rin , rout и ratop ) из рассмотрения вариантов смешивания цветов двух пикселей, когда их покрытие концептуально накладывается ортогонально:

Например, оператор over можно выполнить, применив к каждому пикселю следующую формулу: [2]

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

Оператор over , по сути, является обычной операцией рисования (см. алгоритм Painter ). Операторы in и out являются эквивалентом обрезки для альфа-композиции . Оба используют только альфа-канал второго изображения и игнорируют компоненты цвета. Кроме того, плюс определяет аддитивное смешивание. [3]

Прямой или предварительно умноженный

Если в изображении используется альфа-канал, доступны два распространенных представления: прямая (несвязанная) альфа и предварительно умноженная (связанная) альфа.

Сравнение

Наиболее значительным преимуществом предварительно умноженной альфа является то, что она позволяет правильно смешивать, интерполировать и фильтровать . [5] Обычная интерполяция без предварительного умножения альфа приводит к утечке информации RGB из полностью прозрачных (A=0) областей, хотя в идеале эта информация RGB невидима. При интерполяции или фильтрации изображений с резкими границами между прозрачными и непрозрачными областями могут возникнуть границы цветов, которые не были видны в исходном изображении. Ошибки также возникают в областях полупрозрачности, поскольку компоненты RGB неправильно взвешиваются, что придает неправильно высокий вес цвету более прозрачных (низких альфа) пикселей. [5] [6]

Предварительно умноженное альфа-изображение также может использоваться для кодирования областей обычного альфа-смешения (например, дыма) и областей с аддитивным режимом смешивания (например, эффектов пламени и блеска) в одном и том же изображении. [7] [8] Это представлено тройкой RGBA, которая выражает излучение без окклюзии, например (0,4, 0,3, 0,2, 0,0). [5]

Еще одним преимуществом предварительно умноженной альфа является производительность; в определенных ситуациях это может уменьшить количество операций умножения (например, если изображение используется много раз во время последующей композиции). [5] Операции Портера-Даффа имеют простую форму только в предварительно умноженной альфе. [3] Некоторые конвейеры рендеринга предоставляют поверхность API «прямой альфа-версии», но преобразуют ее в предварительно умноженную альфа-версию для повышения производительности. [9]

Одним из недостатков предварительно умноженного альфа является то, что он может снизить доступную относительную точность значений RGB при использовании целочисленного представления или представления с фиксированной точкой для цветовых компонентов. Это может привести к заметной потере качества, если цветовая информация впоследствии станет ярче или если альфа-канал будет удален. На практике это обычно не заметно, поскольку во время типичных операций композиции, таких как OVER, влияние цветной информации низкой точности в областях с низким значением альфа на конечное выходное изображение (после композиции) соответственно уменьшается. Эта потеря точности также упрощает сжатие предварительно умноженных изображений с использованием определенных схем сжатия, поскольку они не записывают изменения цвета, скрытые внутри прозрачных областей, и могут выделять меньше битов для кодирования областей с низким значением альфа. Те же «ограничения» более низкой битовой глубины квантования, такие как 8 бит на канал, также присутствуют в изображениях без альфы, и в результате этот аргумент проблематичен. [5]

Примеры

Предполагая, что цвет пикселя выражается с использованием прямых (без предварительного умножения) кортежей RGBA , значение пикселя (0, 0,7, 0, 0,5) подразумевает пиксель, который имеет 70 % от максимальной интенсивности зеленого и 50 % непрозрачности. Если бы цвет был полностью зеленым, его RGBA было бы (0, 1, 0, 0,5). [5] Однако, если этот пиксель использует предварительно умноженную альфу, все значения RGB (0, 0,7, 0) умножаются или масштабируются для перекрытия на значение альфа 0,5, которое добавляется к выходу (0, 0,35, 0, 0,5). В этом случае значение 0,35 для канала G фактически указывает на интенсивность зеленого излучения 70 % (с окклюзией 50 %). Чистое зеленое излучение будет кодироваться как (0, 0,5, 0, 0,5). Знание того, использует ли файл прямую или предварительно умноженную альфу, необходимо для его правильной обработки или компоновки, поскольку требуются другие вычисления. [5]

Эмиссия без окклюзии не может быть представлена ​​в виде прямой альфа-волны. В этом случае конвертация невозможна. [5]

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

Самыми популярными форматами изображений, поддерживающими альфа-канал, являются PNG и TIFF . GIF поддерживает альфа-каналы, но считается неэффективным с точки зрения размера файла. Поддержка альфа-каналов присутствует в некоторых видеокодеках, например Animation и Apple ProRes 4444 формата QuickTime, либо в мультиформатном кодеке Techsmith.

Формат файла BMP обычно не поддерживает этот канал; однако в различных форматах, таких как 32-битный (888-8) или 16-битный (444-4), альфа-канал можно сохранить, хотя не все системы или программы способны его прочитать: он используется в основном в некоторые видеоигры [10] или отдельные приложения; [11] Для создания этих БМП также созданы специальные программы.

Гамма-коррекция

Альфа-смешение без учета гамма-коррекции
Альфа-смешение с
учетом гамма-коррекции

Значения RGB типичных цифровых изображений не соответствуют напрямую физической интенсивности света, а скорее сжимаются функцией гамма-коррекции :

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

Соответственно, компьютерные программы, работающие с такими изображениями, должны декодировать значения RGB в линейное пространство (путем отмены гамма-сжатия), смешивать линейные интенсивности света и повторно применять гамма-сжатие к результату: [14] [15] [ не удалось пройти проверку ]

В сочетании с предварительно умноженным альфа предварительное умножение выполняется в линейном пространстве перед гамма-сжатием. [16] В результате получается следующая формула:

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

Другие методы прозрачности

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

Подобный эффект может быть достигнут с помощью 1-битного альфа-канала, как это происходит в 16-битном режиме высокого цвета RGBA формата файла изображения Truevision TGA и соответствующем графическом режиме TARGA и AT-Vista/NU-Vista видеоадаптеров. . В этом режиме для каждого основного цвета RGB ( 15-битный RGB ) выделяется 5 бит плюс оставшийся бит в качестве «альфа-канала».

Дизеринг можно использовать для имитации частичной окклюзии, когда доступна только 1-битная альфа.

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

Некоторые методы прозрачности, не зависящие от порядка, заменяют оператор over коммутативной аппроксимацией. [17]

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

Рекомендации

  1. ^ «Определение альфа-смешивания». ПКМАГ . Проверено 7 августа 2021 г.
  2. ^ аб Уоллес, Брюс А. (1981). «Слияние и преобразование растровых изображений для мультипликационной анимации» . Материалы 8-й ежегодной конференции по компьютерной графике и интерактивным технологиям - SIGGRAPH '81 . Том. 15. Нью-Йорк, Нью-Йорк: ACM Press. стр. 253–262. CiteSeerX 10.1.1.141.7875 . дои : 10.1145/800224.806813 . ISBN  0-89791-045-1. S2CID  1147910.
  3. ^ abcde Портер, Томас ; Дафф, Том (июль 1984 г.). «Композиция цифровых изображений» (PDF) . Материалы 11-й ежегодной конференции по компьютерной графике и интерактивным технологиям — SIGGRAPH '84 . Том. 18. Нью-Йорк, Нью-Йорк: ACM Press. стр. 253–259. дои : 10.1145/800031.808606. ISBN 9780897911382. S2CID  18663039. Архивировано (PDF) из оригинала 29 апреля 2011 г. Проверено 11 марта 2019 г.
  4. ^ Элви Рэй Смит (15 августа 1995 г.). «Альфа и история цифровой композиции» (PDF) . alvyray.com . п. 6. Архивировано из оригинала (PDF) 25 октября 2021 г.
  5. ^ abcdefgh «АЛЬФА-КОМПОЗИТИНГ – Анимация». сайт анимацииmet.com . Архивировано из оригинала 25 сентября 2019 г. Проверено 25 сентября 2019 г.
  6. ^ «Альфа-смешивание: предварительно или не предварительно» . Разработчик NVIDIA . 31 января 2013 г. Однако кое-что интересное происходит, когда мы генерируем следующий уровень MIP-карты...
  7. ^ "Технический блог TomF - это только притворяется вики" . Технический блог TomF — это всего лишь притворство вики . Архивировано из оригинала 12 декабря 2017 года . Проверено 8 мая 2018 г.
  8. ^ Требилько, Дамиан. «Закрыть призыв к розыгрышу (презентация по предварительно умноженной альфе)». Гитхаб . Переключившись в режим наложения с предварительным умножением для всех эффектов частиц, вся сцена может быть создана одним вызовом отрисовки (при условии, что для текстур используется атлас или 2D-массив)... Еще один хитрый трюк с предварительно умноженным альфа-каналом заключается в том, что если у вас есть перекрытие текстуры, находящиеся в известных позициях, вы можете предварительно обработать их все до одной текстуры.
  9. ^ "Предварительно умноженная альфа" . Win2D для WinUI3 . Проверено 30 июня 2023 г. Win2D использует прямую альфу в интерфейсе API, но предварительно умноженную альфу для внутренних операций рендеринга.
  10. ^ «Создание текстур». www.echos.ch . Проверено 25 мая 2023 г.
  11. ^ «Расширенные форматы». 04.03.2016. Архивировано из оригинала 4 марта 2016 г. Проверено 25 мая 2023 г.
  12. ^ Ламбрехт, Иордания (31 декабря 2022 г.). «Список форматов видео/изображений, поддерживающих альфа-каналы». Студия дизайна Pixel Bakery . Проверено 25 мая 2023 г.
  13. ^ «Формат видео AV1 | Могу ли я использовать… Таблицы поддержки HTML5, CSS3 и т. д.» caniuse.com . Проверено 25 мая 2023 г.
  14. ^ Минута физики (20 марта 2015 г.). «Цвет компьютера нарушен». YouTube . Архивировано из оригинала 22 ноября 2021 г.
  15. Новак, Джон (21 сентября 2016 г.). «Что каждый программист должен знать о гамме».
  16. ^ «Гамма-коррекция против предварительно умноженных пикселей - Сорен Сандманн Педерсен» . ssp.impulsetrain.com .
  17. ^ Макгуайр, Морган; Бавуаль, Луи (2013). «Взвешенная смешанная прозрачность, независимая от порядка». Журнал методов компьютерной графики . 2 (2): 122–141.

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