Transcript
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)


Top Related