Цифровое наложение — это процесс цифровой сборки нескольких изображений для создания конечного изображения, обычно для печати, кинофильмов или показа на экране. Это цифровой аналог оптического наложения пленки . Это часть обработки VFX .
Основная операция, используемая в цифровом композитинге, известна как альфа-смешивание , где значение непрозрачности «α» используется для управления пропорциями двух входных пиксельных значений, которые в итоге дают один выходной пиксель.
В качестве простого примера предположим, что доступны два изображения одинакового размера, и их нужно скомпоновать. Входные изображения называются изображением переднего плана и фоновым изображением. Каждое изображение состоит из одинакового количества пикселей. Компоновка выполняется путем математического объединения информации из соответствующих пикселей двух входных изображений и записи результата в третье изображение, которое называется скомпонованным изображением.
Рассмотрим три пикселя;
и
Тогда, учитывая все три цветовых канала и предполагая, что цветовые каналы выражены в цветовом пространстве γ=1 (то есть измеренные значения пропорциональны интенсивности света), мы имеем:
Обратите внимание, что если операции выполняются в цветовом пространстве, где γ не равно 1, то операция приведет к нелинейным эффектам, которые потенциально могут рассматриваться как артефакты наложения (или « ступенчатые » эффекты) вдоль острых краев в подложке. В более общем смысле нелинейный композитинг может иметь такие эффекты, как «ореолы» вокруг композитных объектов, поскольку влияние альфа-канала нелинейно. Художник-композитор может компенсировать эффекты композитинга в нелинейном пространстве.
Выполнение альфа-смешивания — дорогостоящая операция, если она выполняется на всем изображении или 3D-сцене. Если эта операция должна быть выполнена в видеоиграх в реальном времени, есть простой трюк для повышения производительности.
Просто переписав математическое выражение, можно сэкономить 50% требуемых умножений.
Когда необходимо объединить много частично прозрачных слоев, стоит рассмотреть алгебраические свойства используемых операторов компоновки. В частности, ассоциативность и коммутативность определяют, когда можно или нельзя избежать повторных вычислений.
Рассмотрим случай, когда нам нужно смешать четыре слоя для получения конечного изображения: F=A*(B*(C*D)), где A, B, C, D — частично прозрачные слои изображения, а «*» обозначает оператор композиции (с левым слоем поверх правого). Если изменяется только слой C, нам следует найти способ избежать повторного смешивания всех слоев при вычислении F. Без каких-либо особых соображений потребуется выполнить четыре полных смешивания изображений. Для коммутативных операторов композиции , таких как аддитивное смешивание , можно безопасно переупорядочить операции смешивания. В этом случае мы можем вычислить T=A*(B*D) только один раз и просто смешать T*C для получения F, одной операции. К сожалению, большинство операторов не являются коммутативными. Однако многие из них ассоциативны , что предполагает, что можно безопасно перегруппировать операции до F=(A*B)*(C*D), т. е. не меняя их порядка. В этом случае мы можем вычислить S:=A*B один раз и сохранить этот результат. Чтобы сформировать F с помощью ассоциативного оператора, нам нужно выполнить только две дополнительные операции композитинга для интеграции нового слоя S, вычислив F:=S*(C*D). Это выражение указывает на композитинг C со всеми слоями под ним за один шаг, а затем смешивание всех слоев над ним с предыдущим результатом для получения окончательного изображения на втором шаге.
Если все слои изображения регулярно изменяются, но многие слои все еще должны быть составлены (например, при распределенном рендеринге ), коммутативность оператора составления все еще может быть использована для ускорения вычислений за счет параллелизма , даже если нет никакого выигрыша от предварительного вычисления. Опять же, рассмотрим изображение F=A*(B*(C*D)). Каждая операция составления в этом выражении зависит от следующей, что приводит к последовательному вычислению. Однако ассоциативность может позволить нам переписать F=(A*B)*(C*D), где явно есть две операции, которые не зависят друг от друга, которые могут быть выполнены параллельно. В общем случае мы можем построить дерево парных операций составления с высотой, логарифмической по количеству слоев.
Наиболее исторически значимой нелинейной системой композитинга была Cineon , которая работала в логарифмическом цветовом пространстве, которое более точно имитирует естественный световой отклик пленочных эмульсий (система Cineon, созданная Kodak , больше не выпускается). Из-за ограничений скорости обработки и памяти художники-композитчики обычно не могли позволить себе роскошь иметь систему, делающую промежуточные преобразования в линейное пространство для этапов композитинга. Со временем ограничения стали гораздо менее существенными, и теперь большая часть композитинга выполняется в линейном цветовом пространстве, даже в случаях, когда исходное изображение находится в логарифмическом цветовом пространстве.
Композитинг часто также включает масштабирование , ретушь и цветокоррекцию изображений.
Существуют два принципиально разных процесса цифровой композиции: композиция на основе узлов и композиция на основе слоев.
Композитинг на основе узлов представляет собой целую композицию в виде направленного ациклического графа , связывая медиа-объекты и эффекты в процедурной карте, интуитивно выкладывая прогресс от исходного ввода до конечного вывода, и фактически является способом, которым все приложения для композитинга внутренне обрабатывают композиции. Этот тип интерфейса композитинга обеспечивает большую гибкость, включая возможность изменять параметры более раннего шага обработки изображения «в контексте» (при просмотре конечного композита ). Пакеты композитинга на основе узлов часто плохо обрабатывают ключевые кадры и временные эффекты, поскольку их рабочий процесс не вытекает напрямую из временной шкалы, как это делают пакеты композитинга на основе слоев. Программное обеспечение, которое включает интерфейс на основе узлов, включает Natron , Shake , Blender , Blackmagic Fusion и Nuke . Узлы — отличный способ организовать эффекты в сложном кадре, сохраняя при этом контроль над мелкими деталями.
Композитинг на основе слоев представляет каждый медиа-объект в композите как отдельный слой на временной шкале, каждый со своими временными границами, эффектами и ключевыми кадрами. Все слои накладываются друг на друга в любом желаемом порядке; и нижний слой обычно визуализируется как основа в результирующем изображении, причем каждый более высокий слой постепенно визуализируется поверх ранее составленных слоев, двигаясь вверх, пока все слои не будут визуализированы в окончательном композите. Композитинг на основе слоев очень хорошо подходит для быстрых 2D и ограниченных 3D эффектов, таких как в динамической графике, но становится неудобным для более сложных композитов, подразумевающих множество слоев. Частичным решением этой проблемы является способность некоторых программ просматривать составной порядок элементов (таких как изображения, эффекты или другие атрибуты) с помощью визуальной диаграммы, называемой блок-схемой, для вложения композиций, или «композиций», непосредственно в другие композиции, тем самым усложняя порядок рендеринга, сначала компонуя слои в начальной композиции, затем объединяя полученное изображение со слоями изображений из последующей композиции и т. д.