BundlerによるStructure from MotionでKAZE局所特徴量を使ってみた

一応お魚キャラとしてやっているわけですが,私のアイコンの魚を前からみるとどうなるの?とときどき聞かれます.
回答としては,このお魚は”幅を持たない”形状をしています.二次元です。

さて,大量の未整列な多視点画像からの三次元形状復元ついでにカメラの内外部パラメータの推定まで一気にしちゃう手法のことをStructure from Motion(SfM)と言い,結構長いこと研究されているホットな話題であります.

そんなSfMを行うためのツールにBundlerがあります.r○byのbundlerとは全く関係ありません.
Bundlerは局所特徴量を用いたsparseな画像間対応からSfMをするもので,一般的にはSIFTが使われていますが,対応付けは独立プログラムに委譲されてるので,うまくやればどんな局所特徴量でもSfMをお楽しみいただける設計になっています.

ということで,Computer Vision Advent Calendar 2012で書いたさかな前線 » ECCV2012で発表されたKAZE局所特徴量を試してみたの続きという事で,KAZE特徴量を用いたBundlerでのSfMを試してみました.実用的な例がほしかったのでw
CVAdventCalendarの@yasutomo57jpさんの記事の二番煎じです…

Bundler(やPMVS)のアルゴリズムについては他に譲ります(←

20121209_bundler_example_pmvs

※結論から言うとやり方がまずいのでto be continuedです…

Continue reading

CV勉強会@関東に参加してきました.ついでに少ししゃべりました.

フグといえば山口県ということで僕の地元でして,県としては対外的にはフグのことを福とかけて「フ」と言ってるわけですが,ぶっちゃけ一般市民はそう読んでなくてフク雑な気持ちになります.

さて,2012/12/16に慶応大矢上キャンパスにて@takminさん主催でコンピュータビジョン勉強会@関東ECCV2012読み会が開催されまして,就活ついでに行ってきたついでに発表までしてきました.

簡単に感想だけ.

Continue reading

cv::Matとcv::Mat_<T>の画素アクセスの速度

近くのスーパーに秋は国内産の鮭が売っててよく買ってたんですが最近は輸入のサーモンばっかしです少し寂しいです.

OpenCVでちょっと気になって,画素単位のアクセスをするときcv::Matのat()による方法とcv::Mat_のoperator()による方法でどっちが速いかなと思って調べてみました.
星の数ほどされてる議論のようなするけどぱっと見た範囲で見当たらなかったのでやってみた.
参考までに画像ピクセル値へのアクセスと計算速度 | OpenCV.jpもあります.

結論から言うと,全く同じでした.

コードはこんなかんじ.時間計測はオレオレライブラリで高精度な計測ができます.

実行結果はこんなかんじ.

% ./a.out
cv::Mat::at<T>() -> 9.82353ms/回
cv::Mat_<unsigned char>::operator() -> 9.69412ms/回

大きさ(w,h)によらず同じくらいの模様.

あと気になる生配列とのアクセス速度の差ですが,上述プログラムと同じ処理を書いちゃうと最適化で全部消えちゃうしそうならないくらい複雑なプログラムは面倒だったので断念.
最適化しなければ,cv::Matの方が3割くらい遅いくらいでした.最適化するとどうなるやら.

  • CPU: i7 870 (2.93GHz)
  • OS: Ubuntu 11.10 x86
  • gcc: 4.7.0
  • option: -std=c++0x
  • OpenCV: 2.4.3

追記:
Ivy Bridge速すぎワロタw

  • CPU: i5 3570 (3.40 GHz)
  • OS: Linux Mint 13
  • gcc: 4.6.3
  • OpenCV: 2.4.3
% ./a.out
cv::Mat::at<T>() -> 2.34902ms/回
cv::Mat_<unsigned char>::operator() -> 2.34902ms/回

ECCV2012で発表されたKAZE局所特徴量を試してみた

先日ちょっと膝をケガしてしまいまして,ギプスに松葉杖です.けっこうリアルさかなに近づけたんじゃないかと思うのですがいかがでしょう?
折しも12/6で私も23歳を迎えました.できれば無事健康体で迎えたかったこの日.

この記事はComputer Vision Advent Calendar 2012の12/7担当分として書かれたものです.
主催者でありながら華麗に遅刻をキメました.これはひどい.
高専時代の後輩でもある@blue_jamくん,お疲れ様でした.そして誕生日メッセージありがとうございます.

さて,コンピュータビジョンにおける極めて重要な要素のひとつに画像特徴量があります.
これまでにたくさんの特徴抽出手法が提案されてきているわけですが,この度は最近の国際会議で発表されたばかりの新しい手法の実装が公開されていたので,それを試して見ることにしました.

Continue reading

Linuxでの野良ビルドのOpenCVでカメラをちゃんと使うにはlibv4l-devが必要みたい

地元に鮎の美味しいお店があって,そこの背ごしはもうほんっとうに最高の絶品だったりします.行きたいなーあー…もう10年とかいうレベルで行ってないよ…

さて,Computer Vision Advent Calendarの担当日からすでに3時間遅刻していますがこれはその記事ではありません.
今,がんばって書いてるところです(←

手元のLinux環境でOpenCVを野良ビルドするとき,libv4l-devをインストールしてからでないと,cv::VideoCaptureが動かないみたいです.

$ sudo apt-get install libv4l-dev
 ...
 --   Video I/O:
 --     DC1394 1.x:                  NO
 --     DC1394 2.x:                  YES (ver 2.2.0)
 --     FFMPEG:                      YES
 --       codec:                     YES (ver 53.35.0)
 --       format:                    YES (ver 53.21.0)
 --       util:                      YES (ver 51.22.1)
 --       swscale:                   YES (ver 2.1.0)
 --       gentoo-style:              YES
 --     GStreamer:                   NO
 --     OpenNI:                      NO
 --     OpenNI PrimeSensor Modules:  NO
 --     PvAPI:                       NO
 --     GigEVisionSDK:               NO
 --     UniCap:                      NO
 --     UniCap ucil:                 NO
 --     V4L/V4L2:                    Using libv4l (ver 0.8.6)
 --     XIMEA:                       NO
 --     Xine:                        NO
 ...

ここでUsing libv4lとなってることが重要みたいです.

cv::VideoCaptureが無言でエラーだけ返すので困りましたがそういうことだったみたいです.