いまからはじめる MATLAB による画像処理 コンピュータビジョン ( 導入編 ) MathWorks Japan アプリケーションエンジニアリング部シニアアプリケーションエンジニア大谷卓也 2013 The MathWorks, Inc. 1
画像処理とは? 様々なアルゴリズムを使用し 画像の変形や変換 色の補正 ノイズ除去などを行うこと 統計解析などを併用し 画像からデータの数値化を行うこと 例えば デジタルカメラの内部処理様々な画像処理がハードウェア ソフトウェアで行われる 2
MATLAB を使用した 画像処理ワークフロー データへのアクセス 処理方法アルゴリズムの探求 結果の共有 /IP 化 ファイル データ解析モデリング ドキュメント生成 ソフトウェア アルゴリズム開発 組み込み開発 C/C++/Java など ハードウェア アプリケーション開発 アプリケーションとして配布 処理の自動化 3
MATLAB を使用した データ解析ワークフロー ~ 画像データへのアクセス ~ データへのアクセス ファイル 静止画 動画の取り込み ソフトウェア C/C++/Java など 主要画像フォーマットへの対応 各種カメラデバイスへの対応 RAW など 特殊フォーマットへの対応 ハードウェア デモ 4
サポートされている静止画フォーマット (R2013b) imread() によりサポートされている静止画フォーマット BMP Windows ビットマップ CUR Cursor ファイル GIF Graphics Interchange Format HDF4 Hierarchical Data Format ICO Icon ファイル JPEG Joint Photographic Experts Group JPEG 2000 Joint Photographic Experts Group 2000 PBM Portable Bitmap PCX Windows Paintbrush PGM Portable Graymap PNG ポータブルネットワークグラフ PPM Portable Pixmap RAS Sun ラスター TIFF Tagged Image File Format XWD X Window Dump 詳細 : http://www.mathworks.co.jp/jp/help/matlab/ref/imread.html 5
サポートされている動画フォーマット (R2013b) VideoReader によりサポートされている動画フォーマット Windows AVI AVI ファイル MJ2 - Motion JPEG 2000 MPG - MPEG-1 WMV, ASF, ASX - Windows Media ビデオ Microsoft DirectShow がサポートするすべての形式 Windows7 MP4, M4V - H.264 エンコードビデオ (Windows 7 のみ ) MOV - Apple QuickTime Movie Microsoft Media Foundation がサポートするすべての形式 Apple MOV - QuickTime Movie および QuickTime がサポートするすべての形式 Linux GStreamer 0.10 以降用のプラグインでサポートされる任意の形式 詳細 http://www.mathworks.co.jp/jp/help/matlab/ref/videoreaderclass.html 6
各種カメラデバイスからのデータ取り込み Image Acquisition Toolbox 業界標準の HW からの動画像取込み機能を提供 フレームグラバ Analog Camera Link DCAM 互換 FireWire (IIDC 1394) GigE Vision 一般的な USB Web カメラ Microsoft Kinect RGB 画像 + スケルトン 認識した人 (6 人まで ) 深度画像 7
カメラキャリブレーションレンズの歪 ( ひずみ ) 補正 カメラキャリブレータ ( カメラの内部 外部パラメータ抽出 ) 歪の補正 8
既存ライブラリや IP の活用 ~ C/C++ コードのインポート ~ ゲートウェイルーチン付きの C コード #include "mex.h" myfunc.mexw64 MEX 呼び出し void mexfunction( int nlhs, // 出力パラメータ数 mxarray *plhs[], // 出力パラメータ int nrhs, // 入力パラメータ数 const mxarray *prhs[]){ // 入力パラメータ... myfunc(...); } int myfunc(int a) {... } 9
MATLAB 環境のメリット ~ データへのアクセス ~ 動画 静止画フォーマットへアクセス 多彩な静止画 動画フォーマットへ標準対応 ( オプションツール不要 ) MEX を使用することで レガシーコードや 特殊なフォーマットへも対応可能 ハードウェアからのデータ入力 業界標準ハードウェア対応 Microsoft Kinect からの容易な RGB, IR, Depth データの取得 カメラキャリブレーションを行うことで レンズ歪を取り除いたデータ取得 10
MATLAB を使用した 画像処理ワークフロー データへのアクセス 処理方法アルゴリズムの探求 結果の共有 /IP 化 ファイル データ解析モデリング ドキュメント生成 ソフトウェア アルゴリズム開発 組み込み開発 C/C++/Java など ハードウェア アプリケーション開発 アプリケーションとして配布 11
MATLAB を使用した データ解析ワークフロー ~ 処理方法アルゴリズムの探求 ~ 処理方法アルゴリズムの探求 データ解析モデリング アルゴリズム開発 迅速な画像処理アルゴリズムの開発 インタープリタ言語による インタラクティブな開発 デバッグ環境 ドキュメント ユーザコミュニティの活用 GUI 付きアプリケーションの作成 アプリケーション開発 12
画像処理アルゴリズム開発の基礎 ~ 豊富なアルゴリズム ライブラリ群 ~ 特徴点マッチング セグメンテーション 機械学習による物体認識 レジストレーション ステレオビジョン 物体の定量評価 13
画像処理 コンピュータビジョン関連ツール Image Processing Toolbox コントラスト調整 幾何学変換 各種フィルタ モルフォロジー処理 セグメンテーション 物体の定量評価 Image Acquisition Toolbox 業界標準 HW からの画像取り込み Analog, Camera Link, DCAM, GigE Vision, USB camera, etc Microsoft Kinect Support Computer Vision System Toolbox 高速な動画 I/O 特徴点ベースのマッチング トラッキング ステレオビジョン Statistics Toolbox クラスタリング 主成分分析 K-means 混合ガウス分布 クラシフィケーション SVM, K-nearest neighbor, 各種ブースティング 14
インタープリタ言語による インタラクティブな開発 デバッグ環境 コードをセクション分けし コンパイル等不要で 部分的に即実行 15
アルゴリズムのパラメータ探索 ~ 特徴点ベースのマッチング例 ~ Corner MSER SURF 特徴点検出 SURF FREAK Block 特徴量の抽出 MSER 各処理ステージで使用するアルゴリズムや パラメータが複数存在 SSD SAD Normxcorr マッチング処理 16
ドキュメント リファレンス アルゴリズムの実装詳細 たくさんの実用的なサンプルプログラムが付属 論文などの詳細な文献リファレンス 17
の利用 File Exchange には 画像処理 コンピュータービジョン系のアルゴリズム サンプル等が 2 千件以上登録 共有されているほとんどのファイルは BSD ライセンス R2012b より Apps 機能も使用可能 18
MATLAB Central File Exchange からの便利ツール例 thresh_tool (2 値化 ) explorergb ( 色空間の探索 ) SegmentTool ( セグメンテーション ) ImadjustGUI ( コントラスト調整 ) Cascade Training GUI ( 物体認識の機械学習ツール ) FindCirclesGUI ( 円の検出 ) その他もたくさん便利ツールが見つかります Image processing で File Exchange 内を検索 19
ユーザーインターフェース構築機能 ユーザーインターフェース設計環境 (GUIDE) >> guide マウス操作で簡単 GUI 作成 マウス操作でのアプリとして配布 20
MATLAB 環境のメリット ~ アルゴリズム開発 ~ シンプルな構文による アイデアの実現 C/C++ 等に比べ少ない記述量 ( 行列単位での処理により ループ等の記述は最小限 ) 変数の取扱いが簡単 ( 多くの場合定義も不要 サイズの自動変更 ) インタプリタ言語による 迅速な開発 デバッグ コンパイル等の作業が不要 対話的な処理方法探索 プログラム途中でのデバッグが容易 豊富なアルゴリズム ツール類 最小限の設定ですぐに使える画像処理アルゴリズム 関数 豊富な例 アルゴリズムの説明 参考文献 21
MATLAB を使用した 画像処理ワークフロー データへのアクセス 処理方法アルゴリズムの探求 結果の共有 /IP 化 ファイル データ解析モデリング ドキュメント生成 ソフトウェア アルゴリズム開発 組み込み開発 C/C++/Java など ハードウェア アプリケーション開発 アプリケーションとして配布 22
MATLAB を使用した データ解析ワークフロー ~ レポート プログラムの共有 IP 化 ~ 結果の共有 /IP 化 ドキュメント生成 組み込み開発 開発したアルゴリズムのレポート 共有 IP 化 処理結果のレポート ドキュメント化 アプリケーション配布 C/C++ アプリケーションに向けたIP 化 処理の高速化 アプリケーションとして配布 23
レポートの生成 結果の共有 Tex の数式入りで 画像処理 コンピュータビジョンの処理方式 シーケンスをわかりやすく表現可能 24
アプリケーション配布と 他言語との連携 MATLAB Coder MATLAB Compiler.exe.dll MATLAB Builder EX JA NE.exe.lib.dll Excel Java.NET 25
並列 / 分散処理 GPGPU による高速 大規模データ処理 Parallel Computing Toolbox 並列 分散処理による高速化 12 コアまでのマルチコア マルチ CPU 処理が可能 MATLAB 関数の GPU による実行 2 次元 FFT 等 150 以上の MATLAB 基本関数 Image Processing Toolbox の GPU サポート関数 imrotate(), imfilter(), imdilate(), imerode(), imopen(), imclose(), imtophat(), imbothat(), imshow(), padarray()... MATLAB Distributed Computing Server との併 用によりコンピュータークラスタの使用が可能 26
GPGPU 処理 各種関数を GPU 上で実行 I = imrotate(i, 75, 'bicubic'); % 画像を 75 回転 CPU メモリー I = gpuarray(i); I = imrotate(i, 75, 'bicubic'); % 画像を 75 回転 gather() gpuarray() GPU メモリー わずかなコード変更で 高速化が可能 28
MATLAB 環境のメリット ~ 処理結果の共有 ~ 簡単なドキュメント作成 ワンクリックで PDF, Word などの文書に処理結果を書き出し 作成したプログラムの共有 MATLAB Compiler 使用により GUI を含めて.dll や.exe の形へ変換 MATLAB Coder 使用により アルゴリズム /IP 部分を.c /.cpp へ変換 組み込み開発へ適用 処理の高速化 GPU や並列処理を使用した 処理の高速化 30
まとめ MATLAB は単なるプログラミングツールでは無く 環境 多彩なデータ入力手段 インタープリタならではの迅速なアルゴリズム開発 簡単 柔軟な高速化手段 アプリケーション開発 共有 組み込み開発まで視野に入れたコード開発 MATLAB の画像処理 コンピュータビジョン開発 環境 を使用する事で 開発のペースアップを図ってください 31
関連するセッション セミナー類 32
関連するセッション セミナー類 33
デモブースのご案内 信号処理アルゴリズム設計 ~ システム設計 ~ 実装 34
デモブースの紹介 ~ 画像処理 コンピュータビジョンの実装フロー紹介 ~ ARM ターゲット実装 FPGA (Xilinx Zynq) ターゲット実装 FPGA 検証 (FPGA in the Loop) 2013 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. 35