2012/01/29

マーカー検出計画2 マーカー検出プログラムの改良

今日はマーカー検出部分を作成していました。1年半前に作ったマーカー検出プログラムはあまり再利用できる感じではなかったのでほぼ全部書すことに。

今回は単機能の関数を複数作り、それぞれの関数をつなげてパイプライン方式で処理する形にしました。関数ごとに機能を絞ったので、デバッグがしやすくなりました。作った主な関数は以下の通りです。

  • マーカーの四角形を検出する関数
  • マーカーの2次元コードをデコードし、マーカーの向きを調べる関数
  • マーカーの頂点座標を整列する関数
  • マーカーの頂点座標から、移動ベクトルと回転ベクトルを計算する関数


キャプチャした画像を上にある関数から順に処理していくと、

  • 画像内にあるマーカーの数
  • マーカーの識別番号(2次元コードをデコードしたもの)
  • マーカーの頂点座標(外側、内側)
  • マーカーの移動ベクトル、回転ベクトル

が得られる形になっています。

今回作った関数を使って、OpenCV内で軸を描画してみました。
マーカーの識別用エリアは8ビット分に設定し、ビットの大きさは1センチ四方、マーカーの全体の大きさは9センチ四方としました。
描画する軸の大きさは45mmで指定しています。

赤:X軸 緑:Y軸 青:Z軸


チェスボードに比べて、コーナーの数が少ないため軸がプルプル震えてしまいますが、対策はまた後で考えることにしてOpenGL側で複数の物体を表示させる実験を先に行おうと思います。

ではまた。

0 件のコメント:

コメントを投稿