« アンチエイリアシング(1) | トップページ | アンチエイリアシング(3) »

アンチエイリアシング(2)

|

CG数理の基礎(シラバス)の授業のうち、前回はアンチエイリアシングの授業の一部を紹介しました。図形と背景の中間の明るさを使うことで斜めの線でもギザギザにみえないようにする技術です。

Aaresult

線分を太さ1画素の長方形と見なした場合の描画

各画素(小さなマス目)での明るさはどう計算するか、上記の図を見ると推測できそうです。画素の正方形のうち、斜めの長方形に重なっている面積が広いほど輝度を高く設定しています。これがアンチエイリアシングの基本的な考えです。

次の例は、背景輝度128のグレーの画面に輝度255の白い三角形を描画する場合です。2か所の画素を拡大し、真の三角形(3頂点のxy座標を示しています)がどれだけ重なっているかを示しました。

Aatriangle_2

三角形のアンチエイリアシング処理の計算例

左の薄緑で囲んだ画素は、白い三角形が横長の小さな直角三角形の形で重なっています。この直角三角形の底辺の長さは1(画素)で高さは1/3になります。ですので面積は1/6(0.167)です。逆に、背景に重なっている部分の面積は0.833です。2つの輝度(255と128)にそれぞれ面積(0.167と0.833)を勘案した重み付平均(149)が最終的なこの画素の輝度になります。右の薄い青で囲んだ画素の例はもっと簡単ですね。

前記の例で直角三角形の高さは1/3でした。これは真の図形と画素の正方形との交点を求めるアルゴリズムで計算しますが、ここでは省略します。

アンチエイリアシングはこのように輝度を面積比で重み付けする原理に基づいて処理されます。

とは言っても、画素の数は膨大です。ノートPCの画面でも1600×900画素です。その一つ一つについて真の図形との交点を計算するのは、さすがに計算時間がかかります。しかも、真の図形も1枚ではなく、数万枚(1場面で)ぐらいはCG映像の場合普通です。

どうやって効率よく重なった部分の面積を求めるか、というより推定するか、これについてはまた次回お話します。

メディア学部 柿本正憲

おもしろメディア学」カテゴリの記事

在学生向け」カテゴリの記事

授業紹介」カテゴリの記事

高校生向け」カテゴリの記事

« アンチエイリアシング(1) | トップページ | アンチエイリアシング(3) »