OpenCV for Linux
手っ取り早くOpenCVをLinuxで利用するための日本語リファレンス

環境構築

情報

yahooのOpenCVグループ 英語です.非常に有用です.メンバになりましょう.

インストール

以下のページに,非常に分かりやすく書かれています. VineLinux2.6にインストールする場合には,アップグレードする必要のある プログラムがいくつかあります../configureの結果をよく読みましょう. VineLinux3.1だと結構すんなりインストールできます.

IPL, OpenCVを使った画像処理プログラミング
Linux + OpenCV + 1394カメラ HOWTO

画像のキャプチャ

Video4Linux(V4L)を用いてIPL画像に格納します. NTSCカメラとキャプチャボードを使います. 私はVineLinux2.6を使っていますが,V4Lは特に設定する必要がありませんでし た. Linuxで用いるキャプチャボードは,そのチップセットに注意する必要がありま す.

今からカメラを購入しようとするならば,IEEE1394カメラをお薦めします.キャ プチャボードが必要ありません.導入方法は「Linux + OpenCV + 1394カメラ HOWTO」で見ることができます.

パターンマッチング,物体検知,パターン認識

Haar-like 特徴を用いる高速物体検知

特徴

● OpenCVでサポートされている物体検知アルゴリズムです.学習すれば様々なパ ターンを検知することができます.簡単で明解なアイデアに基づいていますし, 素晴しい性能を持っていると思います.

● 画像サイズが320×240ならばPentium4 2GHzのCPUで10fps〜15fpsで検知できます(最高30fpsの環境です).640×480で も5fps〜10fpsの速さが実現できます.他の手法と比較すると非常に高速です. これは事前に用意されている./opencv-0.9.6/data/haarcascades/*.xmlを読 み込んで,sampleプログラムでテストすることができます.顔の発見用のデー タファイルが用意されており,うまく検知する印象を受けます.

● 学習のために必要なサンプル画像の数は膨大です.背景画像が3000通り,対象 物の画像が7000通り程度あると良いそうです. 平面的なロゴマークなどに対する検知には,大量のサンプル画像を生成する ユーティリティーが付属していますから,画像収集には苦労しません. 背景画像はある程度集めないといけません.

● 普通にOpenCVをインストールしたのでは訓練や訓練データの読み込みがうま くいきません.ソースを数カ所,以下の手順に従って修正する必要があります.

● 学習には時間がかかります.遅いパソコンでは数日から数週間かかります. 高性能PCを用意しましょう.

●文献
・[Viola01] Paul Viola and Michael J. Jones. Rapid Object Detection using a Boosted Cascade of Simple Features. IEEE CVPR, 2001.
・[Lienhart02] Rainer Lienhart and Jochen Maydt. An Extended Set of Haar-like Features for Rapid Object Detection. IEEE ICIP 2002, Vol. 1, pp. 900-903, Sep. 2002. This paper, as well as the extended technical report, can be retrieved at http://www.lienhart.de/Publications/publications.html

Create sample images

訓練用パターン生成と訓練,テストアプリケーションの使いかた
この記述に基づいて
/opencv-0.9.6/apps/haartraining/src/opencv-createsamples
を利用してサンプル生成を行います.例えば
./opencv-createsamples -vec vecfile -img ./lemonwater.jpg -bg bg.txt -num 7000 -bgthresh 1 -maxxangle 1.5 -maxyangle 1.5 -maxzangle 1.5 -show -w 24 -h 24
などとします.

Haar Training

ハール状特徴に基づくブースト分類器のカスケードの構成方法(thanks to Florian Adolf for the PDF)
http://robotik.inflomatik.info/other/OpenCV_ObjectDetection_HowTo.pdf か らの引用です.

これらの記述に基づいて
/opencv-0.9.6/apps/haartraining/src/opencv-haartraining
を利用して訓練を行います.
ただし,上記の文書にあるように,cvhaartraining.cpp内の 関数icvCreateIntHaarFeatures()の中でs0=36,s1=12,s2=18,s3=24となっている 記述をs0=0,s1=0,s2=0,s3=0と書き換えてmakeしなおさなければならないことに 注意が必要です.

rapid object detection

ハールトレーニングの利用によりできたディレクトリ群は, opencv-0.9.6(beta4)の cv/src/cvhaar.cppのバグによって,読み込むことがで きません.最新版のcvhaar.cppをCVSからダウンロードして再コンパイルする必 要があります.

SourceForge.netのcvs: opencvlibrary/opencv
cvhaar.cpp

応用例 --目の検知--

Urthoのページ

Project EyeFinder

KL展開とFFTによる膨大なテンプレートを用いる高速パターンマッチング

●OpenCVで下記の文献で提案されているアルゴリズムのプログラムを作成しまし た(作成者:渕川康裕).膨大なテンプレートを用いる高速パターンマッチング 法です.ちなみにKL展開とはKarhunen-Loeve(カルーネンレーベ)変換を用いる固 有分解の手法です.
Michihiro Uenohara and Takeo Kanade, "Use of Fourier and Karhunen-Loeve Decomposition for Fast Pattern Matching With a Large Set of Templates," IEEE trans. on Pattern Analysis and Machine Intelligence, Vol.19, No.8, pp. 891-898, 1997.

● 固有値空間でのパターンマッチングなので,対象物の検知と姿勢推定を同時 に行うことが可能です.

● テンプレートの作成を計画的に行う必要があります(テンプレートを必要と するどの手法にもいえますが).

● 画像サイズ640×480,Pentium4,2GHzのCPUで3fps-5fpsです.比較的高速で す.

応用例

ここではペットボトルを環境から検知するという応用例を基に説明します.

Fig.1 画像取得の条件.様々な見下ろし角度と,回転角度 でペットボトルを撮影.背景が写り込まないようにするのが大変です.私達は この撮影のために,独自のアプリケーションと撮影環境を構築しました.
Fig.2 取得したカラー画像.10度づつ回転しながら撮影しました. 同様にして見下ろし角と距離,ペットボトルの種類を変更しながら1000枚から 2000枚の画像を撮影します.

Fig.3 上で獲得した画像をKL展開して固有ベクトルを得ます.ここでは固有値を 上位20まで用いました.これらは獲得された固有値から原画像を再構築した画像です.

Fig4. 最後に,道路に落ちているペットボトルを検知することができるかテスト した画像です.遮蔽物があっても,ロバストな検知ができていることが分かりま す.

ソースはこちら(ダウンロードにはパスワードが必要)


Takeshi Nishida's Web Page is here . 最終更新2005年5月30日