Я играю с некоторой обработкой изображений (walk-the-pix), и я воссоздаю стандартную смесь «overlay». Я смотрю на «Photoshop математике» макросах здесь:Как обрабатывать альфа в ручном режиме наложения «Overlay»?
http://www.nathanm.com/photoshop-blending-math/ (See also here более читаемую версию Overlay)
Оба исходных изображений находятся в довольно стандартной RGBA (8 бит) формат, как это место назначения. Если оба изображения полностью непрозрачны (альфа 1,0), результат будет смешаться правильно, как и ожидалось:
Но если мой слой «blend» (верхнее изображение) имеет прозрачность в нем, я немного расплывчато относительно как правильно преобразовать альфа в уравнение смешивания. Я ожидаю, что он будет работать таким образом, чтобы прозрачные пиксели в слое смешивания не влияли на результат, непрозрачные пиксели в слое смешивания накладывали смесь как обычно, а полупрозрачные пиксели слоя смешивания оказывают некоторое влияние на результат.
Может ли кто-нибудь объяснить мне уравнения смешения или концепцию за этим?
Бонусные баллы, если вы можете помочь мне сделать это таким образом, что полученное изображение правильно предварительно умноженные альфа (который приходит в игру только для пикселей, которые не являются непрозрачными в обоих слоях, я думаю.)
Спасибо!
// factor in blendLayerA, (1-blendLayerA) somehow?
resultR = ChannelBlend_Overlay(baseLayerR, blendLayerR);
resultG = ChannelBlend_Overlay(baseLayerG, blendLayerG);
resultB = ChannelBlend_Overlay(baseLayerB, blendLayerB);
resultA = 1.0; // also, what should this be??
ОК, в чем причина этого? Благодарю. –
@quixoto Ну, я хочу размножить два, чтобы они оба были в уравнении, не достигнув слишком непрозрачности слишком рано при объединении прозрачных слоев (что произойдет при их добавлении). Но просто умножение поставит его около нуля, один из которых близок к нулю. Таким образом, я инвертирую все это, и он «чувствует себя хорошо» для тестовых значений (например, 0, 0,5, 1) – Timbo