融けるような視点移動効果を実現する三次元再構築手法 Ambient Point Clouds

いよいよ今年もSIGGRAPHが始まる時期となった。本エントリでは、ダルムシュタット工科大学 (TUD) とマイクロソフトの合同チームによる、"Ambient Point Clouds for View Interpolation"と題されたtechnical paperから魔法のような視点補間技術を紹介したい。

まず、デモビデオをご覧いただくのが良いだろう。最初の方は既存手法の説明となっているが、目的は複数の写真をシームレスにつないで、破綻なく別視点に移動できる3次元モデルを再構築することである。02:44あたりから手法の適用結果が示されているので、まずそこを御覧頂きたい。これは、たとえばFlickrから集めてきた写真(当然カメラ位置も不明)から一切人の手を経ず全自動で生成されるのだ。




以下、論文*1に従って本手法の概要について説明を行う。本エントリで扱う図表は論文からの引用である。例によって詳細は、論文を参照願いたい。


【告知】[twitter:@LunarModule7]でつぶやいています。
興味のあるかたはフォローください。

概要

90年代半ばから視点補完技術やIBR(Image-based rendering)技術は長足の進歩を遂げているが、これらの技術では3Dモデル再構築の際に、精度不足やデータ不足などの要因によって、実際には存在しないゴーストや、モデルが欠けるホールやクラック等の不整合を生じる場合が多い。

本研究では、位置や距離などソースが持つ様々な不確かな情報を許容し、先の視覚的不整合を和らげた3Dモデルを再構築することを目的としている。本システムでは、不確かな領域はそれぞれのピクセルの視線光線上の半透明の3Dセグメントとして描画される。結果として、視点間のカメラの移動に伴い、不確かな領域はピクセル移動方向のストリーク(筋)に融けて、移動先の視点に近づくにつれて、再びリアルな質感を取り戻すように描画される(文章で記述するとややこしいが動画を見れば分かるはず)。

現在の実装では、これらのセグメントやストリークはランダムにサンプリングされた色付点として描写され、Ambient point cloud(周辺点状雲とでも訳すのか?)と名付けられている。これにより、精度の低い距離値が原因のゴーストが低減され、ホールやクラック等がAmbient point cloudによって埋められる。ただし、精度高く3Dモデルが再構築できる部分は、くっきりとした表示を行うべきであり、本システムは従来手法の応用による3D再構築手法にAmbient point cloudを加えて全体として最適な表現が行えるように工夫されている。

Ambient point cloud



図1:不確かな距離値を伴うエピポーラ幾何

図1を参照しつつ、基本的な考え方について説明する。仮にシーン上の点Pが2つの視点C1C2から正確に再構築されていたとすると、任意の視点CMから一切の破綻なしに完全に描画することができる(図1(a))。

しかし仮に2つの視点C1C2からの距離が若干の誤差を含みP'P''として構築されている場合には(図1(b))、ベクトルC1C2上の視点CMからの点Pはエピポーラ線上の2点に2重にマッピングされてしまう。これがゴーストの原因となる。もし、カメラが十分に高密度に配置されC1C2間の距離が小さければ、ゴーストの発生は抑えられるし、Pが均一な領域にあれば、ノイズは目立たない。しかし、小さなノイズでも積もり積もって大きな破綻を生んでしまう。

そこで、距離情報がアテにならないと考えると、2つの視点C1C2からその視線上に点Pが存在するということだけが確かな情報となる(図1(c))。緑と青で記した線上のどこかに点Pは存在する。この2本の線は、エピポーラ幾何学により、ベクトルC1C2上の視点CMから見た際には、1本に重なって見える。

視点C1からC2への遷移を考えると、まず点Pは視点C1からのオリジナルのビューを用いて描画される。その後、移動にともなって、線に分解され、視点C2に近づくにつれて、1点に集約してゆき、最終的には視点C2からのオリジナルのビューによる描写となる。2つの視点に基づく線が遷移中に重なるため、スムーズな遷移が実現するのだ。

Ambient point cloudはそれぞれの視点から見たdepth mapに対して、複数の点からなるクラウドを生成し展開することによって構築される。ここでは上記の各線上にいくつかの点を配置し、ぞれを全体に展開することで点描画のようにクラウドを生成している。これは誤差に起因する描画の破綻を和らげる効果がある。遷移の際に、点は一旦複数の点からなる線に分解され、その後線から一点に集約するように動く。

データ再構築

データ再構築にあたっては一般的な手法を組み合わせて利用している。まず入力画像は頑強なStructure-from-Motion (SfM)アルゴリズム*2によって、シーン形状や視点の動きを算出する。その後MVS(multi-view stereo)システム*3に基づいて各視点からの距離を表すdepth mapを生成する。depth mapは視点から各ピクセルまでの距離とその信頼度から構成される。

本手法では、この入力画像とdepth mapに基づき、次の3つのデータを生成する。1つは各視点から見える信頼性のある位置を表すPer-view depth map、もう1つは不確かな距離が雲状に分散されたAmbient point cloud、最後はシーン全体のコンテキストを表すGlobal point cloudである。それぞれに付いて以下に概要を説明する。

Per-view depth map



図2:depth map

図2はデータセットのひとつの入力画像(左)とそれに対応する生のdepth map(中)と、最終的に補正後のdepth map(右)を示したものである。MVSから得られる生のdepth mapは細かな凸凹まで表現されているが、小さな孤立したクラスタや中程度の孔などの異常値を除外したほうが良い描画結果が得られるので、前処理でそうした値を除外する。最終的に残った値は信頼できるdepth値として扱う(後過程でくっきりと描画される)。一方、全ての除外された値は再構築され補間された位置の95%の距離に直交するimpostor planeに描画される。このプレーンより後ろに位置する全てのピクセルはこのプレーン上に固定される。このimpostor planeは遷移の最初の5%と最後の5%の間だけ描画される。

Ambient point cloud

再構築も補間もされなかった信頼性の低い、depth map上のそれぞれのピクセルに対して、視線方向の線上に5つの点を分散して配置する。この点の集合がAmbient point cloudを生成する。Ambient point cloudを構成する各点は各depth mapの最小値の0.8倍から最大値の1.5倍までの間に分散される。補間視点CMC1ないしC2に接近すると、点がノイズとなって目立つので、視線方向に僅かなジッタを加えることで、ノイズの発生を回避している。

Global point cloud

全てのdepth mapにおける再構築された3次元点の集合は、点ベースの全体モデルを構成する。扱いに都合がいい大きさのモデルを得るために、すべての点からランダムにサンプリングしてGlobal point cloudを得る。このGlobal point cloudは2つの入力ソースの視野から外れた部分の形状に対するヒントを表示する為に利用される。

レンダリング



図3:レンダリングパイプライン

レンダリングにおいて、各depth mapはテクスチャの貼られた三角形メッシュに変換される。遷移の間、補間視点CMの位置と方向とその視界はリニアに補間される。CMの流れるような動きを生成するために、リニアな時間tではなく、緩やかな1次元ベジエ曲線を描くp(t)を用いている。以下、図3を参照しつつ全体のレンダリング処理について説明する。

Global point cloud

まず、補間視点CMから見た、細かな点の集まりで構成されたGlobal point cloud(GP)を直接フレームバッファに書き込む(図3(a))。これは全体的な背景モデルを提供すると共に、大きな遷移を行う際に全体の流れを把握する際に役に立つ。

Ambient point clouds

次に遷移開始点と終了点の2点からみたAmbient point cloud(AP1、AP2)から補間視点CMから見たAmbient point cloudを生成する(図3(b))。ここでは、リニアな遷移時間tに応じた重みに応じて、各視点のAmbient point cloudにおける各点の色を合成し、最終的なAmbient point cloudを生成している。生成されたAmbient point cloudをフレームバッファに書き込む(図3(c))。

Per-view depth maps

次に遷移開始点と終了点の信頼できるdepth値を有するテクスチャ付きのdepth map(DM1、DM2)から、遷移時間tにおける補間視点CMの視野を生成する(図3(d))。ノイズの原因となる不連続部分を削除した上で、フレームバッファに追記しすべてを合成する(GP, APs, DMs)。それぞれのピクセルは、depth map由来のくっきりとした描画か、point cloud由来のぼんやりした描画か、何も描画されないかのいずれかになる。遷移の間、遷移開始点と終了点のdepth map合成の際のそれぞれの重みはp(t)によって制御される。遷移の最初と最後の5%にはimpostor planeが描画される。

結果

ここでは、ピサの斜塔データセット(画像1103枚)、タウンスクエアデータセット(画像289枚)、そしてFlickrからダウンロードした教会データセット(画像100枚)を用いている。全てのデータセットは、一切のユーザ介在を伴わず全自動で再構築されている。その結果に関しては上記に示した動画を今一度参照してもらいたい。



図4:ピサの斜塔

図4はピサの斜塔の50%移動時の様子を示したものである。左は遷移開始点と終了点それぞれのdepth mapを重ねあわせたものである。真ん中はglobal point cloudとともに合成して描画したものであり、右はさらにambient point cloudを追加したものである。移動効果が違和感なく追加されていることが分かる。



図5:タウンスクエア

図5はタウンスクエアのデータセットを示したものである。左上はdepth map由来の確かな位置情報に基づく描画だけを抽出したものであり、右上はそれにglobal point cloudのみを追加したものである。左下はambient point cloudのみを追加したものであり、右下はすべてを追加したものだ。それぞれが応じてうまく補間しあって、画面を作っている様子が分かるだろう。



図6:教会(障害物の除去)

図6は教会データセットにおいて人物が写っており、建物を遮蔽している様子を示している。左が最初の遷移開始点、中が30%、右が50%遷移した時の描画を示している。教会を遮蔽している人物が自然に消えて、その後ろに生じるはずのホールがうまく埋められていることが分かるだろう。



図7:教会(大幅な色の変化)

図7は教会データセットにおいて照明の様子が全く異なる2枚の写真間の遷移を示している。上列はそれぞれ0%、50%、100%の遷移時刻を示しており、下列は50%の遷移時刻における教会の一部を拡大したものだ。下列左はソフトZバッファとアルファ正規化を有効にした例、中はソフトZバッファを無効に、右はアルファ正規化を無効にした例である。テクスチャのブレンディングがソフトZバッファとアルファ正規化によって自然に実現出来ている。



図8:教会(長距離跳躍)

図8は非常に大きな距離の視線移動を行った例である。こうした視線移動は既存の再構築手法では破綻してしまうのだが、global point cloudとambient point cloudがうまく遮蔽領域を埋めて、全体として良い3Dシーンを演出している。前面の障害物は遷移の際にスムーズに融けて見えなくなってしまう。

まとめ

本研究はPhotosynthを提供するマイクロソフトによるものであり、早晩Webの写真共有サイトは同様の再構築サービスを提供するようになると期待される。 Web上の膨大な写真からローマを1日で構築する方法で示した、街全体を対象とするような再構築もより高いクオリティで実現できるはずだ。

多くの人がカメラを持ち、その一瞬一瞬を切り取っていくことで、その一瞬を後からより高い自由度と臨場感をもっていつでも再体験することができる時代がまさに明けようとしている。

*1:Michael Goesele, Jens Ackermann, Simon Fuhrmann, Carsten Haubold, Ronny Klowsky, Drew Steedly, Richard Szeliski: "Ambient Point Clouds for View Interpolation", In: ACM Transactions on Graphics (Proceedings of ACM SIGGRAPH 2010), Los Angeles, USA, July 25-29, ACM, New York, 2010, to appear.

*2:SNAVELY, N., SEITZ, S. M., AND SZELISKI, R. 2008. Skeletal graphs for ef?cient structure from motion. In Proc. CVPR.

*3:GOESELE, M., SNAVELY, N., CURLESS, B., HOPPE, H., AND SEITZ, S. M. 2007. Multi-view stereo for community photo collections. In Proc. ICCV.