アルファチャンネル

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。ぱすたとねこ (会話 | 投稿記録) による 2021年2月26日 (金) 10:54個人設定で未設定ならUTC)時点の版 (加算合成の注釈が間違っていたため修正。)であり、現在の版とは大きく異なる場合があります。

αチャンネル(アルファチャンネル、: alpha channel)とは画像処理分野において、各ピクセルに対し表現のデータとは別にもたせた補助データのこと。一般に画素の不透明度 (opacity) を表現する。

コンピュータにおいて、プリンターディスプレイなど、ほとんどの表示装置はRGB (Red, Green, Blue)、CMYK (Cyan, Magenta, Yellow, Black) など、単色(純色)の組合せによって色を表現する。この各単色の明るさ、あるいは濃度を調整することによって人間が知覚する多くの色を表現できる。コンピュータ内部のデータでも同様の型式がとられている。

いくつかの画像データフォーマットや画像編集ソフトウェアでは、これらの表示される単色(カラーチャンネル)の他に、もうひとつ直接表示されない色のデータを追加できる。これをアルファチャンネルと呼び、画像のマスク、複数画像の合成などに使われる。

映像編集技術におけるキー信号に相当する。

計算式

一般にアルファチャンネルの計算は Thomas Porter および Tom Duff の1984年の論文に基づく[1]

A および RGB の定義域は [0, 1] とする。A = 0 は透明で、A = 1 は不透明である。また、透明の画像は以下のように扱う。

すると、src (source) を dst (destination) へと、アルファチャンネルつきの画像を描画する計算式は以下の通り。 の定義は後述。

この際、以下のように、A を RGB にあらかじめかけておくと、

以下のように式が簡単になる。

積和算だけで計算できるようになるので、この乗算済みアルファ (premultiplied alpha) 形式で扱うと高速に処理できる[2]。例えばMicrosoft WindowsGDIによるアルファブレンドでは、乗算済みアルファを想定した計算式が使われている[3]。欠点は、各色を8ビットで保持した場合、Aが1より小さいとRGBの正確な値を保持できないことにある。

そして、 の定義は以下の通り。SRC over DST のように表記し、演算子は非可換であり交換法則は成立しない。

演算
clear 0 0
source 1 0
destination 0 1
over 1
in 0
out 0
atop
xor
plus 1 1

計算結果で ARGB が 1 を超えた場合は、1 とする。

論文では、特に有用なのは、over, in, out, plus としている。また、over を特にアルファブレンディングと呼ぶ。over は乗算合成、plus は加算合成[4]と呼ばれることもある。Windows GDIのブレンディングでは over 演算のみがサポートされている。OpenGLおよびDirect3Dではブレンディングの演算を選択することができるが、による除算は行なわれず、簡略化された計算式が使われる[5][6][7]

の透明な画像に、over, out, xor, plus, source で描画すると、src の内容がそのままコピーされる。

参照

  1. ^ Compositing Digital Images - Thomas Porter and Tom Duff - Computer Graphics Project Lucasfilm Ltd.
  2. ^ CPUおよびGPUは加算および積算が得意(高速)で、さらに積和演算に関しては専用命令を持っていることもあるが、除算は苦手(低速)である。
  3. ^ BLENDFUNCTION structure (Windows)
  4. ^ ただし、一般的な画像編集ソフトウェアでは、色のブレンド時に色を加算を行うものを加算合成 add としており、plus はブレンド済みの色を合成する演算であるため、意味が異なる。
  5. ^ glBlendFunc - OpenGL 4 Reference Pages
  6. ^ D3DBLEND enumeration (Windows)
  7. ^ D3DTEXTUREOP enumeration (Windows)

関連項目