コンピュータビジョン特論 OpenCVについて 情報通信システム学科 加藤丈和
レポートとOpenCVについて この講義では、レポート課題で実際にプログラムを書いて、コンピュータビジョンのアルゴリズムを動作させて理解する 完全に1から書くと、画像ファイルの読み書き、画像処理、カメラからの取り込みなど、大規模なプログラムになってしまう。 OpenCVとよばれるライブラリを利用
コンピュータグラフィックス(CG)と コンピュータビジョン(CV) カメラ モデル 学習データ CV 認識・理解 コンピュータ CG 実世界 生成・表示
コンピュータビジョンの作り方 (コンピュータビジョンの材料) カメラ パソコン(OS) 開発環境(コンパイラ) VisualStudio2005(無料公開) gcc (オープンソース、無料) Xcode (MacOSXについてくる) Windows Linux Mac USBカメラ、DVカメラなど 2000円~ そして… OpenCV ライブラリ(オープンソース、無料)
コンピュータビジョンの作り方 (OpenCVライブラリ) Intel が中心に開発、オープンソースで公開 世界中の研究者が、自分が開発したアルゴリズムを実装 難しいCVのアルゴリズムをカンタンに使える もちろん無料
コンピュータビジョンの作り方 レシピ1:クロマキー合成 クロマキー合成:入力画像から背景を取り除いて、別の背景に重ね合わせる
クロマキー合成のプログラム 人物領域を取り出す 別の背景と合成 GUIや画像取得を含めて全体で、80行くらいのプログラム 入力画像 背景画像 //背景差分 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); // 背景を濃淡画像に変換 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どれでもいい)