2013年3月28日木曜日

OpenCV for WindowsRTの状況



いまひとつ盛り上がりの欠けるWindowsRTだが、OpenCV開発チームが対応をすすめているようだ。

現状coreの部分のみできており、UIとかVideo周りは未対応とのこと

2013年3月25日月曜日

OpenCV対応のSoCが発表される

ルネサスエレクトロニクスなど、次世代のハイエンド車載情報端末向けSoC「R-Car H2」を発売

「R-Car H1」比、約4倍の処理性能を持つIMP-X4の搭載により、OpenCVに対応
(プレスリリース内部で表現が、8倍、4倍と記載されている)

2013年3月23日土曜日

OpenCV 関連書籍


Head First C――頭とからだで覚えるCの基本 が2013年04月03日 発売予定 定価3,780円で発売されます

書籍のテーマは、C言語の学習本ですが、応用としてOpenCVを利用して自宅の防犯システムを作ってみるという話題があります。

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なので、符号を反転させないといけない


以上

2013年3月6日水曜日

OpenCVのFileStrageではまってしまった


プログラムの変数に設定しようと、各種設定データを.ymlに保存し、FileStrageに読み込もうとした。
ここで、あることにはまったので忘れないようにメモ

症状

パラメータ識別用に文字情報を入れ、起動時にコンソールに表示するために

cv::FileStorage fs(INI_FILE, cv::FileStorage::READ);
if (fs.isOpened()) {
fs["message"] >> s;

のようなコードを書き、ymr内に

%YAML:1.0
message: 25% scale

と書いていたが、プログラムを実行すると、

cv::FileStorage fs(INI_FILE, cv::FileStorage::READ);

で落ちる

最初のパスの問題かと思ったが何度見直しても問題がないので、試行錯誤の結果、原因がわかるまでに非常に時間を要した


原因
YAML内の要素に、数字文字の順の並びを記載すると落ちる

対策
YAML内の要素に、文字数字の順の並び変更

OpenCV 2.4.4の笑顔検出を試してみた


2.4.4からsmile検出用の辞書 haarcascade_smile.xml が追加されたので試してみた。
場所は、他の辞書と同じく data\haarcascadesに含まれている。

どのように検知されるか不明であったが、検出された結果は、口の周りの領域を示している
笑っていなくても検出されてしまうし、背景を検出する場合もあった。


仕様が気になったのしらべてみた。

アナウンスのリンクは、closed requestsのtopページを示しており、他のissueにより内容が一致しないというバグがある
調べてみると、このissueが該当していると思われる。

サンプルプログラムは、sample\c\smiledetect.cppに提供されているとのことなので、ソースを覗いてみると、
string cascadeName = "../../data/haarcascades/haarcascade_frontalface_alt.xml";
string nestedCascadeName = "../../data/haarcascades/haarcascade_smile.xml";

と定義されており、一旦顔を検出する必要がありそうだ

2.4.4からC++に切り替えるはずだが、ソースは、いまだにcのAPIを使用している。

後でC++に書き換えて試してみる

2013年3月5日火曜日

OpenCV 2.4.4のサンプルコードを調べてみた


2.4.4のsampleのcppを2.4.3のものと比較してみた

変更されたもの
bagofwords_classification.cpp ローカル変数の初期化
calibration.cpp includeファイルの追加
descriptor_extractor_matcher.cpp 内部変数のコンソールへの出力
videostab.cpp コンパイル条件の追加、ローカル変数の初期化

削除
point_cloud.cpp

追加
tvl1_optical_flow.cpp



また、tutorial_codeをざっと見てみたが、プログラムの表記方法の変更が多い

例えば *5 を /2 に int を size_tに while(true) を for (;;)になど

2013年3月4日月曜日

Windows7 64bit版にOpenCV 2.4.4の開発環境を構築した


検索などでこのページを訪れる人が、数は少ないけど、コンスタントにいる。
ちょうどこの上にあるG+1のボタンを押してもらうと、Goolgeの検索に見つかりやすくなるので、ご協力いただきたい。

最新の2.4.6の記事 (7/9 追加)
Windows7 64bit版にOpenCV 2.4.6の開発環境を構築した

今回からVisual Studio 2012がサポートされるようになったが、以下は、Windows7 64bit版上で、Visual Studio 2010 Express Editionでプログラムを開発するためののものである
(Windows7 32bit版でも同じ手順でできる)


1 ここからWindows版をダウンロードする
  Windows用のファイル OpenCV-2.4.4.exe のサイズは、前回の 251M から 259M に増えている

2 OpenCV-2.4.4.exeを実行しインストールディレクトリc:\を指定する
  展開後のファイルサイズは、2703Mである。

3 展開後、ディレクトリ名をopencvからopencv244に変更する

4 OSの環境変数の設定(要管理者権限)
  コントロールパネル、システムとセキュリティ、システムを開き
  システムの詳細設定の環境変数ボタンを押し
  システム環境変数のPathの編集
  末尾に";C:\opencv244\build\x86\vc10\bin"を追加
 (この作業後、一度ログオフし、再度ログインする)

5 Visual C++ 2010 Expressのパスの設定を行う
 この記事を参考
 ただし、各パスは、C:\opencv244\build\includeと、C:\opencv244\build\x86\vc10\libに変更する

6 手持ちのサンプルをビルドし動作確認する

以上の作業は30分もかからない。


参考 古いバージョンの記事

Windows7 64bit版にOpenCV 2.4.3の開発環境を構築した

Windows7 32bit版にOpenCV 2.4.2の開発環境を構築した

OpenCV の最新ロードマップ


2.4.4がリリースされたばかりであるが、早くも 2.4.5が 6/1日にリリースが予定されている
今のところ大きな変更点は紹介されておらず、バグと機能追加のみ公開されている

また、2.5.0も 6/1日にリリースが予定されており、こちらの方がメジャーアップデートと思われる。

ロードマップは、ここに公開されている

OpenCV 2.4.4がリリースされた



ベータ版がリリースされていたが、スケジュール通りの3/1に正式版がリリースされた

ここにアナウンスがされており、現時点でもっとも成熟したバージョンと紹介されている

変更点

  • desktop版Javaのサポート
  • Android版のフレームワーク、チュートリアル、サンプルの更新 詳細はここ
  • CUDA GPUモジュール内の多くの改良
  • OpenCL NVIDIA, AMD, Intel版での動作の安定
  • 2.4.3で報告された100以上のバグの修正
  • 笑顔検出器の追加とサンプル
  • OpenCV for Linux on ARM platforms向けのチュートリアルの追加

2013年3月1日金曜日

OpenCVでWebカメラを使用する


ネット通販で、ELECOM製のUCAM-DLD200BAが安く販売されていたので、実験用に複数購入した。
仕様では、YUY2形式:30fps(~640×480ピクセル)となっており、実験に使えるだろうと考えていた。
(この時点で、最大フレームレートの意味を考えていなかった。)

早試VGAで撮影し、XVIDでファイルに保存してみると、どうも動きがおかしい。FPSを計測してみると8fpsしかでていない

いろいろ調べてみると、室内の環境では照明が十分でないため、カメラ側でシャッター速度を遅くしているためとわかった。

100均でLEDライトを購入し、補助光としてみて試してみる予定