コンポジターに必要なアルファチャンネルの知識(前編)
- 2014/04/01
映像の合成で扱うデジタル画像データは、RGBという3つのカラーチャンネル(色成分)で成り立っています。そして、重要なチャンネルがもう1つあります。透明度を扱う“アルファチャンネル”です。アルファチャンネルがあるから、デジタル合成ができるのです。
しかし、このアルファチャンネル、よく理解していないとフリンジ(不適切なエッジ)に困らされたりして、コンポジットが大変になります。逆に言えば、アルファチャンネルをきちんと理解していれば、迷うことなく綺麗にコンポジットできます。そこで今回と次回は、全2回に渡ってアルファチャンネルの話をしたいと思います。アルファチャンネルの仕組みをよく知って、これからは快適に作業しましょう!
さて、コンポジット初心者の方はまず、アルファチャンネルは「クッキーの型抜き」のイメージで捉えると分かりやすいと思います。RGBチャンネルによって出来たカラー画像という「生地」を、アルファチャンネルという「型」でくり抜く、というイメージです。
でも、これはあくまで「分かりやすいイメージ」です。実際には、コンピュータは「計算」をしています。RGBもアルファも、実はただの数値のデータです。コンピュータは数値を足したり引いたりしているに過ぎません。では、画像を合成するときに、どのような計算が行われているのでしょうか?
1984年、トーマス・ポーター氏とトム・ダフ氏は論文 "Compositing Digital Images" を発表し、アルファチャンネルを使った画像合成の基礎理論を確立しました(1)。現在では多くのグラフィックソフトがありますが、この論文が全ての源流になっています。そして、この論文に出てくる合成式のひとつが、以下のようなものです。
前景と背景を重ね合わせる式:
前景のRGB×前景のアルファ + 背景のRGB×(1-前景のアルファ) = 合成結果
ちょっと難しくなってきましたか……?大丈夫、落ち着いてひとつずつ見ていきましょう。実は結構簡単なんです。足し算と、引き算と、掛け算しかありませんから。ここからは、R, G, B, アルファという4つのデータを0~1の数字で説明します(1=100%という意味です)。そして、説明のための例として、前景を赤いベタ色、背景を中間グレーのベタ色とし、これを重ね合わせる合成を考えてみましょう。
前景は赤なので、RGB値で言うと [1, 0, 0] になります。背景の方は中間グレーなので、RGB値は [0.5, 0.5, 0.5] となります。では、この「前景のアルファチャンネル」をボケた丸としましょう。場所によって値は0~1まで、さまざまです。
さぁ、準備完了です。前景と背景を合成しましょう!先ほどの合成式を実行します。
前景のRGB×前景のアルファ + 背景のRGB×(1-前景のアルファ) = 合成結果
式に従って計算すると、あたかも手前と奥の画像を重ね合わせたような結果が得られます。これが、アルファ合成の仕組みです。再確認しましょう。
1.前景のRGB値に、アルファ値を掛ける。この結果、部分部分でRGB値が弱められる。
2.背景のRGB値には、(1-前景のアルファ)、つまり反転したアルファ値を掛ける。この結果、部分部分でRGB値が弱められる。
3.それぞれの結果を足し算すると、重ね合わせたような合成結果になる。
よく出来ていますね。このような仕組みで、デジタル画像は合成されるのですね。
この辺で、数学の言葉を確認しておきましょう。
◆足し算・・・加算(かさん)、Add(アド)、Plus(プラス)
◆引き算・・・減算(げんざん、げんさん)、Substruct(サブストラクト)、Minus(マイナス)
◆掛け算・・・乗算(じょうざん、じょうさん)、Multiply(マルチプライ)
◆割り算・・・除算(じょざん)、Divide(ディバイド)
これらの言葉は、画像合成の説明でよく出てくるので、覚えておくと良いと思います。以上でアルファチャンネルの説明は終わりです!お疲れ様でした!
……と言いたいところですが、残念ながら、まだ終わりません。なぜなら、アルファチャンネルには2つのタイプがあるからです。今まで説明していたのは1つ目。「ストレート・アルファ(Straight Alpha)」と呼ばれるタイプの画像を合成するときの仕組みです。
これから2つ目の説明に入ります。
先ほどの式の前半部分に注目してください。
なんだかこの部分、「前景のRGBに前景のアルファ値を掛ける」って、前景の中で自己完結しちゃってますよね。だったらその計算処理、先に前景の画像ファイルの中で済ませておけば良いのではないでしょうか?毎回コンピュータに計算させるより、親切な感じがしますよね。じゃあ、そうしましょう!こうすると、計算式の前半が短くなります!
前景と背景を重ね合わせる式(短いバージョン):
前景のRGB + 背景のRGB×(1-前景のアルファ) = 合成結果
ずいぶんシンプルになりました。はい、これが2つ目のアルファチャンネルです。この、事前にRGBチャンネルに対してアルファ値の乗算処理(掛け算)を行っている画像は、「プリマルチプライド・アルファ(Premultiplied Alpha)」と呼ばれています。日本語に直訳して「乗算済みアルファ」とも呼ばれます。なお、After EffectsやPhotoshopの日本語版では「合成チャンネル」と呼んでいます。しかし、「プリマルチプライド」の方がどこでも通用する普遍的な呼び方です。
このようにして、2タイプのアルファチャンネル画像が誕生しました。ストレートと、プリマルチプライド。重要なのでよく覚えておいてください。ちなみに、ストレートは「アン・プリマルチプライド(UnPremultiplied)」とか「ノン・プリマルチプライド(Non-Premultiplied)」とも呼ばれます。もしそういう言葉を聞いたら、「ストレートのことだな」と思えばOKです。
CGやコンポジットで扱うアルファ付き画像ファイルというのは、必ず「ストレート」か「プリマルチプライド」のどちらかです。そして、そのどちらなのかを把握していないと、正しいコンポジットはできません。RGBチャンネルの状態が違うので、コンポジットソフトの中での扱い方(計算式)も変わってきます。
では、手元にある画像ファイルがどちらのタイプか、どうやって判別すれば良いのでしょう?もう分かりますよね?そう、「RGBチャンネル」を確認すれば良いのです。半透明な部分も、純粋な強いカラーになっているのがストレート。一方、乗算処理がされて弱い色になっている(黒背景に溶け込んでいる)のがプリマルチプライドです。
今回の要点をまとめます。
◆アルファチャンネルのイメージはクッキーの型抜き。カラー画像をアルファチャンネルでくり抜く。
◆実際には、RGBもアルファも数値のデータ。合成は計算式で行われる。アルファ値はそのとき使われる。
◆アルファチャンネルには2種類ある。ストレート・アルファ画像とプリマルチプライド・アルファ画像。
◆ストレートは、まだRGB値にアルファ値の乗算処理(掛け算)をしていない。そのため、半透明な部分もRGBは純粋な「強いカラー」になっている。
◆プリマルチプライドは、事前にRGB値にアルファ値の乗算処理(掛け算)がされている。そのため、半透明な部分のRGBは「弱いカラー」になり、黒い背景になじんでいる。
◆画像ファイルがストレートかプリマルチプライドか知りたいときは、RGBチャンネルの状態を確認すれば判別できる!
今回の内容、なかなか難しかったかもしれません。2タイプのアルファチャンネルには、世界中の人々が混乱しています。私も以前はよく分かっていなかったので、大変苦しめられた経験があります。しかし、それぞれの性質を理解すれば、綺麗なコンポジットができるんです。でも、この続きはまた今度にしましょう。次回は、様々なグラフィックソフトで実際にどのようにアルファチャンネルを扱えば良いか説明したいと思います。後編へ続きます!
しかし、このアルファチャンネル、よく理解していないとフリンジ(不適切なエッジ)に困らされたりして、コンポジットが大変になります。逆に言えば、アルファチャンネルをきちんと理解していれば、迷うことなく綺麗にコンポジットできます。そこで今回と次回は、全2回に渡ってアルファチャンネルの話をしたいと思います。アルファチャンネルの仕組みをよく知って、これからは快適に作業しましょう!
アルファチャンネルのイメージ
さて、コンポジット初心者の方はまず、アルファチャンネルは「クッキーの型抜き」のイメージで捉えると分かりやすいと思います。RGBチャンネルによって出来たカラー画像という「生地」を、アルファチャンネルという「型」でくり抜く、というイメージです。
でも、これはあくまで「分かりやすいイメージ」です。実際には、コンピュータは「計算」をしています。RGBもアルファも、実はただの数値のデータです。コンピュータは数値を足したり引いたりしているに過ぎません。では、画像を合成するときに、どのような計算が行われているのでしょうか?
アルファチャンネルと計算式
1984年、トーマス・ポーター氏とトム・ダフ氏は論文 "Compositing Digital Images" を発表し、アルファチャンネルを使った画像合成の基礎理論を確立しました(1)。現在では多くのグラフィックソフトがありますが、この論文が全ての源流になっています。そして、この論文に出てくる合成式のひとつが、以下のようなものです。
前景と背景を重ね合わせる式:
前景のRGB×前景のアルファ + 背景のRGB×(1-前景のアルファ) = 合成結果
ちょっと難しくなってきましたか……?大丈夫、落ち着いてひとつずつ見ていきましょう。実は結構簡単なんです。足し算と、引き算と、掛け算しかありませんから。ここからは、R, G, B, アルファという4つのデータを0~1の数字で説明します(1=100%という意味です)。そして、説明のための例として、前景を赤いベタ色、背景を中間グレーのベタ色とし、これを重ね合わせる合成を考えてみましょう。
前景は赤なので、RGB値で言うと [1, 0, 0] になります。背景の方は中間グレーなので、RGB値は [0.5, 0.5, 0.5] となります。では、この「前景のアルファチャンネル」をボケた丸としましょう。場所によって値は0~1まで、さまざまです。
さぁ、準備完了です。前景と背景を合成しましょう!先ほどの合成式を実行します。
前景のRGB×前景のアルファ + 背景のRGB×(1-前景のアルファ) = 合成結果
式に従って計算すると、あたかも手前と奥の画像を重ね合わせたような結果が得られます。これが、アルファ合成の仕組みです。再確認しましょう。
1.前景のRGB値に、アルファ値を掛ける。この結果、部分部分でRGB値が弱められる。
2.背景のRGB値には、(1-前景のアルファ)、つまり反転したアルファ値を掛ける。この結果、部分部分でRGB値が弱められる。
3.それぞれの結果を足し算すると、重ね合わせたような合成結果になる。
よく出来ていますね。このような仕組みで、デジタル画像は合成されるのですね。
この辺で、数学の言葉を確認しておきましょう。
◆足し算・・・加算(かさん)、Add(アド)、Plus(プラス)
◆引き算・・・減算(げんざん、げんさん)、Substruct(サブストラクト)、Minus(マイナス)
◆掛け算・・・乗算(じょうざん、じょうさん)、Multiply(マルチプライ)
◆割り算・・・除算(じょざん)、Divide(ディバイド)
これらの言葉は、画像合成の説明でよく出てくるので、覚えておくと良いと思います。以上でアルファチャンネルの説明は終わりです!お疲れ様でした!
……と言いたいところですが、残念ながら、まだ終わりません。なぜなら、アルファチャンネルには2つのタイプがあるからです。今まで説明していたのは1つ目。「ストレート・アルファ(Straight Alpha)」と呼ばれるタイプの画像を合成するときの仕組みです。
これから2つ目の説明に入ります。
もう1つのアルファチャンネル
先ほどの式の前半部分に注目してください。
なんだかこの部分、「前景のRGBに前景のアルファ値を掛ける」って、前景の中で自己完結しちゃってますよね。だったらその計算処理、先に前景の画像ファイルの中で済ませておけば良いのではないでしょうか?毎回コンピュータに計算させるより、親切な感じがしますよね。じゃあ、そうしましょう!こうすると、計算式の前半が短くなります!
前景と背景を重ね合わせる式(短いバージョン):
前景のRGB + 背景のRGB×(1-前景のアルファ) = 合成結果
ずいぶんシンプルになりました。はい、これが2つ目のアルファチャンネルです。この、事前にRGBチャンネルに対してアルファ値の乗算処理(掛け算)を行っている画像は、「プリマルチプライド・アルファ(Premultiplied Alpha)」と呼ばれています。日本語に直訳して「乗算済みアルファ」とも呼ばれます。なお、After EffectsやPhotoshopの日本語版では「合成チャンネル」と呼んでいます。しかし、「プリマルチプライド」の方がどこでも通用する普遍的な呼び方です。
このようにして、2タイプのアルファチャンネル画像が誕生しました。ストレートと、プリマルチプライド。重要なのでよく覚えておいてください。ちなみに、ストレートは「アン・プリマルチプライド(UnPremultiplied)」とか「ノン・プリマルチプライド(Non-Premultiplied)」とも呼ばれます。もしそういう言葉を聞いたら、「ストレートのことだな」と思えばOKです。
2タイプのアルファの違い
CGやコンポジットで扱うアルファ付き画像ファイルというのは、必ず「ストレート」か「プリマルチプライド」のどちらかです。そして、そのどちらなのかを把握していないと、正しいコンポジットはできません。RGBチャンネルの状態が違うので、コンポジットソフトの中での扱い方(計算式)も変わってきます。
では、手元にある画像ファイルがどちらのタイプか、どうやって判別すれば良いのでしょう?もう分かりますよね?そう、「RGBチャンネル」を確認すれば良いのです。半透明な部分も、純粋な強いカラーになっているのがストレート。一方、乗算処理がされて弱い色になっている(黒背景に溶け込んでいる)のがプリマルチプライドです。
まとめ
今回の要点をまとめます。
◆アルファチャンネルのイメージはクッキーの型抜き。カラー画像をアルファチャンネルでくり抜く。
◆実際には、RGBもアルファも数値のデータ。合成は計算式で行われる。アルファ値はそのとき使われる。
◆アルファチャンネルには2種類ある。ストレート・アルファ画像とプリマルチプライド・アルファ画像。
◆ストレートは、まだRGB値にアルファ値の乗算処理(掛け算)をしていない。そのため、半透明な部分もRGBは純粋な「強いカラー」になっている。
◆プリマルチプライドは、事前にRGB値にアルファ値の乗算処理(掛け算)がされている。そのため、半透明な部分のRGBは「弱いカラー」になり、黒い背景になじんでいる。
◆画像ファイルがストレートかプリマルチプライドか知りたいときは、RGBチャンネルの状態を確認すれば判別できる!
今回の内容、なかなか難しかったかもしれません。2タイプのアルファチャンネルには、世界中の人々が混乱しています。私も以前はよく分かっていなかったので、大変苦しめられた経験があります。しかし、それぞれの性質を理解すれば、綺麗なコンポジットができるんです。でも、この続きはまた今度にしましょう。次回は、様々なグラフィックソフトで実際にどのようにアルファチャンネルを扱えば良いか説明したいと思います。後編へ続きます!
参考文献
1."Alpha compositing" - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/Alpha_compositing (参照 2014-04-01).
1."Alpha compositing" - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/Alpha_compositing (参照 2014-04-01).
- 関連記事
-
- 画面の見映えを良くする配色のテクニック (2015/08/22)
- グロー表現のクオリティーを高める3つのポイント (2015/07/25)
- 分かる!リニアワークフローのコンポジット (2015/06/13)
- リアルな実写合成(VFX)にはノイズ除去が重要 (2015/05/15)
- デジタルで画づくりするテクニックまとめ! (2015/04/29)
- ガンマについて (2015/03/13)
- 映画のVFX制作で使用するDPX画像ファイルは何が優れているのか? (2015/02/11)
- 画のクオリティーをアップする煙合成のコツ (2014/12/16)
- なぜ映画の背景はボケているのか?被写界深度についての考察 (2014/11/10)
- 画像を美しく加工するために押さえておきたいピクセルの知識 (2014/08/06)
- 実写合成(VFX)テクニック・色合わせの3つのチェックポイント (2014/06/09)
- 加算とスクリーンを正しく使い分けて綺麗な光を描くヒント (2014/05/18)
- カラコレに役立つRGBカラーの基礎知識 (2014/04/29)
- コンポジターに必要なアルファチャンネルの知識(後編) (2014/04/05)
- コンポジターに必要なアルファチャンネルの知識(前編) (2014/04/01)