第19回目の今回は、動く1台のカメラで得られる画像系列から、画像中のシーンの3次元形状とカメラの位置を同時に計測する技術について解説します。
この技術は、Structure from MotionあるいはVisual SLAM(Simultaneous Localization and Mapping)と呼ばれています。
ここでは、技術の詳細についての解説ではなく、知っておきたい技術を紹介します。
Structure from Motionの概要
Structure from Motionの処理の概要は図1のとおりです。因子分解法を用いたアプローチと、エピポーラ幾何に基づいたアプローチがあります。
因子分解法を用いたアプローチでは、F枚の画像から得たP個の対応点の座標を並べた2F×Pの観測行列Wを、P個の対応点の3次元座標を並べた3×Pの行列Sと、カメラ行列Cと射影行列Aの積M=ACに分解します。つまり、WをMとSに分解(W=MS)することで、F枚の画像を撮影したカメラの位置と、P個の対応点の3次元座標を同時に計算します。
エピポーラ幾何に基づく手法では、8点アルゴリズムや5点アルゴリズムにより基礎行列、あるいは基本行列を計算し、三角測量の原理で3次元座標を計算します。
図1 Structure from Motionの概要
知っておきたい手法 (~2013年)
2013年までの手法は、こちらにまとまっています。RANSAC、Flexible Calibration、SIFTといった要素技術が2000年頃までに発表され、その後にStructure from Motionの技術が大きく進歩しました。2006年に、Structure from MotionのオープンソースプログラムであるBundlerが登場しました。そして、“Building Roma in a Day”という論文で、街中で撮影された大量の画像からコロッセオなどの3次元形状を復元する技術が報告されました(動画1)。
また、それより少し前に提案されたPTAM(Parallel Tracking and Mapping)と呼ばれる手法があります(動画2)。これは、机の上など狭い空間内でのARを目的として、リアルタイムでカメラ位置と3次元点の追跡とマッピングを行う手法です。PTAMは疎な3次元点しか計算しないのですが、その後、DTAM(Dense Tracking and Mapping)という密な3次元復元を行う手法が提案されました(動画3)。
動画1 Building Rome in a Day
動画2 PTAM: Parallel Tracking and Mapping for Small AR Workspaces
動画3 DTAM: Dense Tracking and Mapping in Real-Time
知っておきたい手法 (2013年~)
Structure from Motionは、カメラを上下左右に動かした際に得られる画像系列を用いると精度の良い結果が得られますが、カメラを前後に動かした場合はなかなか良い結果が得られません。“Towards Linear-Time Incremental Structure from Motion”という論文では、画像を少しずつ追加していくことで精度の高いStructure from Motionを実現しています。このアプローチは、ブログの第10回で紹介している “First-person Hyper-lapse videos”という論文で採用されており、映像の過度な動きを抑制することで滑らかな映像を生成します。
また、PTAM、DTAMは机上などの狭い空間を対象としていたのですが、屋外などの広い空間で利用可能な、LSD-SLAMという手法が2014年に登場しました。この手法では、Semi-Denseな3次元点群をリアルタイムで得ることができます。
Structure from Motionは計算コストが高いという課題はありますが、実用レベルになってきています。スマートフォンでリアルタイム処理するということもある程度は可能です。
次回からは、機械学習について紹介します!