2013年3月18日月曜日

OpenCV関連の書籍


あらたな本の発売予定を見つけた

C++/CLI & OpenCV 画像処理GUIプログラミング

税込価格 3,360 2013年4月10日

Microsoft Visual Studio 2012を使用しているが、OpenCV は、2.4となっている

画像処理の内容としては、10.5 オブジェクト除去がどういうものか気になる

2013年3月15日金曜日

OpenCV 背景差分のサンプルを動かしてみた 2



samples/cpp/bgfg_gmg.cppをこの記事に従い動かしてみる


bgfg_gmg.cppは、以前試したときには、動作しなかったが、再度試してみると問題なく動いた


実験用の画像は、samples\gpu\768x576.aviを使用した。


検出結果は、以下のようになる。


 表現が面白いので遊べそうである。

sampleで使用しているクラスは、BackgroundSubtractor.GMGである。
2.4.4になってもドキュメントが提供されていない

また、sampleで使用している initModule_video は、ドキュメントに説明はないが、ソースは、modules\video\src\video_init.cppにあったので、覗いてみると、BackgroundSubtractor.GMG専用になっていた


他の背景差分に関する記事は、こちら
使用しているビデオは同じものと思われるが、ファイル名が変更されたようだ

以上

2013年3月14日木曜日

OpenCVのOptical Flowを試してみた



2.4.4から、Dual TV L1方式がサポートされたので試してみた。

sampleが、sample\tvl1_optical_flow.cppで提供されているが、2枚の画像でフローを求めるものである

以前作成した、カメラの入力画像からオプティカルフローを計算するプログラムを修正した。

修正は、最初に

    Ptr<DenseOpticalFlow> tvl1 = createOptFlow_DualTVL1();

でオブジェクトを作成し、前の画像と今の画像(双方白黒)を与えるとフローを得ることができる

    tvl1->calc(frame0, frame1, flow);

処理は重く、VGA画像を80x60に縮小しても、5fpsの速度しか得られない


蛇足
インスタンス化は、createOptFlow_DualTVL1を呼ぶのだが、最初打ち間違えてcreateOpticalFlow_DualTVL1()としたため
くだらないことで時間を食った。

2013年3月12日火曜日

OpenCV のFREAK特徴量を試してみた

いまさらながら、2.4.2に追加されたFREAK特徴量を試してみた

使用したのは、sample\freak_demo.cpp

自前のHD画像を480x270に縮小して与えてみた。



特徴点検出にSURFを使用しているが、ORBなどの検出器でも問題ないと思う

メモ
#include "opencv2/nonfree/nonfree.hpp"
は、SurfFeatureDetectorのため

#include "opencv2/legacy/legacy.hpp"
は、BruteForceMatcherのため

2013年3月8日金曜日

OpenCVの最適化に関して


OpenCVの計算速度向上のためには、cv::setUseOptimized(true)を唱える必要があると思い込んでいた。

再度説明を読んでみると、CMakeでoffにしない限り、デフォルトではtrueになっているとのこと

cv::useOptimizedで確認しているとtrueになっていた。

OpenCV 2.4.4の Build情報を表示させてみた




OpenCV提供されている ライブラリーのビルド条件を表示させてみた。
対象は、2.4.4である。

cv::getBuildInformation()を使用した。


参考までに2.4.3も示す


2013年3月7日木曜日

OpenCVの latentSVMを試してみた


c のsampleを眺めていたら、latent SVMのsample(latentsvmdetect.cpp)があったので試してみた。

ソースは、TBB対応になっているので、コンパイルフラグを設定すればよいみたいである。
通常の環境では、計算に時間がかかり、試してみたマシンでは、5秒もかかった。

サンプルには、猫の辞書がついているので、猫の画像で試してみた。



cat.xmlの中を覗いてみると、Componentsが2個 root filter, Part filter 6個 とroot filter, Part filter 6個 の構成になっている。

internetの記事に、人もできると書いてあったので、lenaもためしてみた


補足
2.4.3のソースから一部修正が行われており、検出結果のスコアーを枠の色の明るさに反映するようになっている CV_RGB(cvRound(255.0f*score),0,0) が、上記の2枚の画像は、黒色である。
スコアーを見ると、-0.88なので、符号を反転させないといけない


以上