2012年03月06日

HDR画像のトーンマッピングについて その3

HDRレンダリングについて下記サイトの041〜051まで読みました。
http://news.mynavi.jp/column/graphics/041/index.html

ブルーム効果というものを試してみました。
http://news.mynavi.jp/column/graphics/050/index.html
MMEでいうところのAuto Luminousのような感じでしょうか。

本来はシェーダ側で全部やる気がしますが、手抜きでOpenCVを使用しています。
そんなわけで今回のはリアルタイムでは動いていません。

手順
1. HDRテクスチャを使ってFBOにレンダリング
2. 閾値より明るい画素の画像を生成
4. OpenCVのcvResizeとcvSmoothを使用してブルーム画像を作成
5. 結果を加算してからトーンマッピング

注意点?として、FBOにレンダリングしてその結果を取得した場合はfloat型でデータを取得できますが、glReadPixelsを使用した場合は、型にGL_FLOATを指定しても0.0〜1.0の間に切り詰められてしまうようです。

実行結果

ブルーム画像(左)と実行結果(右)

blumeImage.png hdr_blume_001.png

1/2, 1/4, 1/8, 1/16, 1/32の5枚の縮小画像を作成し、cvSmoothでぼかしてcvResizeで元の大きさに戻してcvAddで加算したものが左の画像です。
もっと広範囲にぼかした方がよさそうですね。



本来は閾値ではなく平均輝度などからブルームに使用する画素を決定するようですので、その辺りの影響かトーンマッピングの影響かはわかりませんが、角度によって明るさが変わってしまっています。
posted by シンドラー at 23:42 | Comment(0) | TrackBack(0) | OpenGL & Metasequoia | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック