プラナー方式

提供: MonoBook
移動: 案内検索

プラナー英語:Planar)とは、コンピューターグラフィックスにおける二次元画像の表現方式のひとつである。

概要[編集]

プラナーはある画像を表現する際に色空間の色成分ごとに分離した状態で保持している形式のことをいう。

たとえばRGBであれば以下のように分離された形式でデータが保持されているものをプラナー方式という。

  • RRRRRRRRRRRRRRRR〜
  • GGGGGGGGGGGGGGG〜
  • BBBBBBBBBBBBBBBB〜

Photoshopなどでいえば原色ごとにレイヤーがあるような感じである。

逆に分離されていないものをパックドピクセル方式という。

  • RGBRGBRGBRGBRGB〜

利点[編集]

プラナーは色ごとに処理したいアルゴリズムにおいて扱いやすい形式であるとされる。 これには画像圧縮や画像認識などの多くが該当する。

有名なところではJPEGJPEG2000といった画像圧縮アルゴリズムの多くが内部処理においてプラナー形式を採用している。たとえばJPEGの内部では、赤色を圧縮する、緑色を圧縮する、青色を圧縮するという感じで色ごとに処理するようになっている。またOpenCVも内部的にはプラナー方式を採用している(OpenCVが依存しているIntel Image Processing Libraryがプラナー形式を採用している)。

Kinect for Windows v1SDKもベータ版のころはプラナー方式を採用していたが、正式版ではプログラマーが扱いやすいよう配慮したのかパックドピクセルに変更になっていた。

欠点[編集]

一方でピクセル単位で処理したい場合には、たとえばRGBのプラナー方式だと1ピクセルを得るのに3カ所ものデータにアクセスして、さらに合成した値を使用せねばならず、非常に効率が悪い。

// プレーナーは面倒
Pixel GetPixel(x, y) 
{
    return R[x,y] << 16 
         | G[x,y] <<  8 
         | B[x,y]
}
// パックドピクセルなら簡単
Pixel GetPixel(x, y)
{
    return RGB[x,y];
}

最近の多くのプラットフォームではディスプレイへの表示はパックドピクセル方式が一般的である。 DirectXOpenGLなどを駆使したコンピューターグラフィックスを表示することに主眼をおいているひとたちにはパックドピクセルが一般的である。

主な採用事例[編集]

PC-9801シリーズ[編集]

PC-9801シリーズGRAM(今でいうVRAM)はプラナー形式が採用されており、合成処理はハードウェア内部で自動的に行われていた。 しかもRGB各色1ビットと濃淡1ビットというバイト単位ではなくビット単位という鬼のように面倒な代物であった。

プラナー形式で疑似スプライトを実現しようとするとアホみたいに面倒な処理が必要であり、ゲームなどには不向きであったため、多くのプログラマーは手軽にパックドピクセル形式で扱えるようにするライブラリを作っていた。

関連項目[編集]

参考文献[編集]