忍者ブログ
工学系大学院生のオーストラリア留学奮闘記
オーストラリアはブリスベン、クイーンズランド大学での留学生活を綴ります。授業に研究、仕事探しやもちろん遊びも。



プロフィール
HN:
blue
職業:
神戸大学機械工学専攻大学院生
自己紹介:
学部でアメリカのUniversity of Washingtonに半年交換留学。
海外での楽しく新しい発見が忘れられず、大学院ではオーストラリアのUniversity of Queensland (UQ)にまた半年交換留学することに。

UQではこの短い1学期の間、研究室に入り経験のないコンピュータビジョンに関する研究を行い四苦八苦。授業も2つ履修していて中々にタフ。
でも、スキューバダイビングやロッククライミング、友達との交流など遊びも大事にしたい。

英語や海外の環境が好きなので、将来は海外で働きたいと思った。学期終了後のインターンシップを探すなどチャンスを広げるべく奮闘し、本気で海外就職を目指すかこの留学で見極めたい、というのが当初の目論見。さて実際はどうなることやら!?

好きな格言
「Simple is best」
「Do it yourself」
「Where there is a will, there is a way.」
「人事を尽くして天命を待つ」
「人を手段としてのみ扱ってはならない」カント
「即判断、即実行、即忘却」
「一期一会」
「ゆく河の流れは絶えずして、しかも、もとの水にあらず」鴨長明
「色即是空、空即是色」
「男に二言なし」

メールアドレス
studyau2008@gmail.com
忍者ブログ / [PR]
[88]  [87]  [86]  [85]  [84]  [83]  [82]  [81]  [80]  [79]  [78
No.   [PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

色々遠回りしてやっと、2つのカメラから得られた画像においてそれぞれ対応する2次元座標から3次元座標を得るTriangulationができた。
いちばん簡単なやつで実装したので、別の手法も試したほうがいいかもしれないが、まずはこれでどれほど正確に三次元座標が測れているかチェック。

そしたら以外にかなり正確に測れているんじゃないだろうか。とりあえずTriangulationはこれでいいとして、他にもやることがいっぱいあるので精度はあまり気にしないでどんどん進めていかないと。
とりあえず嬉しくなってさっそくBenに報告。
Hi Ben,

I checked the accuracy today.
That was more accurate than I expected!

These are the quick results before talking to you further tomorrow.
I measured the depth up to the object which is on straight line along
camera ray, with a measure, and with the triangulation.

measure(cm):  triangulation(cm)
30                   : 30.0
40                   : 39.8
50                   : 49.4
60                   : 59.8
70                   : 69.3
200                 : 208

今回は対応点を2つのカメラ画像から目視で選択して、Triangulationを行ったが、実際には自動で対応点を見つけていかなくてはいかない。
基本的にはHarrisCornerという何処か角のようなわかりやすい特徴点を見つけていくことになる。

さらに2つのカメラでそれぞれ特徴点を見つけてから、今度はひとつのカメラのどの特徴点と、もうひとつのカメラのどの特徴点が対応する点かというのを見つけてやらなければならない。

これをするには、2次元空間を探索してやる途方もない作業になると思うかもしれないが、エピポラ拘束というステレオカメラの幾何学的な条件より、実は1次元の探索で済む。

つまり、片方の画像のある点に対応するもう片方の画像の点を見つけようと思ったとき、それは特定の線上のどこかにあることがわかっている。あとはピクセルごとに調べていって対応点を見つけていくなりすることになる。

ところである線上のどこかにあるとわかっていても、斜めの線に沿ってピクセルごとに調べていくというのは中々骨がおれる。
そこで、この線が水平になるように画像を変換してやるのがRectificationである。
そしたらx座標だけシフトしていって対応点を探せるのでラクチンである。

対応する特徴点を見つけた後も、これらを追従するとか色々やるべきことはたくさん!
いよいよ加速して、できるとこまで行きたい。


今日はTriangulationの前に大きな問題が解決できて嬉しかった。
前々から、プログラムを走らせていたらものすごく重たくなって、マウス、キーボードがあまり反応しない、そのうち固まってしまう、ということが多かったので困っていた。
原因は2つのうちどちらかと考えた。

○ウェイトが小さいためにイベントキューがたまってしまい、イベントを処理しきれていない。
○どこかでメモリリークしている。

マウスやキーボードのイベントが反応しないので前者の方とにらんでいたのだけど、どうにもうまくいかない。ウェイトを結構おおきくしても、固まるまでの時間は長くなるにしてもやっぱり固まるということを発見して、どうもどっかでメモリの解放を忘れているんじゃないかとループの中を片っ端から調べていった。

そしたら時間かかって怪しいとこがわかった。
ループの中で毎回image = cvCreateImage()としているところがあったのだけど、これはどんどん新しい領域を確保していってしまうようで、メモリもどんどんなくなってしまっていたようだ。
これを別のやり方に変えて実装したら直った。
OpenCVのバグかとか思って、どうしよーもないと思ったけど、原因がわかってよかった!
悩んだかいあった。

C言語はそこまで使ったことなかったけど、やっぱりメモリ管理とか気にしないといけないのが大変だなと思った。ループをがんがんまわすリアルタイムなソフトを開発するときには、メモリをちゃんと使ったら解放するというのが本当に気にしないと固まってしまうという致命的な事態になっちゃうんだね。
ループのなかでのメモリリークは絶対にないように今後気をつけよう。
これDeadlyっ。


5ae09251.jpeg
まずは短いところからスタート。メジャーで距離はかって比較!
メジャーがたわまないように先っちょをボルトに載せる。
5分でできる実験準備。簡単でいいね。


76a4742d.jpeg
徐々に距離を伸ばす。画像が暗くて対応点をクリックしにくかったので、
ちょうどあったUSBのLEDライトで照らしていい感じに。


cbb95a8a.jpeg
一気に2メートルへ。これがメジャーの最長。
結果は予想以上の精度でした!

 
PR
Name
Title
Color
Mail
Web
Message
Pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Trackback URL: