「プラナー方式」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Mono Book
(Mono Book がページ「プレーナー方式」を「プラナー方式」に移動しました)
imported>Mono Book
1行目: 1行目:
'''プレーナー'''([[英語]]:Planar)とは、[[コンピューターグラフィックス]]における二次元画像の表現方式のひとつである。
+
'''プラナー''([[英語]]:Planar)とは、[[コンピューターグラフィックス]]における二次元画像の表現方式のひとつである。
  
 
==概要==
 
==概要==
プレーナーはある画像を表現する際に、[[色空間]]の色成分ごとに分離した状態で保持している形式のことをいう。
+
プラナーはある画像を表現する際に、[[色空間]]の色成分ごとに分離した状態で保持している形式のことをいう。
  
たとえば[[RGB]]であれば以下のように分離された形式で[[データ]]が保持されているものをプレーナー方式という。
+
たとえば[[RGB]]であれば以下のように分離された形式で[[データ]]が保持されているものをプラナー方式という。
 
*RRRRRRRRRRRRRRRR〜
 
*RRRRRRRRRRRRRRRR〜
 
*GGGGGGGGGGGGGGG〜
 
*GGGGGGGGGGGGGGG〜
15行目: 15行目:
  
 
==利点==
 
==利点==
プレーナーは色ごとに処理したい[[アルゴリズム]]において扱いやすい形式であるとされる。
+
プラナーは色ごとに処理したい[[アルゴリズム]]において扱いやすい形式であるとされる。
 
これには画像圧縮や画像認識などの多くが該当する。
 
これには画像圧縮や画像認識などの多くが該当する。
  
21行目: 21行目:
 
JPEGでは、赤色を圧縮する、緑色を圧縮する、青色を圧縮するという感じで色ごとに処理するようになっている。
 
JPEGでは、赤色を圧縮する、緑色を圧縮する、青色を圧縮するという感じで色ごとに処理するようになっている。
  
[[OpenCV]]なども内部的にはプレーナーを採用している。
+
[[OpenCV]]なども内部的にはプラナー方式を採用している。
  
[[Kinect for Windows v1]]のSDKもベータ版のころはプレーナーを採用していたが、正式版では[[プログラマー]]が扱いやすいよう配慮したのか[[パックドピクセル]]に変更になっていた。
+
[[Kinect for Windows v1]]のSDKもベータ版のころはプラナー方式を採用していたが、正式版では[[プログラマー]]が扱いやすいよう配慮したのか[[パックドピクセル]]に変更になっていた。
  
 
==欠点==
 
==欠点==
一方で[[ピクセル]]単位で処理したい場合には、たとえばRGBのプレーナーだと1ピクセルを得るのに3カ所もの[[データ]]にアクセスして、さらに合成した値を使用せねばならず、非常に効率が悪い。
+
一方で[[ピクセル]]単位で処理したい場合には、たとえばRGBのプラナー方式だと1[[ピクセル]]を得るのに3カ所もの[[データ]]にアクセスして、さらに合成した値を使用せねばならず、非常に効率が悪い。
 
<source lang="csharp">
 
<source lang="csharp">
 
// プレーナーは面倒
 
// プレーナーは面倒
49行目: 49行目:
 
==主な採用事例==
 
==主な採用事例==
 
===PC-9801シリーズ===
 
===PC-9801シリーズ===
[[PC-9801シリーズ]]の[[GRAM]](今でいう[[VRAM]])はプレーナー形式が採用されており、合成処理は[[ハードウェア]]内部で自動的に行われていた。
+
[[PC-9801シリーズ]]の[[GRAM]](今でいう[[VRAM]])はプラナー形式が採用されており、合成処理は[[ハードウェア]]内部で自動的に行われていた。
しかもRGB各色1ビットと濃淡1ビットというバイト単位ではなくビット単位という鬼のように面倒な代物であった。
+
しかも[[RGB]]各色1[[ビット]]と濃淡1[[ビット]]という[[バイト]]単位ではなく[[ビット]]単位という鬼のように面倒な代物であった。
  
プレーナー形式で[[疑似スプライト]]を実現しようとするとアホみたいに面倒な処理が必要であり、[[ゲーム]]などには不向きであったため、多くの[[プログラマー]]は手軽にパックドピクセル形式で扱えるようにするライブラリを作っていた。
+
プラナー形式で[[疑似スプライト]]を実現しようとするとアホみたいに面倒な処理が必要であり、[[ゲーム]]などには不向きであったため、多くの[[プログラマー]]は手軽に[[パックドピクセル]]形式で扱えるようにする[[ライブラリ]]を作っていた。
  
 
==関連項目==
 
==関連項目==

2014年10月6日 (月) 11:07時点における版

'プラナー英語: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ビットというバイト単位ではなくビット単位という鬼のように面倒な代物であった。

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

関連項目

参考文献