手軽にはじめる画像処理 コンピュータービジョン MathWorks Japan アプリケーションエンジニアリング部 ( 信号処理 通信 ) アプリケーションエンジニア福本拓司 2016 The MathWorks, Inc. 1
画像処理とは? 画像の変形や変換 色の補正 ノイズ除去などを行うこと 例えば デジタルカメラの内部処理 統計解析などを併用し 画像からデータの数値化を行うこと 数を数える 大きさを測る 人が目で確認していたものを画像処理で置き換えるトレンド 2
人の作業を減らすための画像処理 デモ 目盛りを読む作業 動きがあるもの ( 人による読み間違い ) 長時間の観測 ( 人の工数大 読み忘れ ) 3
みなさんはどのタイプにあてはまるでしょうか画像処理未経験 プログラム未経験 プログラム本セッションのゴール : プログラム & 画像処理未経験者の不安どちらもこれから MATLABでの画像処理 ちゃんと習得できるか 途中で予期してなかった難しいアルゴリズムが必要になったら 仕事の効率をあげる成果物ま 作業効率上がりそう既存ソフト操作メイン! でたどり着けるか ワークフローが理解できた! プログラム経験者の葛藤急に画像処理の仕事 コーディング経験が少なくても成果物作れそう! 経験ある言語は画像処理向きでない いろいろなアルゴリズムからすばやく最適なもの 設定をみつ高度なアルゴリズムをけたい 扱う仕事 感じていただければ幸いです プログラム経験豊富 画像処理経験豊富 4
アジェンダ 手軽にはじめる画像処理 画像処理とは? メーターの値を画像処理で読みとるワークフロー 統合的な開発環境である MATLAB 今話題! コンピュータービジョンの世界 コンピュータービジョンとは? 人検出が 1 行?MATLAB でおこなう人の行動解析のワークフロー スムーズな習得のために 5
MATLAB と画像処理 Matrix Laboratory 画像は行列 A = magic(5) figure, imshow(a,[]) 対話的開発環境 豊富な拡張ライブラリ 使用目的 - データ解析 可視化 - アルゴリズム開発 プログラミング - 外部アプリケーションとの連携 画像データ ( 行列 ) とスカラの比較 ( 例 ) A で 10 以上の輝度の位置を抽出 B = A > 10 MATLAB ならこれだけ! 不要な二重 for ループがいらない 画像処理は MATLAB と親和性が高い分野 6
画像処理による速度メーターの測定 デモ 針を検出 目盛りの検出 解析 & 直線化 速度 0 に対する針の角度 ゴール 速度読み取り 7
色空間 RGB 色空間 緑 青 赤 白黄色シアン (~ 水色 ) 緑マゼンタ ( 紅紫色 ) 赤青黒 : (R,G,B) = (1, 1, 1) : (R,G,B) = (1, 1, 0) : (R,G,B) = (0, 1, 1) : (R,G,B) = (0, 1, 0) : (R,G,B) = (1, 0, 1) : (R,G,B) = (1, 0, 0) : (R,G,B) = (0, 0, 1) : (R,G,B) = (0, 0, 0) HSV 色空間 Hue: 色相 Saturation: 彩度 (0: 白 / 灰色 / 黒 ) Value: 明度 Hue: 色相 赤 :0 / 1.0 Value: 明度 Saturation: 彩度 ( 白 / 灰色 / 黒は 0) 8
画像処理ワークフローモルフォロジー処理 : bwmorph 色のしきい値アプリ領域解析 :regionprops による二値化角度の解析 針を検出 目盛りの検出 座標解析 & 直線化 基準に対する針の角度読み取り 速度読み取り マウス操作による基準位置の指定 アプリ & 高度な関数 & マウス操作で 手軽かつ柔軟 に画像処理による効率化を目指すことができます 9
手軽にはじめるを強力にサポート : 画像処理用アプリケーション 直感的な GUI 操作のアプリケーション イメージブラウザー イメージビューアー 色のしきい値 イメージの領域分割 イメージの領域解析 http://jp.mathworks.com/videos/calculate-regionproperties-using-image-region-analyzer-116911.html http://jp.mathworks.com/videos/color-based- segmentation-using-the-color-thresholder-app- 117394.html http://jp.mathworks.com/videos/im age-segmentation-application- 120733.html 変数や MATLAB コードとして出力可能 10
プログラムに柔軟性を与える : GUI でのマウス操作 関心領域 (ROI) の一部が欠けてしまっていても 自分だけのアプリ getpts() クリックした pixel 情報を取る 対話型ツールの構築 40 以上の関数 https://www.mathworks.com/help/releases/r201 6b/images/building-guis-with-modularinteractive-tools.html Imfreehand() フリーハンド 囲んだ部分を追加 Imrect() 四角を描く 囲んだ範囲で輝度による 2 値化関数 難しい処理に直面しても プロジェクトの成果物を柔軟に作ることができる 着実な作業効率向上を目指せる マウス操作 使い慣れた関数 11
目盛り検出の自動化と文字認識 ガボールフィルタとモルフォロジー処理で目盛り抽出 OCR を用いた数字の読み取り ocr() 文字認識関数により目盛り数値読み取り maxspeed = 200 あとは同様の処理で角度 速度を測定 Centroid を測定し座標を利用 12
文字認識 : カスタムフォント用学習アプリケーション ocrtrainer % 文字認識用モデルのトレーニング用アプリケーション results = ocr(bw1, 'Language',... 'mylang tessdata mylang.traineddata') % 学習したモデルによる文字認識 フォントをトレーニングしたモデルによる認識 13
MATLAB による効率的な画像処理開発フロー 入力 画像 動画ファイル アルゴリズム探索 データ解析モデリング 出力 レポートドキュメント生成 ソフトウェア アルゴリズム開発 アプリケーション コードやアプリケーション ハードウェア アプリケーション開発.exe.dll C/HDL ソースコード C HDL - インタプリターによる 容易なパラメータ調整 - 高度で豊富な画像処理関数群 - アプリとコードの連携 14
各種画像 / 動画データフォーマットの読込み 書込みの例 画像の読込み 書込みのための関数 imread() imwrite() dicomread() dicomwrite() nitfread() hdrread() hdrwrite() (MATLAB 基本関数 ) (MATLAB 基本関数 ) グラフィックスファイルからイメージを読込み (bmp,gif,jpg,png,tif,..) イメージをグラフィックスファイルに書込み (bmp,gif,jpg,png,tif,..) DICOMイメージの読込みイメージをDICOMファイルとして書込み NITF(National Imagery Transmission Format) ファイルの読込みハイダイナミックレンジ (HDR) イメージの読込み Radiance 形式ハイダイナミックレンジ (HDR) イメージファイルの書込み 動画の読込み 書込みのための関数 vision.videofilereader() 動画ファイルの読込み (.avi,.mpeg,mp4,.m4v,.wmv, ) vision.videofilewriter() 動画ファイルの書込み 15
各種カメラからの画像データ直接取込み Image Acquisition Toolbox TM 業界標準の HW からの動画像取込み機能を提供 フレームグラバ ( 画像入力ボード ) DCAM 互換 FireWire (IIDC 1394) GigE Vision USB3 Vision 一般的な USB Web カメラ IP カメラ (MATLAB 基本関数 ) MATLAB 本体でサポート Microsoft Kinect for Windows v1 Microsoft Xbox One Kinect センサー カスタムアダプター開発キット Simulink ブロック RGB 画像 + 骨格座標 深度画像 16
アプリケーション / コード配布 MATLAB ファイル MATLAB Compiler TM MATLAB Coder TM MATLAB Compiler SDK TM.exe Excel.dll Excel C/C++ add-in 共有ライブラリ Java Java クラス Python COM コンポーネント.NET.NET コンポーネント.c.cpp.exe.lib MEX 無償でダウンロードできる MCR で実行 C/C++ 言語での利用 作成したアルゴリズムを MATLAB 環境以外で実行可能 17
MATLAB による画像処理ワークフロー MATLAB はシステムへの実装を含めた統合的な開発が可能 画像処理自動化 画像は行列 MATLAB が得意 高度な関数 (ocr/regionprops 等 ) GUIアプリで直感的にアルゴリズムを選択 mコードの生成 柔軟性のあるアプリにすることも可能 人手作業 MATLAB を使って画像処理による効率化自動化へのステップを踏んでいきましょう MATLAB Image Processing Toolbox TM Computer Vision System Toolbox TM 18
アジェンダ 手軽にはじめる画像処理 画像処理とは? メーターの値を画像処理で読みとるワークフロー 統合的な開発環境である MATLAB 今話題! コンピュータービジョンの世界 コンピュータービジョンとは? 人検出が 1 行?MATLAB でおこなう人の行動解析のワークフロー スムーズな習得のために 19
コンピュータビジョンとは? 動画像からコンピュータでシーンの理解などを行う技術 ( 物体の認識 トラッキング 距離の把握 ) デモ 画像処理 ノイズ補正コントラスト補正測定 コンピュータビジョン 検出認識識別トラッキング シーンの理解 道路人物自転車トラックアクシデント 20
コンピュータビジョンによる人の行動解析 高さ 奥行き 奥行き 横 横 21
コンピュータービジョンによる人の行動解析 認識 ステレオカメラ 3 次元点群 解析 人認識アルゴリズム detectpeopleacf() たった 1 行で画像から人検出 人周辺の点群座標を解析 22
ステレオビジョンワークフロー : 事前キャリブレーション キャリブレーション用パターンの撮影 ステレオカメラキャリブレーション パラメータ ステレオ画像の並行化 左右の画像のずれから 視差の計算 処理速度の高速化 三次元空間の再構築 23
人認識アルゴリズムと 3 次元点群を用いた人の行動解析 人検出のボックスを使って人周辺の視差画像だけを切り抜き 人周辺のみ 3 次元点群計算 人認識 &3 次元点群で 各コーナー滞在時間 を解析 豊富な解析 & 可視化機能がパワフルにサポート 行動解析結果プロット 点群情報の解析 24
動きの認識機能例 動きの認識 動き検出 動いている領域の検出 車のカウント トラッキング ( 追跡 ) 隠れている物体の位置予測誤検出の低減個々の物体の認識 ( 数量計測等 ) 25
3 次元点群 ( ポイントクラウド ) 3 次元空間 ポイントクラウド構築に必要なのは 深度 ( 奥行き ) 手法の例 -Kinect ( 深度センサ付 ) - 距離測定 - 自己位置推定 (SLAM) -MAP を用いて行動の最適化 - ステレオビジョン - カメラ一台 + 複数枚画像 (Structure From Motion) 26
高度な物体認識 & 解析を実現する豊富な関数群 MATLAB Image Processing Toolbox TM Computer Vision System Toolbox TM 物体認識 トラッキング 3 次元空間 解析 画像処理 ( 色 形等 ) 人認識アルゴリズム 背景差分法 画像特徴量 機械学習 カルマンフィルタ KLT パーティクルフィルタ (Robotics System Toolbox ) (Statistics and Machine Learning Toolbox ) ディープラーニング (Neural Network Toolbox 他 ) Kinect ステレオビジョン 単眼カメラSFM MATLAB Toolbox 各種 MATLABなら認識から解析までを一貫して同じ環境 高度な機能を含むサンプルを用いてすぐにアイデアを試すことができます アプリケーションへの適用 ロボット ADAS 制御等 (Robotics System Toolbox 他 ) 27
アジェンダ 手軽にはじめる画像処理 画像処理とは? メーターの値を画像処理で読みとるワークフロー 統合的な開発環境である MATLAB 今話題! コンピュータービジョンの世界 コンピュータービジョンとは? 人検出が 1 行?MATLAB でおこなう人の行動解析のワークフロー スムーズな習得のために 28
画像処理 コンピュータービジョン無料セミナー 申し込みは弊社ウェブサイトより https://go2.mathworks.com/ipcv-tokyo-sem-jp-1656025 日時 :2016 年 11 月 7 日 13:00-17:00 場所 :UDX GALLERY NEXT(JR 秋葉原駅より徒歩 2 分 ) 画像処理 コンピュータービジョンの機能を隅から隅までご紹介! 画像処理 動画処理のアルゴリズム開発 特徴検出 マッチング 認識 機械学習 トラッキング 非剛体レジストレーションやカメラキャリブレーション ステレオビジョン向けワークフロー 3 次元点群処理 Bag-of-Features 並列化や GPU などの連携機能や C/HDL 実装環境についてもご案内 29
テクニカルサポート & ヘルプドキュメント テクニカルサポート高い顧客満足度 24 時間以内に70% 問題解決 80% のお客様が80-100% の満足度と回答 充実した Help 機能 利用方法 Web ページ 電話 http://www.mathworks.co.jp/support/contact_us/ MATLAB デスクトップからサポートリクエストを起動 30
の活用 - File Exchange 上のさまざまなアプリケーション例 ImadjustGUI explorergb MorphTool SegmentImage Image Registration App FindCirclesGUI http://www.mathworks.co.jp/matlabcentral/fileexchange/?term=authorid:911 31
着実に成果につなげるためのMathWorksサポート トレーニング サービス MATLABによる画像処理(2日間) 開催予定日 会場 2016年 11月10日 11月11日 MathWorks 名古屋オフィス 2017年 02月9日 02月10日 MathWorks東京オフィス 開催予定日 会場 2017年 02月28日 MathWorks 東京オフィス カスタム Jumpstart 顧客モデルをベースにしたアドバイザリ 他 Advisory Service 顧客Project に合ったアドバイザリ 他 MATLABによるコンピュータービジョン 06月30日 コンサルティング サービス Project 顧客要求に応じた成果物 開発業務に 即したツール利用を実現 MathWorks 名古屋オフィス 32
まとめ MATLAB は画像処理が得意画像取り込みからアプリケーション配布までできる開発環境 アプリからのコード生成 & 高度な関数群により効率的で柔軟なアルゴリズム開発が可能 紹介セミナー テクニカルサポート トレーニング等スムーズな習得が可能 33
この後の画像処理関連セッション 第 3 会場 第 4 会場 ハードウェア実装 第 2 会場 カメラ付アーム型ロボット開発ワークフロー 第 7 会場 34
自動運転 画像処理 ディープラーニングブースでデモ展示中 ご質問はブースまでお越しください 自動運転 画像処理 ディープラーニングデモ展示 2016 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. 35
ご清聴ありがとうございました 36
コンサルティングでは 効率よいアルゴリズム開発 定量的な解析 評価機械学習可視化 目視解析と評価 非剛体トラッキング時系列解析 ( 主に動画 ) 科学的モデリング 快適な UI ソリューションパッケージ化 37
コンサルティング例 : 医用画像解析 いくつかの事例 脳機能の定量的解析 評価 ( 活躍領域, 病状領域, 行動解析 ) - MRI, CT, Microscope, NIR (near-infrared), X-ray, NBI (Narrow-band), Calcium image 薬物の効果をモニタリングや評価 - Brain MRI, Muscle imaging, limbs MRI 病状の診断やモデリング - Muscle evaluation, disease classification, tissue visualization 3D 再構成や可視化 - X-ray image reconstruction, 3D color maps, indexed images, MRI Volume 機械学習や統計解析 - Colony classification, health monitoring 動画分析 解析 - Lungs movement quantification, synapse analysis 38
コンサルティング例 医用画像解析 UI なぜ医用画像分野で 大事 なのか? 背景 合作 プロトタ イプ プログラマーではない 別々実験部隊と開発部隊 出力を可視化 39
画像処理プログラミングでお困りのあなたに 2日でマスター MATLABによる画像処理 画像処理のアルゴリズムをMATLABで効率 よくプログラミングする方法を 2日間で 集中的に学ぶことが出来ます 主なトピック イメージのインポート 前処理 空間変換 レジストレーション ライン検出 特徴抽出 領域のセグメント化 https://www.mathworks.co.jp/training-schedule/ 開催予定日 会場 2016年 11月10日 11月11日 MathWorks 名古屋オフィス 2017年 02月9日 02月10日 MathWorks東京オフィス (有償) 40
ロボットの目をプログラミングしよう 1日でマスター MATLABによるコンピュータービジョン コンピュータによる物体検出等のアルゴリズムを MATLABで効率よくプログラミングする方法を 1日で集中的に学ぶことが出来ます 主なトピック ビデオのインポートと可視化 注釈 特徴検出 抽出 コーナー検出 強度検出(MSER) 対象物の検出とカウント レンズ歪の補正 オブジェクトの検出 HoG 分類 前景検出 動きの推定と追跡 カメラキャリブレーション チェッカーボードによる補正 https://www.mathworks.co.jp/training-schedule/ 開催予定日 会場 2017年 02月28日 MathWorks 東京オフィス (有償) 自転車の検出 41
画像処理機能例 42
画像の表示 調査 / コントラストの調整 マッチング 画像の表示 調査 画像ビューアーアプリケーション コントラストの調整 マッチング 色の閾値アプリケーション Image Processing Toolbox 43
幾何学変換 / 各種フィルター処理 幾何学変換 ( 位置や形の変換 ) 各種フィルター処理 ノイズ除去 Image Processing Toolbox 44
モルフォロジー処理 / オブジェクト検出 解析 モルフォロジー処理 ( 膨張 収縮等の様々な形態処理 ) オブジェクト ( 物体 ) 検出 解析 境界線を抽出 Image Processing Toolbox 直線検出によるレーン検出 45
レジストレーション / セグメンテーション / 定量評価 レジストレーション ( 位置合せ ) セグメンテーション ( 領域切出し ) 位置合せ 灯台を抽出 物体の定量評価 Image Processing Toolbox 各中心位置 面積を計測 46
画像取扱い機能 カメラキャリブレーション カメラ位置推定 レンズ歪カメラ内部カメラ外部のパラメータ抽出 高速なグラフィックス レンズ歪補正 注釈挿入 マーカー挿入 図形挿入 テキスト挿入 Computer Vision System Toolbox 47
特徴点ベースのワークフロー 特徴点のマッチングを用いた 物体認識 対象物体 SURF/Harris/FAST/BRISK 等の特徴点検出 SURF/FREAK/BRISK/HOG/LBP 等の特徴量抽出 RANSAC を用いた対応点推定 物体の検出 特徴点ベースのレジストレーション ( 位置合せ ) Computer Vision System Toolbox 48
文字認識 / 顔 人物の認識 OCR ( 光学文字認識 ) 顔認識 (Viola-Jones アルゴリズム ) 人物認識 Computer Vision System Toolbox 49
機械学習 / 一般物体認識 機械学習 ラベリング用のツール (Haar / HOG / LBP 特徴量 ) データベース 一般物体認識 (Bag-of-Visual-Words) 類似画像検索 (Bag-of-Visual-Words) 検索対象 Computer Vision System Toolbox 50
高速動画ストリーミング処理 / 動き検出 トラッキング 動画の高速ストリーミング処理 / 動き検出 動いている領域の検出 車のカウント トラッキング Computer Vision System Toolbox 隠れている物体の位置予測誤検出の低減個々の物体の認識 ( 数量計測等 ) 51
連携機能 : 並列処理 GPGPU による高速 大規模画像処理 Parallel Computing Toolbox TM 並列 分散処理による高速化 マルチコア マルチCPUによる並列高速処理 MATLAB 関数のGPUによる高速処理 2 次元 FFT 等 150 以上のMATLAB 基本関数 Image Processing Toolboxの40 以上の関数 imrotate(), imfilter(), imdilate(), imerode(), imopen(), imclose(), imtophat(), imbothat(), imshow()... 既存 CUDAコードの取込み MATLAB Distributed Computing Server との併用によりコンピュータークラスタの使用が可能 サポートされる GPU (CUDA に対応した NVIDIA GPU) の要件 : http://www.mathworks.com/products/parallel-computing/requirements.html 52
連携機能 : 様々な特徴量を用いた さらに複雑な機械学習 Statistics and Machine Learning Toolbox TM 特徴変換 主成分分析 (PCA) 因子分析 クラスタリング 階層クラスタリング K 平均クラスタリング ガウス混合分布モデル クラシフィケーション ( 分類 ) サポートベクターマシン (SVM) SVM を用いた複数クラスの学習 単純ベイズ分類器 線形分類器 K 近傍分類器 モデルの結合 ( アンサンブル学習 ) バギング (Tree Bagger 等 ) ブースティング (AdaBoost 等 ) 53