いまからはじめる、MATLABによる 画像処理

いまからはじめる、MATLABによる
画像処理・コンピュータービジョン
(活用編)
MathWorks Japan
アプリケーションエンジニアリング部
シニアアプリケーションエンジニア
乙部 雅則
© 2013 The MathWorks, Inc.1
デモ
デモ
Microsoft Kinectとの連携
ハードウェアからの容易なデータ
取り込み
• 3次元座標・奥行き取得
• ジェスチャ認識 etc
RGB画像+
骨格座標
深度画像
認識した人(6人まで)
深度プロット
2
アジェンダ
1. Microsoft Kinect を使ったデモ
2. 画像処理・コンピュータービジョン向けツールボックス概要
3. デモ (2種類 + Kinectのデモスクリプト紹介)
4. 高速化ソリューション(GPU処理、Cコード化)最新対応状
況のご紹介
5. Simulinkによる実装環境のご紹介
プレゼンテーションファイル・デモに使用したファイルは
後日ダウンロードいただけます。
3
アジェンダ
1. Microsoft Kinect を使ったデモ
2. 画像処理・コンピュータービジョン向けツールボックス概要
3. デモ (2種類 + Kinectのデモスクリプト紹介)
4. 高速化ソリューション(GPU処理、Cコード化)最新対応状
況のご紹介
5. Simulinkによる実装環境のご紹介
4
画像処理、解析およびアルゴリズム開発
Image Processing Toolbox











各種画像データフォーマットの読込
画像調査用の各種GUIツール
画像(色・コントラスト等)の調整・変換
幾何学的変換(位置や形の変換)
レジストレーション(位置合せ)
各種フィルタ処理
モルフォロジー処理(膨張・収縮等の様々な形態処理)
オブジェクト(物体)検出・解析
セグメンテーション(領域切出し)
物体の定量評価
ROIベースの処理(特定領域処理)
5
幾何学変換 / 各種フィルター処理
 幾何学的変換(位置や形の変換)
 各種フィルター処理
ノイズ除去
6
モルフォロジー処理 / オブジェクト検出・解析
 モルフォロジー処理(膨張・収縮等の様々な形態処理)
境界線を
抽出
 オブジェクト(物体)検出・解析
直線検出
による
レーン検出
7
セグメンテーション / 定量評価
 セグメンテーション(領域切出し)
葉の部分を
抽出
 物体の定量評価
各中心位置・
面積を計測
8
コンピュータビジョン・高速動画ストリーミング処理
Computer Vision System Toolbox

カメラキャリブレーション

グラフィックス

特徴点検出・特徴量抽出、
マッチング・レジストレーション

物体認識
– 顔・人物認識
– カスタム物体に対する機械学習

動画ストリーミングデータの高速処理

物体のトラッキング

ステレオビジョン向けツール

画像処理用のSimulink ブロックセット
9
カメラキャリブレーション
カメラ位置推定
レンズ歪
カメラ内部
カメラ外部の
パラメータ抽出
レンズ歪補正
グラフィックス
注釈挿入
マーカー挿入
図形挿入
テキスト挿入
10
特徴点ベースのワークフロー
 特徴点のマッチング・物体認識
SURF/Harris/FAST等
の特徴点検出・特徴量抽出
RANSACを用いた対応点推定
 特徴点ベースのレジストレーション(位置合せ)
11
顔・人物の認識、機械学習
 顔認識
(Viola-Jonesアルゴリズム)
 人物認識
(HOG特徴量)
 機械学習
(Haar / HOG / LBP 特徴量)
データベース
12
高速動画ストリーミング処理・動き検出、トラッキング
 動画の高速ストリーミング処理・動き検出
車のカウント
動いている領域の検出
 トラッキング
物体が隠れてしまっても、
位置を予測しながら
トラッキングを続ける
13
ステレオビジョン向けワークフロー
 2枚のステレオ画像の平行化
平行化
2つの画像から特徴点の抽出
 奥行きの推定 (ディスパリティーマップ)
14
アジェンダ
1. Microsoft Kinect を使ったデモ
2. 画像処理・コンピュータービジョン向けツールボックス概要
3. デモ (2種類 + Kinectのデモスクリプト紹介)
4. 高速化ソリューション(GPU処理、Cコード化)最新対応状
況のご紹介
5. Simulinkによる実装環境のご紹介
15
デモ1:物体を識別し数える・面積を求める
5種類の木の実を区別して数える
赤い粒の平均面積の測定
16
デモ1:物体を識別し数える・面積を求める: 処理結果
17
デモ1:数えるデモ : 手順
二値化
(輝度二値化)
エッジ検出
モルフォロジー処理
(塗り潰し・橋渡し・オー
プン処理等)
[形状計測]
扁平率で判別
[統計処理]
面積で
グループ分け
フィルター処理
[色空間変換]
色相で判別
機械学習で判別
MATLAB Central
File Exchange
デモ
18
HSV色空間
Hue: 色相
赤:0 / 1.0
Value: 明度
Saturation: 彩度
(白/灰色/黒は0)
19
機械学習
> 機械学習用の関数
[Haar-like/Histogram of Orientation (HOG)/Local Binary Pattern (LBP)]
trainCascadeObjectDetector()
カスケード型分類器
ポジティブ画像と
ネガティブ画像を準備
学習済みデータベース
(xxx.xml)
(Haar / HOG / LBP 特徴量)
I = imread('visionteam.jpg');
% 画像の読込み
detector = vision.CascadeObjectDetector('xxx.xml'); % 検出オブジェクト定義
faces = step(detector, I)
% 顔検出
I2 = insertObjectAnnotation(I, 'rectangle', faces, 'Face'); %枠描画
figure; imshow(I2);
% 表示
20
デモ1:数えるデモ : まとめ
二値化
(輝度二値化)
エッジ検出
モルフォロジー処理
(塗り潰し・橋渡し・オー
プン処理等)
[形状計測]
扁平率で判別
[統計処理]
面積で
グループ分け
フィルター処理
[色空間変換]
色相で判別
機械学習で判別
様々な処理を簡潔な記述で処理可能な、豊富な関数群
対話的な処理方法探索
File Exchangeサイトの利用
21
の利用
22
でのコミュニティー活動
File Exchangeには、ユー
ザー様が作られた、画像処
理・コンピュータービジョン
系のアルゴリズム、サンプ
ル等が2千件以上登録
共有されているほとんど
のファイルは、BSDライ
センス
R2012bより、Apps機能
も使用可能
23
粒子が接触している場合
24
watershed (分水嶺) セグメンテーション
BWclear
1
~BWclear
0
1
0
距離変換
bwdist(~BWclear)
0
-bwdist(~BWclear)
背景部分を-Infにして、
領域に含まれないようにする
0
BWdist(~BWclear) = -Inf
極小
分水嶺
-Inf
分水嶺変換
領域#1
領域#2
25
デモ2:
ホ
ッ
キ
ョ
ク
グ
マ
26
AR (拡張現実:Augmented Reality)



動画のストリーミング処理
局所特徴量を用いたマッチング
トラッキングによる認識処理の高速化
=>
 局所特徴量を用いた物体認識
 物体や人物のトラッキング
 リアルタイムの画像の向き補正
等々への応用
27
動画のストリーミング処理
% ビデオ読込み用のオブジェクトの作成
vidReader = vision.VideoFileReader('fileName.avi');
% ビデオ表示用のオブジェクトの作成
vidPlayer = vision.DeployableVideoPlayer;
% ループ処理
while (1)
I = step(vidReader);
......
step(vidPlayer, I);
% 1フレーム 読込み
% 各種処理
% 1フレーム 表示
end
28
デモ2 : 手順1
カメラからの画像
リファレンス画像
局所特徴量:
SURF
特徴点の検出
特徴量の抽出
マッチング
29
デモ2 : 手順2
第1フレーム
RANSACを用いた幾何学変換推定
(外れ値の除去)
幾何学変換
0.525
0.041
0
−0.042
0.486
0
75.123 168.891 1
合成
30
デモ2 : 手順3
最初のフレームの画像
次のフレームの画像
この中でエッジを検出
局所特徴量マッチングの代わりに、
エッジのトラッキングを用いることで、
高速化
推定した幾何学変換
高速な動画ストリーミング処理
特徴点ベースマッチングやトラッキング等
の高度な処理を簡潔に実現
アイデアの迅速なプロトタイピング
31
各種カメラからの画像データ直接取込み
Image Acquisition Toolbox

業界標準のHWからの動画像取込み機能を提供
– フレームグラバ (画像入力ボード)


Analog 入力
Camera Link 入力
– DCAM 互換 FireWire (IIDC 1394)
– GigE Vision
– 一般的なUSB Webカメラ

Microsoft Kinect
RGB画像+
スケルトン

カスタムアダプター開発キット
認識した人(6人まで)
深度画像
32
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).
33
デモ
スクリプト
Microsoft Kinectとの連携
ハードウェアからの容易なデータ
取り込み
• 3次元座標・奥行き取得
• ジェスチャ認識 etc
RGB画像+
骨格座標
深度画像
認識した人(6人まで)
深度プロット
34
アジェンダ
1. Microsoft Kinect を使ったデモ
2. 画像処理・コンピュータービジョン向けツールボックス概要
3. デモ (2種類 + Kinectのデモスクリプト紹介)
4. 高速化ソリューション(GPU処理、Cコード化)最新対応状
況のご紹介
5. Simulinkによる実装環境のご紹介
35
並列/分散処理・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 との併
用によりコンピュータークラスタの使用が可能
36
Image Processing ToolboxのGPUサポート関数
(11関数)
imrotate, imfilter, imdilate, imerode, imopen, imclose,
imtophat, imbothat, imshow, padarray, bwlookup
(24関数の追加)
bwmorph, im2single, imgradientxy, medfilt2
corr2, im2uint8, imhist, rgb2gray
edge, im2uint16, imlincomb, rgb2ycbcr
histeq, imabsdiff, imnoise, std2
im2double, imadjust, imresize, stdfilt
im2int16, imgradient, mat2gray, ycbcr2rgb
37
GPGPU処理
各種関数を、GPU上で実行
I = imrotate(I, 75, 'bicubic'); % 画像を75°回転
CPU
I = gpuArray(I);
I = imrotate(I, 75, 'bicubic'); % 画像を75°回転
gather()
GPU
メモリー
gpuArray()
メモリー
わずかなコード変更で、高速化が可能
38
MATLABファイルからCコードを生成
MATLAB Coder
MATLABファイル実行
MEX
の高速化
コード生成/実装
実装(C/HDL)技術者へハンドオフ
.c
• ANSI-C/ISO-C/GNU-C準拠
• 整数・浮動小数点・
固定小数点演算対応
(Fixed-Point Designerが必要)
MATLABファイル
.exe
.lib
スタンドアロンの
アプリケーション作成
(プロトタイプ・配布)
他のソフトウェアへ
MATLABアルゴリズムの統合 39
Cコード生成: MATLAB Coder
画像処理・コンピュータービジョン関連関数の、Cコード生成対応状況
(Image Processing Toolbox: 10関数の追加)
conndef, imcomplement, imfill, imhmax, imhmin,
imreconstruct, imregionalmax, imregionalmin,
iptcheckconn, padarray
(Computer Vision System Toolbox: 14関数の追加)
extractHOGFeatures, extractFeatures,
detectSURFFeatures, disparity, detectMSERFeatures,
detectFASTFeatures, vision.CascadeObjectDetector,
vision.PointTracker, vision.PeopleDetector,
MSERRegions, cornerPoints, SURFPoints
40
アジェンダ
1. Microsoft Kinect を使ったデモ
2. 画像処理・コンピュータービジョン向けツールボックス概要
3. デモ (2種類 + Kinectのデモスクリプト紹介)
4. 高速化ソリューション(GPU処理、Cコード化)最新対応状
況のご紹介
5. Simulinkによる実装環境のご紹介
41
MATLAB/Simulinkにおける実装環境
Simulink Coder / Embedded Coder
HDL Coder / HDL Verifier
アルゴリズム検討
システム設計
コード
生成
検証
Processor
VHDL,
Verilog
FPGA/ASIC
 ターゲット依存しないコー
ド(C、VHDL、Verilog)
 コードの自動生成による
開発期間の短縮
実装
C, C++
テスト&検証
モデル
 アルゴリズム検討、
システム設計と実装・検証
が統合された環境
SystemC
SoC
Virtual Platform
 MATLAB/Simulinkモデル
を動作可能な仕様とし、そ
れを中心とした開発フロー
42
Simulinkの特長・概観
Simulinkとは?
 ブロック線図ベースのシステムモデリング・
シミュレーション
 様々な系でのマルチドメインシミュレーション
MATLAB/
Simulink
システムシミュレーション環境
(連続系・離散、マルチレート、浮動・固定小
数点、イベントドリブン等、制御/制御対象)
 分かりやすい並列動作モデリング
ブロックライブラリ
時間/周波数応答の表示
C/C++コードのブロック化
 時間軸シミュレーション・ストリーミング処理
 プリコンパイル型のため高速な処理
システムシミュレーション
を短期間で実現
43
Zynq(などのプログラマブルSoC)向けワークフロー
制御対象物理モデル
ARM/FPGA実装用コントローラ
FPGA
ARM
Embedded
Coder
HDL Coder
ARM
プロセッサ
C Code
Software
AXIバス
FPGA
HDL Code
Hardware
Zynq等のプログラマブルSoC
44
デモブースのご案内
信号処理アルゴリズム設計
~システム設計~実装
45
画像処理回路ハードウェア実装の実事例講演ご紹介
46
各種サービス
テクニカルサポート
リソース

100名を超えるサポートエンジニア
– 北米、欧州、アジアで現地サポート
高い顧客満足度


24時間以内に70%問題解決
80%のお客様が80-100%の満足度と回答
利用方法


Webページ
http://www.mathworks.co.jp/support/contact_us/
MATLABヘルプメニュー
MATLABデスクトップから
サポートリクエストを起動
トレーニングサービス、コンサルティング
効率的な導入
47
まとめ

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.
48
スクリプトのダウンロード先
http://www.mathworks.co.jp/matlabcentral/fileexchange/44214-how-to-apply-image-processing-andcomputer-vision-wih-matlab-japanese-matlab-expo-2013
49
© 2013 The MathWorks, Inc.
50