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

いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

1 © 2012 The MathWorks, Inc.

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

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

MathWorks Japan

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

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

大谷 卓也

Page 2: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

2

Demo: 顔検出

画像から、人間の顔認識を行い、数のカウントを行う

Page 3: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

3

Demo: MRI Analysis

モンタージュ画像からの3次元構築

Page 4: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

4

MATLAB/Simulinkでの

画像処理、コンピュータビジョン開発

コンセプト

検討・設計

アルゴリズム

方式検討 プロト

タイピング

組み込み

システム設計

MATLAB/Simulinkでは、アルゴリズムから、HW/組み込みシステム

実装まで幅広くツールでカバーします

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

• 方式検討

• アルゴリズム検討

• プロトタイピング

• 実装方式の検討

• 制御部分、画像処理

• 処理速度の検討 • FPGA? CPU? DSP?

• メモリ容量の検討

Page 5: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

5

アジェンダ

画像処理とは?

– 画像の取り扱いの基本

– 各種画像処理アルゴリズムの扱い

– MATLABで画像処理を行うメリット

コンピュータビジョンとは?

– 応用例のご紹介

– 特徴量を使用した認識

– MATLABで使用出来る様々な環境

Page 6: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

6

画像処理とは?

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

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

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

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

Page 7: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

7

画像処理とは?

ノイズ除去 色、コントラスト、ヒストグラム調整

Page 8: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

8

画像処理とは?

モルフォロジー処理などによる、領域の分割

面積、中心点などの算出

Page 9: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

9

画像処理とは?

特定の物体の検出、数値算出

画像からの定量評価

Page 10: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

10

画像処理デモ

インデックス操作

2値化、モルフォロジー処理、セグメンテーション例

画像フィルタ操作例

これから始める方へ、関数のサーチ方法

Page 11: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

11

画像処理開発における、MATLAB使用のメリット

シンプルな構文

– C/C++に比べて、少ない作業量(ループ等の記述は最小限)

– データタイプの扱いが簡単(多くの場合定義も不要)

スクリプトでの実行、多くの可視化機能

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

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

高度なアルゴリズム・ライブラリ群

– 高速な行列演算ライブラリ

– 最小限の設定ですぐに使える画像処理、

コンピュータビジョン・アルゴリズム

Page 12: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

12

アジェンダ

画像処理とは?

– 画像の取り扱いの基本

– 各種画像処理アルゴリズムの扱い

– MATLABで画像処理を行うメリット

コンピュータビジョンとは?

– 応用例のご紹介

– 特徴量を使用した認識

– MATLABで使用出来る様々な環境

Page 13: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

13

コンピュータビジョンとは?

静止画像や、動画像を使用し、検出、識別、物体のトラッキングを行い、コンピュータでシーンの理解などを行うこと

コンピュータビジョン シーンの理解

検出

認識

識別

トラッキング

道路

人物

自転車

トラック

アクシデント

画像処理

ノイズ補正

コントラスト補正

測定

Page 14: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

14

コンピュータビジョンの応用例

ロボット制御

セキュリティ

バイオメトリクス

アクティブセーフティ

Page 15: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

15

コンピュータビジョンとは?

特徴点・特徴量の検出からのマッチングや認識

Page 16: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

16

コンピュータビジョンとは?

特徴点をベースにパノラマ画像の生成

(Image Stitching)

Page 17: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

17

コンピュータビジョンとは?

機械学習などを使った、顔や人物の認識

Page 18: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

18

コンピュータビジョンとは?

動画からの動き検出 (定点カメラからの自動車検出例)

Page 19: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

19

コンピュータビジョンとは?

複数物体の検出、及びトラッキング

物体の動き予測(オクルージョン含む)

Page 20: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

20

コンピュータビジョン デモ

顔の検出

特徴点・特徴量の抽出、マッチング

動きの検出例

Page 21: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

21

その他、MATLABで使用出来る環境

既存のC / C++

ライブラリ取り込み

柔軟な画像入力

(動画、静止画)

ツールボックス追加による、

豊富な画像処理、

コンピュータビジョン

アルゴリズム

多くのユーザ、研究者による

MATLABコードの共有

ツールボックスの関数や、最新のオープンソースを利用し、アルゴリズム・方式検討を加速

Page 22: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

22

MATLAB Centralの利用

画像処理・コンピュータ

ビジョン系のアルゴリズム、

サンプル等が千件以上登録(2012年現在)

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

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

Page 23: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

23

HWとの連携、GUI・配布形式アプリの制作

COM1

HWからの高速なデータ取り込み

高度なGUI作成機能

.NET COM

.exe .dll/.lib

MATLABコンパイラを使用し

実行形式作成

MATLABでは、高速なデータの取り込み、GUIの作成、そして、配布に向けた、実行形式アプリの作成が可能

Page 24: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

24

DEMO

左のトランプは、右の画像の中にあるでしょうか?

Page 25: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

25

その他、各種ツールボックスで実現できること

各種カメラデバイスからの画像キャプチャ Image Acquisition Toolbox

画像の前処理(色補正、フィルタ、 Image Processing Toolbox

モルフォロジなど)

特徴点・特徴量の検出/抽出/マッチング Computer Vision

その他ビジョンアプリケーション System Toolbox

– ブレ補正、モザイキング

– 動きの検出、顔認識、人物認識

– トラッキング

– ステレオ画像

クラシフィケーション、機械学習 Statistics Toolbox

Neural Network Toolbox

並列化

Page 26: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

26

CPU/DSP, FPGA実装ツール

Simulinkを使用する事で、画像処理システムの机上検証

から、Software/Hardwareと連携した検証まで実現可能

外部入力

EDA環境(Xilinx,

Altera、Mentor

Graphics, Cadence

等)との連携

FPGAボード連携

CPU/DSPボード連携

IDE環境

(Texas

Instruments,

Analog Devices,

Green Hills, Altium,

Eclipse等)との連携

Page 27: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

27

まとめ

すぐに動かすことが出来る、インタープリタ環境による、

画像処理・コンピュータビジョンのアルゴリズム検討

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

– 多くの高速な関数を使った、様々な方式検討

– 多くの研究者、MATLAB Centralなどのリソースの有効活用

画像処理・コンピュータビジョン開発の際の

イタレーション時間 (Turn Around Time) の短縮

Page 28: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

28

デモブースのご案内

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

~システム設計~実装

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

Page 29: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

29 © 2012 The MathWorks, Inc.

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

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

MathWorks Japan

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

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

大谷 卓也

Page 30: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

30

Appendix

本セッションで行った、デモの詳細

画像処理

– インデックス操作

– 画像の2値化

– モルフォロジー処理

コンピュータビジョン

– 顔認識

– 特徴点・特徴量の抽出

Page 31: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

31

MATLABで行う画像処理

行列操作の得意な環境 (2値化・マスクの例)

■プログラム例: A = magic(5);

B = A > 10;

C = A .* B;

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

要素ごとに掛け算

A B

17 24 0 0 15

23 0 0 14 16

0 0 13 20 22

0 12 19 21 0

11 18 25 0 0

C

1 1 0 0 1

1 0 0 1 1

0 0 1 1 1

0 1 1 1 0

1 1 1 0 0

Page 32: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

32

MATLABで行う画像処理

コンパクトなコード量

I = rgb2gray(imread('peppers.png'));

I = imnoise(I, 'salt', 0.1);

Idenoise = medfilt2(I, [3 3]);

figure, imshow(Idenoise);

4行

RGB = imread('tape.png');

[center, radius] = imfindcircles(RGB,[60 100],'Sensitivity',0.9)

viscircles(center,radius);

hold on; plot(center(:,1),center(:,2),‘yx’,‘LineWidth’,2); hold off;

4行

Iorg=imread('iron.tif');

I = Iorg<180;

I = bwmorph(I,'skel','inf');

I = bwmorph(I,'spur','inf');

I = bwmorph(I,'clean');

figure, imshow(~I);

6行

Page 33: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

33

コイン画像の2値化例

I = imread(‘coins.png’); %画像をIという変数に取り込み

imshow(I); %取り込んだ画像を表示

Page 34: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

34

ヒストグラムの確認

黒い領域

白い領域

Page 35: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

35

画像の2値化

Page 36: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

36

画像のクリーンアップ

Page 37: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

37

各リージョンの中心点、面積を計算

Page 38: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

38

画像の上に、面積のテキストを表示

Page 39: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

39

モルフォロジー処理の例

右の画像(米粒)のそれぞれの面積、中心点を計算します

Page 40: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

40

画像のロード

画像の2値化を行なってみます

Page 41: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

41

ヒストグラムの確認

しきい値は何処が良いでしょうか?

Page 42: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

42

しきい値を変更して、2値化画像の確認

単一のしきい値で2値化は出来ない様子

2値化を行う前に、モルフォロジー処理を行なってみましょう

Page 43: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

43

背景の明るさを確認

代表的なモルフォロジー処理

imdilate (膨張)

imerode (収縮)

imclose (クローズ処理)

imopen (オープン処理)

imbothat (ボトムハット処理)

imtophat (トップハット処理)

その他、bwmorph関数で多彩な処理が可能

まず、背景の確認

(画像全体を大きくオープン処理して確認)

Page 44: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

44

画像から背景を引き算

背景の輝度を調整

処理結果を確認

ヒストグラムを再度確認

画像から、オープニング処理した画像を引き算することをトップハット処理といいます

(一連の動作は、imtophat関数でも処理が可能です)

Page 45: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

45

画像の2値化

マニュアルでの2値化以外に、下記で

自動設定も可能

綺麗にセグメント出来た事がわかります

Page 46: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

46

画像のクリーンアップ、及び、プロパティ解析

指定ピクセル以上のリージョンのみ残します

各リージョンのプロパティ解析を行います (上記例は、面積、中心点ですが、オプション指定で、様々な解析が出来ます)

Page 47: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

47

ドキュメント検索のやり方、

逆引き、EXAMPLE

Page 48: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

48

コンピュータビジョン系デモの詳細

顔認識

Page 49: いまからはじめる、MATLABによる 画像処理・コン …5 アジェンダ 画像処理とは? –画像の取り扱いの基本 –各種画像処理アルゴリズムの扱い

49

特徴点検出、マッチングのワークフロー

index_pairs = matchFeatures(f1, f2) ;

matched_pts1 = vpts1(index_pairs(:, 1));

matched_pts2 = vpts2(index_pairs(:, 2));

showMatchedFeatures(I1,I2,matched_pts1,matched_pts2, ‘montage’);

points1 = detectSURFFeatures(I1);

points2 = detectSURFFeatures(I2);

[f1, vpts1] = extractFeatures(I1, points1);

[f2, vpts2] = extractFeatures(I2, points2);

I1 I2

スケール変化に不変な特徴点検出

回転に不変な特徴量抽出

Perform Matching 数行のコードで検出・認識などを行うことが出来る

I1 = imread('cameraman.tif');

I2 = imrotate(I1, -20);