いまからはじめる MATLAB による画像処理 コンピュータビジョン MathWorks Japan アプリケーションエンジニアリング部シニアアプリケーションエンジニア大谷卓也 2012 The MathWorks, Inc. 1
Demo: 顔検出 画像から 人間の顔認識を行い 数のカウントを行う 2
Demo: MRI Analysis モンタージュ画像からの 3 次元構築 3
MATLAB/Simulink での画像処理 コンピュータビジョン開発 コンセプト検討 設計 アルゴリズム方式検討 プロトタイピング 組み込みシステム設計 画像処理 コンピュータビジョンの 方式検討 アルゴリズム検討 プロトタイピング 実装方式の検討 制御部分 画像処理 処理速度の検討 FPGA? CPU? DSP? メモリ容量の検討 MATLAB/Simulink では アルゴリズムから HW/ 組み込みシステム実装まで幅広くツールでカバーします 4
アジェンダ 画像処理とは? 画像の取り扱いの基本 各種画像処理アルゴリズムの扱い MATLAB で画像処理を行うメリット コンピュータビジョンとは? 応用例のご紹介 特徴量を使用した認識 MATLAB で使用出来る様々な環境 5
画像処理とは? 様々なアルゴリズムを使用し 画像の変形や変換 色の補正 ノイズ除去などを行うこと 統計解析などを併用し 画像からデータの数値化を行うこと 例えば デジタルカメラの内部処理様々な画像処理がハードウェア ソフトウェアで行われる 6
画像処理とは? ノイズ除去 色 コントラスト ヒストグラム調整 7
画像処理とは? モルフォロジー処理などによる 領域の分割面積 中心点などの算出 8
画像処理とは? 特定の物体の検出 数値算出画像からの定量評価 9
画像処理デモ インデックス操作 2 値化 モルフォロジー処理 セグメンテーション例 画像フィルタ操作例 これから始める方へ 関数のサーチ方法 10
画像処理開発における MATLAB 使用のメリット シンプルな構文 C/C++ に比べて 少ない作業量 ( ループ等の記述は最小限 ) データタイプの扱いが簡単 ( 多くの場合定義も不要 ) スクリプトでの実行 多くの可視化機能 コンパイル等の作業が不要 プログラム途中でのデバッグが容易 高度なアルゴリズム ライブラリ群 高速な行列演算ライブラリ 最小限の設定ですぐに使える画像処理 コンピュータビジョン アルゴリズム 11
アジェンダ 画像処理とは? 画像の取り扱いの基本 各種画像処理アルゴリズムの扱い MATLAB で画像処理を行うメリット コンピュータビジョンとは? 応用例のご紹介 特徴量を使用した認識 MATLAB で使用出来る様々な環境 12
コンピュータビジョンとは? 静止画像や 動画像を使用し 検出 識別 物体のトラッキングを行い コンピュータでシーンの理解などを行うこと 画像処理 ノイズ補正コントラスト補正測定 コンピュータビジョン 検出認識識別トラッキング シーンの理解 道路人物自転車トラックアクシデント 13
コンピュータビジョンの応用例 アクティブセーフティ ロボット制御 セキュリティ バイオメトリクス 14
コンピュータビジョンとは? 特徴点 特徴量の検出からのマッチングや認識 15
コンピュータビジョンとは? 特徴点をベースにパノラマ画像の生成 (Image Stitching) 16
コンピュータビジョンとは? 機械学習などを使った 顔や人物の認識 17
コンピュータビジョンとは? 動画からの動き検出 ( 定点カメラからの自動車検出例 ) 18
コンピュータビジョンとは? 複数物体の検出 及びトラッキング 物体の動き予測 ( オクルージョン含む ) 19
コンピュータビジョンデモ 顔の検出 特徴点 特徴量の抽出 マッチング 動きの検出例 20
その他 MATLAB で使用出来る環境 柔軟な画像入力 ( 動画 静止画 ) ツールボックス追加による 豊富な画像処理 コンピュータビジョンアルゴリズム 既存の C / C++ ライブラリ取り込み 多くのユーザ 研究者による MATLAB コードの共有 ツールボックスの関数や 最新のオープンソースを利用し アルゴリズム 方式検討を加速 21
MATLAB Central の利用 共有されている殆どのファイルは BSD ライセンス R2012b より Apps 機能も使用可能 画像処理 コンピュータビジョン系のアルゴリズム サンプル等が千件以上登録 (2012 年現在 ) 22
HW との連携 GUI 配布形式アプリの制作 高度な GUI 作成機能 COM1.exe MATLAB コンパイラを使用し実行形式作成.dll/.lib HW からの高速なデータ取り込み COM.NET MATLAB では 高速なデータの取り込み GUI の作成 そして 配布に向けた 実行形式アプリの作成が可能 23
DEMO 左のトランプは 右の画像の中にあるでしょうか? 24
その他 各種ツールボックスで実現できること 各種カメラデバイスからの画像キャプチャ Image Acquisition Toolbox 画像の前処理 ( 色補正 フィルタ Image Processing Toolbox モルフォロジなど ) 特徴点 特徴量の検出 / 抽出 / マッチング Computer Vision その他ビジョンアプリケーション System Toolbox ブレ補正 モザイキング 動きの検出 顔認識 人物認識 トラッキング ステレオ画像 クラシフィケーション 機械学習 Statistics Toolbox 並列化 Neural Network Toolbox 25
CPU/DSP, FPGA 実装ツール EDA 環境 (Xilinx, Altera Mentor Graphics, Cadence 等 ) との連携 外部入力 IDE 環境 (Texas Instruments, Analog Devices, Green Hills, Altium, Eclipse 等 ) との連携 CPU/DSP ボード連携 FPGA ボード連携 Simulink を使用する事で 画像処理システムの机上検証から Software/Hardware と連携した検証まで実現可能 26
まとめ すぐに動かすことが出来る インタープリタ環境による 画像処理 コンピュータビジョンのアルゴリズム検討 様々なパラメータのトライ & エラーを迅速に実施 多くの高速な関数を使った 様々な方式検討 多くの研究者 MATLAB Central などのリソースの有効活用 画像処理 コンピュータビジョン開発の際のイタレーション時間 (Turn Around Time) の短縮 27
デモブースのご案内 信号処理アルゴリズム設計 ~ システム設計 ~ 実装 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. 28
いまからはじめる MATLAB による画像処理 コンピュータビジョン MathWorks Japan アプリケーションエンジニアリング部シニアアプリケーションエンジニア大谷卓也 2012 The MathWorks, Inc. 29
Appendix 本セッションで行った デモの詳細 画像処理 インデックス操作 画像の 2 値化 モルフォロジー処理 コンピュータビジョン 顔認識 特徴点 特徴量の抽出 30
MATLAB で行う画像処理行列操作の得意な環境 (2 値化 マスクの例 ) 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 要素ごとに掛け算 プログラム例 : A = magic(5); B = A > 10; C = A.* B; 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 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 31
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 行 32
コイン画像の 2 値化例 I = imread( coins.png ); % 画像をIという変数に取り込み imshow(i); % 取り込んだ画像を表示 33
ヒストグラムの確認 黒い領域 白い領域 34
画像の 2 値化 35
画像のクリーンアップ 36
各リージョンの中心点 面積を計算 37
画像の上に 面積のテキストを表示 38
モルフォロジー処理の例 右の画像 ( 米粒 ) のそれぞれの面積 中心点を計算します 39
画像のロード 画像の 2 値化を行なってみます 40
ヒストグラムの確認 しきい値は何処が良いでしょうか? 41
しきい値を変更して 2 値化画像の確認 単一のしきい値で 2 値化は出来ない様子 2 値化を行う前に モルフォロジー処理を行なってみましょう 42
背景の明るさを確認 まず 背景の確認 ( 画像全体を大きくオープン処理して確認 ) 代表的なモルフォロジー処理 imdilate ( 膨張 ) imerode ( 収縮 ) imclose ( クローズ処理 ) imopen ( オープン処理 ) imbothat ( ボトムハット処理 ) imtophat ( トップハット処理 ) その他 bwmorph 関数で多彩な処理が可能 43
画像から背景を引き算 背景の輝度を調整処理結果を確認 ヒストグラムを再度確認 画像から オープニング処理した画像を引き算することをトップハット処理といいます ( 一連の動作は imtophat 関数でも処理が可能です ) 44
画像の 2 値化 マニュアルでの 2 値化以外に 下記で自動設定も可能 綺麗にセグメント出来た事がわかります 45
画像のクリーンアップ 及び プロパティ解析 指定ピクセル以上のリージョンのみ残します 各リージョンのプロパティ解析を行います ( 上記例は 面積 中心点ですが オプション指定で 様々な解析が出来ます ) 46
ドキュメント検索のやり方 逆引き EXAMPLE 47
コンピュータビジョン系デモの詳細顔認識 48
特徴点検出 マッチングのワークフロー I1 = imread('cameraman.tif'); I2 = imrotate(i1, -20); I1 I2 スケール変化に不変な特徴点検出 points1 = detectsurffeatures(i1); points2 = detectsurffeatures(i2); [f1, vpts1] = extractfeatures(i1, points1); [f2, vpts2] = extractfeatures(i2, points2); 回転に不変な特徴量抽出 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 ); Perform Matching 数行のコードで検出 認識などを行うことが出来る 49