fc2ブログ
 カレンダー

05月 │2023年06月│ 07月
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

 プロフィール

はしもと

Author:はしもと
ユーザインタフェース系のお仕事をしてます.関心領域は画像処理,拡張現実感,ヒューマンコンピュータインタラクション,エンタテインメントコンピューティングあたり.モノ書きもやってます.

 工学ナビ

工学ナビは工学系の技術のチュートリアルを扱うサイトです.

 作ったもの

 Twitter

 

 天気予報


 ブログ内検索

 カテゴリー

最新コメント

 RSSフィード

 リンク

このブログをリンクに追加する




工学ナビの中の人 はしもとのブログです. いろんなコトを研究的,工学的な視点で見つめます.
最近の事情
どうも,ごぶさたです.
D3になってからヒジョーに忙しい状態が続いてましてバタバタです.
もういっぱいいっぱいですよ.

ゴールデンウィークというわけで,同期や後輩が帰省して集まって
「みんなで飲みにいこー!」「ワー!」「ぎゃー!」 そんな感じです.
しかも3日連続で.

さて,話は変わりましてJavaでのARToolKit開発に取り組んでおられるA虎さんが
シャア専用の通常の3倍速いarGetTransMat関数を作られました!

C言語版NyARTransMatリリース
http://d.hatena.ne.jp/nyatla/20080503/1209803459

arGetTransMat()というのは,画像上のマーカ座標から座標変換行列を求めるところでして
ARToolKitの一番肝の部分になる関数です.元のソースコードは,論文と一緒に読むと
「はぁーん,ふぅーん,そこはそういう計算やってるのねー」とわかるくらい,いい感じに
書かれているのですが,そのぶん若干無駄があるみたいでして.

# まぁ,可読性と速度はそう簡単に両立できないよね.僕は読めるコードが好きだけど.



/* 私信
 To: OpenGLでのメタセコ(*.mqo)ローダを開発されていたkeiさん
 (http://www.sainet.or.jp/~kkoni/OpenGL/reader.html)

 プログラムについてちょっとお尋ねしたいことがあるので
 kougaku_navi(あっと)kou.bbiq.jp
 までご連絡をいただけますでしょうか.よろしくお願いします.
 ※連絡先不明だったので・・・
*/

この記事に対するコメント
バグがありましたorz
こんばんは。
いつもご紹介ありがとうございます。

さてさて、先日リリースしたモジュールですが、幾つかバグが出てしまったので、修正を行いました。新しいVersionは0.39.1です。

不具合は、3個ありました。
1.arTransmatSubの戻り値型を間違えていた(doubleのはずがintに・・・
2.要らないローカル変数が消してなかった。
3.C++用のExternを書き忘れていた

1の不具合は、時々精度に影響するので致命的ですorz

ちょいと急いで作ったもので、リリースチェックが甘くなってました。
すみません。
【2008/05/05 22:24】 URL | A虎@ #mQop/nM. [ 編集]


A虎さん こんばんは。
C言語版NyARTransMat 0.39.1をうちのarlに組み込んでみました。
特に問題なく動いているようです。

ところで、ARToolKitにはarGetTransMatContって関数があって、
初回の認識ではarGetTransMatを2回目以降ではarGetTransMatContを使った方が速くて安定するそうです。その分正確性が犠牲になるそうですが。
http://d.hatena.ne.jp/howm/20070726
【2008/05/06 00:08】 URL | b2ox #7jRj3iUs [ 編集]


こんにちは。

>C言語版NyARTransMat 0.39.1をうちのarlに組み込んでみました。

動作報告ありがとうございます。
やはり実際に聞くまで安心できないもので、ありがたいです。

>ところで、ARToolKitにはarGetTransMatContって関数があって、
>初回の認識ではarGetTransMatを2回目以降ではarGetTransMatCon
>tを使った方が速くて安定するそうです。その分正確性が犠牲になるそうですが。

情報ありがとうございます。
実は移植のために最短ルートの関数しか確認していないので、そのへんはノータッチでした。
関数をみてみましたが、静止状態のマーカーを撮影し続けた場合であれば、最大5倍程度の速度になるようですね。動くマーカーだと逆に2倍遅くなりそうな感じですが。

そんな気がしただけでそんなことは無いとの情報を頂きました頂きました。

もうちょっと調べてみます。
【2008/05/06 09:31】 URL | A虎@ #mQop/nM. [ 編集]


おぉ~ 盛り上がってきましたね!

ARToolKitは画像処理の部分と座標変換の計算がきれいに分けられているので,画像上のマーカの頂点情報を自前で計算してから,それをarGetTransMat()に渡したっていいわけです.

つまるところ,画像処理の部分を自前でやるわけですから,【黒い太枠の中にパターン】というフォーマットを多少自分流にアレンジすることができます(4頂点が正方形の頂点である,という条件は外せないですけど).画像処理はOpenCVにやらせるのもいいかもしれませんね.

# やろうと思えば,本の表紙とかポスターをマーカにすることもできますよ.
【2008/05/06 23:14】 URL | なおき #F54KmX5Y [ 編集]


その方向での進化版みたいなのがBazARだと思われます。
http://cvlab.epfl.ch/software/bazar/

パターン画像から複数の特徴点を取り出してそれぞれの相対位置を評価して~みたいなこともやってて
パターンの歪みも検出出来るみたいです。
http://cvlab.epfl.ch/research/augm/deformable.php

とりあえずサンプルプログラムをMinGW環境でコンパイルできるように整理してみたんですけど、その後放置してます(^^;

BazARはパターンデータ作るのに結構時間がかかります。
ARToolKitのカメラキャリブレーションと同じくらいかかる感じ。
そして出力されるパターンデータが10MBくらい(^^;
まぁ1回パターンを作っておけば2度目以降はそれを読み込むだけなのですが。
【2008/05/07 00:21】 URL | b2ox #7jRj3iUs [ 編集]


こんばんは。

マーカーレスでパターン認識はかっこいいですよね。

当面は模様を印刷した紙を複数マーカー認識と組み合わせて、面を認識させるものを目標にしようかな~と考えてますが、最終的には画像から円や正方形っぽいものを選び出すようなプログラムと組み合わせて、マーカーパターンを作りながら追跡するようなものを作れたらいいなと思ってます。(そう簡単に出来ないと思いますけどw

画処理は素人なので、資料集めからはじめてみます。
【2008/05/07 01:33】 URL | A虎@ #mQop/nM. [ 編集]


複数マーカ認識で実用方面だとモーションキャプチャーかなと思うんですが。

マーカを腕とか足とかにぺたぺた貼り付けて
マーカグループと体のパーツの対応を指定
グループごとにマーカを認識させて相対位置を測定&記録
モーションキャプチャー開始

みたいなことをやれば良さそうだなとは思うんですけどね。
【2008/05/07 02:36】 URL | b2ox #7jRj3iUs [ 編集]




この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://kougaku.blog28.fc2.com/tb.php/292-cb25d9a5
この記事にトラックバックする(FC2ブログユーザー)