Как рассчитываются смешанные цвета в этом случае? - PullRequest
1 голос
/ 17 июня 2019

Это вопрос об ожидаемых результатах альфа-смешивания.

Вот настройка: Цвет фона - прозрачный черный (0, 0, 0, 0,18).Цвет рисунка - полупрозрачный зеленый (0, 1, 0, 0,5).

Это результат в графическом редакторе (GIMP):

colors

Результирующий цвет (0, 0,93, 0, 0,59).

Если мы смешаем эти цвета с формулой смешения цветов C1 * (1 - A2) + C2 * A2 и вычислим альфа A1 * (1 - A2) + A2, мы получим (0, 0,5, 0, 0.59).

Альфа верна, цвета нет.Цвет на выходе серовато-зеленый.Это становится очень заметно на белом фоне.

Что здесь не так?Используют ли редакторы разные формулы смешивания (чем они являются)?Я ошибаюсь в своих расчетах?

1 Ответ

1 голос
/ 18 июня 2019

Прежде всего, если я создаю изображение, подобное вашему, я получаю окончательный цвет (0, 0.863, 0, 0.59). Так что вы можете проверить свои данные.

Смешивание цветов немного сложно. Показанная вами формула (C1 * (1 - A2) + C2 * A2) - это формула смешивания цвета со сплошным фоновым цветом Но у нас нет сплошного фона. Мы хотим найти смешанный цвет (C, A), такой, чтобы этот цвет смешивался с любым сплошным фоновым цветом CB, что дает тот же результат, что и первое смешивание (C1, A1) с фоном, а затем (C2, A2) с результирующим цветом. Мы можем выразить это в следующем уравнении:

A * C + (1 - A) * CB = A2 * C2 + (1 - A2) * (A1 * C1 + (1 - A1) * CB)

После некоторой реорганизации:

A * C - A * CB = A2 * C2 + A1 * C1 - A2 * A1 * C1 + (A1 * A2 - A1 - A2) * CB

Из этого мы видим, что два фактора CB должны совпадать с двух сторон, то есть

- A = A1 * A2 - A1 - A2

И, следовательно,

A = A1 + A2 - A1 * A2

А цвет равняется

A * C = A2 * C2 + A1 * C1 - A2 * A1 * C1
    C = (A2 * C2 + A1 * C1 - A2 * A1 * C1) / A

В этом случае это оценивается как 0.847. Все еще существует небольшая разница с наблюдаемым значением 0.866, но я бы посчитал это ошибкой округления.

Также обратите внимание, что в GIMP есть два режима композитинга. Линейный режим RGB и режим восприятия. Режим восприятия, по-видимому, выполняет смешивание в гамма-скорректированном пространстве.

...