2017-10-07[n年前へ]
■スマホ撮影画像の「距離マップ」を使って「レンブラント」写真を撮ってみる
AppleのiPhone新機能の紹介記事、”コスプレをiPhone 8 Plusの新機能「ポートレートライティング」で撮影するとこうなる”がとても面白いです。内容は、(おそらく)スマホのステレオカメラなどを使って得られる「スマホの撮影画像に写る各点までの距離マップ」を使った画像処理により、さまざまな照明効果を使った写真撮影や動画撮影ができるというものです。紹介記事中では、 ”iPhone 8 Plus / Xの新機能「”ということだったので、普通のスマホで同じことをやったらどうなるか?を簡単に確かめてみることにしました。
やったことはとても簡単です。まず、普通のスマホ(iPhone 6s )で撮影位置を少し動かしながら画像を撮り、その画像から3次元・距離マップ情報を作り出します。そして、その距離情報を使って、撮影画像の色画像に適切な階調変換や照明処理を掛けてやるわけです。
距離マップ情報が無い場合、つまり、色画像情報だけだと、(もしも単純に処理をしたとすると)「同じ色・輝度の場所は同じような画像処理を掛ける」ことになってしまいます。すると、階調変換処理により被写体だけを浮かび上がらせようとしても、背景にも同じ階調変換処理が掛かってしまい、できばえがイマイチということになってしまいます。けれど、距離マップ情報があれば、被写体だけを上手く浮かび上がらせた処理も、割と楽にできるというわけです。
というわけで、撮影した生画像(左下画像)から、他撮影画像(右画像)との視差で生成した距離マップを処理データとして使いつつ作成した「レンブラントライティング」を掛けてみたのが右下画像です。「同じ明るさの場所に対して同じような階調変換」が掛けられているのではないことがわかるかと思います。そして、被写体(マネキン頭部ですが)だけを浮かび上がらせることもわかるのではないでしょうか。
眺めていると、「レンブラントライティング」だけでなく、色んなリライティングの「モード」を、スマホのカメラで試したくなります。
2017-10-27[n年前へ]
■スマホの1ショット撮影でHDR(ハイダイナミックレンジ)画像を作り出してみる!?
機械学習を使った「単一露光画像からのHDR(ハイダイナミックレンジ)画像生成」の Paper PDF が出ていて、プロジェクトページ には Tensorflow / Pythonによるコードが公開されていた。
そこで、まずは iPhone 6s で撮影した1ショット RAW(DNG)画像(右)から、詳細がわかるように…というかGPUメモリが許す画像サイズに切り抜いた上で、HDR画像を生成してみました。それが下の結果です。下左側画像が(1ショット単一露光画像)入力画像で、下右側が機械学習が出力したHDR画像です。相対的に明るすぎて白飛びしている箇所が、それっぽくHDR生成されていることがわかります。
最近のスマホなら、高速連写機能を使ったHDR撮影が普通にできる時代です。とはいえ、動画撮影をするときは、そんなHDR処理が働かないもの。…ということは、撮影した「動画」が白飛びしていたりしたら、こんな機械学習による単一露光条件動画からのHDR動画を作り出してみるのも良いかもしれません。
ところで、下に貼り付けた画像は、全天周カメラ Ricoh Theta で撮影した単一露光条件の低解像度画像から生成してみたHDR画像です。…こうした全天周画像に対して機械学習で使われるCNN(Convolutional Neural Network)処理を掛けようとすると、XY座標系の2次元画像ではなく、曲率を持つ球表面に適用可能なCNN画像処理を掛けたくなります。…そんな全天周画像処理を探す旅に出たくなります。