Navigation Log - なびろぐ -
2007/12/12

...X680x0 spirit inside...

この日記はGNSで生成しています。
この日記の画像はOPTPiX webDesigner Ver.4で生成しています。

hauN
Go amazon.co.jp

■ご注文リストから■ [一覧]
■Amazonギフト券■ [購入]
「君の名は。」Blu-rayコレクターズ・エディション 4K Ultra HD Blu-ray同梱5枚組 (初回生産限定)(早期購入特典:特製フ [DVD]
「君の名は。」Blu...
Amazonほしい物リスト


2007/12/12 (水) 曇時々雨

RGBAレイヤ合成アルゴリズム (プログラム)

_ 塩兄のクロスフェードのコードを見ていて、ふと思い出したのでメモから写しておく。Photoshopの「下のレイヤーと統合」に相当する、RGBA+RGBA→RGBAなビットマップ合成アルゴリズム*1

*1: RGBA=ARGBともいう。「アルファ付きRGB」の意味。


// Cs: 上になる画像のカラー(RGB)
// As: 上になる画像のアルファ
// Cd: 下になる画像のカラー(RGB)
// Ad: 下になる画像のアルファ
// Cr: 合成結果画像のカラー(RGB)
// Ar: 合成結果画像のアルファ
// すべて0.0〜1.0で扱う
if ( As + Ad == 0.0 ) {
    // 別扱いしないと0除算エラーが出る
    Ar = 0.0;
    Cr = 0.0;
} else {
    Ar = Ad + ( ( 1 - Ad ) * As );
    Cr = ( ( Cd * Ad * ( 1 - As ) ) + ( Cs * As ) ) / Ar;
}

_ GIMPのレイヤ合成とか吉里吉里のレイヤ合成とかでコードは探せばあるはずだが、ちょっと検索した限りではアルゴリズムは見つからなかったので、ちょっとは書いておく価値はあるかな・・・と思ったら、やねうらお氏の「スーパープログラマーへの道」第CB回の文章部(コードではない)で発見。「PhotoShopのレイヤ合成は、エネルギー分配に基づくもので〜」以下の部分ね。\

_ なお、クロスフェードに使う場合は「Adへの倍率を1.0→0.0へ変化させながら、Asへの倍率を0.0→1.0へ変化」させることになる。


[URL] [View Log()] [Trackback]
Name: Comment:



メールはこちらへ...[後藤浩昭 / Hiroaki GOTO / GORRY / gorry@hauN.org]

「表紙へ戻る」
「会議室」 「最新版」 「なびろぐindex」 「GNSソースを読む」