Recusive Wang tiles sampler for importance sampling HDR image

by syoyo

Recursive Wang Tiles を使って HDR 画像のインポータンスサンプリングを行ってみました。
基本のコードは Recursive Wang Tiles の author のページにあるので、
私が実装したのは HDR 画像を読み込むのくらいを追加しただけです。

http://lucille.atso-net.jp/svn/angelina/sampling/recursive_wang_tiles/
http://lucille.atso-net.jp/svn/angelina/sampling/recursive_wang_tiles/rec_wang_tile.zip
(Windows バイナリ)

rec_wang_tile_128.png
128 samples

rec_wang_tile_3422.png
3400 samples

rec_wang_tile_galileo.png
窓の部分の輝度が高いので、そこを重点的にサンプリングしてほしいのですが、
まんべんなくサンプリングしてしまっている。

比較のために、SBR 2004 で実装した Penrose tile sampler の結果です。

http://lucille.atso-net.jp/svn/angelina/sampling/penrose_tile/
http://lucille.atso-net.jp/svn/angelina/sampling/penrose_tile/penrose.zip
(windows バイナリ)

ちょっと見づらいですが、緑色の点がサンプル点です。

penrose_grace.png

penrose_galileo.png

Penrose tile sampler だと、輝度の高い部分を重点的にサンプリングしています。

Recursive Wang tiles の subdivision は元のコードをそのまま使いましたが、
HDR 画像のインポータンスサンプリングを効率的に行うには向いていないようです。
これは少ないサンプル数で積分誤差を最小にするという意味です。
(RWT の持つ progressive 性は、Animated HDR image のインポータンスサンプリング
を行うときには役に立つでしょう) 
よって、しっかりとインポータンスサンプリングを行うためには、
subdivision の refinement 基準などをうまくやらないとかもしれません。

subdivision 後の tile が占める領域のピクセルの輝度を積分するなりして
threshold をうまく決めるなどでしょうか。

また、 galileo 画像のように高い輝度部分が小さい画像面積
しか覆っていない場合、precomputed されたサンプル点がちょうど輝度の高いピクセル
の位置をサンプルするようでないと、これもうまくいかなくなる原因なのかなと思います。

Advertisements