Processingを使ってHDRフォト作成ソフト自作にチャレンジ 〜トーンマッピングの奥深い世界〜

HDRフォトに興味しんしん丸

 実は昔からHDRフォトに興味があったりして、今でこそiPhoneにも搭載されたりと一般的な技術になっていますが、一昔前(といっても結構昔ですが)は、HDRというのは専用なソフトを使った特殊な画像処理というイメージで、FlickrのHDRグループを羨望の眼差しで見つめていたものです。

 代表的なソフトはPhotomatixというソフトで、ずっと欲しいなと思いつつ、HDRのためだけにソフトに1万円払うのはもったいないなと思いながらここまできてしまっていました。それがここ数日突然HDR熱が再燃しまして(理由は不明)、Photomatixも今は5000円くらいで買えるみたいだし、買っちゃうかーと思っていたら、ふと「HDRってただ露出変えた写真合成してるだけだし、ソフト自作できるんじゃない?」と思いついてしまいました。思いついたら止まらないのが自分の悪い癖で、取り憑かれたようにHDRについて調べ出してしまいました。

 そもそもHDRというのは複数枚の露出の異なる写真(明るい写真、普通の写真、暗い写真)を合成して、暗いところから明るいところまで万遍なく表示してやろうという技術で、Photomatixというソフトを使ってパラメータ弄ると、絵画みたいな幻想的な画像がつくれたりするのですが、実はなんでそんな写真ができるのかあんまりわかってなかったりしました。
 調べてみると、HDR写真はまず露出の異なる写真を合成するのですが、写真というのはRGBそれぞれ0〜255の8bitのデータで構成されていて、複数枚合成、例えば3枚合成すれば当然情報量は1枚のときの画像の3倍になるわけです。ただそれだけの情報量があっても、普通のモニタは8bitまでしか対応していないため意味なくて、そこから、ディスプレイに表示できる8bitのデータに情報量を落としてやる必要があるわけですが、この情報量を落とすときにきれいに見えるよううまく調整するところを「トーンマッピング」と言って、調べたらかなり色々な手法がある奥深い分野でした。論文とかも結構書かれているみたいです。

 論文見たら、対数平均輝度を使ったトーンマッピングがメジャみたいなので、それとPhotomatixの使い方解説したWebサイト見て、Photomatixで行っている処理の方式をなんとなく想像してPhotomatix風のオリジナルのトーンマッピングを実装してみることに。最初何度やっても黒白の変な画像しか出なくて苦戦していたのですが、適当に式入れ替えてたりしたら、なんとなくそれっぽいのができました。

 題材は昔撮影した工場写真です

120720_ToneMappingTest_Before
 トーンマップ実施前

120720_ToneMappingTest_After
 トーンマップ実施後

 トーンマップだけで、自分が期待した効果が結構得られてしまいました。自分が憧れていたHDRフォトって、実は露出違いの写真を合成するところじゃなくて、トーンマッピングのところが重要だったのかというのがわかり結構驚きでした。多分世の中の1枚のJPEGからHDR風の画像つくる疑似HDRソフトは、多分トーンマッピングだけやっているんだろうなー、とか思ったり。オリンパスのHDR風アートフィルタの「ドラマティックトーン」もひょっとしたらトーンマッピングだけだったりするんじゃないかなと思ったり。まあ合成していても不思議ではないのですが。

 ソフト自体はまだまだいまいちなので、パラメータやアルゴリズム弄るのと、いよいよHDRに挑戦しようかなと思います。うまくいったらソフト公開予定です。ひょっとしたらめんどくさくなってPhotomatixを買ってしまうかもしれません。そしたら全て無かったことにさせて下さい。

参考

FlickrのHDRグループ
 ため息が出るくらいきれいな写真がたくさん

トーンマッピングの論文
 一番上のリンクで論文が読めます。英語。

日本語の論文
 上記の論文をベースに少し工夫した手法を論文にしているっぽいです。