2012/01/28

マーカー検出部分の見直し

OpenCVとOpenGLを組み合わせて、ARオブジェクトを実寸で表示できるようになりました。(光源の設定などまだ課題がありますが)

今まではチェスボードを対象にしていましたが、やはりマーカーなどを使用して識別できるようにしたいところ。なので1年以上前に作ったマーカー検出プログラムを作り直しています。

マーカーの位置検出方法ですが、OpenCVのcvFindContoursとcvApproxPolyを使って、四角形っぽい輪郭を抽出しています。
FindContoursがどういう動きをするのか気になったので、頂点ごとに番号を自動的に振ってみました。


ざっとみた感じだと、外側の輪郭は反時計回り、内側の輪郭は時計回りで検出されているようです。外側と内側で検出される順番が同じだったらそのまま使えたのですが、検出される順番は信用せず、外側の頂点に一番近いところを探してやる必要がありそうです。

OpenGLに移動ベクトルと回転ベクトル、マーカーの識別番号のリストを渡せるように変更すれば、OpenGL側で別々のオブジェクトを表示できるようになると思います。

ではまた。

1 件のコメント:

  1. 参考になりました。ありがとうございます。

    返信削除