日々適当

hibitekitou

単一露光画像からのHDR画像生成ってのを試してみた

cg |2017-10-29
単一露光画像からのHDR画像生成ってのを試してみた

HDR image reconstruction from a single exposure using deep CNNs

こちらのページ。
難しい理屈や実装手法はさておいて、単一露光画像をHDR画像にしますよって手法をPythonで実装したコードを配布しております。
ということで試してみました。

とはいえ、単にPythonが動くだけじゃダメで、Pythonに標準で入っていないモジュールをいくつか導入する必要があります。試したのはmacOS High Sierra 10.13でございます。もともとHomebrewが入っている環境です。

必要なモジュール(パッケージ)は
TensorFlow, TensorLayer, OpenEXR, NumPy, SciPy
とのこと。つまりは機械学習ですね。TensorFlowはGoogleが提供する機械学習ライブラリ。TensorLayerはそのラッパーライブラリだそうです。まぁつまり、よく分かっていません。機械学習は表面的な部分だけでもそのうちちゃんとやっておきたいです。

環境構築していきます。

TensorFlowを中心とした機械学習環境をMacで構築 [Qiita]

brew install python3
#仮想環境上に構築しようと思います。
pip3 install virtualenv
#カレントディレクトリにtensorflowって名前の仮想環境構築です。
virtualenv -p python3 tensorflow
#仮想環境に移行します。(仮想環境から抜けるときは deactivate を実行するだけ)
source tensorflow/bin/activate
#ここにパッケージを入れていきます。
pip3 install tensorflow
pip3 install tensorlayer
pip3 install openexr
#numpyとscipyは以下を実行すると
#already satisfiedと出ました。
pip3 install numpy
pip3 install scipy

ということで基本環境は出来上がり。
一番上のサイトからダウンロードしたソースコードの入ったzipファイルはhdrcnn-masterというフォルダを作ります。これと仮想環境のtensorflowが同じ階層にあるという想定で、以下は進めています。

使い方を見ると、Trained CNN weights to be used for the inference, can be found here. となっております。CNN。機械学習をやると当たり前に出てくるものみたいですが、当たり前じゃない世界にまだまだ在住しているもので、とりあえずこれが必要とだけ理解しときます。hdrcnn_params.npzというのが落ちてきますので、これをhdrcnn-masterフォルダに入れました。

あとはコマンドを実行するだけ。関連するファイルの階層は以下の通り。

./ ←この階層でコマンド実行。
./hdrcnn-master/hdrcnn_predict.py ←このスクリプトを実行
./hdrcnn-master/hdrcnn_params.npz ←ダウンロードしたCNNに関するもの
./imputImage.png ←この画像ファイルに対して処理を実行(1024x768の画像)

python hdrcnn-master/hdrcnn_predict.py --params hdrcnn-master/hdrcnn_params.npz --im_dir imputImage.png --width 1024 --height 768

となります。
こうして変換してみた画像は、



こんな感じ。左上がオリジナルの画像。左下が変換後の画像(32bit exr)。右側がそれぞれにPhotoshopの露光量を-2にしてみたものとなります。変換後の画像は太陽の芯っぽいものが残っていることがわかりますな。

明るい部分の周囲が完全に白く飽和してしまているような画像に対しても、なんとなく頑張ってくれているように見えます。



肉眼では奥の山の形はほぼ認識できないのだけど、わずかに明度差が生じていたからか、そこから山のすぐ向こうに光源がある的な解釈をして変換をかけたのでしょうか。

これはなかなか良さそうですかね?



ちなみに、変換をかけた画像ってのはTHETA Vで撮影したものですけど、これのオリジナル解像度(5376x2688)だとMacが落ちました(マウスの動きが悪くなり、やがて動かなくなって画面がブラックアウト。再起動がかかる)。処理は半分の解像度に落としたもので実行しています。
コメント ( 0 )|Trackback ( )
  ・