33
1 © 2013 The MathWorks, Inc. いまからはじめる、MATLABによる 画像処理・コンピュータビジョン (導入編) MathWorks Japan アプリケーションエンジニアリング部 シニアアプリケーションエンジニア 大谷 卓也

いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

  • Upload
    lenga

  • View
    233

  • Download
    2

Embed Size (px)

Citation preview

Page 1: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

1 © 2013 The MathWorks, Inc.

いまからはじめる、MATLABによる

画像処理・コンピュータビジョン (導入編)

MathWorks Japan

アプリケーションエンジニアリング部

シニアアプリケーションエンジニア

大谷 卓也

Page 2: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

2

画像処理とは?

例えば、デジタルカメラの内部処理

様々な画像処理がハードウェア・ソフトウェアで行われる

様々なアルゴリズムを使用し、画像の変形や変換、色の補正、ノイズ除去などを行うこと

統計解析などを併用し、画像からデータの数値化を行うこと

Page 3: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

3

データ解析

モデリング

アルゴリズム

開発

アプリケーション

開発

処理方法

アルゴリズムの探求

MATLABを使用した、画像処理ワークフロー

処理の自動化

ファイル

ソフトウェア

ハードウェア

C/C++/Javaなど

データへのアクセス

ドキュメント

生成

組み込み開発

アプリケーションとして

配布

結果の共有/IP化

Page 4: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

4

MATLABを使用した、データ解析ワークフロー ~画像データへのアクセス~

静止画・動画の取り込み

• 主要画像フォーマットへの対応

• 各種カメラデバイスへの対応

• RAWなど、特殊フォーマットへの対応

デモ

ファイル

ソフトウェア

ハードウェア

C/C++/Javaなど

データへのアクセス

Page 5: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

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

Page 6: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

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 以降用のプラグインでサポートされる任意の形式

Page 7: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

7

各種カメラデバイスからのデータ取り込み Image Acquisition Toolbox

業界標準のHWからの動画像取込み機能を提供

– フレームグラバ Analog

Camera Link

– DCAM 互換 FireWire (IIDC 1394)

– GigE Vision

– 一般的なUSB Webカメラ

Microsoft Kinect RGB画像+

スケルトン

認識した人(6人まで) 深度画像

Page 8: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

8

カメラキャリブレーション

レンズの歪(ひずみ)補正

カメラキャリブレータ

(カメラの内部・外部パラメータ抽出)

歪の補正

Page 9: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

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

Page 10: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

10

MATLAB環境のメリット

~データへのアクセス~

動画、静止画フォーマットへアクセス

– 多彩な静止画・動画フォーマットへ標準対応

(オプションツール不要)

– MEXを使用することで、レガシーコードや、特殊なフォーマットへも

対応可能

ハードウェアからのデータ入力

– 業界標準ハードウェア対応

– Microsoft Kinectからの容易なRGB, IR, Depthデータの取得

– カメラキャリブレーションを行うことで、レンズ歪を取り除いたデータ取得

Page 11: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

11

データ解析

モデリング

アルゴリズム

開発

アプリケーション

開発

処理方法

アルゴリズムの探求

MATLABを使用した、画像処理ワークフロー

ファイル

ソフトウェア

ハードウェア

C/C++/Javaなど

データへのアクセス

ドキュメント

生成

組み込み開発

アプリケーションとして

配布

結果の共有/IP化

Page 12: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

12

MATLABを使用した、データ解析ワークフロー ~処理方法 アルゴリズムの探求~

迅速な画像処理アルゴリズムの開発

• インタープリタ言語による、

インタラクティブな開発・デバッグ環境

• ドキュメント、ユーザコミュニティの活用

• GUI付きアプリケーションの作成

データ解析

モデリング

アルゴリズム

開発

アプリケーション

開発

処理方法

アルゴリズムの探求

Page 13: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

13

画像処理アルゴリズム開発の基礎 ~豊富なアルゴリズム・ライブラリ群~

セグメンテーション 機械学習による

物体認識

ステレオビジョン

特徴点マッチング

レジストレーション

物体の定量評価

Page 14: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

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,

各種ブースティング

Page 15: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

15

インタープリタ言語による、インタラクティブな

開発・デバッグ環境

コードをセクション分けし、コンパイル等不要で、部分的に即実行

Page 16: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

16

アルゴリズムのパラメータ探索 ~特徴点ベースのマッチング例~

特徴点検出

特徴量の 抽出

マッチング 処理

Corner

SURF

MSER

SURF MSER

Block

FREAK

SAD

Normxcorr

SSD

各処理ステージで使用するアルゴリズムや、パラメータが複数存在

Page 17: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

17

ドキュメント、リファレンス

たくさんの実用的なサンプル

プログラムが付属

アルゴリズムの実装詳細

論文などの詳細な文献リファレンス

Page 18: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

18

の利用

File Exchangeには、画像

処理・コンピュータービジョン系のアルゴリズム、サンプル等が2千件以上登録

共有されているほとんどのファイルは、BSDライセンス

R2012bより、Apps機能も使用可能

Page 19: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

19

MATLAB Central File Exchangeからの便利ツール例

thresh_tool

(2値化)

exploreRGB

(色空間の探索)

FindCirclesGUI

(円の検出)

SegmentTool

(セグメンテーション)

Cascade Training GUI

(物体認識の機械学習ツール)

ImadjustGUI

(コントラスト調整)

その他もたくさん便利ツールが見つかります

”Image processing”でFile Exchange内を検索

Page 20: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

20

マウス操作での

アプリとして配布

ユーザーインターフェース構築機能

ユーザーインターフェース

設計環境 (GUIDE) >> guide

マウス操作で簡単GUI作成

Page 21: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

21

MATLAB環境のメリット

~アルゴリズム開発~

シンプルな構文による、アイデアの実現

– C/C++等に比べ少ない記述量

(行列単位での処理により、ループ等の記述は最小限)

– 変数の取扱いが簡単(多くの場合定義も不要、サイズの自動変更)

インタプリタ言語による、迅速な開発・デバッグ

– コンパイル等の作業が不要

– 対話的な処理方法探索

– プログラム途中でのデバッグが容易

豊富なアルゴリズム・ツール類

– 最小限の設定ですぐに使える画像処理アルゴリズム・関数

– 豊富な例、アルゴリズムの説明、参考文献

Page 22: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

22

データ解析

モデリング

アルゴリズム

開発

アプリケーション

開発

処理方法

アルゴリズムの探求

MATLABを使用した、画像処理ワークフロー

ファイル

ソフトウェア

ハードウェア

C/C++/Javaなど

データへのアクセス

ドキュメント

生成

組み込み開発

アプリケーションとして

配布

結果の共有/IP化

Page 23: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

23

MATLABを使用した、データ解析ワークフロー ~レポート、プログラムの共有・IP化~

開発したアルゴリズムのレポート、共有、IP化

• 処理結果のレポート、ドキュメント化

• アプリケーション配布

• C/C++ アプリケーションに向けたIP化

• 処理の高速化

ドキュメント

生成

組み込み開発

アプリケーションとして

配布

結果の共有/IP化

Page 24: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

24

レポートの生成、結果の共有

Texの数式入りで、画像処理・コンピュータビジョンの処理方式・シーケンスをわかりやすく表現可能

Page 25: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

25

MATLAB Compiler

.exe .dll

アプリケーション配布と、他言語との連携

MATLAB Coder

.exe .lib .dll

MATLAB Builder

EX JA NE

Java Excel .NET

Page 26: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

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 との併

用によりコンピュータークラスタの使用が可能

Page 27: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

28

GPGPU処理

わずかなコード変更で、高速化が可能

CPU

GPU

メモリー

メモリー

gpuArray() gather()

I = imrotate(I, 75, 'bicubic'); % 画像を75°回転

I = gpuArray(I);

I = imrotate(I, 75, 'bicubic'); % 画像を75°回転

各種関数を、GPU上で実行

Page 28: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

30

MATLAB環境のメリット

~処理結果の共有~

簡単なドキュメント作成

– ワンクリックで、PDF, Wordなどの文書に処理結果を書き出し

作成したプログラムの共有

– MATLAB Compiler 使用により、GUIを含めて

.dllや、.exeの形へ変換

– MATLAB Coder使用により、アルゴリズム/IP部分を

.c / .cppへ変換、組み込み開発へ適用

処理の高速化

– GPUや並列処理を使用した、処理の高速化

Page 29: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

31

まとめ

MATLABは単なるプログラミングツールでは無く、「環境」

多彩なデータ入力手段

インタープリタならではの迅速なアルゴリズム開発

簡単・柔軟な高速化手段

アプリケーション開発、共有、組み込み開発まで視野に入れたコード開発

MATLABの画像処理、コンピュータビジョン開発 「環境」を使用する事で、開発のペースアップを図ってください

Page 30: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

32

関連するセッション・セミナー類

Page 31: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

33

関連するセッション・セミナー類

Page 32: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

34

デモブースのご案内

信号処理アルゴリズム設計

~システム設計~実装

Page 33: いまからはじめる、MATLABによる 画像処理 ... GigE Vision – 一般的なUSB Webカメラ Microsoft Kinect RGB画像+ スケルトン 認識した人(6人まで)

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)