2013年4月30日火曜日

OpenCV: Computer Vision with Pythonのkindle版が安い



ペーパーだと3,088円が、kindle版だと、ここから1,238円で購入できる

ペーパーの方は、現在予約中であるので、いち早く入手したい人は、kindle版がよいだろう

なお、価格は、4/30日のものであり、今後価格が変更される可能性もある。

2013年4月26日金曜日

OpenCVのTips (windows)



std::coutでコンソール画面にメッセージを表示できるが、異常終了した場合など、メッセージを見ることができない

cv::imshowで画像を表示している場合には、cv::waitKey(0)で一旦プログラムを停止させることで、メッセージを見ることができるが、imshow以前に不具合が発生した場合は、メッセージを見ることができない

その場合は、

#include <conio.h>

int n = _getch();
で1文字キー入力待ちにすることで、動作をとめる事ができる

OpenCVのkmeansで白黒画像を減色してみた

sampleに入っているkmeansのデモでは、空間上の点を分類するものである

kmeansは、カラー画像の減色に使用されるが、今回は、白黒画像に試し256階調から8階調に変換した。
使用した画像は、samplenに含まれている left06.jpg である。



OpenCVのサンプルを試してみた記事をまとめてみた



過去にいくつかsampleを試してみたが、何を試したのか忘れているので、自分の記事をまとめてみた。もっと試しているのだが、文章として残していない


背景差分
bgfg_gmg
http://iwaki2009.blogspot.jp/2013/03/opencv-2.html

オプティカルフロー
tvl1_optical_flow
http://iwaki2009.blogspot.jp/2013/03/opencvoptical-flow.html

特徴点検出
freak_demo
http://iwaki2009.blogspot.jp/2013/03/opencv-freak.html

latentSVM
latentsvmdetect
http://iwaki2009.blogspot.jp/2013/03/opencv-latentsvm.html

Chessboardを使用したカメラキャリブレーション
calibration_artificial
http://iwaki2009.blogspot.jp/2013/02/opencvcalibrationartificial.html

特徴点の検出と斜影変換行列のパラメータの取得
brief_match_test
http://iwaki2009.blogspot.jp/2013/02/opencvbriefmatchtest.html

色の追跡
camshiftdemo
http://iwaki2009.blogspot.jp/2013/02/opencv_68.html


同色の検出
ffilldemo
http://iwaki2009.blogspot.jp/2013/01/opencvfloodfill.html


主成分分析
pca
http://iwaki2009.blogspot.jp/2012/11/opencv-243-pcacpp.html

オプティカルフロー
SimpleFlow
http://iwaki2009.blogspot.jp/2012/11/opencv-243simpleflow.html

背景差分
bgfg_segm
http://iwaki2009.blogspot.jp/2012/08/opencv.html

特徴点の比較
matching_to_many_images
http://iwaki2009.blogspot.jp/2012/07/opencv-242-matchingtomanyimages.html

2013年4月25日木曜日

OpenCV: Computer Vision with Pythonが発売された



Pythonを使用しないので個人的には興味がないのだが、Python経由でOpenCVを使うには参考になるかもしれない

特に、各OSでの環境構築や、NumPy, SciPyの環境構築も説明されているので、興味のある人には便利かもしれない。(ただし、英語なので、英語が苦手な人には、向いていないかも)


ここで、PDFファイルを買うことができるし、簡単な紹介もある

sampleも著者のサイトから取得できるとのこと

以上

OpenCV for Android SDK の2.4.5のチュートリアル3のソースを眺めてみた 2



前回の続き

mCameraがJavaCameraViewのprotectedのメンバーなので、JavaCameraViewを継承したクラスしかアクセスできない

そのため、解像度を変えるには、オリジナルのクラスを作成しないといけないので、チュートリアル3では、JavaCameraViewを拡張して、Tutorial3Viewを定義し、いくつかのメソッドを追加している


・現在の解像度の取得は、Size getResolution()であり、やっていることは

return mCamera.getParameters().getPreviewSize();

である

・解像度の変更は、void setResolution(Size resolution)であり、やっていることは

disconnectCamera();
        mMaxHeight = resolution.height;
        mMaxWidth = resolution.width;
        connectCamera(getWidth(), getHeight());

である。

一旦カメラの取り込みを中止し、mMaxHeight、mMaxWidthに値を設定後、再度カメラを起動しているが、サイズの指定にgetWidth()という少し回りくどいことをしている


補足

JavaCameraViewは、ソースが

sdk\java\src\org\opencv\android\JavaCameraView.java

にあるので眺めてみると少し仕組みがわかる

ドキュメントはここ


2013年4月23日火曜日

std::string を wchar_t*に変換する


認識結果を232C経由で他の装置に送るとき、シリアル通信を扱うことになる

シリアル通信は、Windows7になっても抽象化されていなく、CreateFileを使用してhandleを取得してアクセスしなければならない

古い資料では、アクセス対象となるファイルの指定には、LPCTSTR lpFileNameを用いることになっているが、Windows7では、LPCWSTRを指定する必要がある。

要求を満たすのであれば、L"COM3"のようにソースに固定値を埋め込めばよい

しかし、OpenCVのファイルストレージを使用する場合、扱える型がstd::stringなので、LPCWSTR(wchar_t*)に変換する必要がある。

std::string portname("COM7");
WCHAR wString[16];

size_t wLen = 0;
errno_t err = 0;

//ロケール指定
setlocale(LC_ALL,"japanese");

err = mbstowcs_s(&wLen, wString, 10, portname.c_str(), _TRUNCATE);

以上

OpenCV for Android SDK の2.4.5のチュートリアル3のソースを眺めてみた

2.4.4の時点でチュートリアルが見直され、2.4.3.2のサンプル 5と2.4.5のチュートリアル 3が対応している。

の2.4.5のチュートリアル3の更点に関しては、チュートリアル 1, 2同様に CvCameraViewListenerから、CvCameraViewListener2に変わったところのみで、特にこのチュートリアル特有のものはなかった。

チュートリアル 3のポイント

チュートリアル3では、チュートリアル 1, 2と異なり、Viewに、org.opencv.android.JavaCameraViewを継承した Tutorial3View を定義している。

このJavaCameraViewを拡張することで、カメラの設定を行っており、基本のJavaCameraViewには、カメラのモードを切り替える機能が提供されていない点に注意。

つまり、チュートリアル1でカメラの入力をデフォルトから他のサイズに切り替えるためには、JavaCameraViewにVideoCapture::setにあたるようなメソッドは、存在していないので、そのままでは実現できない。

チュートリアル 3のように、JavaCameraViewを継承した、独自Viewを定義し、チュートリアル 3を参考に、自分で解像度を買えるメソッドを準備しないといけない

以上

2013年4月17日水曜日

OpenCV for Android SDK の2.4.3.2のsample4と2.4.5のチュートリアル2のソースを比較してみた

2.4.4の時点でチュートリアルが見直され、2.4.3.2のサンプル4と2.4.5のチュートリアルが対応している。 以下に変更点のポイントのみ記す

メインは、CvCameraViewListenerから、CvCameraViewListener2に変更されていることであり、この点に関しては、チュートリアル1と同じである

チュートリアル1との違いは、2.4.3.2では、メニューでモード変更にあわせて、カメラの入力フォーマットを変更していたが、2.4.5では、カメラのフォーマットを指定せず、onCameraFrameでの引数である、CvCameraViewFrame inputFrameから、データを取り出すときに、 メソッドrgba()か、gray()かを指定する方法に変更されている点である。





nativeのコードは、変更点はなし

補足
作業用のMatは、onCameraViewStartedで確保して、onCameraViewStoppedでリリースするのがAndroidの作法であるようだ


以上

OpenCV (Windows版)のリリース日を調べてみた



Windows版の各バージョンのリリース日をここを参考に調べてみた

1.0 07/5/24
1.1 08/10/17
2.0 09/10/01
2.1 10/04/06
2.2 10/12/05
2.3 11/07/04
2.3.1 12/04/04
2.4.0 12/05/01
2.4.1 12/06/21
2.4.2 12/07/04
2.4.3 12/11/22
2.4.4 13/03/21
2.4.5 13/04/05

2.4.6 13/06/01 (予定)
3.0 13/09/02 (予定)

OpenCV 3.0のリリースが予定されている


ロードマップのページを見るといつのまにか変更されており、2.5がキャンセルされ変わりに3.0が予定されている

リリース予定日は、2013/9/2である
バグ修正、機能追加はあわせて90件の予定

Bug #2138: Memory Leak in imshow (on Windows)?
など気になるものもある

2013年4月16日火曜日

OpenCV for Android SDK 2.4.5のサンプルを動かしてみた 2

昨日に続き再度 OpenCV Tutorial 2 - Mixed Processing に挑戦

エラーを調べてみると、Nativeのライブラリをロードしているところで落ちているので、Nativeのビルドができていないと推測

実は、eclipseの調子がおかしく、プロジェクトのプロパティにC++ Buildの項目が出て来なかった

eclipseを削除し、junoをダウンロードして、各種設定を行うことで、C++ Buildの項目が表示されるようになった


Builder Settingの項目でBuild commandを確認してみると

${NDKROOT}/ndk-build.cmdとなっていたので

${NDKROOT}/ndk-build に修正

これで、Nativeコードがコンパイルされるようになり、無事 isw11scで動作することを確認できた。



注意
1 .cmdはWindowsの場合、必要であるがubuntuでは、削除すること

2 eclipseはterminalから起動すること

OpenCV for Android SDK の2.4.3.2のsample1と2.4.5のチュートリアル1のソースを比較してみた



変更点をソースの最初から列挙する

1 
 2.4.5に
  import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;
 を追加

2 
  import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener;
 から
  import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
 に変更

 CvCameraViewListener2についてはここに説明がある



 メインクラスの基底クラスが、
  CvCameraViewListener
 から
  CvCameraViewListener2
 に変更


  public void onPause()
 内での
  super.onPause();
 の実行場所を最初に修正


 onCameraFrameの引数の型が
  Mat
 から
  CvCameraViewFrameに

 戻り値がMatのため
  CvCameraViewFrameのrgb()関数を使用

追加
2.4.5のサンプルで、サービスを呼び出す初期化のところで、バージョンが2.4.3になっているのはバグだろう

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3

以上

OpenCV for Android SDK 2.4.5のサンプルを動かしてみた

 ダウンロードの方法は、ここを参照


使用した環境は、Ubuntuの12.4 64bitである。
Ubuntu、Andoird、Eclipは、アップデートを済ませておく

1 最初に、2.4.5のライブラリをビルドする
  これを必ず行うこと

 EclipseのimportでAndroidの既存のプロジェクトを選択し、nextボタンを押す
 次に、Browseで、2.4.5のsdk\jabaにあるプロジェクトを選択する
 Eclipseの設定にもよるが、プロジェクトがAutoでビルドされライブラリが出来上がる
 2.4.5\sdk\javaにbinのディレクトリが作成されている

2 次にチュートリアルをimport
 同様に、2.4.5のチュートリアル1のCameraPreviewをimportする
 ライブラリがビルドできれば、こちらも自動的にビルドされ、apkファイルが作成される

3 USBデバッグモードのAndroid携帯とPCをUSBケーブルで接続し、RUNメニューを実行する。



今回は、AUのISW11SCを使用して動作させてみた。

チュートリアルの1は、JavaカメラとNativeカメラの切り替えができる

チュートリアルの2は、落ちてしまい動作しない

チュートリアルの3は、カメラの解像度を切り替えたり、エフェクトをかけることができる

 2.4.3.2では、カメラの解像度を640x480に切り替えると、表示もそのサイズに変わってしまった
 2.4.5では、640x480に切り替えても、表示はディスプレーのサイズを考慮し、拡大して表示されるように修正されている

 あとで、コードを調べてみる

2013年4月15日月曜日

画像認識のセミナーを調べてみた 5



前回のものと重複(*のついたもの)もあるが、今後3ヶ月以内に開催される画像認識に関連するセミナーを調べてみた。

以下はすべて有料である。


*デジタル画像処理・画像解析の基礎講座 ~デモ付~
2013年4月17日(水)10:30-17:30
http://www.j-techno.co.jp/infos/view/6520/

*~TRECVID2012にみる~映像検索技術の最新動向
2013年4月19日(金)13:30-16:30
http://www.catnet.ne.jp/triceps/sem/s130419a.html

*画像認識のための局所不変特徴量の理解とGPUによる実装の基礎
2013年4月24日(水)10:30-16:00
http://www.catnet.ne.jp/triceps/sem/s130424a.html

人物画像センシング技術の基礎と応用
2013年5月9日(木)10:30-16:30
http://www.catnet.ne.jp/triceps/sem/s130509a.html

*コンピューテーショナルカメラ技術とその応用・アプリケーション例
2013年5月13日(木) 10:30-17:30
http://www.j-techno.co.jp/infos/view/6302/

*Kinectの基本アルゴリズムの理解とそれを用いた非接触画像センシングシステム開発
2013年5月24日(金)10:30-16:30
http://www.catnet.ne.jp/triceps/sem/s130524a.html

局所不変特徴量とGPU実装の基礎講座:物体認識の精度向上と高速化
2013年5月24日(金)10:30-17:30
http://www.j-techno.co.jp/infos/view/6334/

多様体学習(Manifold Learning)を用いた画像処理・画像認識
2013年5月27日(木)10:30-16:30
http://www.catnet.ne.jp/triceps/sem/s130527a.html

Deep Learning(深層学習)と画像への応用
2013年5月29日(水)13:00-17:00
http://www.catnet.ne.jp/triceps/sem/s130529a.html

物体認識技術のしくみとアプリケーション展開へのテクニック
2013年05月31日(金)10:00~17:00
http://techon.nikkeibp.co.jp/article/SEMINAR/20130312/270697/?ST=print

ステレオ画像処理とステレオ画像計測法の基礎と実応用例 ~デモ付~
2013年6月4日(火)10:30-17:30
http://www.j-techno.co.jp/infos/view/6405/

入門 動画像認識/解析/処理~特徴抽出と判定アルゴリズム
2013年6月5日(水)10:00-17:00
http://www.catnet.ne.jp/triceps/sem/s130605a.html

入門 TOF距離画像処理技術
2013年6月11日(火)11:00-17:00
http://www.catnet.ne.jp/triceps/sem/s130611a.html

車両の走行環境認識技術とその応用・例
2013年6月11日(火)10:30-17:30
http://www.j-techno.co.jp/infos/view/6451/

テンプレートマッチングとその周辺
2013年6月28日(金) 13時00分 ~ 17時00分
http://www.catnet.ne.jp/triceps/sem/s130628a.html

画像処理入門~フィルタリング/冗長変換/スパース表現~
2013年7月1日(月)13:00-17:00
http://www.catnet.ne.jp/triceps/sem/s130701a.html

進化的・知的画像処理 / 認識技術
2013年7月11日(木) 10時30分 ~ 16時30分
http://www.catnet.ne.jp/triceps/sem/s130415k.html

パターン認識・検索技術の基礎と応用
2013年7月23日(火) 10時00分 ~ 17時00分
http://www.catnet.ne.jp/triceps/sem/s130723a1.html

以上

2013年4月12日金曜日

OpenCV for Android SDK 2.4.5


OpenCV2.4.5のリリースにあわせて、Android版のSDKも2.4.5がリリースされた
ここからダウンロードできる

2.4.4の時は、時間がなくて見送ったが、2.4.5はダウンロードしてみた

zipのファイルサイズは、2.4.3.2の時の 95.5M から 97.6M に増えている。
また展開後はサイズは、208Mとなる

2.4.4の変更点で、フレームワーク、チュートリアル、サンプルが更新されたとあった。

実際にsampleのフォルダーの中身のチュートリアルが

2.4.3.2の

  • tutorial-1-addopencv
  • tutorial-2-opencvcamera
  • tutorial-3-native
  • tutorial-4-mixed
  • tutorial-5-cameracontrol

から


  • tutorial-1-camerapreview
  • tutorial-2-mixedprocessing
  • tutorial-3-cameracontrol


に変更されている

後でビルドして実機で動かしてみる


変更の詳細は、ここにまとめられている

相変わらず、特定の機種のカメラに問題があるらしい。機種依存の問題がほかにもあるので、動作しない場合は、機種を変えてみるのもよいだろう

OpenCV 2.4.5のリリースが告知された


ようやくOpenCVのHomeページで2.4.5のリリースが11日付けで告知された


内容的には、4/8のものと変わりがない

2013年4月10日水曜日

OpenCV 2.4.5の変更点


topページには、あいかわらずリリースのアナウンスが出ていないが、変更点もここにまとめられている

・WindowsRTの実験的サポート
・動画像に対する超解像用のモジュールの提供
・CLAHE(適応的ヒストグラム平滑化)の提供 GPU版も別途提供
・OpenCL モジュールの改良と拡張
  Intel HD4000のバグ対応
・Visual Studio 2012でのcv::Matの内容表示方法のチュートリアル
・gitでの78の修正
・2.4.4から25のバグ修正

2013年4月8日月曜日

OpenCV 2.4.5のドキュメントを取得した


OpenCV 2.4.5のDocフォルダーには、2.4.4同様にマニュアルなどのPDFがなかったので、http://docs.opencv.org/ から関連するPDFを取得した。

The OpenCV User Guide Release 2.4.5.0
 P19 2013/4/5
 2.4.4とページ数は変わらず

The OpenCV Tutorials Release 2.4.5
 P419 2013/4/5

The OpenCV Reference Manual Release 2.4.5.0
 P811 2013/4/5
 2.4.4とページ数は変わらず

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


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

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

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

1 ここからWindows版をダウンロードする

2 OpenCV-2.4.5.exeを実行しインストールディレクトリc:\を指定する

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

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

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

6 手持ちのサンプルをビルドし動作確認する
以上の作業は30分もかからない。

参考 古いバージョンの記事
Windows7 64bit版にOpenCV 2.4.4の開発環境を構築した

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

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

OpenCV 2.4.5のsampleコードを眺めてみた


2.4.5のsamples\cppのファイルを2.4.4と比較した

以下の3つのファイルの

letter_recog.cpp
stereo_calib.cpp
stitching_detailed.cpp

の細かい箇所が修正されているが、tutorialなどほかには、変更点がないようだ

OpenCV 2.4.5がリリースされた

Homeページのアナウンスが、まだされていないが4月5日に2.4.5がリリースされた。


Windows版は、ここからダウンロード

  Windows用のファイル OpenCV-2.4.5.exe のサイズは、前回の 272.1M から 278.9M に増えている

  展開後のファイルサイズは、2768Mである。


あとで、環境を構築してみる

2013年4月4日木曜日

OpenCV の最新ロードマップ 4/4


ロードマップのページを見るといつのまにか変更されており
2.4.5のリリース予定が、明日4/5となっている。
(進捗状況 76% なので遅れる可能性がある)

(日本時間 4/5 15:00で進捗率が96%と更新されたので、今夜にはリリースされる可能性がある)


また、当初の予定である6/1には、2.4.6が予定されている
 変更点は、今のところJavaだけなので、関係なさそうである
 
     4/5 4件に増加

2.5.0に関しては、6/1と変更なし
進捗状況 29%

     4/5 30%に更新

独り言
Linuxに2.4.4を入れなおそうかと考えていたが、週末までまってみて 2.4.5がリリースされていれば、そちらを入れてみる予定

OpenCV 2.4.4のドキュメントの取得



OpenCV 2.4.4で気になる点があり、ドキュメントを読もうとしたら、2.4.4のDocフォルダーにはPDFがなかったので、http://docs.opencv.org/ から関連するPDFを取得した。


The OpenCV User Guide Release 2.4.4.0
 P19 2013/3/27
 2.4.3とページ数は変わらず

The OpenCV Reference Manual Release 2.4.4.0

4/4の時点ではダウンロードできるがファイルが壊れており読むことができない
2.4.3と比べてファイルサイズが半分になっている


The OpenCV Reference Manual Release 2.4.4.0

 P811 2013/3/27
 2.4.3が797ページなので増えている