「マーカ有りAR」の仕組み
以下の画像は、マーカを用いたARアプリケーションの代表例「AR Defense」の画像です。
マーカ有りのARの処理の流れは以下の通りです。
マーカ有りARの処理の流れ
- しきい値処理(一定の黒さ以上の部分のみを残す処理)により、マーカの黒色領域の輪郭(マーカの外側の四角形)とコーナー4点を検出
- 検出した輪郭とコーナー4点から、既に知っているマーカのサイズを用いて、マーカの座標系を計算
- マーカの中心部分の模様でパターンマッチング。マーカの模様と一致していれば、探しているマーカであることが認識される(これにより複数のマーカを識別することもできる。)
- 2で計算した対応関係を用いて、3次元座標に一致するようにマーカ上にCGを表示
この手順が基本的なARの仕組みです。映像に映っているマーカから取得した3次元座標系とCGの3次元座標系を一致させることにより、3次元的に位置合わせできた状態でCGを表示するわけです。また、マーカの中央の模様を用ることで、どのマーカにどのCGを表示させるかの対応付けを行っています。
マーカにはコーナー検出という処理を用いることが多いゆえ、その模様は以下のように角が鮮明でコーナー検出がしやすい白黒のものになるわけです。
一方で、コーナー点以外の特徴点を取得する手法を用いることで、マーカ有りARを実現することもできます。以下の動画は、私もお世話になっている、皆川卓也さんによる、結婚式のハガキの写真をマーカとしたARの例「ARウェルカムボード」です。
ハガキ裏に描かれたデザインや写真のように、テクスチャ(模様)をあらかじめ決めておけばそのテクスチャからもマーカでのコーナーのように座標系に一致した特徴点を計算することが可能で、その特徴点によりARを行うことができます。この場合「局所特徴量」という少し高度な処理を用いているので、次回以降別のテーマで局所特徴量が中心の技術を紹介する際に、あらためて局所特徴量の仕組みを説明する予定です。
「マーカレスAR」の仕組み
マーカを用いないマーカレスARでは、以前「マッチムーブ」の回で紹介したStructure from Motionにより3次元構造を計算し、その計算した構造を基準にARを表示します(Structure from Motionの詳細は連載第2回を参照)。マッチムーブをリアルタイムで実行して、現在撮影している映像の地形に一致するようにCGを表示するのがマーカレスARです。
マーカ有りARではマーカの特徴点(4角形の角のコーナー)をもとにARを表示する3次元空間を計算していましたが、マーカ無しの場合はマーカが無いわけです。そこで画面全体に対してコーナー点、もしくは局所特徴量をもとにまずは2次元画像上での特徴点の座標を計算します。マーカレスARではマーカがないわけなので、撮影した動画中のコーナー点(例えば机の角や、4角形の窓の角など)がマーカ有りARでの特徴点の代わりとして自動的に選ばれてくるわけです。
次にそれらの2次元画像上の特徴点の位置をもとに3次元地形をStructure from Motionにより計算し、その地形に沿うように(自然な見え方がするように)ARを表示します。Structure from Motionは3次元地形全体の計算です。従って、マーカ有りARで用いたマーカのような「ARを表示させるための2次元平面(例えば壁や机の上)」にARを表示させたいという場合は、Structure from Motionは不要です。
以前マッチムーブの時にも述べましたが、リアルタイムでStructure from Motionにより3次元情報を取得できるようになったのは、PTAMという手法が登場したつい最近(ここ2年くらい)のことです。それまではStructure from Motionは計算コストが高すぎて、CGを表示する3次元地形をリアルタイムに計算する必要があるARには使用できなかったのですが、PTAMという高速な手法の登場でリアルタイムに3次元地形を計算しつつその上にARを表示させることが可能になったわけです。ただ、次回に述べるようなマーティング的な事情もあり、現状は2次元平面マーカを使った「マーカ有りAR」が主流です。