Цвет бывает уже умножен на альфу
В предварительно умноженном представлении значения RGB содержат произведение исходного цвета на альфу. Для упрощённого примера возьмём один канал: исходное значение 0,8 и альфу 0,25. Сохранённый цвет равен 0,2. На полностью непрозрачном участке альфа равна единице, поэтому исходное и сохранённое значения совпадают. На краях они различаются. Если обрабатывать сохранённый цвет так, будто он ещё не умножен, результат некоторых преобразований будет отличаться от задуманного.
Порядок виден на простом вычислении
Пусть требуется прибавить к исходному цвету 0,1. Сначала возвращаем исходное значение: 0,2 делим на 0,25 и получаем 0,8. После коррекции выходит 0,9, а после повторного умножения на альфу — 0,225. Если просто прибавить 0,1 к уже умноженному значению, получится 0,3. Разница особенно заметна при малой альфе. Здесь рассматривается условная операция прибавления без дополнительных преобразований и ограничений диапазона; она не описывает все возможные режимы коррекции.
Проверьте состояние данных в цепочке
Узел Unpremult по умолчанию делит RGB на альфу, а Premult выполняет обратное умножение. Для коррекции предварительно умноженного изображения типичная цепочка включает разделение, изменение цвета и повторное умножение перед последующим совмещением. В Grade предусмотрена соответствующая настройка, объединяющая такой порядок внутри узла. Но её не включают автоматически для любого входа. Сначала выясняют, в каком представлении пришло изображение. Повторное умножение данных, которые уже подготовлены, тоже способно испортить полупрозрачные участки.
Не всякая кайма связана только с этим
Ошибки маски, цветное загрязнение края, несовпадение резкости и неверное управление цветом могут создавать похожие визуальные проблемы. Поэтому проверяйте по одному предположению, сохраняя исходную ветку для сравнения. Посмотрите отдельно альфу, затем цвет на нескольких фонах и кадры с движением. При нулевой альфе нельзя восстановить исходный цвет простым делением; числовое упражнение ниже использует только положительные значения. Понимание представления помогает искать причину, но не заменяет оценку всего изображения и его последовательности.
Попробуйте на практике
Сравните два порядка коррекции одного цветового канала при разной альфе.
- Возьмите исходный цвет 0,6 и три положительных значения альфы: 1; 0,5; 0,2.
- Для каждого случая умножьте цвет на альфу и запишите сохранённое значение.
- Рассчитайте правильный результат задуманной операции: к исходным 0,6 прибавьте 0,1, затем умножьте на соответствующую альфу.
- Для сравнения прибавьте 0,1 непосредственно к каждому сохранённому значению.
- Найдите разницу результатов и объясните, почему при альфе 1 она исчезает, а на полупрозрачном крае возникает.
Как проверить результат. Первый порядок даёт 0,7; 0,35; 0,14. Второй даёт 0,7; 0,4; 0,22. Вы связываете расхождение с порядком операций, а не объявляете его ошибкой самой альфы.
Частые вопросы
Любое изменение цвета требует такого разделения?
Нет. Поведение зависит от операции и представления данных. Например, простое умножение канала на постоянный коэффициент при неизменной альфе математически сочетается с предварительным умножением иначе, чем прибавление.
Можно ли исправить всё размытием маски?
Размытие меняет границу объекта и может скрыть детали. Сначала стоит проверить источник каймы; изменение маски без диагноза причины не гарантирует правильного совмещения.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.