いまからはじめる、matlabによる 画像処理・コ...
TRANSCRIPT
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ベースの処理(特定領域処理)
9
コンピュータビジョン・高速動画ストリーミング処理
Computer Vision System Toolbox
カメラキャリブレーション
グラフィックス
特徴点検出・特徴量抽出、 マッチング・レジストレーション
物体認識
– 顔・人物認識
– カスタム物体に対する機械学習
動画ストリーミングデータの高速処理
物体のトラッキング
ステレオビジョン向けツール
画像処理用のSimulink ブロックセット
11
特徴点ベースのワークフロー
特徴点のマッチング・物体認識
特徴点ベースのレジストレーション(位置合せ)
SURF/Harris/FAST等
の特徴点検出・特徴量抽出
RANSACを用いた対応点推定
13
高速動画ストリーミング処理・動き検出、トラッキング
動画の高速ストリーミング処理・動き検出
トラッキング
物体が隠れてしまっても、
位置を予測しながら
トラッキングを続ける
車のカウント
動いている領域の検出
15
アジェンダ
1. Microsoft Kinect を使ったデモ
2. 画像処理・コンピュータービジョン向けツールボックス概要
3. デモ (2種類 + Kinectのデモスクリプト紹介)
4. 高速化ソリューション(GPU処理、Cコード化)最新対応状況のご紹介
5. Simulinkによる実装環境のご紹介
18
デモ1:数えるデモ : 手順
[統計処理]
面積で
グループ分け
機械学習で判別
フィルター処理
[色空間変換]
色相で判別
二値化
(輝度二値化) エッジ検出
モルフォロジー処理
(塗り潰し・橋渡し・オープン処理等)
デモ
[形状計測]
扁平率で判別
MATLAB Central
File Exchange
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サイトの利用
[統計処理]
面積で
グループ分け
機械学習で判別
フィルター処理
[色空間変換]
色相で判別
二値化
(輝度二値化) エッジ検出
モルフォロジー処理
(塗り潰し・橋渡し・オープン処理等)
[形状計測]
扁平率で判別
23
でのコミュニティー活動
File Exchangeには、ユー
ザー様が作られた、画像処理・コンピュータービジョン系のアルゴリズム、サンプル等が2千件以上登録
共有されているほとんどのファイルは、BSDライセンス
R2012bより、Apps機能も使用可能
25
watershed (分水嶺) セグメンテーション
~BWclear BWclear
-bwdist(~BWclear)
0
bwdist(~BWclear)
0 BWdist(~BWclear) = -Inf
-Inf
極小
0
1 0
1 距離変換
分水嶺 背景部分を-Infにして、
領域に含まれないようにする
分水嶺変換
領域#1
領域#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
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
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