2

基本的に、アルファ値を変更することはできますが、プログラムで画像に色合いを付けることができないコンテキストがあります。実験を重ねた結果、特定のアルファ値を使用して赤、青、緑のバージョンの画像を重ねることで、幅広い色を生成できることがわかりました。ただし、この方法で真の RGB 表現を実現できるかどうか疑問に思っています。もしそうなら、RGB値を赤、青、緑のレイヤーの異なるアルファ値に変換する式は何ですか?

4

3 に答える 3

4

アルファ結合の基本的な「方程式」は次のとおりです。

alpha * (R1,G1,B1) + (1-alpha) * (R2,G2,B2)

アルファ付きの 3 つのレイヤーがある場合、実際には 4 つのレイヤー (4 番目のレイヤーは黒) を組み合わせているため、最終的な色は次のようになります。

alpha1 * (R1,G1,B1) + (1-alpha1) * ( 
   alpha2 * (R2,G2,B2) + (1-alpha2) * (
      alpha3 * (R3,G3,B3) + (1-alpha2) * (0,0,0) ) )

各レイヤーに同じ画像があり、layer1 が赤のチャンネル (G1=B1=0)、layer2 が緑、layer3 が青の場合:

(alpha1 * R, (1-alpha1)*alpha2 * G, (1-alpha1)*(1-alpha2)*alpha3 * B)

白いピクセルの場合、可能なすべての色を実行できます。黒いピクセルの場合、黒以外のことはできません。その他のピクセルについては、R、G、および B の値によって制限されます。

現在の色が (R, G, B) であるピクセルで (Rd, Gd, Bd) を実現したい場合は、次のように選択する必要があります。

alpha1 = Rd/R
alpha2 = Gd/(G*(1-alpha1))
alpha3 = Bd/(B*(1-alpha1)*(1-alpha2))

問題は、通常、アルファが 0 から 1 の間しかとれないことです。したがって、たとえば、Rd > R の場合、できることは何もありません。

ブレンド機能を制御できる場合 (たとえば、Photoshop で)、より適切に行うことができます。

于 2010-01-08T20:36:51.520 に答える
0

あなたのことを正しく理解していれば、それは不可能だと思います。

特定のピクセルについて、画像の赤の値がたとえば 0.5 の場合、それを (通常の) 範囲 [0,1] のアルファと組み合わせて、0.5 までの任意の値を形成できますが、できません。上に移動して、出力値としてたとえば 0.6 程度を取得します。

于 2010-01-08T20:25:45.413 に答える
0

一緒にブレンドされた 3 つのレイヤーを作成して元の画像にする場合は、かなり可能です。Paint Shop Pro の関数を呼び出して難しい部分を実行する Python スクリプトへのリンクを次に示します。

http://pixelnook.home.comcast.net/~pixelnook/SplitToRGB.htm

それ以上の詳細が必要な場合は、コメントを残してください。後で記入します。

于 2010-01-08T22:36:38.440 に答える