+ All Categories
Home > Documents > MATLAB CoderTMと - MathWorks...ビジョン処理で使いこなす MATLAB® CoderTMと System...

MATLAB CoderTMと - MathWorks...ビジョン処理で使いこなす MATLAB® CoderTMと System...

Date post: 10-Feb-2021
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
30
ビジョン処理で使いこなす MATLAB ® Coder TM System object TM 新潟大学 自然科学系(工学部) 電気電子工学科 准教授 村松 正吾
Transcript
  • ビジョン処理で使いこなす MATLAB® CoderTMと System objectTM

    新潟大学 自然科学系(工学部) 電気電子工学科

    准教授 村松 正吾

  • 自己紹介 (むらまつ しょうご) 所属

    新潟大学 自然科学系(工学部) 電気電子工学科

    画像・映像信号処理の教育研究に従事 学部:「プログラミング」,「画像情報工学」 修士:「画像処理特論」,博士:「多次元信号処理論」 学会:IEEE、電子情報通信学会、映像情報メディア学会

    著書など 「マルチメディア技術の基礎DCT入門」 (CQ出版社, 1997年)

    「MATLABによる画像&映像信号処理 」 (CQ出版社, 2007年)

    2012/10/30 MATLAB EXPO 2012 | JAPAN 2

  • 講演内容(15:30-16:20)

    ビジョン処理と高速化 プロファイル処理、並列化、MEX化

    金属加工検証システム開発事例 (総務省助成事業、研究協力者) DLL/EXE生成とOpenCVとの連携

    指向性画像変換研究・開発事例 (科研費助成事業、研究代表者) Simulink®からBeagleBoardへの実装

    2012/10/30 MATLAB EXPO 2012 | JAPAN 3

  • ビジョン処理の背景

    センサネットワーク、クラウド、ビッグデータ (サイバー・フィジカル・システム)

    遠隔・協調化、劣悪なセンシング、リアルタイム性

    画像応用への高品質化・高機能化の要求 圧縮、復元、特徴抽出、認識等の発展に期待大

    2012/10/30 MATLAB EXPO 2012 | JAPAN 4

  • ビジョン処理の特徴

    「百聞は一見にしかず」映像データ量は膨大

    地デジ・ハイビジョン放送: 最大16.8Mbps

    音声:144kbps(1ch)~384kbps(5.1ch)

    映像:平均約14Mbps

    多様かつ高度な要求

    電力、速度、サイズ、価格などの制約

    2012/10/30 MATLAB EXPO 2012 | JAPAN 5

    膨大なデータに対し、シビアなトレードオフの探求が必須

    音声に比べ 30~100倍のレート

  • ビジョン処理とMATLAB/Simulink

    システム設計 アルゴリズム開発

    実験・実装・検証

    本講演の使用オプション Image Processing

    ToolboxTM

    Image Acquisition

    ToolboxTM

    Computer Vision System

    ToolboxTM

    Parallel Computing

    ToolboxTM

    MATLAB Coder

    MATLAB EXPO 2012 | JAPAN 6 2012/10/30

    MATLAB

    Simulink

    R2012b

  • 高速化の手段

    ビジョン処理の課題

    膨大なデータの高速実現/リアルタイム処理

    MATLABにおける高速化の手段を紹介

    実行時間解析

    並列化

    MEX化

    2012/10/30 MATLAB EXPO 2012 | JAPAN 7

    私の研究開発ツール(第53回) “MATLABによる映像処理システム開発”

    映像情報メディア学会誌 Vol.65, No.11, pp.1571~1574 (2011)

    http://www.ite.or.jp/data/journal/passed_issues/tool1111/

    http://www.ite.or.jp/data/journal/passed_issues/tool1111/

  • 【例】画像の変換と逆変換

    非分離ウェーブレット変換

    変換

    逆変換

    A. Adachi, S. Muramatsu, H. Kikuchi, Constraints of Second-Order Vanishing Moments on Lattice Structures for

    Non-separable Orthogonal Symmetric Wavelets, IEICE Trans. Fundamentals, Vol. E92-A, No. 3, pp.788-797, Mar. 2009

    2012/10/30 MATLAB EXPO 2012 | JAPAN 8

  • 実行時間解析

    プロファイラ―

    メニューから利用する方法

    「エディター」→「実行および時間の計測」

    コマンドウィンドウ(スクリプト)から利用する方法

    » profile on % 解析開始

    » profile off % 解析終了

    » profile viewer % 解析結果表示

    2012/10/30 MATLAB EXPO 2012 | JAPAN 9

    main_ex_prf.m

    高速化の戦略を立てる

  • 並列化

    Parallel Computing Toolbox

    有効性の確認

    「Parallel」→「Manage Cluster Profiles…」 →「Validate」

    パラレルFORループを利用する方法

    » matlabpool % MATLABプール開始

    » parfor … % パラレルFORループ開始

    » end % パラレルFORループ終了

    » matlabpool close % MATLABプール終了

    2012/10/30 MATLAB EXPO 2012 | JAPAN 10

    main_ex_par.m

    測定開始id = tic;

    測定終了 toc(id)

  • MEX化(GUI)

    MATLAB Coder C/C++経由で実行形式へ 準備

    » mex –setup % C/C++コンパイラの設定

    GUIを利用する方法 » coder % MATLAB Coder GUI の起動

    2012/10/30 MATLAB EXPO 2012 | JAPAN 11

    function y = fun(x) %#codegen

    % FUN

    y = …

    ターゲット関数には、 忘れずに記載

  • MEX化(スクリプト)

    MATLAB Coder

    C/C++経由で実行形式へ

    コマンドウィンドウ(スクリプト)から利用する方法(例) » cfg = coder.config(‘mex’); % MEXに設定

    » cfg.DynamicMemoryAllocation = ‘off’;

    » x = coder.typesof(double(0), [8 1], [1 0]); % 型設定

    » codegen –config cfg fun –arg { x } % コード生成

    2012/10/30 MATLAB EXPO 2012 | JAPAN 12

    型 サイズ

    可変/固定

    ビルド・スクリプトを作成すれば管理がし易く便利

    function y = fun(x) %#codegen

    % FUN

    y = …

    ターゲット関数には、 忘れずに記載

    もしくは‘AllVariableSizeArrays’

  • MEX関数

    呼び出しの例

    デフォルトでは “_mex”が関数名の末尾に付く

    2012/10/30 MATLAB EXPO 2012 | JAPAN 13

    ftype = exist(‘fun_mex’,‘file’); % ファイルの確認 if ftype == 3

    y = fun_mex(x); % MEX関数の呼び出し else

    y = fun(x); % M関数の呼び出し end

    パス上にMEX/DLLがあれば 値 ‘3’ を返す

    拡張子は実行環境毎に異なる (例、Win32⇒’mexw32’)

    main_ex_mex.m

    main_ex_pmx.m

  • 応用事例紹介

    金属加工検証システムの実装

    レンズ歪補正デモ(MATLAB)

    レンズ歪推定デモ(MATLAB)

    指向性画像変換の組込み実装

    画像修復デモ(MATLAB)

    画像解析デモ(Simulink)

    2012/10/30 MATLAB EXPO 2012 | JAPAN 14

    MATLAB Coder と System object の活用事例を紹介

    main_udst_cui.m

    main_dest_cui.m

    main_imrstrip.m

    sowavedec2embd.slx

  • 【応用事例1】 金属加工検証システム開発事例 総務省戦略的情報通信研究開発推進制度(SCOPE) 「クロスネットワークを機軸とした地域間データ共有機能を有する金属加工形状検証システムの研究開発」 (研究代表者:新潟大学 教授 鈴木孝昌)

    高精度レンズ歪推定・補正実現にMATLABを利用

    2012/10/30 MATLAB EXPO 2012 | JAPAN 15

    アルゴリズム検証 スタンドアローン アプリケーション

    DLL/EXE DLL M

    EX

  • 金属加工検証システムの概要

    板金加工工程の効率化

    検査データの共有

    再受注の迅速化

    納期短縮

    2012/10/30 MATLAB EXPO 2012 | JAPAN 16

    工場(検査端末)

    工場(検査端末) 発注元

    検査データ

    受注確認

    検査データ

    発注

    検査データ 受注確認

    ホストサーバー

    地域・企業間ネットワーク (燕三条地域)

    検査端末の開発を担当

    http://img.kakaku.com/images/productimage/fullscale/00490111151.jpg

  • 高精度レンズ歪推定・補正の概要

    レンズ歪推定 レンズ歪補正

    MATLAB EXPO 2012 | JAPAN 17 2012/10/30

    局所射影変換

    デジカメ

    FPD

    位相限定相関

    レンズ歪補正へ 形状照合へ

    半径方向歪モデルと併用 (Camera Calibration Toolbox)

    試作機(板金:戸塚金属工業㈱製)

  • スタンドアローン化の要求

    形状照合・管理ソフト(テクノケア社)との連携のため

    コード生成に対応した高機能なSystem objectを利用

    利用したクラス(Computer Vision System Toolbox)

    vision.FFT, vision.IFFT,

    vision.ImageFilter, vision.BlobAnalysis,

    vision.MorphologicalClose,

    vision.ShapeInserter, vision.Maximum,

    vision.GeometricTransformEstimator,

    vision.GeometricTransformer

    コード生成対応 System object の活用

    MATLAB EXPO 2012 | JAPAN 18 2012/10/30

    http://www.mathworks.co.jp/jp/help/coder/ug/system-objects-supported-for-code-generation.html

    コード生成対応のSystem object 一覧

    http://www.mathworks.co.jp/jp/help/coder/ug/system-objects-supported-for-code-generation.htmlhttp://www.mathworks.co.jp/jp/help/coder/ug/system-objects-supported-for-code-generation.htmlhttp://www.mathworks.co.jp/jp/help/coder/ug/system-objects-supported-for-code-generation.htmlhttp://www.mathworks.co.jp/jp/help/coder/ug/system-objects-supported-for-code-generation.htmlhttp://www.mathworks.co.jp/jp/help/coder/ug/system-objects-supported-for-code-generation.htmlhttp://www.mathworks.co.jp/jp/help/coder/ug/system-objects-supported-for-code-generation.htmlhttp://www.mathworks.co.jp/jp/help/coder/ug/system-objects-supported-for-code-generation.htmlhttp://www.mathworks.co.jp/jp/help/coder/ug/system-objects-supported-for-code-generation.htmlhttp://www.mathworks.co.jp/jp/help/coder/ug/system-objects-supported-for-code-generation.htmlhttp://www.mathworks.co.jp/jp/help/coder/ug/system-objects-supported-for-code-generation.htmlhttp://www.mathworks.co.jp/jp/help/coder/ug/system-objects-supported-for-code-generation.html

  • 関数定義の例

    コード生成対応 System object の利用法

    MATLAB EXPO 2012 | JAPAN 19

    function y = fun(x) %#codegen % FUN

    persistent h;

    if isempty(h)

    h = vision.Xxx(…);

    end

    y = step(h,…);

    2012/10/30

    持続変数の宣言

    プロパティの設定

    System object生成

    処理の実行

    入力

    http://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.html

    コード生成対応のSystem object 利用法

    main_udst_cui.m

    main_dest_cui.m

    http://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.htmlhttp://www.mathworks.co.jp/jp/help/vision/gs/use-system-objects-for-code-generation-from-matlab.html

  • LIB/DLL生成

    2012/10/30 MATLAB EXPO 2012 | JAPAN 20

    もしくは‘dll’

    もしくは‘AllVariableSizeArrays’

    複数の関数を列挙

    もしくは‘C’

    Visual C++等で利用できる

  • EXE生成

    main関数を定義しEXE生成へ

    型、初期化/終了、メモリ割当/解放等に約束事あり

    OpenCVと連携可能(imread,imwrite,XML操作等)

    2012/10/30 MATLAB EXPO 2012 | JAPAN 21

    XML

    main_udst_cui.m main_dest_cui.m

    main_udst_cui.cpp main_dest_cui.cpp

    XML

    レンズ歪推定 レンズ歪補正

  • EXE生成

    2012/10/30 MATLAB EXPO 2012 | JAPAN 22

    スタンドアローン実行可能

  • 【応用事例2】 指向性画像変換研究・開発事例 科学研究費助成事業(基盤研究(C)) 「高機能画像表現のための傾斜平面分離性能を有する二次元直交変換の設計と実時間実現」 (研究代表者:新潟大学 准教授 村松正吾)

    System object定義からBeagleBoard実装まで

    2012/10/30 MATLAB EXPO 2012 | JAPAN 23

    アルゴリズム検証 BeagleBoard-xM

    PIL/EXE

    MATLAB

    Coder

    不要

  • 指向性画像変換の概要

    斜めエッジ・テクスチャに強い変換

    MATLAB Central>File Exchange

    >DirLOT Toolbox にて公開中

    2012/10/30 MATLAB EXPO 2012 | JAPAN 24

    “Directional Lapped Orthogonal Transform: Theory and Design,”

    IEEE Trans. on Image Process., Vol.21, No.5, pp.2434-2448 (2012)

    原画像 4x4 DCT 2-Lv. 9/7DWT

    提案法

    8.0bpp 0.5bpp 0.5bpp 0.5bpp

  • 提案法の特徴

    重複・直交・非分離

    ブロック処理が可能

    重い…

    2012/10/30 MATLAB EXPO 2012 | JAPAN 25

    垂直 変換

    水平 変換

    水平 変換

    水平 変換

    水平 変換

    水平 逆変換

    水平 逆変換

    水平 逆変換

    水平 逆変換

    垂直 逆変換

    帯域形状

    水平 垂直 変換

    水平 垂直 逆変換

    帯域形状

    可分離変換

    非分離変換

    “Boundary Operation of 2-D

    Nonseparable Linear-Phase

    Paraunitary Filter Banks,”

    IEEE Trans. on Image

    Process., Vol.21, No.4,

    pp.2314-2318 (2012)

  • コード生成対応 System object の定義

    組込実装したい

    matlab.System

    子クラスを定義

    2012/10/30 MATLAB EXPO 2012 | JAPAN 26

    classdef MyClass < matlab.System %#codegen

    properties

    end

    methods

    function obj = MyClass(varargin)

    end

    end

    methods (Access = protected)

    function value = stepImpl(obj,x)

    end

    end

    end

    継承してクラスを定義

    コンストラクタ フィールド

    step処理の実装

  • SimulinkからBeagleBoardへ

    BeagleBoard実装準備

    » targetinstaller

    Simulink モデルの作成

    System object MATLAB Function ブロック

    2012/10/30 MATLAB EXPO 2012 | JAPAN 27

    http://www.mathworks.co.jp/jp/help/simulink/beagleboard.html?lang=en

    sowavedec2embd.slx BeagleBoard関連情報

    http://www.mathworks.co.jp/jp/help/simulink/beagleboard.html?lang=en

  • まとめ

    ビジョン処理の背景を紹介 シビアなトレードオフの探究

    実行時間解析と並列処理、MEXによる高速化 profileコマンドの紹介 matlabpool コマンドと parforループの紹介 codegen コマンドの紹介

    既存System objectの利活用 MEX/LIB/DLL生成の事例紹介 OpenCVとの連携、EXE生成の事例紹介

    自作System objectの定義 Simulinkモデル→BeagleBoard実装の事例紹介

    2012/10/30 MATLAB EXPO 2012 | JAPAN 28

  • 謝辞

    本講演で紹介した成果の一部は、総務省戦略的情報通信研究開発推進制度(SCOPE)「クロスネットワークを機軸とした地域間データ共有機能を有する金属加工形状検証システムの研究開発(102304003)」、科研費「高機能画像表現のための傾斜平面分離性能を有する二次元直交変換の設計と実時間実現(23560443)」の助成による。

    本講演資料の作成にご協力をいただいた新潟大学大学院自然科学研究科博士前期課程の寺澤憲久氏、原伸太郎氏に謝意を表す。

    2012/10/30 MATLAB EXPO 2012 | JAPAN 29

  • 主な参考資料

    インターフェース2011年12月号特集 “手を動かし実践する!MATLABプログラミング”,CQ出版社,2012年12月

    Camera Calibration Toolbox for MATLAB, (URL) http://www.vision.caltech.edu/bouguetj/calib_doc/

    OpenCV2プログラミングブック製作チーム:“OpenCV2プログラミングブック”,マイナビ,2011年12月

    村松正吾:“MATLABによる映像処理システム開発”,映像情報メディア学会誌Vol.65, No.11, pp.1571~1574 (2011)

    鈴木孝昌,村松正吾,追立俊朗,村田光由:“クロスネットワークを機軸とした地域間データ共有機能を有する金属加工形状検証システムの研究開発”,ICTイノベーションフォーラム2012,2012年10月

    原伸太郎,古屋幸祐,村松正吾:“DirLOTのツリー構成と組込み実装”,第27回信号処理シンポジウム,2012年11月(発表予定)

    2012/10/30 MATLAB EXPO 2012 | JAPAN 30


Recommended