Альфа -смешивание красного, синего и зеленого изображения, чтобы создать изображение, тонированное до какого -либо значения RGB?
-
19-09-2019 - |
Вопрос
По сути, у меня есть контекст, в котором я не могу программически окрасить изображение, хотя я могу изменить его альфа -значение. С некоторыми экспериментами я обнаружил, что я могу положить красную, синюю и зеленую версию изображения с определенными альфа -значениями, чтобы создать широкий спектр цветов. Тем не менее, мне интересно, можно ли достичь истинного представления RGB с помощью этого метода? Если так, какова формула для преобразования значения RGB в различные альфа -значения для красных, синих и зеленых слоев.
Решение
Основное «уравнение» комбинации альфа - это:
alpha * (R1,G1,B1) + (1-alpha) * (R2,G2,B2)
Когда у вас есть три слоя с альфа, вы на самом деле объединяете 4 слоя (4 -й - черный), так что последний цвет:
alpha1 * (R1,G1,B1) + (1-alpha1) * (
alpha2 * (R2,G2,B2) + (1-alpha2) * (
alpha3 * (R3,G3,B3) + (1-alpha2) * (0,0,0) ) )
При условии, что у вас есть одно и то же изображение на каждом слое, а слой1 - это красный канал (g1 = b1 = 0), а слой2 зеленый, а слой3 - синий, вы получаете:
(alpha1 * R, (1-alpha1)*alpha2 * G, (1-alpha1)*(1-alpha2)*alpha3 * B)
Для белого пикселя вы можете сделать любой возможный цвет. Для черного пикселя вы не можете ничего сделать, кроме черного. Для любого другого пикселя вы ограничены значениями R, G и B.
Скажем, вы хотели достичь (Rd, GD, BD) в пикселе, где текущий цвет составляет (r, g, b), тогда вам придется выбрать:
alpha1 = Rd/R
alpha2 = Gd/(G*(1-alpha1))
alpha3 = Bd/(B*(1-alpha1)*(1-alpha2))
Проблема в том, что Альфа обычно может составлять только от 0 до 1. Так, например, если rd> r, вы ничего не можете сделать.
Вы можете добиться большего успеха, если вы можете управлять функцией смешивания (например, в Photoshop).
Другие советы
Я не думаю, что это возможно, если я правильно вас понимаю.
Если для определенного пикселя красное значение вашего изображения, скажем, 0,5, вы можете объединить это с альфа в (типичном) диапазоне [0,1], чтобы сформировать любое значение до 0,5, но вы не можете Поднимитесь выше, чтобы получить, например, 0,6 или около того в качестве выходного значения.
Если вы хотите создать 3 слоя, которые смешали вместе, сложены с исходным изображением, это вполне возможно. Вот ссылка на сценарий Python, который вызывает функции в Paint Shop Pro, чтобы сделать твердые детали.
http://pixelnook.home.comcast.net/~pixelnook/splittorgb.htm
Если вам нужно больше деталей, чем это, оставьте комментарий, и я постараюсь заполнить его позже.