OpenCVで学ぶ画像認識
第2回 OpenCVを使ってみよう
第1回では,画像認識の概要や基本原理,実例などを紹介しました。第2回の今回は,これから皆さんが画像認識のプログラムを組んでいく上で必要なOpenCVというツールについて紹介します。
OpenCVとは?
OpenCVは正式名称を"Intel Open Source Computer Vision Library"と言い,その名のとおりインテル社が開発したオープンソースのC/C++ライブラリ集で,コンピュータ・ビジョンに必要な各種機能がパッケージされています。
具体的には,だいたい以下の処理を行う関数群が用意されています。
- 線形代数や統計処理など,コンピュータビジョンに必要な各種数学関数
- 直線や曲線,テキストなど画像への描画関数
- OpenCVで使用したデータを読み込み/保存するための関数
- エッジ等の特徴抽出や画像の幾何変換,カラー処理等々の画像処理関数
- 物体追跡や動き推定などの動画像処理用関数
- 物体検出などのパターン認識関数
- 三次元復元のためのカメラ位置や姿勢の検出などのカメラキャリブレーション関数
- コンピュータにパターンを学習させるための機械学習関数
- 画像の読み込みや保存,表示,ビデオ入出力などインターフェース用関数
このように,OpenCVはどちらかというとビジョンの研究者や開発者の仕事を楽にするためのツールです。 OpenCVがなかった頃は,ビジョン関係の開発者は,画像フォーマットを解析して画像を読みこむプログラムやGUI上に表示するプログラム,画像をぼかしたり特徴のあるピクセルを強調するような「フィルタリング」と呼ばれる処理を,全て一から書かなくてはいけませんでした。しかし,OpenCVのお陰でそれらの処理を一から書かなくても済むようになり,開発が大変楽になりました。
もちろん,コンピュータ・ビジョンの専門知識がない人でも,例えばエッジを抽出したり,ぼかしたりといった画像処理プログラムを,このライブラリを使うことで簡単に組むことができます。
ただし,これらのライブラリ群を使ったとしても,例えば画像認識や画像理解(三次元復元)のようなプログラムを一から書こうとすると,専門知識なしに開発するのは難しいかもしれません。というのは,これらのライブラリの関数群はあくまで画像認識や画像理解などで共通して使用する処理をまとめたものであって,これらをどう組み合わせて,例えば顔を検出するプログラムを作るかは,結局開発者に委ねられているからです。
ただし,これには例外があります。実はOpenCVには,画像の中から物体を検出してくれる画像認識のプログラムが既に用意されているのです。この連載では,皆さんにこのプログラムを使いこなすことで,自分で物体検出アプリケーションを開発できるようになってもらうことを目指します。
開発環境の構築
この連載では,以下のような開発環境をベースに解説を行っていきます。
- バージョン:OpenCV 1.0
- OS:Winodows XP
- IDE:Microsoft Visual C++ 2005
ただしOpenCVはLinuxやMac OS Xもサポートされてますし,もちろん他のIDE(例えばEclipse CDT)などでもコーディング可能です。以降の説明は,皆さんの開発環境にあわせて内容を解釈しながら読み進めてください。
ダウンロードとインストール
OpenCVはsourceforgeからダウンロード可能です。
2008年5月現在の最新版はバージョン1.0です。こちらのサイトからWindows用のOpenCV_1.0.exeというファイルをダウンロードします。chopencv-2.5.0-win-binary.zipというファイルは今回使用しません。こちらはChと呼ばれるインタープリタ型C/C++言語プラットフォーム用のものです。
ダウンロードしたら,OpenCV_1.0.exeを実行してインストールを開始してください。指示に従えば簡単にインストールできると思います。


