プラナー方式

提供: MonoBook
2014年10月6日 (月) 11:06時点におけるimported>Mono Bookによる版 (Mono Book がページ「プレーナー方式」を「プラナー方式」に移動しました)
ナビゲーションに移動 検索に移動

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

概要

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

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

  • RRRRRRRRRRRRRRRR〜
  • GGGGGGGGGGGGGGG〜
  • BBBBBBBBBBBBBBBB〜

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


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

  • RGBRGBRGBRGBRGB〜

利点

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

有名なところではJPEGなどのが採用している。 JPEGでは、赤色を圧縮する、緑色を圧縮する、青色を圧縮するという感じで色ごとに処理するようになっている。

OpenCVなども内部的にはプレーナーを採用している。

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

欠点

一方でピクセル単位で処理したい場合には、たとえば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ビットというバイト単位ではなくビット単位という鬼のように面倒な代物であった。

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

関連項目

参考文献