2008年02月18日
特徴点抽出その後
- kenji
- 00:31
- コメント (4)
- トラックバックする
- カテゴリー:ImageProcessing
注文していたWebカメラが到着。
これでリアルタイムの映像を解析できる。
購入したカメラはELECOM ドライバ不要UVC対応130万画素CMOS Webカメラ(ホワイト) UCAM-DLM130HWH。
ドライバ不要ならOpenCVでも楽に認識するだろうかと思ってこれを購入。
が、他の問題も絡まってOpenCVで使えるようになるまで6時間ほど苦しんだ。
メインの問題はPCに未使用でドライバも入れていないキャプチャボードが刺さっていて、それがじゃまをしていたようだ。
それを取り除いてもOpenCVデフォルトのカメラキャプチャ機能は使用できなかった。
よってDirectShowでキャプチャし、それをOpenCVで処理し表示する形式をとった。
参考にしたのは以下のページ。
OpenCV/DirectShowでキャプチャした画像を表示する
そのキャプチャ画像に対し特徴点抽出を実行すると以下のような感じ。640x480でおそらく15fpsぐらい。CPU負荷は60%ぐらいで十分リアルタイムに処理できた。

特徴点追跡もOpenCVで簡単にできた。
これはなかなか良いおもちゃだ。
しかしこのカメラ(CAM-DLM130HWH )ちょっと画質が悪い気がするな。
なんかフレームレートもでないし。
ホワイトバランスの調節で負荷がかかるのか、カーテンや壁を写すとなぜかキャプチャのフレームレートが8とか9ぐらいしかでない。モニタを写すと30フレームでるのだが・・・。30、15、8と階段状に上がったり下がったりする謎の現象。
OpenCVに頼りすぎるのも良くないと言うことで画像処理の基礎知識を得るために次の本を買ってみた。

この本はグラフィックエンジンに頼らず、すべての画像処理を1からプログラミングするという硬派な本だ。
表紙も硬派だし、文体も普通で画像処理のサンプル画像も動物の写真だったりで普通だ。
が、なぜか挿絵だけがオタっぽい。(俺向きだ!)
完全なる貧乳でアホ毛装備。お団子頭にチャイナドレスだったり、無意味に体操服の場合もある。イラストを描いた人の趣味丸出しな挿絵だw
が、内容は非常に勉強になりそうな気配だ。特徴点追跡に使えるオプティカルフローまであってすばらしい。そこまでたどり着くまでが大変そうだが。
もう一冊画像処理系の本を買ってみた。
C言語による画像処理入門だ。
こちらは東工大の偉い先生が書いたとかで表紙から文体に至るまで完全に教科書風だ。難しい手法名と数式は出てきても、貧乳少女は間違っても出てきそうにない。こっちは難易度高そうだからフルスクラッチ~を読んでからこっちを読んでみるか。
2008年02月16日
動画の特徴点抽出をやってみた
- kenji
- 03:01
- コメント (5)
- トラックバックする
- カテゴリー:ImageProcessing
昨日の動画がおもしろかったので動画の特徴点抽出をやってみた。
ライブラリはOpenCVを使用。
デジカメの動画撮影機能を使用し、640x480 30fpsの動画に対し特徴点抽出を行った。
以下検出結果の動画からのスクリーンショット


動画
FindCornerTest_Xvid.avi 約2.5MB 12秒 エンコードはXvid形式
特徴点抽出の方法はcvCornerMinEigenValの詳細がよくわかってないので正式な名前が付いてるアルゴリズムかどうかは不明だが、角を検出し、なおかつすぐ近くによりスコアの小さい角があればそれは削除するなどして特徴点を均一に検出するような工夫のされている方法のようだ。
2枚目の写真で画面右に写っているタスクマネージャの黒いグラフの角が綺麗に検出できているのがすばらしい。
今回の特徴点抽出の手法は角を検出するというものなので、カメラを素早く左右に振るとぶれて角が無くなってしまい、特徴点の検出ができなくなっているようだ。
これも一度検出した特徴点を追跡する場合はもっと別のアルゴリズムで追跡するとか言うことになるんだろうか。
今回は保存したAVIファイルに対し処理を行い、12秒の動画に対し解析に25秒ほどかかったのでリアルタイムファクタは2ぐらい。
CPUはIntel Core 2 Duo E6600で、CPU利用率は30%ぐらいだった。
シングルスレッドで動画読み込みと画像解析を1コマずつ行ったのでIOとCPUの分担ができず効率の悪い処理になったのかもしれない。
特徴点抽出はライブラリのおかげで割と簡単にできたな。
アルゴリズムをもっと精度の高いものにするとかそういう議論はあるだろうけどとりあえずこれでOK。
特徴点の抽出ができたので、次はその追跡だな。特徴点追跡でググるといろいろ手法があるようだ。
そして特徴点追跡をし、その結果を因子分解法による物体の形状復元を行うとそれぞれの特徴点の空間座標が計算できるようだ。
このページによると「因子分解法とは、ある2F×P行列を2F×3行列と3×P行列の積に分解する手法の1つです。線形代数における特異値分解を利用し、行列を暫定的に分解し得られた線形同次連立方程式を解くことにより分解します。」とのこと。・・・・まぁ何というかちんぷんかんぷんだ。
とりあえず行列から勉強し直すか。ある程度わかれば後はコンピュータが計算してくれるだろう。
3Dの描画すらよくわかってない段階なので暇があるときにちょっとずつ遊んでみるか。
追記
因子分解法による形状復元は日本人の人が考えたようだ。
Carlo Tomasi and Takeo Kanade Shape and motion from image streams under orthography: a factorization method
この論文を読むには・・・・、32ドル!高いよ・・・。
そしてもちろん金出 武雄氏のページにはこの論文のPDFは置いていない。
淡い期待を打ち砕くようにCarlo Tomasi氏のページにももちろん置いてない。
ふぬぬ・・・・。
まぁ読んでもたいして理解できるとも思えないので良いか・・・。