5

私はいくつかの手動 (ウォーク ザ ピクセル) 画像処理で遊んでおり、標準の「オーバーレイ」ブレンドを再作成しています。ここで「Photoshop math」マクロを見ています。

http://www.nathanm.com/photoshop-blending-math/ (オーバーレイの読みやすいバージョンについては、こちらも参照してください)

どちらのソース イメージも、宛先と同様に、かなり標準的な RGBA (各 8 ビット) 形式です。両方のイメージが完全に不透明 (アルファが 1.0) の場合、結果は期待どおりに正しくブレンドされます。

しかし、私の「ブレンド」レイヤー(上の画像)に透明度がある場合、そのアルファをブレンド方程式に正しく組み込む方法について少し混乱しています。ブレンドレイヤーの透明ピクセルが結果に影響を与えないように、ブレンドレイヤーの不透明ピクセルが通常どおりオーバーレイブレンドを行い、半透明のブレンドレイヤーピクセルが結果に何らかのスケーリング効果を持つように動作することを期待しています。

誰かがブレンド方程式またはこれを行う背後にある概念を説明できますか?

結果の画像が正しく事前乗算されたアルファを持つように私がそれを行うのを手伝ってくれればボーナスポイントです(これは両方のレイヤーで不透明でないピクセルに対してのみ作用すると思います。)

ありがとう!

// 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??
4

4 に答える 4

1

あくまでも推測ですが、やってみます

resultA = 1 - (1-baseAlpha) * (1-blendAlpha)
于 2011-01-14T08:37:04.673 に答える
0

私はこの問題を正確に実験していましたが、ベースとブレンドレイヤーの両方にストレートアルファを使用し、結果のみにベースアルファを事前に乗算するのが最善であることがわかるまでです。

于 2012-05-13T22:37:05.973 に答える