マーカー認識の自作
以前の記事では、mosapui.hatenablog.com
・カメラを固定し、プログラム開始時に四角形のマーカーを撮影する。
↓
・スクリーン座標における、そのマーカーの4点の座標を自分の目で確認して、その座標を使って、変換行列の計算をする。
↓
・カメラは固定したままで、計算した変換行列を使い続けて、3次元モデルを合成する。
という手法を行いました。
この方法では、モデル表示中にリアルタイムでマーカーの認識+変換行列の計算を行わずにすむので、プログラムの負荷を回避できます。しかし、カメラ固定なので、プログラム実行中にカメラを移動させることはできません。
ARToolkitみたいにマーカーの認識をやってみたかったので、自作のマーカ認識を行ってみました。
『CMSとモバイルとフィードと四畳半社長: 24時間でつくるFlashで画像認識』
http://shi3z.cocolog-nifty.com/blog/2007/07/24flash_b64b.html
↑この社長さんのブログ記事を参考に、色を使ったマーカを作成し、ラベリング処理、輪郭抽出、コーナー抽出、色の識別処理を行って実現してみました。
[色を使ったマーカ] [ラベリング] [コーナーの認識 赤の部分のコーナを探す]
[モデルと画像の合成1] [モデルと画像の合成2 右上のコーナ位置の検出がおかしい]
これで、ARToolkitを使わずにDirectX+OpenCVを利用して、ARToolkitと似たようなことができるようになりましたが、ARToolKitに比べるとマーカーの認識率が良くないです・・・。さらに、プログラムの負荷もARToolkitに比べるとちょっと大きい(5msぐらいの差)。
なんとか改善したいです。
参考:
『アルゴリズム入門 : 第 3 章 画像処理入門 1』
http://msdn.microsoft.com/ja-jp/academic/cc998604.aspx
ラベリングのアルゴリズムの解説が載っている。
C#のサンプルがある。
『視覚センサを用いた自律移動ロボットの行動決定(pdf)』
http://www.topic.ad.jp/sice/papers/231/231-4.pdf
ラベリング時の衝突について
『プログラミングのページ』
1パスでラベリングできるコードがあります。大変参考になりました!
『画像の特徴点を抽出する- 無作為研究所』
http://www.faicha.com/vision/01inter/
SUSAN
『SUSAN オペレータを用いた画像特徴点の抽出』
http://www.oita-ri.go.jp/report/2002/2002_12.pdf
簡単な方法。
『解説 コンピュータビジョンのための画像の特徴点の抽出』
http://www.suri.it.okayama-u.ac.jp/~kanatani/papers/harris.pdf
Harris 作用素についての解説。
『キャプチャテクスチャ + DXUT(November 2007版)』
http://www.shader.jp/xoops/html/modules/mydownloads/singlefile.php?cid=5&lid=14
[犬モデルについて]:
『メタセコ素材! - メタセコイアで使える3D素材を公開 -』様
の無料3D素材を改変し、xファイルに変換したものを使わせて頂いております。