OpenCVは、インテルが開発し公開したオープンソースの画像処理ライブラリです。Wikipedia 先生曰く沢山の機能を持っているようです*1。
- 画像処理
- 構造解析
- モーション解析と物体追跡
- パターン認識
- カメラキャリブレーションと3次元再構成
- 機械学習
- ユーザーインターフェイス
その沢山の中でも僕が今回やりたいのは、人間の顔認識とロゴ認識といったオブジェクト検出です。OpenCVはどのようにオブジェクト検出しているのかと言うと、検索窓と呼ばれる矩形を対象画像の左上から右下へ移動させていき、探しているオブジェクトがあるかどうかを判定しています。
カメラから入力されてきた画像とピクセル単位で一致するものはまず有り得ませんので、「似たような特徴」で検索をおこなっています。Haar-Like特徴量と呼ばれる技術が使われているそうなのですがちょっと僕には理解できませんでした。認識精度を上げる為には正しい画像を使って学習させる必要があるので原理は理解しておく必要がありますね。オブジェクト検出の技術については以下の記事が詳しいです。
検索の素となる正解画像と不正解画像を使用して、機械学習によってオブジェクト検出器を作成する必要があります。オブジェクト検出器の作成の前にOpenCVのインストールをおこないましょう。
OpenCVのインストール
最初、WindowsマシンにOpenCVをインストールしよう*2と思ったのですが、「OpenCVのインストール==各自でのビルド」というのに気付いて、Visual Studioが導入されていないマシンでのインストールは不可能です。
iOSアプリケーション開発のために既にXcodeが入ってたマシンがありますので、MacOSX版を使用することにしました。OpenCVのインストールについては、下記の記事を参考にして進めています。
- yoshimasa niwa - iPhoneでOpenCVを使う方法
- Mac OSX Snow LeopardにOpenCVを入れてXCodeから使えるようにする手順 - konisimple log
- OSX で OpenCV を試してみる - minorio のプログラミング・メモ
MacPorts*3をインストールして、CMakeを導入しました。SourceforgeよりUnix版のOpenCVをダウンロードし、tarファイルを解凍します。
$ tar xjvf OpenCV-2.2.0.tar.bz2
CMakeでビルドを開始します。
$ cd OpenCV-2.2.0 $ mkdir build $ cd build $ cmake .. $ ccmake .
コンフィグが表示されるので、qキーで終了させます。
$ make -j8
これでOpenCVインストールは完了。CMakeが想像以上に賢いので、特に何も考えずにビルドを通す事ができました。
2012.6.27 追記
インストール(ビルド)時にWITH_TBBを有効(ON)にしておくことで、opencv_haartraningをマルチコア対応にすることができる。