4

(ubyte は unsigned char です)

たとえば、カラー クラスで RGB 値に float 値を使用するポイントは何ですか? より正確になりますか?宇宙はどうですか?float と ubyte を使用することのパフォーマンス上の利点/障害は何ですか?

4

2 に答える 2

4

プロ:

  • 数学を行うときに float との間で変換する必要はありません
  • 多数の処理ステップを順次適用すると、中間値がより正確に保持されます
  • ダイナミックレンジと解像度が大幅に向上
  • float は GPU などの自然な形式です

短所:

  • より多くのストレージが必要です
于 2012-12-24T14:35:45.243 に答える
3

おそらく、それはより高い精度を提供します。他の回答で述べたように、前後に変換する必要がないという利点もあります。これにより、中間結果が失われる結果が生じます。浮動小数点で 1.0 (バイトで 255) のピクセルがあるとします。 0.65 を掛けます。それを整数に戻すと、166.75 になりますが、切り捨てて 166 にします。つまり、0.75 を失います。さらに計算を行うと、エラーが大きくなる可能性があります...そしてもちろん、中間ステップで値が 255 (1.0) を超えたり、0 (0.0) を下回ったりする場合、新しい値を保持することは完全に可能です。必要に応じて後で「修正」します。

もちろん、(一般に) より少ないスペースに多くのデータを格納することはできないため、典型的な float は 1 バイトの 4 倍の大きさになります。一部の GPU には、11 ビットの仮数部と 4 ~ 5 ビットの指数部を保持する 16 ビット浮動小数点数があり、ほとんどの種類の単純なピクセル演算に適しています。しかし、それでもサイズは 2 倍ですが、「精度」は 2 倍ではありません (私の同僚は、16 ビット浮動小数点数を使用して 32 ビット浮動小数点数の結果と一致するアルゴリズムを取得しようと多くの時間を費やしましたが、まったく到達しませんでした)。 .

于 2012-12-24T14:50:12.343 に答える