アプリ版:「スタンプのみでお礼する」機能のリリースについて

アルファ(透明値)をもつピクセル同士を重ねる方法についての質問です。

たとえば
前景RGBA=(255,0,255,0)
背景RGBA=(255,255,255,255)
のように背景が完全不透明であるなら

FR = (FR * FA + BR * (255 - FA)) / 255
(FRは前景のR値、BRは背景のR値、FAは前景のアルファ値)

のように単純な演算で合成後の画素値を算出できますが、

前景RGBA=(255,0,255,64)
背景RGBA=(255,255,255,128)

のように両方ともアルファ値を持つ画素同士であれば、どういったアルゴリズムで合成すればよいでしょうか。

ちなみにイメージする結果は、Photoshopなどのペイントツールで、完全透明レイヤーに半透明のブラシを色違いで重ねたような感じです。

A 回答 (1件)

>両方ともアルファ値を持つ画素同士であれば、どういったアルゴリズムで合成すればよいでしょうか。



アルゴリズム(計算式)は合成処理の用途などに応じて自由に決めていいものだと思います(つまりコレを使うべき、というものはないと思います)。例えばPhotoshopでも合成処理は何種類か用意されていてそれを選択できるようになっています。
1番単純なものでしたら
r=(r1*a + r2*(255-a)) / (2*255)
ような感じでいいのではないでしょうか?

この回答への補足

お教えいただいた演算方法だと背景部分の透過情報が無視されるため、いびつな画像になるようです。

参考:
http://blogimg.goo.ne.jp/user_image/72/74/ddd54d …

両方のアルファ値を考慮した計算方法はありますでしょうか

イメージしている演算例(参考):
http://blogimg.goo.ne.jp/user_image/67/78/27f9e4 …

補足日時:2005/03/28 18:15
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!