マーカー認識の仕組み
「crocro.jscam」では、一般的なARマーカーの認識と、柳井オリジナルのドット・パターンの認識が行えます。それぞれの仕組みについて、簡単に解説しておきます。
ARマーカーの認識
ARマーカーの認識は、以下のようになります。
- 【1】ノイズを減らすために、画像をぼかす。
- 【2】2値化する。
- 【3】地続きの領域の情報を得る(ラベリング)。
- 【4】ラベリングされた中から、マーカーと一致する領域を探す。
「crocro.jscam」では、【1】~【3】までは一般的な方法と同じです。しかし【4】の方法が少し違います。
「crocro.jscam」では、ラベリングを行う際に、同時に2つの座標軸の上下左右の端を記録します。この2つの座標を仮に、正座標と45度座標と呼んでおきます。
この2つの座標系で上下左右の端点を記録すると、このどちらかで射影変換をすれば、簡単にマーカーとの一致を確かめられます。以下、模式図です。
左の正座標では、四角形の四角がうまく認識できません。しかし逆にこういった場合は、45度座標系では四角形の四角を簡単に見つけることができます。
ARToolKitでは、外周をたどって端点を求めていたのですが、その実装が面倒だったので、もっと簡単なアプローチを考えました。上図のように、正方形に近い四角形ならば、正座標と45度座標のどちらかで、四角形の角が上下左右の端点に一致します。多少の誤差はあるでしょうが、面倒な計算を行わなくて済み、楽なので採用しました。
また、ARToolKitと違い、外周が変な形でもきちんと認識してくれるという利点もあります。変なマーカーを作って遊ぶのも楽しいです。絵を描く際に、ドット数を増やしたい場合は、配列の数を大きくすればよいです。
ドット・パターンの認識
次にドット・パターンの認識です。以下のような流れになります。
- 【1】ノイズを減らすために、画像をぼかす。
- 【2】2値化する。
- 【3】地続きの領域の情報を得る(ラベリング)。
- 【4】ラベルの情報から、ドット・パターンと同じ配置になっているラベルを探す。
この方法の利点は、ラベリングをした後、元の画像を一切使わずに計算が行えることです。また、マーカーと違い、粗い画像でも判定ができるという利点があります。
各ラベルの中心点を比較して4×4の配置が作れた場合、そのドットの大小が、指定したパターンかどうかを確認します。
ARマーカー方式でも、ドット・パターン方式でも、動作可能にしているので、どちらでも好きな方をご利用ください。
まとめ
JavaScriptの新しいライブラリ「crocro.jscam」は、Webカメラの情報を取得したり、マーカー情報を取得するためのライブラリです。
このライブラリは、簡単な設定で、2値化、ラベリング、マーカーの取得を行えます。また、コールバック設定で、Webカメラの画素データや、ラベル情報、マーカー情報など、多彩な情報を取得できます。
WebカメラをJavaScriptから簡単に使いたいといった用途や、Webカメラを利用したゲームを作りたいといった用途など、さまざまなシーンで利用できるライブラリです。
クロノス・クラウンでは、今後も楽しさと実用を兼ね備えたコンテンツや技術を提供していきたいと思います。
