基本情報技術者 2009年 秋期 午前(科目A) 問31
問題文
コンピュータグラフィックスで図形を描画する際に、図形の境界近くの画素に変化する色彩の中間色を割り当てることで、境界に生じる階段状のギザギザを目立たなくする技術はどれか。
選択肢
ア:アンチエイリアシング(正解)
イ:シェーディング
ウ:クリッピング
エ:モーフィング
コンピュータグラフィックスで図形を描画する際に、図形の境界近くの画素に変化する色彩の中間色を割り当てることで、境界に生じる階段状のギザギザを目立たなくする技術はどれか。【午前2 解説】
要点まとめ
- 結論: 境界近くの画素に中間色を割り当ててジャギー(階段状のギザギザ)を目立たなくする技術はアンチエイリアシング(ア)です。
- 根拠: アンチエイリアシングはピクセルの被覆率や複数サンプリングで境界をブレンドし滑らかなエッジを生成するため、記述と一致します。
- 差がつくポイント: SSAA・MSAA・FXAAなど手法により画質と処理負荷が異なるため、用途に応じた手法選択が合否に差をつけます。
正解の理由
正解は ア(アンチエイリアシング)です。問題文が示す「境界近くの画素に中間色を割り当てる」という手法は、ピクセル単位での色のブレンドやサンプリングを行いジギー(aliasing)を目立たなくする技術の定義そのものです。アンチエイリアシングはレンダリング時にエッジのピクセルを部分的に塗る(被覆率を考慮する)か複数サンプルを平均化して滑らかな輪郭を実現します。
よくある誤解
- シェーディングは面の明るさや陰影処理でありエッジのギザギザ除去そのものではありません。
- クリッピングやモーフィングは範囲切取りや変形の技術で、問題文の「中間色割当」には該当しません。
解法ステップ
- 問題文のキーワードを拾う:「境界近くの画素」「中間色を割り当てる」「階段状のギザギザを目立たなくする」。
- 各選択肢の基本定義を頭の中で照合する:アンチエイリアシング=エッジの滑らか化、シェーディング=陰影、クリッピング=切り取り、モーフィング=形状補間。
- 最も一致する選択肢を選ぶ:エッジ滑らか化を行うのはアンチエイリアシングなのでアを選択。
選択肢別の誤答解説
- ア: アンチエイリアシング — 正解。ピクセル単位でブレンドや複数サンプリングを用いてエッジを滑らかにする技術です。
- イ: シェーディング — 誤り。シェーディングは表面の陰影付け(ライティング計算)であり、エッジのジャギー除去が主目的ではありません。
- ウ: クリッピング — 誤り。クリッピングは描画対象を表示領域に合わせて切り取る処理であり、中間色を割り当てる技術ではありません。
- エ: モーフィング — 誤り。モーフィングは一つの形状を別の形状へ滑らかに変形する技術で、ピクセル単位のエッジ平滑化とは無関係です。
補足コラム
- 代表的なアンチエイリアシング手法
- SSAA(Supersample AA): 高解像度でサンプリングして縮小するため高品質だがコスト高。
- MSAA(Multisample AA): ピクセル毎に複数サンプルを取るがシェーダ負荷は抑えめ。
- FXAA(Fast Approximate AA): ポストプロセスでエッジを検出してぼかす方式で高速だがディテールを損なうことがある。
- ブレンドの基本式(被覆率 coverage を使った単純モデル): ここで coverage はそのピクセルが前景(図形)にどれだけ覆われているかを示します。
- 実装上の注意点: ガンマ補正(線形空間での合成)を怠るとブレンド結果が暗く/明るく不自然になることがあります。
- 簡単なイメージ: ジャギーはサンプリング不足(エイリアシング)による現象で、アンチエイリアシングはサンプリングやブレンドでその不足を補う手法群です。
コード例(簡易なSSAAイメージのダウンサンプリング例、概念実装):
from PIL import Image
import numpy as np
def ssaa_downsample(img, factor):
# img: PIL Image
arr = np.array(img).astype(np.float32)
h, w = arr.shape[:2]
h2, w2 = h // factor, w // factor
arr = arr.reshape(h2, factor, w2, factor, -1).mean(axis=(1,3))
return Image.fromarray(arr.astype(np.uint8))
# 使い方
# img = Image.open('input.png')
# out = ssaa_downsample(img.resize((img.width*2, img.height*2)), 2)
# out.save('aa_result.png')
FAQ
Q: アンチエイリアシングは常に必要ですか?
A: 必要性は用途次第です。高解像度やレンダリング速度重視の場面では省略されることもありますが、視覚品質を重視する場合は必須です。
A: 必要性は用途次第です。高解像度やレンダリング速度重視の場面では省略されることもありますが、視覚品質を重視する場合は必須です。
Q: シェーディングとアンチエイリアシングは混同されますか?
A: 混同されがちですが、役割は異なります。シェーディングは表面の明暗で、アンチエイリアシングは輪郭の滑らかさに関係します。
A: 混同されがちですが、役割は異なります。シェーディングは表面の明暗で、アンチエイリアシングは輪郭の滑らかさに関係します。
関連キーワード: コンピュータグラフィックス、アンチエイリアシング、サンプリング、サブピクセルレンダリング、SSAA、MSAA、FXAA、シェーディング、クリッピング、モーフィング、レンダリング、被覆率

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

