さて、前回のエントリでは、
キューブ型マーカの側面の判別に苦労していると言う話をした上で、
なぜそうなってるかについて考察を行った。
で、判別精度向上のヒントをA虎@さんがエントリして下さったので、
精度向上については取り敢えず目処が立ったと言えよう。
が、今は精度向上を目指す方向ではなく、前回のエントリでも少し触れた、
あえて同じマーカとして認識させる方法を用いて、キューブ検出を行おうと思う。
現在、キューブ検出用のコードを書いてて、
何となく見えてきたので、ブログに起こしてみた。
現状はこんな感じ。
一応マーカは側面の奴で、モデルがキューブ上に乗せるよう回転をかけてる。
とりあえず、「頂点か側面か」の判断はつくようになった。
で、後は「側面のどれか?」を検知するようにならなければ。
後、側面だった場合の回転や移動を、Detector内部で行いたい。
現状、Detectorが出してきた変換行列をかけた後のモデルに、
無理矢理回転と移動を行ってる。
画像でモデルの位置が実際の電脳キューブとずれてるのはその所為。
真正面からマーカを撮ると、上手く騙せる感じになる。
そう言えば、俺が最近ARisの情報源にさせて頂いている
「100円玉の対価」
によると、ARis用マーカを誰かがpdf形式にして公開してくれたそうだ。
2chの電脳アリススレに、電脳キューブのマーカーをPDFほかでupして下さってる方がいたので、早速ソレを入手させて頂きました。
100円玉の対価 電脳フィギュア アリス、隣に立ってみた。
で、それを元に探して、該当部分を見つけたんだが、そこにこう書いてあった。
需要あるかな? 私がマーカー自作したときのデータをうpしてみた。
(中略)
マーカーdatから作ったから認識率は良いはず。
電脳フィギュア ARis(アリス) Part1#732
このように、このマーカ自作者の方はdatファイルを元にマーカを作成したらしい。
つまり、マーカのdatファイルなるものがあると言う事か。
このマーカーのdatファイルが見たいと思ったが、
流石にそこまでやってしまうと不味いかと感じ、自重。
でも、このdatファイルを見て、ARToolKit用と同じ形式だったら衝撃的だな。
貴様!(ARToolKitのソースを)見ているな!
てなるだろうね。
(マーカからpdf作れるくらいだし、それは無いと思うが)
電脳キューブの側面用の評価
まず、前回も登場した基本マーカ。
これは、電脳キューブの側面に共通するマーカだ。
電脳キューブの、前後左右4つの側面部分は、
右上を除いて全てこのマーカと同じ形をしている。
そこで、右上を「常に完全一致している」状態と仮定して評価するような、
新しい評価器「C2MatchPatt_Color_WITHOUT_PCA.as
」を作成してみた。
このクラスには、新しい評価関数「evaluateThreeQuarter
」を追加してある。
こいつでマーカと入力画像内のマーカ候補を比較して、
右上部分抜きでの一致度を出してやる。
普通の評価器で評価するとleft
とback
のパターンの一致度が
front
やright
と比べて低いと言う状態にある。
これは、A虎@さんの解説と一致していて、
内側が白いleft
とback
の一致度は、
内側が黒いfront
やright
の一致度と比べれば低くなるのも止むを得ない。
で、右上抜きでの比較を試すと、front
やright
の一致度が0.1くらい上がった。
まぁ、それでも「left
⇒0.6後半、right
⇒0.8後半」だったのが、
「left
⇒0.7後半、right
⇒0.8後半」と言った感じだが。
このあたりの精度は、正規化部分の変更で何とかなるかもしれない。
中央付近に白があるか黒があるかで、変わる可能性高いし。
電脳キューブのデザイン
今回のような考え方で行くと、電脳キューブは結構考えられたデザインなのかなと思う。
キューブの全ての面を異なるマーカで作って評価するより、
同じマーカでとりあえず「側面だな」とだけ判断し、その後で前後左右のどれかを判定する。
下面が真っ白になっていると言うキューブの構造も、
「これは机の上において使うものなんですよ」と言うメッセージを出している。
机の上において使えば、カメラに横から取られる可能性が上がり、
側面を認識する確率が上がるわけだ。
また、さりげなくマーカの右上を、囲って小さいマーカっぽくしてる所にも工夫を感じる。
カードの方のマーカのデザインも、長方形に見えて実はマーカとしては正方形に認識されるように作られてる。
「GTE_AR_Framework」と言うオリジナルのフレームワークを使用しているという話についても納得。
ただし、この電脳キューブは、本当に「上に物を乗せる」しか使い道が無い。
橋本直氏のARToolKit本に出てくるキューブっぽいマーカとは一線を画してるな。
まぁ、電脳キューブは「キューブ1個でマーカ1個」と言う捕らえ方だから仕方ないけど。
あと、噂によると電脳フィギュア用のカード型マーカは、1個だけでも動くらしい。
やはり、その辺は通常のマーカベースARなのかな?