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