1

2 つの ARGB カラー c1 と c2 があるとします。

背景 c2 の 50% (アルファ) c1 と背景 c1 の 50% c2 の間に違いはありますか?

out = alpha * new + (1 - alpha) * old別のスレッドからの)式を使用すると、両方とも同じ結果になります。

50% blue on 100% red = 0.5 * blue + (1 - 0.5) red = 0.5 * blue + 0.5 red
100% red on 50% blue = 0.5 * red + (1 - 0.5) blue = 0.5 * red + 0.5 blue
thus, 50% blue on 100% red = 100% red on 50% blue

ただし、Photoshop CS5#80007fでは、「100% 青の上に 50% 赤」が「100% 赤の上に 50%青」であると主張してい #7f0080ます。

したがって、上記のアルゴリズムは単純な現実の近似のためだけのものなのだろうか?

より正確な結果が得られる別の式はありますか? (アドビはグラフィックスに関しては非常優れているため、このような単純な丸め誤差を犯す可能性は非常に低いと思います)

4

1 に答える 1

3

非常に単純なアルゴリズムで気づいたように、c2 の 50% c1 と c1 の 50% c2 はまったく同じ色を与えるはずです。

したがって、赤 (#ff0000) と青 (#0000ff) を 50-50 で混ぜると #7f007f になります。#80007f が表示された場合、それは十分に近いものであり、エラーは他の理由による可能性があります。たとえば、画像が RGB モードではなく HSL である場合、または Photoshop が内部的に HSL で表現することを選択した場合などです。

その他のエラーは、浮動小数点の計算や丸めエラーから発生する可能性があります。それにもかかわらず、#80007f と #7f007f はほとんど同じであるため、Photoshop 開発者がこの不正確さを認識している場合、おそらく無視することにしました。

于 2013-03-30T11:58:22.917 に答える