「プラナー方式」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
'''プラナー'''([[英語]]:Planar)とは、[[コンピューターグラフィックス]]における二次元画像の表現方式のひとつである。
+
'''プレーナー'''([[英語]]:Planar)とは、[[コンピューターグラフィックス]]における二次元画像の表現方式のひとつである。
  
 
==概要==
 
==概要==
プラナーはある画像を表現する際に[[色空間]]の色成分ごとに分離した状態で保持している形式のことをいう。
+
プレーナーはある画像を表現する際に、[[色空間]]の色成分ごとに分離した状態で保持している形式のことをいう。
  
たとえば[[RGB]]であれば以下のように分離された形式で[[データ]]が保持されているものをプラナー方式という。
+
たとえば[[RGB]]であれば以下のように分離された形式で[[データ]]が保持されているものをプレーナー方式という。
 
*RRRRRRRRRRRRRRRR〜
 
*RRRRRRRRRRRRRRRR〜
 
*GGGGGGGGGGGGGGG〜
 
*GGGGGGGGGGGGGGG〜
 
*BBBBBBBBBBBBBBBB〜
 
*BBBBBBBBBBBBBBBB〜
 
[[Photoshop]]などでいえば[[原色]]ごとに[[レイヤー]]があるような感じである。
 
[[Photoshop]]などでいえば[[原色]]ごとに[[レイヤー]]があるような感じである。
 +
  
 
逆に分離されていないものを[[パックドピクセル]]方式という。
 
逆に分離されていないものを[[パックドピクセル]]方式という。
14行目: 15行目:
  
 
==利点==
 
==利点==
プラナーは色ごとに処理したい[[アルゴリズム]]において扱いやすい形式であるとされる。
+
プレーナーは色ごとに処理したい[[アルゴリズム]]において扱いやすい形式であるとされる。
 
これには画像圧縮や画像認識などの多くが該当する。
 
これには画像圧縮や画像認識などの多くが該当する。
  
有名なところでは[[JPEG]]や[[JPEG2000]]といった画像圧縮アルゴリズムの多くが内部処理においてプラナー形式を採用している。たとえばJPEGの内部では、赤色を圧縮する、緑色を圧縮する、青色を圧縮するという感じで色ごとに処理するようになっている。また[[OpenCV]]も内部的にはプラナー方式を採用している(OpenCVが依存している[[Intel Image Processing Library]]がプラナー形式を採用している)。
+
有名なところでは[[JPEG]]などのが採用している。
 
+
JPEGでは、赤色を圧縮する、緑色を圧縮する、青色を圧縮するという感じで色ごとに処理するようになっている。
[[Kinect for Windows v1]]の[[SDK]]もベータ版のころはプラナー方式を採用していたが、正式版では[[プログラマー]]が扱いやすいよう配慮したのか[[パックドピクセル]]に変更になっていた。
 
  
 
==欠点==
 
==欠点==
一方で[[ピクセル]]単位で処理したい場合には、たとえばRGBのプラナー方式だと1[[ピクセル]]を得るのに3カ所もの[[データ]]にアクセスして、さらに合成した値を使用せねばならず、非常に効率が悪い。
+
一方で[[ピクセル]]単位で処理したい場合には、たとえばRGBのプレーナーだと1ピクセルを得るのに3カ所もの[[データ]]にアクセスして、さらに合成した値を使用せねばならず、非常に効率が悪い。
 
<source lang="csharp">
 
<source lang="csharp">
// プレーナーは面倒
 
 
Pixel GetPixel(x, y)  
 
Pixel GetPixel(x, y)  
 
{
 
{
30行目: 29行目:
 
         | G[x,y] <<  8  
 
         | G[x,y] <<  8  
 
         | B[x,y]
 
         | B[x,y]
}
 
</source>
 
<source lang="csharp">
 
// パックドピクセルなら簡単
 
Pixel GetPixel(x, y)
 
{
 
    return RGB[x,y];
 
 
}
 
}
 
</source>
 
</source>
45行目: 37行目:
 
==主な採用事例==
 
==主な採用事例==
 
===PC-9801シリーズ===
 
===PC-9801シリーズ===
[[PC-9801シリーズ]]の[[GRAM]](今でいう[[VRAM]])はプラナー形式が採用されており、合成処理は[[ハードウェア]]内部で自動的に行われていた。
+
[[PC-9801シリーズ]]の[[GRAM]](今でいう[[VRAM]])はプレーナー形式が採用されており、合成処理は[[ハードウェア]]内部で自動的に行われていた。
しかも[[RGB]]各色1[[ビット]]と濃淡1[[ビット]]という[[バイト]]単位ではなく[[ビット]]単位という鬼のように面倒な代物であった。
+
しかもRGB各色1ビットと濃淡1ビットというバイト単位ではなくビット単位という鬼のように面倒な代物であった。
  
プラナー形式で[[疑似スプライト]]を実現しようとするとアホみたいに面倒な処理が必要であり、[[ゲーム]]などには不向きであったため、多くの[[プログラマー]]は手軽に[[パックドピクセル]]形式で扱えるようにする[[ライブラリ]]を作っていた。
+
プレーナー形式で[[疑似スプライト]]を実現しようとするとアホみたいに面倒な処理が必要であり、[[ゲーム]]などには不向きであったため、多くのプログラマーは手軽にパックドピクセル形式で扱えるようにするライブラリを作っていた。
  
 
==関連項目==
 
==関連項目==

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート:

このページは 1 個の隠しカテゴリに属しています: