Document

コンピュータビジョン特論
OpenCVについて
情報通信システム学科
加藤丈和
レポートとOpenCVについて
• この講義では、レポート課題で実際にプログ
ラムを書いて、コンピュータビジョンのアルゴ
リズムを動作させて理解する
• 完全に1から書くと、画像ファイルの読み書き、
画像処理、カメラからの取り込みなど、大規
模なプログラムになってしまう。
• OpenCVとよばれるライブラリを利用
コンピュータグラフィックス(CG)と
コンピュータビジョン(CV)
カメラ
CV
モデル
学習データ
認識・理解
コンピュータ
実世界
CG
生成・表示
コンピュータビジョンの作り方
(コンピュータビジョンの材料)
カメラ
パソコン(OS)
開発環境(コンパイラ)
VisualStudio2005(無料公開)
gcc (オープンソース、無料)
Xcode (MacOSXについてくる)
USBカメラ、DVカメラなど
2000円~
Windows
Linux
Mac
そして…
OpenCV ライブラリ(オープンソース、無料)
コンピュータビジョンの作り方
(OpenCVライブラリ)
• Intel が中心に開発、オープンソースで公開
• 世界中の研究者が、自分が開発したアルゴリ
ズムを実装
• 難しいCVのアルゴリズムをカンタンに使える
• もちろん無料
コンピュータビジョンの作り方
レシピ1:クロマキー合成
• クロマキー合成:入力画像から背景を取り除
いて、別の背景に重ね合わせる
クロマキー合成のプログラム
入力画像
背景画像
//背景差分
cvAbsDiff(frame,back,diff);
差の画像
// 背景を濃淡画像に変換
cvCvtColor(diff,gray,CV_BGR2GRAY);
人物領域を取り出す
// 二値化
cvThreshold(gray,binary,(double)thresh,255,CV_THRESH_BINARY);
//ノイズ除去
cvMorphologyEx(binary,binary,NULL,NULL,CV_MOP_CLOSE,3);
cvMorphologyEx(binary,binary,NULL,NULL,CV_MOP_OPEN,3);
cvNot(binary,binary);
//合成
cvCopy(background,frame,binary);
別の背景と合成
GUIや画像取得を含めて全体で、80行くらいのプログラム
コンピュータビジョンの作り方
レシピ2:直線検出
• Hough変換による直線検出
– 画像の微分(空間的な変化を調べる)
– エッジ検出(急激に変化する部分を検出)
– 直線のあてはめ
• 詳細は省略
• 物体認識、人工物の検出などに使える
• 直線以外の幾何学的な図形を検出することも
できる
直線検出のプログラム
// 背景を濃淡画像に変換
cvCvtColor(frame,gray,CV_BGR2GRAY);
cvCanny(gray,edge,thresh1,thresh2,3);
カラー画像を濃淡画像に変換
エッジを検出
直線のあてはめ
lines = cvHoughLines2( edge, storage, CV_HOUGH_PROBABILISTIC, 1,
CV_PI/180, thresh3, 30, 10 );
コンピュータビジョンの作り方
レシピ3:動きの検出
微小領域ごとに似ている部分を探す
時刻t
時刻t+1
• フレーム間の画像上の動きを各画素に対して
求める(オプティカルフロー)
– 侵入者検出
– モーションキャプチャなど
コンピュータビジョンの作り方
レシピ4:顔検出
顔のサンプル
画像
識別器
顔 or 顔じゃない?
顔以外のサン
プル画像
まとめ
• コンピュータビジョンとは、外界の状態をカメラの映
•
•
•
像を使って理解すること
コンピュータビジョンの技術は、監視やインター
フェースを中心にいろいろなところで使われはじめて
いる
OpenCVライブラリを使えば、コンピュータビジョン
技術を手軽に使うことができる
受講する人は、各自OpenCVライブラリをインストー
ルしておくこと(Windows,Linux,MacOSどれでもい
い)