マーカーでの姿勢認識


ちょっとドルフィーの撮影のために正確に姿勢(それぞれのパーツが向いている方向)を記録する必要があって、そのためにARでよく使うようなマーカーを認識させてたのだけど、これが私が求めるような精度が出ない。


ARToolKitとかどうやってんのかなーと思って、調べたら(ソースはまだ見ていない)、次のような解説記事があった。


ARToolKitの解析 その1 変換行列の計算
http://render.s73.xrea.com/pipe_render/2008/04/artoolkit-12.html


私が↑の記事を斜め読みで理解したところによると
1) 下図のようにして出来た四角錐の向かい合う2つの側面の法線の外積をとる。側面は4つあるから、向かい合う側面は、二組あるので、この方法で2つの3次元ベクトルが得られる。これを仮にEx,Eyとする。
2) 1)で得られたEx,Eyの外積をとる。Ez = Ex × Ey。これでEx,Ey,Ezの3つの基底が得られるのでこれを元にモデルを画面に描画する。



んー?おかしくね?ExとEyとが直交するのが保証されなくね?それにマーカーの形状(仮に正方形だとする)が拘束条件に入ってなくね?上図の四角錐と交わる平面のうち、その断面が正方形に近いものを選んで、その断面からマーカーの位置を推定したほうが良くなくね?(2010年9月18日 補足 : コメント欄で自分自らExとEyが直交することを証明してしまいました…。この方法で計算すれば認識時の誤差さえなければ直交はするようです。)


まあ、ARで使うのは、マーカーの上に何かオブジェを上乗せして見せたいことがほとんどなので、そんな細かいことはどうでも良いのかも知れないけど、いま、非常に精度が求められることをやろうとしているのでちょっと気になったので書いてみた。(もしかしたら私の勘違いかも知れないので間違っていたらコメント欄で教えてください。)


下の動画とか大変面白いアイデアなのだが、マーカーの検知にARTK_Aliveが使ってあって、これがARToolKitに依拠している。投影する映像が、マーカーの向きを変えたときに結構ズレていくのは(もし上の最初のURLの記事と、それに対する私の上の理解が正しいなら)ARToolKitが悪いんじゃないかと思うのだが…。


【ARカプセル】ついにモニタから出てきてくれた (裸眼AR)
D


あとARToolkitを少し使って見てわかったのだが、マーカーをある程度寝かせると上からの照明によりマーカーがホワイトアウトしてほとんど認識できなくなってしまう。マーカーはサイコロやローラーのようなものに印刷するのがいいのかも知れない。どんな形状がベストなのかはいま試行錯誤中。


今回の私の目的からすれば、マーカーの認識にある程度時間がかかってもいいので限りなく正確に姿勢を得たいわけで、一般的なAR用のマーカーとは目指すところが少し違うのかも知れない。