プロが教えるわが家の防犯対策術!

一般のソフトで画像を扱う場合、解像度が2のべき乗だと効率がいい?

ゲームの開発などで画像を扱う場合、解像度が 256×256pixel とか 512×512pixel というように、2のべき乗にすることになっています。
その方がメモリの効率がいいからだと聞いています。

では、一般のパソコンソフトでも同じことが言えるのでしょうか?
Office や Photoshop や 3DCGのソフトで画像を読み込む場合でも、解像度を2のべき乗にした方がメモリの効率がいいのでしょうか?

A 回答 (1件)

例えば、 3Dゲームで画像を使うものに、マッピングがありますが。


表示内容に合せて拡大縮小する際には、乗除算が多く使われます。
例) 表示画像幅 w の 座標x (0≦x≦w)に対応する 幅Wの元画像の座標Xは
X= ( x / w ) * W
= W * x / w
逆に, Xに対する xは
x = w * X / W

一般的に、乗除算は、加減算に比べて時間のかかる演算です。
しかし、2の整数べき乗の乗除算に限れば、計算を早くできます。
演算が整数なら、 べき乗数の分ビットシフトするだけです。
演算が浮動小数点なら、コンピュータの内部表現は 仮数 * 2^n なので、このnを加減算するだけです。

計算量の多い3Dグラフィックでは、こういう小さな積み重ねが大きく影響します。


また、最近の32bitや64bit等のCPUでは、データはまとめて4バイト8バイト単位でアクセスするようになっているのが多いです。
そのため、中途半端なアドレスからアクセスするのは効率が悪いです。
Windowsのbitmap形式等、このような制限を回避するために、水平方向のデータは4の倍数になるように、ダミーのデータを入れています。
これが、(4以上の)2のべき乗幅なら、絶対4の倍数になるので、ダミーの必要がありません。

あとは、高速フーリエ変換は2のべき乗に限定した高速化手法です。


これが、一般のソフト、となると、なんとも言えません。
内部でどんな風にあつかってるかわからないからです。
また、「効率」にも速度的なものと空間的なものがあって、排他的な傾向のものが少なくありません(高速なのは容量を使う,省容量では速度が遅くなる)

また、元のべき乗でない画像を、べき乗解像度に変換するには、拡大か縮小が必要ですが、拡大すればその分必要な容量が増えますし、縮小すれば画質が落ちます。
例えば、 320x320を512x512にすれば、画素数は約2.6倍です。いくらべき乗サイズが効率が良いとしても、2.6倍の容量と相殺以上の効果があるとは思えません。


これらのうち、3DCGソフトについては、マップ用にはべき乗サイズしか受け付けない、とか、自動で変換するとかしているかもしれません。
    • good
    • 0
この回答へのお礼

コンピューターのソフトすべてに共通した法則かと思っていたのですが
効率がいいといっても、ソフトによっていろいろな方法があるんですね。

特に2のべき乗を推奨しているわけではないソフトなら、2のべき乗に
したところで効率がいいとは限らないので、それにはこだわらないことにします。

詳しくご説明頂いてありがとうございました。

お礼日時:2010/09/21 00:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A