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

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

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

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

Описание [ править ]

Для хранения матовой информации концепция альфа-канала была введена Элви Рэем Смитом в конце 1970-х годов и полностью развита в статье 1984 года Томаса Портера и Тома Даффа . [1] В двухмерном изображении комбинация цветов сохраняется для каждого элемента изображения (пикселя). Дополнительные данные для каждого пикселя хранятся в альфа-канале со значением в диапазоне от 0 до 1. Значение 0 означает, что пиксель полностью прозрачен и не предоставляет никакой информации о покрытии; т.е. нет окклюзиив окне пикселя изображения, потому что геометрия не перекрывала этот пиксель. Значение 1 означает, что пиксель полностью непрозрачен, поскольку геометрия полностью перекрывает окно пикселя.

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

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

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

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

Над оператором, в сущности, нормальная работа картины (см алгоритм художника ). Брюс А. Уоллес вывел оператор over на основе физической модели коэффициента отражения / пропускания , в отличие от геометрического подхода Даффа. [2] Операторы in и out являются эквивалентом отсечения в альфа-композитинге . Оба используют только альфа-канал второго изображения и игнорируют компоненты цвета.

Прямое против предварительно умноженного [ править ]

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

При прямом альфа- канале компоненты RGB представляют цвет объекта или пикселя, не обращая внимания на его непрозрачность.

С предварительно умноженным альфа-каналом компоненты RGB представляют собой излучение объекта или пикселя, а альфа- канал представляет собой загорание. Тогда оператор over становится:

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

Предполагая, что цвет пикселя выражается с использованием прямых (без предварительного умножения) кортежей RGBA , значение пикселя (0, 0,7, 0, 0,5) подразумевает пиксель, который имеет 70% максимальной интенсивности зеленого и 50% непрозрачности. Если бы цвет был полностью зеленым, его RGBA был бы (0, 1, 0, 0,5).

Однако, если этот пиксель использует предварительно умноженную альфа, все значения RGB (0, 0,7, 0) умножаются или масштабируются для окклюзии на альфа-значение 0,5, которое добавляется к yield (0, 0,35, 0, 0,5). В этом случае значение 0,35 для канала G фактически указывает на 70% -ную интенсивность зеленого излучения (с 50% -ной окклюзией). Чистое зеленое излучение будет закодировано как (0, 0,5, 0, 0,5). Знание того, использует ли файл прямую или предварительно умноженную альфу, важно для правильной обработки или объединения, поскольку требуется другой расчет. Также вполне приемлемо иметь экспресс-излучение триплета RGBA без окклюзии, например (0,4, 0,3, 0,2, 0,0). Пожары и пламя, свечение, вспышки и другие подобные явления могут быть представлены только с использованием связанной / предварительно умноженной альфы.

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

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

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

Гамма-коррекция [ править ]

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

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

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

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

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

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

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

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

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

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

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

Аналитический вывод оператора over [ править ]

Третий подход основан на двух очень простых предположениях. Для простоты здесь мы будем использовать сокращенные обозначения для представления оператора over .

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

Второе предположение заключается в том, что оператор должен соблюдать ассоциативное правило:

Теперь предположим, что у и есть переменная прозрачность, тогда как он непрозрачен. Мы заинтересованы в поиске

Мы знаем из ассоциативного правила, что должно выполняться следующее:

Мы знаем, что он непрозрачен и, следовательно, непрозрачен, поэтому в приведенном выше уравнении каждый оператор может быть записан как выпуклая комбинация:

Следовательно, мы видим, что это представляет собой уравнение вида . Установив и получим

Это означает, что мы аналитически вывели формулу для выходного альфа-канала и выходного цвета .

Еще более компактное представление можно получить, заметив, что :

Оператор отвечает всем требованиям , предъявляемым к некоммутативном моноиде , где единичный элемент выбирается таким образом, что (т.е. единичный элемент может представлять собой любой кортеж , с ).

См. Также [ править ]

  • Альфа к покрытию
  • Бит блит
  • Режимы наложения
  • Цифровой композитинг
  • Маски изображений
  • Волшебный розовый
  • Переносимая сетевая графика
  • Цветовое пространство RGBA
  • Разбрызгивание текстуры
  • Прозрачность (графика)
  • Прозрачный цвет в палитрах
  • Truevision TGA

Ссылки [ править ]

  1. ^ Портер, Томас ; Дафф, Том (июль 1984). «Составление цифровых изображений» (PDF) . SIGGRAPH Компьютерная графика . Нью-Йорк, Нью-Йорк: ACM Press. 18 (3): 253–259. DOI : 10.1145 / 800031.808606 . ISBN 9780897911382. Архивировано 29 апреля 2011 года (PDF) . Проверено 11 марта 2019 .
  2. ^ Уоллес, Брюс А. (1981). «Слияние и преобразование растровых изображений для мультипликационной анимации» . SIGGRAPH Компьютерная графика . Нью-Йорк, Нью-Йорк: ACM Press. 15 (3): 253–262 . CiteSeerX 10.1.1.141.7875 . DOI : 10.1145 / 800224.806813 . ISBN  0-89791-045-1.
  3. ^ «Технический блог TomF - это только притворство вики» . tomforsyth1000.github.io . Архивировано 12 декабря 2017 года . Проверено 8 мая 2018 .
  4. ^ "АЛЬФА-КОМПОЗИЦИЯ - Анимациямет" . animationmet.com . Архивировано из оригинала на 2019-09-25 . Проверено 25 сентября 2019 .
  5. Minute Physics (20 марта 2015 г.). «Цвет компьютера нарушен» . YouTube .
  6. Новак, Джон (21 сентября 2016 г.). «Что должен знать каждый программист о гамме» .
  7. ^ «Гамма-коррекция против предварительно умноженных пикселей - Сорен Сандманн Педерсен» . ssp.impulsetrain.com .

Внешние ссылки [ править ]

  • Составление цифровых изображений - Томас Портер и Том Дафф (исходная статья)
  • Основы компоновки изображений
  • Разберитесь в расширениях Composing и Color в SVG 1.2 за 30 минут!
  • Альфа-матирование и предварительное умножение