コンピュータビジョン特論 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どれでもい い)
© Copyright 2024 ExpyDoc