フラッシュ有/無の2枚の写真から3次元再構成


 また面白いことをやっている人が。凹凸のある壁面等について、同じ場面の写真を2枚撮る(1枚はフラッシュ有り、もう1枚は無し。)だけで3次元再構成が出来るという話。


Capturing 3D Surfaces Simply With a Flash Camera
Wednesday, August 27, 2008 - by Daniel A. Begun
HOT HARDWARE


 (追記:論文を読むと下のパラグラフの説明は正確ではなかった。ごめんなさい。論文へのリンクは下に。)


 仕組みは単純。フラッシュ無しで写真を撮ると、手前にあるものはより明るく、奥にあるものはより暗く写る。これだけではある場所が暗いのがそういう色だからなのか奥にあるからなのかは判らないけれど、この情報とフラッシュ有りの写真で得られる実際の色の情報とを比較することで、ピクセル単位での奥行きマップ(depth map)を得ることが出来ると。マンチェスター大学とドルビーの共同研究。


http://www.hothardware.com/newsimages/Item7550/height_field.jpg
(上記記事より)


 奥行きマップが得られるというだけなので、たとえば壁にツタが張っている場合のように分離された複数の奥行き面がある場合にはうまく再構成ができない。またより高コストなレーザースキャン等の結果と定量的に比べると精度は劣る。でも簡単な構造の場合だと人が目で見る限りでは実際の写真とほとんど見分けがつかないレベルの再構成が出来るらしい。


 この機能、デジタルカメラ等に実装するのはさほど難しくなさそう(単にフラッシュ前後で2枚撮るようにすればいいだけ)。再構成までカメラ内部でやるのは辛いかもしれないけど、データ(写真)さえあればあとでPCで処理すれば良い。数年後のデジタルカメラには「立体撮影モード」とかいうのがついているのかも。ブレを防ぐためには三脚は前提か。


追記:

 SIGGRAPH 2008 での論文やビデオ資料を含んだもう少し詳しい情報がこちらに↓。


Surface Depth Hallucination
Advanced Interfaces Group
School of Computer Science, The University of Manchester


 まずフラッシュ有りの写真と無しの写真の輝度の差分を基にして反射率(albedo)マップを作成する。次に反射率マップとフラッシュ無し写真との比を取ることで(反射率の影響を排除した)陰影(shading)マップを得ることが出来る。これの各位置を半球あるいはシリンダーとしてモデル化して奥行きマップを計算しているらしい。


 これまでも陰影の情報を用いて奥行きを求めるという手法はあったけれど、写真一枚からだと暗い部分が反射率が低いのか影なのか判別できない等の情報不足の問題があった。このため従来は様々な仮定(反射率は一様だとする、等)を置くことでこの問題を解いていたけど、今回はフラッシュ有/無の2枚の情報を使うことで反射率マップをちゃんと求めることが出来た。またそこからより正確な陰影マップを得ることが出来たので、あまり ad hoc なことをせずに奥行きマップを作ることが出来たと。


 しかし、こんなところで DJ Heeger や EH Adelson、JR Bergen、はては VS Ramachandran の名前を見つけるとは。世の中狭い。


関連:

 CrazyBump という一枚の画像から depth map を作ってくれるソフトがあるらしい。これもすごい。
http://www.crazybump.com/
(via: Nao_uの日記