- ベストアンサー
一般のソフトで画像を扱う場合、解像度が2のべき乗だと効率がいい?
一般のソフトで画像を扱う場合、解像度が2のべき乗だと効率がいい? ゲームの開発などで画像を扱う場合、解像度が 256×256pixel とか 512×512pixel というように、2のべき乗にすることになっています。 その方がメモリの効率がいいからだと聞いています。 では、一般のパソコンソフトでも同じことが言えるのでしょうか? Office や Photoshop や 3DCGのソフトで画像を読み込む場合でも、解像度を2のべき乗にした方がメモリの効率がいいのでしょうか?
- みんなの回答 (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ソフトについては、マップ用にはべき乗サイズしか受け付けない、とか、自動で変換するとかしているかもしれません。
お礼
コンピューターのソフトすべてに共通した法則かと思っていたのですが 効率がいいといっても、ソフトによっていろいろな方法があるんですね。 特に2のべき乗を推奨しているわけではないソフトなら、2のべき乗に したところで効率がいいとは限らないので、それにはこだわらないことにします。 詳しくご説明頂いてありがとうございました。