🍏

ハイダイナミックレンジイメージ(HDRI)とは何か?

に公開

初めに

以前にこのような360度の画像はHDRIであるhdr/exrファイルとして保存するのが適切であると学びました。

実際にこのフリー画像が掲載されているサイトからダウンロードする際はhdr/exr形式で保存されます。

AIに聞いてみるとHDRIとは「人間の目に見えるような、明るい部分から暗い部分まで、非常に広い範囲の輝度(明るさ)情報を記録した画像」だそうですが、いまいちピンと来ないので詳しく見てみました。

比較してみる

これスクリーンショットだとpngファイルになってしまうので違いがわかりませんが、上のHDRIと下のpngファイルだとランプの明るさが違っています。HDRIの方はより輝いていました。
hdr/exrファイルはアップロードできないみたいです。。

HDRIとは

ではこのHDRIですが、主に二つの特徴があります。

RGBを16bitで表現している

通常のRGBは#FFFFF(白)のように8bitで表しますが、HDRIでは16bitを使っているみたいです。
そのおかげでより現実世界に近い色を表現できます。
リアルの世界は階調が無限ですからね。
[https://www.geeksforgeeks.org/electronics-engineering/difference-between-8-bit-and-16-bit-color-format-in-dip/]

値をfloatで表現している

通常のRGBでは#FFFFFF(白)や#000000(黒)のように0~255の整数(integer)で色を表しますが、HDRIでは浮動小数点(float)で表現します。

integerでの表現だと例えば16bitだとして0~65535で表せても正規化すると 0〜1.0に圧縮するので元が65535以上の数だと白飛び(一定以上の明るさは全部白になる)が起こってしまいます。

↓白飛びの例

対してfloatだとintegerでいう0~65535までを+-1で表せれて、そこからさらに+-65535まで明るさを表現できます。
輝度は太陽光が(10^6)で夜空が(10^{-6})なので0~1だとかなり足りないですね。

こちらのサイトの解説が非常に分かりやすかったです。
https://sproutmel.blogspot.com/2015/02/photoshophdri-1.html

このおかげで比較した時のような輝度を感じることができたみたいですね。
特に輝度に関しては違いを実感するために試しにダウンロードして見てみるといいと思います。ランプの眩しさが伝わってきました。↓
https://polyhaven.com/a/warm_restaurant_night

参考にさせてもらった記事

https://knowledge.shade3d.jp/knowledgebase/イメージ(画像)のファイルフォーマットはどれ

http://vig.is.env.kitakyu-u.ac.jp/etc/hdri.html

NCDC テックブログ

Discussion