Вычитание цветов и извлечение значений прозрачности

допустим, изображение было сделано полупрозрачным и добавлено на плоский цвет фона. Исходное изображение, цвет фона и результат(смесь) известны. Но, что добавило прозрачности (Альфа-значение) неизвестно и меняется вдоль изображения. Есть ли автоматизированный способ вычислить это добавленное значение прозрачности для каждого пикселя изображения? Можно ли скопировать эти значения и применить к другой картинке?

[ изображение + прозрачность(неизвестно и варьируется) ] +
FlatBackground = Смешать(непрозрачный)

= [ полупрозрачная картинка ] + FlatBackground = Mix (непрозрачная)

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

for pixel(0,0) added 127
for pixel(1,0) added 124
for pixel(0,1) added 124
for pixel(1,1) added 120

но, конечно, я не хочу печатать эти значения. Я просто хочу использовать его как маску(?).
Так что, я могу применить эти значения к другой картине, чтобы создать тот же эффект.

16
задан destor
18.01.2023 15:24 Количество просмотров материала 2521
Распечатать страницу

1 ответ

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

принимая 8-разрядные образцы цвета, которые варьируются от 0..255 и нормализация в диапазон 0..1.0, сделайте это для каждого пикселя изображения:

m = Mix/255
p = Picture/255
a = alpha = Transparency/255

m = (p * a) + (b * (1.0 - a))

решить для "a"

a = (m - b) / (p - b)

преобразовать обратно в исходный диапазон, например, 0..255:

Transparency = a * 255

к сожалению, это означает, что вы не можете извлечь Прозрачность (альфа) от всех точек. В частности, если Picture = = Background (p-b == 0), то прозрачность может быть любой в диапазоне 0..255 (a == что угодно от 0.0 до 1.0); если вы используете эту формулу в коде, вам нужно будет защитить от деления на ноль.

когда изображение-фон не равен нулю, то вы можете получить прозрачность, но это не очень точно, когда разница (p - b) мала.

0
отвечен Glenn Randers-Pehrson 2023-01-19 23:12

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх