50
1 © 2013 The MathWorks, Inc. いまからはじめる、MATLABによる 画像処理・コンピュータービジョン (活用編) MathWorks Japan アプリケーションエンジニアリング部 シニアアプリケーションエンジニア 乙部 雅則

いまからはじめる、MATLABによる 画像処理・コンピューター ... · いまからはじめる、MATLABによる 画像処理・コンピュータービジョン

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

1 © 2013 The MathWorks, Inc.

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

画像処理・コンピュータービジョン

(活用編)

MathWorks Japan

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

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

乙部 雅則

2

デモ

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

RGB画像+

骨格座標 深度プロット

Microsoft Kinectとの連携

ハードウェアからの容易なデータ取り込み

• 3次元座標・奥行き取得

• ジェスチャ認識 etc

デモ

3

アジェンダ

1. Microsoft Kinect を使ったデモ

2. 画像処理・コンピュータービジョン向けツールボックス概要

3. デモ (2種類 + Kinectのデモスクリプト紹介)

4. 高速化ソリューション(GPU処理、Cコード化)最新対応状況のご紹介

5. Simulinkによる実装環境のご紹介

プレゼンテーションファイル・デモに使用したファイルは

後日ダウンロードいただけます。

4

アジェンダ

1. Microsoft Kinect を使ったデモ

2. 画像処理・コンピュータービジョン向けツールボックス概要

3. デモ (2種類 + Kinectのデモスクリプト紹介)

4. 高速化ソリューション(GPU処理、Cコード化)最新対応状況のご紹介

5. Simulinkによる実装環境のご紹介

5

画像処理、解析およびアルゴリズム開発

Image Processing Toolbox

各種画像データフォーマットの読込

画像調査用の各種GUIツール

画像(色・コントラスト等)の調整・変換

幾何学的変換(位置や形の変換)

レジストレーション(位置合せ)

各種フィルタ処理

モルフォロジー処理(膨張・収縮等の様々な形態処理)

オブジェクト(物体)検出・解析

セグメンテーション(領域切出し)

物体の定量評価

ROIベースの処理(特定領域処理)

6

幾何学変換 / 各種フィルター処理

幾何学的変換(位置や形の変換)

各種フィルター処理

ノイズ除去

7

モルフォロジー処理 / オブジェクト検出・解析

モルフォロジー処理(膨張・収縮等の様々な形態処理)

オブジェクト(物体)検出・解析

直線検出

による

レーン検出

境界線を

抽出

8

セグメンテーション / 定量評価

セグメンテーション(領域切出し)

物体の定量評価

各中心位置・ 面積を計測

葉の部分を

抽出

9

コンピュータビジョン・高速動画ストリーミング処理

Computer Vision System Toolbox

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

グラフィックス

特徴点検出・特徴量抽出、 マッチング・レジストレーション

物体認識

– 顔・人物認識

– カスタム物体に対する機械学習

動画ストリーミングデータの高速処理

物体のトラッキング

ステレオビジョン向けツール

画像処理用のSimulink ブロックセット

10

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

注釈挿入

グラフィックス

レンズ歪補正

カメラ位置推定

マーカー挿入

図形挿入

テキスト挿入

レンズ歪

カメラ内部

カメラ外部の

パラメータ抽出

11

特徴点ベースのワークフロー

特徴点のマッチング・物体認識

特徴点ベースのレジストレーション(位置合せ)

SURF/Harris/FAST等

の特徴点検出・特徴量抽出

RANSACを用いた対応点推定

12

顔・人物の認識、機械学習

顔認識

機械学習

人物認識 (Viola-Jonesアルゴリズム) (HOG特徴量)

(Haar / HOG / LBP 特徴量) データベース

13

高速動画ストリーミング処理・動き検出、トラッキング

動画の高速ストリーミング処理・動き検出

トラッキング

物体が隠れてしまっても、

位置を予測しながら

トラッキングを続ける

車のカウント

動いている領域の検出

14

ステレオビジョン向けワークフロー

2枚のステレオ画像の平行化

奥行きの推定 (ディスパリティーマップ)

2つの画像から特徴点の抽出

平行化

15

アジェンダ

1. Microsoft Kinect を使ったデモ

2. 画像処理・コンピュータービジョン向けツールボックス概要

3. デモ (2種類 + Kinectのデモスクリプト紹介)

4. 高速化ソリューション(GPU処理、Cコード化)最新対応状況のご紹介

5. Simulinkによる実装環境のご紹介

16

デモ1:物体を識別し数える・面積を求める

5種類の木の実を区別して数える

赤い粒の平均面積の測定

17

デモ1:物体を識別し数える・面積を求める: 処理結果

18

デモ1:数えるデモ : 手順

[統計処理]

面積で

グループ分け

機械学習で判別

フィルター処理

[色空間変換]

色相で判別

二値化

(輝度二値化) エッジ検出

モルフォロジー処理

(塗り潰し・橋渡し・オープン処理等)

デモ

[形状計測]

扁平率で判別

MATLAB Central

File Exchange

19

HSV色空間

赤:0 / 1.0

Value: 明度

Hue: 色相

Saturation: 彩度

(白/灰色/黒は0)

20

機械学習

> 機械学習用の関数 [Haar-like/Histogram of Orientation (HOG)/Local Binary Pattern (LBP)]

trainCascadeObjectDetector() カスケード型分類器

ポジティブ画像と

ネガティブ画像を準備

学習済みデータベース

(xxx.xml)

I = imread('visionteam.jpg'); % 画像の読込み

detector = vision.CascadeObjectDetector('xxx.xml'); % 検出オブジェクト定義

faces = step(detector, I) % 顔検出

I2 = insertObjectAnnotation(I, 'rectangle', faces, 'Face'); %枠描画

figure; imshow(I2); % 表示

(Haar / HOG / LBP 特徴量)

21

デモ1:数えるデモ : まとめ

様々な処理を簡潔な記述で処理可能な、豊富な関数群

対話的な処理方法探索

File Exchangeサイトの利用

[統計処理]

面積で

グループ分け

機械学習で判別

フィルター処理

[色空間変換]

色相で判別

二値化

(輝度二値化) エッジ検出

モルフォロジー処理

(塗り潰し・橋渡し・オープン処理等)

[形状計測]

扁平率で判別

22

の利用

23

でのコミュニティー活動

File Exchangeには、ユー

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

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

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

24

粒子が接触している場合

25

watershed (分水嶺) セグメンテーション

~BWclear BWclear

-bwdist(~BWclear)

0

bwdist(~BWclear)

0 BWdist(~BWclear) = -Inf

-Inf

極小

0

1 0

1 距離変換

分水嶺 背景部分を-Infにして、

領域に含まれないようにする

分水嶺変換

領域#1

領域#2

26

デモ2:

ホッキョクグマ

27

AR (拡張現実:Augmented Reality)

動画のストリーミング処理

局所特徴量を用いたマッチング

トラッキングによる認識処理の高速化

=>

局所特徴量を用いた物体認識

物体や人物のトラッキング

リアルタイムの画像の向き補正 等々への応用

28

動画のストリーミング処理

% ビデオ読込み用のオブジェクトの作成

vidReader = vision.VideoFileReader('fileName.avi');

% ビデオ表示用のオブジェクトの作成

vidPlayer = vision.DeployableVideoPlayer;

% ループ処理

while (1)

I = step(vidReader); % 1フレーム 読込み

...... % 各種処理

step(vidPlayer, I); % 1フレーム 表示

end

29

デモ2 : 手順1

リファレンス画像 カメラからの画像

局所特徴量:SURF

特徴点の検出

特徴量の抽出

マッチング

30

デモ2 : 手順2

RANSACを用いた幾何学変換推定

(外れ値の除去) 0.525 0.041 0−0.042 0.486 075.123 168.891 1

幾何学変換

合成

第1フレーム

31

デモ2 : 手順3

次のフレームの画像

局所特徴量マッチングの代わりに、

エッジのトラッキングを用いることで、高速化

推定した幾何学変換

高速な動画ストリーミング処理

特徴点ベースマッチングやトラッキング等の高度な処理を簡潔に実現

アイデアの迅速なプロトタイピング

この中でエッジを検出

最初のフレームの画像

32

各種カメラからの画像データ直接取込み

Image Acquisition Toolbox

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

– フレームグラバ (画像入力ボード)

Analog 入力

Camera Link 入力

– DCAM 互換 FireWire (IIDC 1394)

– GigE Vision

– 一般的なUSB Webカメラ

Microsoft Kinect

カスタムアダプター開発キット

RGB画像+

スケルトン

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

33

Microsoft Kinect 接続のサポート

赤外線照射 カラーカメラ

マイクロフォン アレー

赤外線深度センサー

RGB画像:1280 x 960 / 12 fps or 640 x 480 / 30 fps

Depth : 640x480、320x240、80x60 30fps

Depth Mode: Default (range of 50 to 400 cm)

Near (range of 40 to 300 cm).

34

デモ

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

RGB画像+

骨格座標 深度プロット

Microsoft Kinectとの連携

ハードウェアからの容易なデータ取り込み

• 3次元座標・奥行き取得

• ジェスチャ認識 etc

スクリプト

35

アジェンダ

1. Microsoft Kinect を使ったデモ

2. 画像処理・コンピュータービジョン向けツールボックス概要

3. デモ (2種類 + Kinectのデモスクリプト紹介)

4. 高速化ソリューション(GPU処理、Cコード化)最新対応状況のご紹介

5. Simulinkによる実装環境のご紹介

36

並列/分散処理・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 との併

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

37

Image Processing ToolboxのGPUサポート関数

imrotate, imfilter, imdilate, imerode, imopen, imclose,

imtophat, imbothat, imshow, padarray, bwlookup

bwmorph, im2single, imgradientxy, medfilt2

corr2, im2uint8, imhist, rgb2gray

edge, im2uint16, imlincomb, rgb2ycbcr

histeq, imabsdiff, imnoise, std2

im2double, imadjust, imresize, stdfilt

im2int16, imgradient, mat2gray, ycbcr2rgb

(11関数)

(24関数の追加)

38

GPGPU処理

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

CPU

GPU

メモリー

メモリー

gpuArray() gather()

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

I = gpuArray(I);

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

各種関数を、GPU上で実行

39

MATLABファイルからCコードを生成 MATLAB Coder

.c

.exe

.lib

MEX

コード生成/実装 実装(C/HDL)技術者へハンドオフ

スタンドアロンの

アプリケーション作成 (プロトタイプ・配布)

他のソフトウェアへ

MATLABアルゴリズムの統合

MATLABファイル実行の高速化

MATLABファイル

• ANSI-C/ISO-C/GNU-C準拠

• 整数・浮動小数点・

固定小数点演算対応

(Fixed-Point Designerが必要)

40

Cコード生成: MATLAB Coder

conndef, imcomplement, imfill, imhmax, imhmin,

imreconstruct, imregionalmax, imregionalmin,

iptcheckconn, padarray

extractHOGFeatures, extractFeatures,

detectSURFFeatures, disparity, detectMSERFeatures,

detectFASTFeatures, vision.CascadeObjectDetector,

vision.PointTracker, vision.PeopleDetector,

MSERRegions, cornerPoints, SURFPoints

(Image Processing Toolbox: 10関数の追加)

(Computer Vision System Toolbox: 14関数の追加)

画像処理・コンピュータービジョン関連関数の、Cコード生成対応状況

41

アジェンダ

1. Microsoft Kinect を使ったデモ

2. 画像処理・コンピュータービジョン向けツールボックス概要

3. デモ (2種類 + Kinectのデモスクリプト紹介)

4. 高速化ソリューション(GPU処理、Cコード化)最新対応状況のご紹介

5. Simulinkによる実装環境のご紹介

42

MATLAB/Simulinkにおける実装環境 Simulink Coder / Embedded Coder

HDL Coder / HDL Verifier

アルゴリズム検討

システム設計

実装

テスト

&検証

コード

生成 検証

VHDL,

Verilog

FPGA/ASIC

アルゴリズム検討、

システム設計と実装・検証が統合された環境

ターゲット依存しないコード(C、VHDL、Verilog)

コードの自動生成による開発期間の短縮

MATLAB/Simulinkモデルを動作可能な仕様とし、それを中心とした開発フロー

Processor

C, C++

SoC Virtual Platform

SystemC

モデル

43

Simulinkとは?

ブロック線図ベースのシステムモデリング・

シミュレーション

様々な系でのマルチドメインシミュレーション

(連続系・離散、マルチレート、浮動・固定小

数点、イベントドリブン等、制御/制御対象)

分かりやすい並列動作モデリング

時間軸シミュレーション・ストリーミング処理

プリコンパイル型のため高速な処理

MATLAB/

Simulink システムシミュレーション環境

時間/周波数応答の表示 ブロックライブラリ

C/C++コードのブロック化

システムシミュレーション

を短期間で実現

Simulinkの特長・概観

44

Zynq(などのプログラマブルSoC)向けワークフロー

ARM/FPGA実装用コントローラ 制御対象物理モデル

ARM FPGA

AXIバス

ARM プロセッサ

C Code

Software

FPGA HDL Code

Hardware

Zynq等のプログラマブルSoC

HDL Coder Embedded

Coder

45

デモブースのご案内

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

~システム設計~実装

46

画像処理回路ハードウェア実装の実事例講演ご紹介

47

各種サービス

リソース 100名を超えるサポートエンジニア

– 北米、欧州、アジアで現地サポート

高い顧客満足度 24時間以内に70%問題解決

80%のお客様が80-100%の満足度と回答

利用方法 Webページ

http://www.mathworks.co.jp/support/contact_us/

MATLABヘルプメニュー

MATLABデスクトップから

サポートリクエストを起動

トレーニングサービス、コンサルティング

テクニカルサポート

効率的な導入

48

まとめ

MATLAB・Simulinkを使用することにより、

すぐに動かすことが出来る統合開発環境上で、

画像処理・コンピュータービジョンの効率的

アルゴリズム検討・検証

– 多くの高速/高度な関数・ブロックを用いた様々な方式検討

– 様々な方式・パラメーターのトライ&エラーを迅速に実施が可

– 統合された開発環境上で、GPGPU高速化や、C・HDL生成による実装

を含む、多くのツールとの連携機能

– テクニカルサポートや、多くのユーザ・研究者の方々によるMATLAB

Centralなどの共有リソースの有効活用

画像処理・コンピュータービジョンの開発効率の向上

© 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.

49

スクリプトのダウンロード先

http://www.mathworks.co.jp/matlabcentral/fileexchange/44214-how-to-apply-image-processing-and-

computer-vision-wih-matlab-japanese-matlab-expo-2013

50 © 2013 The MathWorks, Inc.