画像処理 コンピュータビジョン ~ MATLAB を使うとこんなに簡単 ~ MathWorks Japan アプリケーションエンジニアリング部シニアアプリケーションエンジニア乙部雅則 2014 The MathWorks, Inc. 1
画像処理 コンピュータービジョン 画像の明るさ 色合い 形 視点を調整したい! 何かの検査を自動化したい! ものの数を自動で数えたい! ものを自動で認識したい! 何かを自動でトラッキングしたい! デモ 実行形式アプリケーション 2
デモ いろいろな画像処理やコンピュータービジョンのアルゴリズム アプリケーションを MATLAB の様々な機能を用い効率よく開発が行える様子を御紹介します 3
Agenda 1: 検査を自動化したい! 2: ものの数を自動で数えたい! 3: ものを自動で認識したい! 4: 自動でトラッキングしたい! 5: その他の R2014a/b 最新機能紹介 6: まとめ プレゼンテーションファイル デモに使用したスクリプトファイルは後日ダウンロードいただけます お手元の 3D メガネは ご自由にお持ち帰りください 4
紹介する Toolbox Image Processing Toolbox TM Computer Vision System Toolbox TM Image Acquisition Toolbox TM Statistics Toolbox TM MATLAB Compiler TM MATLAB Coder TM 5
無料評価版 セミナーのアンケートに ご希望の旨お書きください 後日のお申込 http://www.mathworks.co.jp/trialrequest 6
Agenda 1: 検査を自動化したい! 2: ものの数を自動で数えたい! 3: ものを自動で認識したい! 4: 自動でトラッキングしたい! 5: その他の R2014a/b 最新機能紹介 6: まとめ 7
検査を自動化したい! - 任意の位置 - 任意の回転 - 任意の歯車サイズ - 任意の欠陥の形状 欠陥 8
画像処理 コンピュータビジョン開発ワークフロー 結果の共有 /IP 化 アイデア Concept Development 多くの反復 Algorithm Development Simulate ドキュメント生成 アルゴリズム開発 アプリケーションとして配布.exe.dll C ソースコード C 9
画像処理 コンピュータビジョン開発ワークフロー アイデア トップハットフィルタは? Concept Development 多くの反復 Algorithm Development Simulate 結果の共有 /IP 化 ドキュメント生成 アルゴリズム開発 アプリケーションとして配布.exe.dll C ソースコード かけている歯車を自動で検出して 検査工程のコストを下げたい 必要な前処理 後処理は? 安定的に精度良く検出するには? C デモ 10
画像処理 コンピュータビジョン開発ワークフロー 画像の読込み 前処理 アイデア フィルター処理 Concept Development 多くの反復 Algorithm Development Simulate 結果の共有 /IP 化 ドキュメント生成 後処理 アルゴリズム開発 アプリケーションとして配布 途中結果の可視化 解析 計測 定量評価 グラフ化 結果の可視化.exe.dll C ソースコード 変数宣言不要 容易な多次元配列の取扱い簡潔なコードで様々な処理を実行 画像取込み 前処理 フィルタ処理 後処理途中結果の可視化 数値のグラフ化 レポート生成 => 一連の流れを効率良く実現 C 11
レポート自動生成機能 レポート生成ボタン HTML レポート LaTeX 式 HTML 等の形式でレポートの自動生成が可能 マークアップの詳細 : http://www.mathworks.co.jp/jp/help/matlab/matlab_prog/marking-up-matlab-comments-for-publishing.html 12
画像処理 コンピュータビジョン開発ワークフロー 結果の共有 /IP 化 アイデア Concept Development 多くの反復 Algorithm Development アルゴリズム開発 Simulate ドキュメント生成 アプリケーションとして配布.exe.dll C ソースコード C 13
実行形式プログラムの配布 : MATLAB Compiler >> deploytool もしくはアプリケーションタブから起動 1: 最上位の MATLAB ファイルを指定 ( スクリプトもしくは関数 ) 2: ビルドボタンを押す MATLAB Compiler.exe.dll ほぼすべての関数をサポート GUI や Figure も対応 ロイヤリティーフリー 制限 :http://www.mathworks.co.jp/help/compiler/limitations-about-what-may-be-compiled.html 対応 Toolbox 関数 :http://www.mathworks.co.jp/products/compiler/supported/compiler_support.html チュートリアル :http://www.mathworks.com/tagteam/56806_tt019_matlab_compiler_tutorial.pdf デモ 14
MATLAB ファイルから C コードを生成 MATLAB Coder.c [ 目的 ] コード生成 / 実装 アルゴリズム仕様のリファレンスモデル実装 (C/HDL) 技術者へハンドオフ 整数 浮動小数点 固定小数点演算対応 (Fixed-Point Designer が必要 ) MATLAB ファイル.exe.lib スタンドアロンのアプリケーション作成 ( プロトタイプ 配布 ) 既存の C ソフトウェアへ MATLAB アルゴリズムの統合 MEX MATLAB ファイル実行の高速化 15
C コード生成 : MATLAB Coder Image Processing Toolbox の C コード生成対応強化状況 (Image Processing Toolbox: 2 関数の追加 ) (Image Processing Toolbox: 10 関数の追加 ) (Image Processing Toolbox: 27 関数の追加 ) affine2d, bwpack, bwselect, bwunpack, edge, getrangefromclass, im2double, im2int16, im2single, im2uint16, im2uint8, imbothat, imclose, imdilate, imerode, imextendedmax, imextendedmin, imfilter, imhist, imopen, imref2d, imref3d, imtophat, imwarp, mean2, projective2d, strel (Image Processing Toolbox: 16 関数の追加 ) bwdist, bwtraceboundary, fitgeotrans, histeq, imadjust, imclearborder, imlincomb, imquantize, intlut, iptcheckmap, medfilt2, multithresh, ordfilt2, rgb2ycbcr, stretchlim, ycbcr2rgb Computer Vision System Toolbox の C コード生成対応強化状況 ほぼすべての関数 システムオブジェクトが C コード生成に対応 一部の関数は precompile platform-specific shared library を使用 対応 制約の詳細 : http://www.mathworks.co.jp/help/images/list-of-supported-functions-with-usage-notes.html?lang=en http://www.mathworks.com/help/vision/ug/code-generation-support-usage-notes-and-limitations-for-functions-classes-and-system-objects.html 16
Agenda 1: 検査を自動化したい! 2: ものの数を自動で数えたい! 3: ものを自動で認識したい! 4: 自動でトラッキングしたい! 5: その他の R2014a/b 最新機能紹介 6: まとめ 17
ものの数を自動で数えたい! 多重の重なり デモ 物体の明るさ 反射の違い サイズ違い 材質違い 18
色空間 RGB 色空間 青緑 赤 白黄色シアン (~ 水色 ) 緑マゼンタ ( 紅紫色 ) 赤青黒 : (R,G,B) = (1, 1, 1) : (R,G,B) = (1, 1, 0) : (R,G,B) = (0, 1, 1) : (R,G,B) = (0, 1, 0) : (R,G,B) = (1, 0, 1) : (R,G,B) = (1, 0, 0) : (R,G,B) = (0, 0, 1) : (R,G,B) = (0, 0, 0) HSV 色空間 Hue: 色相 Saturation: 彩度 (0: 白 / 灰色 / 黒 ) Value: 明度 Hue: 色相 赤 :0 / 1.0 Value: 明度 Saturation: 彩度 ( 白 / 灰色 / 黒は 0) 19
デモ : 複数種類のワッシャー ボルト ナットの数量測定 様々な画像処理アルゴリズム最新の便利な APPS ツール ( 画像ビューアー 色のしきい値 領域解析 ) 20
Agenda 1: 検査を自動化したい! 2: ものの数を自動で数えたい! 3: ものを自動で認識したい! 4: 自動でトラッキングしたい! 5: その他の R2014a/b 最新機能紹介 6: まとめ 21
ものを自動で認識したい! ( 一般の物体の認識 ) [ 同じ種類のものであっても ] - 様々な色 形 模様 - 様々な向き - 様々な背景 - 様々な撮影条件 デモ 22
ものを自動で認識したい! Bag of Words Statistics Toolbox が必要 表れる " 単語 " の出現頻度 ( ヒストグラム ) から 文章のカテゴリを分類 局所的な模様 (Visual Words) 画像 Bag of Visual Words (Bag of Features) デモ 23
Bag-of-Visual Words: 大量の画像データを用いた分類のワークフロー bagoffeatures() or 全カテゴリーの画像から特徴量の抽出後 K-means でクラスタリングし K 個の Visual Words を生成 trainimagecategory Classifier() 各画像の特徴量を Visual Words に分類後 ヒストグラムを作成し K 次元の特徴ベクトルとする 画像内の各特長の位置関係は考慮しない 各学習用の画像を Visual Words のヒストグラムで表し 機械学習により分類器を生成 24
ものを自動で認識したい! 簡潔なスクリプトで 高度な認識が可能 25
Agenda 1: 検査を自動化したい! 2: ものの数を自動で数えたい! 3: ものを自動で認識したい! 4: 自動でトラッキングしたい! 5: その他の R2014a/b 最新機能紹介 6: まとめ 26
自動で追尾したい! - 複数の物体を同時にトラッキング - 背景も全て動いている - 物陰への隠れ補償 - 誤検出の低減 - etc Image data are from The VIVID Tracking Evaluation Web Site http://vision.cse.psu.edu/data/vivideval/datasets/pets2005/egtest01/index.html デモ 27
自動で追尾したい! 動いている物体を検出 対応付け 新たに物体を登録 既検出物体の現在位置を前フレームから予測 カウンタ +1 or 削除 デモ 28
Agenda 1: 検査を自動化したい! 2: ものの数を自動で数えたい! 3: ものを自動で認識したい! 4: 自動でトラッキングしたい! 5: その他の R2014a/b 最新機能紹介 6: まとめ 29
Image Processing Toolbox 非剛体レジストレーション イメージの領域分割アプリケーション 30
キャリブレーション 平行化 Computer Vision System Toolbox - ステレオビジョン用ワークフローの強化 ステレオキャリブレーション ステレオ平行化 3D 再構築用関数 ステレオキャリブレーション用 APPS デモ 31
Computer Vision System Toolbox - ステレオビジョン用ワークフローの強化 廉価な USB カメラを用いた 複数の目標物までのリアルタイム距離検出 32
Computer Vision System Toolbox 光学文字認識 (OCR) 機械学習用のラベリングツール BRISK 特徴の検出 抽出 33
Image Processing Toolbox のその他機能例 幾何学的変換 ( 位置や形の変換 ) 各種コントラスト調整 34
Computer Vision System Toolbox のその他機能例 特徴点のマッチングを用いた 物体認識 SURF/Harris/FAST/BRISK 等の特徴点検出 SURF/FREAK/BRISK/HOG 等の特徴量抽出 顔認識 RANSAC を用いた対応点推定 物体の検出 人物認識 (Viola-Jones アルゴリズム ) (HOG 特徴量 ) 35
充実したヘルプ環境 逆引き形式 ( やりたいこと別に整理された ) のヘルプによる 関数の効率的な検索 ヘルプ表示 >> doc もしくは 36
充実したヘルプ環境 関数一覧 37
充実したヘルプ環境 各関数に関し サンプル ( 例 ) アルゴリズム解説 参考文献 38
充実したヘルプ環境 豊富なサンプルモデル ( アプリケーションレベル ) 39
充実したヘルプ環境 ソースコードが公開されていて内部処理の詳細が分かる関数も多く存在 ( >> edit 関数名 ) function h = fspecial(varargin) M 言語で記述 ( 実装 ) された画像処理用の関数 [type, p2, p3] = ParseInputs(varargin{:}); switch type case 'average' % Smoothing filter siz = p2; h = ones(siz)/prod(siz); case 'disk' % Disk filter rad = p2; crad = ceil(rad-0.5); [x,y] = meshgrid(-crad:crad,-crad:crad); maxxy = max(abs(x),abs(y)); minxy = min(abs(x),abs(y)); m1 = (rad^2 < (maxxy+0.5).^2 + (minxy-0.5).^2).*(minxy-0.5) +... (rad^2 >= (maxxy+0.5).^2 + (minxy-0.5).^2).*... sqrt(rad^2 - (maxxy + 0.5).^2); 40
での活発なコミュニティー活動 File Exchange には ユーザー様が作られた 画像処理 コンピュータービジョンのアルゴリズム アプリケーション等が 2,800 件以上登録 一年で 400 件以上増加 共有されているほとんどのファイルは BSD ライセンス R2012b より Apps 機能も使用可能 41
File Exchange 上のさまざまな登録ファイル Toolbox としてまだ提供されていない最新技術に関する投稿 Image Morphology 画像処理に有用な様々なツール 42
まとめ MATLAB を使用することにより すぐに動かすことが出来る統合開発環境上で 画像処理 コンピュータービジョンの対話的 アルゴリズム検討 検証 いろいろなアルゴリズムを用いた様々な方式検討 様々な方式 パラメーターのトライ & エラーを迅速に実施が可 統合された開発環境上で レポート生成 実行形式アプリケーションや C コード生成 多くのユーザ 研究者の方々による MATLAB Central や テクニカルサポートなどのリソースの有効活用 画像処理 コンピュータービジョンの開発生産性の向上 御案内 43
デモブースのご案内 信号処理 / 画像処理 コンピュータービジョンソリューション 2014 The MathWorks, Inc. MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand names may be trademarks or registered trademarks of their respective holders. 44
画像処理系御講演ご紹介 45
MATLAB 環境使用による 画像処理開発の生産性向上 シンプルな構文 高度で豊富な関数群による 柔軟なアルゴリズムの短期開発 習得が容易 C/C++ 等に比べ少ない記述量 ( 行列単位での処理により ループ等の記述は最小限 ) 変数の取扱いが簡単 ( 多くの場合定義も不要 サイズの自動変更 ) 高速な行列演算処理 ( 最適化 マルチコア /GPU 対応 ) 最小限の設定ですぐに使える 様々な画処理関数 ( リファレンス的用法も ) インタプリタ言語 多くの可視化機能による対話的アルゴリズム探索 コンパイル等の作業が不要 対話的な処理方法探索 プログラミング途中でのデバッグが容易 各種機能連携 ドキュメント サポートの充実 製品としての統合品質検証 豊富なオプション製品群とシームレスな連携 ロイヤリティーフリーの実装環境 充実したドキュメント サポート体制 活発なユーザーコミュニティー 46
画像処理のベースとなる関数群 Image Processing Toolbox 各種画像データフォーマットの読込 画像調査用の各種 GUIツール 画像 ( 色 コントラスト等 ) の調整 変換 幾何学的変換 ( 位置や形の変換 ) レジストレーション ( 位置合せ ) 各種フィルタ処理 モルフォロジー処理 ( 膨張 収縮等の様々な形態処理 ) オブジェクト ( 物体 ) 検出 解析 セグメンテーション ( 領域切出し ) 物体の定量評価 ROIベースの処理 ( 特定領域処理 ) 47
画像処理やコンピュータビジョンのための機能 高速ストリーミング処理 Computer Vision System Toolbox カメラキャリブレーション グラフィックス 特徴点検出 特徴量抽出 マッチング レジストレーション 物体認識 文字認識 (OCR) 顔 人物認識 カスタム物体に対する機械学習 Bag-of-Visual Words による物体認識 動画ストリーミングデータの高速処理 物体のトラッキング ステレオビジョン向けツール 画像処理用の Simulink ブロックセット C コード生成 固定小数点に対応した画像処理用システムオブジェクト 48
各種カメラからの画像データ直接取込み Image Acquisition Toolbox 業界標準の HW からの動画像取込み機能を提供 フレームグラバ ( 画像入力ボード ) Analog 入力 Camera Link 入力 DCAM 互換 FireWire (IIDC 1394) GigE Vision 一般的な USB Web カメラ => 簡易的取込みは MATLAB の関数で可能 Microsoft Kinect for Windows RGB 画像 + 骨格座標 (2 人まで ) 認識した人 (6 人まで ) 深度画像 カスタムアダプター開発キット Simulink ブロック 深度プロット 49
様々な特徴量を用いた さらに複雑な機械学習 Statistics Toolbox 特徴変換 主成分分析 (PCA) 因子分析 クラスタリング 階層クラスタリング K 平均クラスタリング ガウス混合分布モデル クラシフィケーション ( 分類 ) サポートベクターマシン (SVM) 単純ベイズ分類器 線形分類器 K 近傍分類器 モデルの結合 ( アンサンブル学習 ) バギング (Tree Bagger 等 ) ブースティング (AdaBoost 等 ) 50
デモファイルのダウンロード先 (11 月中旬公開予定 ) 下記サイトのSearch Filesで MATLAB EXPO 2014 Masa Otobe のキーワードで検索ください http://www.mathworks.co.jp/matlabcentral/fileexchange/?s_tid=gn_mlc_fx 51