皆様はダン・ブラウンのベストセラー小説の映画化であるトム・ハンクス主演の「天使と悪魔」はご覧になられましたでしょうか。その「天使と悪魔」の後半クライマックスの聖堂のシーンで、撮影した元映像には映っていないはずの半透明のパイプオルガンが中心に映し出されて、カメラがそのパイプオルガンを中心にぐるっとまわるシーンがあります。半透明のオルガンはカメラが回転しても完全にカメラ視点と一致して表示されているので気づいていない方もいるかもしれませんが、あれは編集で後から追加されたCGです元の現地で撮影した映像には映っていません。
このように動画中のカメラの視点変化に沿って3DCG(この例ではパイプオルガンのCG)を違和感なく表示することができる編集技術を「マッチムーブ」と呼びます。今回はこのマッチムーブの仕組みと実際の製品例を紹介します。
ちなみに、この「天使と悪魔」でのマッチムーブは、世界的にも著名なマッチムーブアーティストであるDaniel Bauldwin氏の作品で、彼はこのほかに「インセプション」のマッチムーブも担当しています。
マッチムーブの仕組み
マッチムーブにおいて、3次元幾何(つまり地形や人物などの幾何的な形状)の算出とカメラの姿勢変化の計算に使われているのは、「Structure from Motion」という技術です。Structure from Motionとは、カメラの撮影位置が動いていく映像において、動画中の各特徴点の動きをトラッキングすることで、3次元幾何(Structure)とカメラ姿勢変化(Motion)を同時に算出するという技術です。
2枚の画像フレームにおいて、それぞれ「特徴点」対応する点の位置関係を用いて「エピポーラ幾何」というステレオ用の幾何を用いてStructure from Motionを行います。
特徴点というのは「ある画像における特徴的な点」のことです。例えば各物体の輪郭のコーナー(角の点)を検出してくれるような画像フィルタを適用してコーナーを検出することで特徴点を検出することができます。
Strucure from Motionでは複数の特徴点の3次元的移り変わりを用いることで、カメラの姿勢変化とそのカメラが撮影している物体の幾何学構造を逆計算するわけです。以下の動画のように、動画中の特徴点の変化を追っていくことで、それらから3次元空間上の特徴点位置とカメラ位置を算出します。
Structure from Motionは以下のような手順で計算されます。
手順1:ある動画中の2フレーム間でそれぞれの動画から検出された特徴点とそれらが共に指し示す3次元空間のある1点(注目点)の3点を関連づけ(図1)
手順2:この3点を結ぶ三角形を考え、特徴点1から特徴点2を計算するための行列、「基礎行列」の値を計算(エピポーラ拘束の関係式により、特徴点と注目点の位置関係が基礎行列の値を用いて計算できる)
手順3:この2フレームごとの基礎行列は微小な誤差があるので、毎回の基礎行列に入る誤差(再投影誤差)を最小にするように、2フレームの組をある程度蓄えておいて一気に基礎行列を計算する(bundle adjustment)基礎行列が求まることで、各フレームでの特徴点の座標(すなわち3次元地形)と各フレームでのカメラ姿勢が同時に求まる(図2)。
以上がStructure from Motionの基本的な処理手順です。基本的には2フレーム間の特徴点の関係から計算し、それを動画中の全フレームを用いて行う訳です。
手順1で検出した特徴点にはどうしても位置の誤差や誤検出などがあり、これらの特徴点から素直に計算しただけではなかなか正しい3次元幾何とカメラ姿勢は手に入りません。そこで、「bundle adjustment」という計算コストの高い最適化計算を行って、誤差を押さえた結果を計算しているわけです。
bundle adjustmentは再投影誤差が最小になるように、各特徴点での誤差を予想しながら、繰り返し計算で誤差を少なくさせていく最適化計算法です(図3)。このbundle adjustmentという手法が出てきたことにより、マッチムーブは実用に耐えうる非常に高精度な出力を出せるようになりました。