MATLABによる画像処理・コンピュータービジョン入門

# MATLABによる画像処理・コンピュータービジョン入門

[画像処理・コンピュータービジョン評価キット](https://github.com/mathworks/MATLAB-IPCV-Eval-Kit-JP)を使った入門講座です。
MATLABで画像処理やコンピュータービジョンをこれからはじめる方が逆引き的に使用することができます。
今後、少しずつ追加していく予定なので温かく見守ってください。
「これを早く追加してほしい！」というのがありましたらコメントお願いします。

# MATLAB 画像処理・コンピュータービジョン評価キットとは?
詳しい使い方は下記をご覧ください。

- [MATLABによる画像処理・コンピュータービジョン評価キットを使ってみる](https://qiita.com/tohruk/items/c0325a36a023f4e44e3c)

# MATLABを試したい場合は？
下記の@MatrixVectorScalarさんの記事が分かりやすいです。

- [MATLAB 無償利用できる機能のまとめ](https://qiita.com/MatrixVectorScalar/items/718cd7e7c0764088917b)

# 目次

## MATLAB基礎
[1.1 MATLABによる画像処理の基本](https://qiita.com/tohruk/items/4f512d312e6d212f287b)
[1.2 豊富な可視化機能：MATLAB基本関数](https://qiita.com/tohruk/items/59e527a3e8b540219cc1)
[1.3 デバッグ機能 : コードアナライザー機能](https://qiita.com/tohruk/items/fc1dd27cb1d9b01bf3ff)
[1.4.1 デバッグ機能 : ブレークポイント・プロファイラー](https://qiita.com/tohruk/items/4f5d496b058049ecc4c0)
[1.4.2 処理速度の向上に関して](https://qiita.com/tohruk/items/2a654f86db846b27d035)
[1.5 レポート自動生成機能](https://qiita.com/tohruk/items/0dca7cbc13b8793d250f)
[1.6 Simulink：ブロック線図モデリング・シミュレーション環境](https://qiita.com/tohruk/items/02b5b0b2bafe51d97602)

## MATLABによる画像処理
[2.1.1 各種画像データフォーマットの読込み・書込み](https://qiita.com/tohruk/items/5a04153c079ed5446f59)
[2.1.2 画像・3次元ボリュームデータ・医用画像(DICOM/NIfTI)の表示](https://qiita.com/tohruk/items/43b3dd1451b99b99cde3)
[2.1.3 静止画 画像処理・解析のワークフロー](https://qiita.com/tohruk/items/5894fc5787e2a4e7db2e)
[2.1.4 グラフィックス (マーカー描画・テキスト描画・図形描画)](https://qiita.com/tohruk/items/34c5f05ac8c0d1eb4069)
[2.1.5 動画 画像処理・解析のワークフロー：ストリーミング処理](https://qiita.com/tohruk/items/6fca2c05e5f0133f3775)
2.1.6 高速動画ストリーミング処理
[2.2.1 カメラキャリブレーション：アプリケーション](https://qiita.com/tohruk/items/1c852d302339acf7058d)
2.2.2 カメラキャリブレーション：　スクリプトでの実行
2.2.3 レンズ歪の補正
2.2.4 魚眼レンズの歪補正
2.3 イメージタイプ変換・コントラスト調整・階調変更
[2.3.1 二値化･適応二値化](https://qiita.com/shun-kusano/items/80ab485a709d649f1a03)
2.3.2 イメージタイプ変換・コントラスト調整・階調変更
[2.3.3 ヒストグラム（コントラスト）のマッチング](https://qiita.com/shun-kusano/items/db16fe43511b519995b9)
[2.3.4 各種コントラスト調整](https://qiita.com/shun-kusano/items/bccd2fb599c3b278d1d1)
2.3.5 ルックアップテーブルによる任意特性のコントラスト調整
2.3.6 Homomorphic Filteringによる照度不均一の除去
2.3.7 HDR(ハイダイナミックレンジ)画像の取り扱い
2.3.8 低光量画像の明るさ調整
2.4 色空間変換
2.4.1 色による閾値処理のアプリケーション
2.4.2 カラーバランス/ホワイトバランス/ガンマ補正
2.5 幾何学的変換
2.5.1 幾何学的変換（射影法等による空間変換）
2.5.2 幾何学的変換（コントロールポイントツールを用いた位置合せ）
2.5.3 幾何学的変換（カスタム変換による画像変換）
2.6 自動レジストレーション （位置合せ）
2.6.1 輝度ベースの自動レジストレーション （位置合せ）
2.6.2 位相相関を用いた自動レジストレーション
2.6.3 非剛体自動レジストレーション （位置合せ）
2.6.4 レジストレーション推定アプリケーション
2.6.5 複数露光画像のためのレジストレーション（位置合せ）
2.7 画像フィルタリング
2.7.1 事前定義型の画像フィルタ処理 (fspecial関数)
2.7.2.1　その他のフィルター
2.7.2.2　その他のフィルター：３次元画像
2.7.2.3　その他のフィルター
2.7.2.4　その他のフィルター
2.7.3 正規化された2次相互相関
2.7.4   1次元フィルタからの二次元フィルタ設計
2.7.5 ディープラーニングベースのノイズ除去
2.7.6 画像の修復（インペインティング・不要物の除去）
2.7.7 連射画像から高解像度画像生成(超解像)
2.8 モルフォロジー処理･ラベリング・物体の定量評価
2.8.1 モルフォロジー処理・ラベリング･定量評価
2.8.2 関心領域（ROI）の指定と操作
2.8.3 関心領域（ROI）の指定と操作
2.9 画像の解析(エッジ･コーナー･オブジェクト検出、セグメンテーション)
2.9 画像の解析： 領域解析
2.9.1 エッジ検出・コーナー検出・円検出
2.9.2　直線検出（ハフ変換）
2.9.3　境界のトレース
2.9.4 セグメンテーション（領域分割）
2.9.4.1  イメージの領域分割アプリケーション
2.9.4.2　動的輪郭を用いたセグメンテーション
2.9.4.3 高速マーチング法を用いたセグメンテーション
2.9.4.4 色の測地線距離ベースのセグメンテーション
2.9.4.5 スーパーピクセルを用いたセグメンテーション
2.9.4.6　モルフォロジー処理を用いたセグメンテーション例： - 粒子が接触している場合
2.9.4.7 グラフベースのセグメンテーション
2.9.4.8 3次元画像処理
2.10 イメージ変換・近傍処理
2.10.1 ブロック処理例：DCT（離散コサイン変換）符号化
2.10.2a　2次元高速フーリエ変換 (ML基本関数)
2.10.2b　位相画像
2.10.3 2次元Wavelet変換による圧縮例
2.11 テクスチャ解析
2.12 画質の定量評価
2.13 画像の一括（バッチ）処理
2.14 画像品質の評価・解析
2.15.1 大規模画像(bigimage)の操作メモリに納まらない大規模画像のための処理関数群
2.15.2 bigimageDatastore
2.16 水増し用(data augmentation)の各種関数 深層学習時に使える様々な画像変換
2.17 ハイパースペクトル画像処理
2.17.1 HS画像処理ワークフロー
[2.17.2 HSデータI/O / バンド選択 / ROI抽出](https://qiita.com/shun-kusano/items/896ea4fca47ba2a45d9a)
2.17.3 画像変換  /  画像補正
2.17.4 ハイパースペクトル画像の次元削減
2.17.5 エンドメンバー推定
2.17.6 スペクトルマッチング   /   各種指数
2.17.7 HyperSpectralViewerHS画像の可視化App

## MATLABの画像処理関連の各種連携機能
3.1 並列処理・GPGPUによる高速・大規模画像処理
3.1.1 マルチコア/プロセッサでの並列処理
3.1.2 GPGPU処理
3.1.3 基本関数での実装
3.1.4 既存CUDAコードの取込み
3.1.5 CUDA MEXの統合
3.2 ユーザーインターフェース構築機能 (MATLAB基本機能)
3.2 ユーザーインターフェース構築機能(AppDesigner)
3.3 実行形式プログラムの配布
3.4 Cコードとの相互連携
3.4.1 Cコードの取込み   (MATLAB基本機能)
3.4.1 Cコードの取込み例   (MATLAB基本機能)
3.4.2 OpenCVで作られた関数へのアクセス
3.5 MATLAB Engine：C開発環境からのMATLAB呼び出し 
3.5 MATLABコードからのCコード生成
3.6.1 Excelとの連携 / カーブフィティング
3.6.2 曲面へのフィティング
3.7 最適化ツール
3.8 外部ハードウェアとのインターフェース
3.10.1 MATLABやSimulinkからのHDL自動生成
3.10.2 固定小数点ツールによるオートスケーリング
3.10.3 HDL検証ソリューション
3.11 MATLABからのCUDARコード生成
3.11.1 画像処理アルゴリズムのGPU実装
3.11.2 ディープラーニングのGPU/CPU実装
3.12.1 深層強化学習: 画像入力による振り子の振り上げ

## MATLABによるコンピュータービジョン

4.1 パターンマッチング　（領域ベースのマッチング）
4.2.1 特徴点検出・特徴量抽出（１）
4.2.1 マッチング・物体検出（２）
4.2.2 特徴点ベースのレジストレーション
4.7.1 動き検出･高速動画ストリーミング処理
4.7.2 動き検出を用いた物体検出
4.7.3 混合ガウス モデルを使用した前景の検出
4.8 物体のトラッキング
4.8.1 カルマンフィルタ
4.8.3 パーティクル フィルタ
4.8.4 KLT ポイント トラッカー
4.8.6 白線トラッキング
4.8.7 マルチオブジェクトトラッカー
4.9 画像からカメラ位置･姿勢推定、3次元再構築
4.9.1  キャリブレーション済み単眼カメラによるカメラ位置･姿勢
4.9.2　ステレオビジョン向けワークフロー
4.9.3　ステレオビジョン向けワークフロー： 距離測定への応用
4.9.4 ２台のカメラで対象点の3次元位置を求める別法
4.9.5 ステレオビジョン向けワークフロー：キャリブレーションなしの平行化
4.9.6.1 2枚の画像によるStructure from Motion
4.9.6.2 複数画像によるStructure from Motion
[4.9.7 単眼カメラによるVisual SLAM(ORB-SLAM)](https://qiita.com/tohruk/items/43667dbd327c3d3a5b95)
4.10.1 ３次元点群：読込み･表示
4.10.2 ３次元点群：各種処理
4.10.3 RANSACによるフィッティング
4.11 各種カメラからの画像データ直接取込み
4.11.1　USBカメラからの動画像の取込み
4.11.2 Microsoft Kinect for Windows
4.11.3 Microsoft Kinect for Windows：	- Simulink block と System objectでのサポート
4.11.4 Xbox One Kinectセンサーサポート
4.11.5 Velodyne LiDARRデバイスのサポート

## MATLABによる機械学習およびディープラーニング

5.1 物体認識（顔認識・人物認識）
5.2 機械学習：静止画のラベリングアプリケーション
5.2 機械学習：ラベリング自動化アルゴリズムの追加
5.2 機械学習用の関数
5.3.1 文字認識
5.3.2 文字認識：カスタムフォント用学習アプリケーション
5.4 機械学習ワークフロー：サポートベクターマシンの例
5.4.1 教師あり学習・分類：サポートベクターマシン（SVM）
5.4.1 教師あり学習・分類：マルチクラス SVM
5.4.2 教師あり学習・分類：k最近傍分類（kNN）
5.4.3 判別分類： 線形判別分類・二次判別分類
5.4.4 バギングされた決定木（Bagged Decision Tree）
5.4.4 ランダムフォレスト
5.4.6 教師なし学習：k 平均 （k-means）クラスタリング
5.5.1 Bag-of-Visual-Wordsを用いた画像カテゴリ分類
5.5.2 Bag-of-Visual-Wordsを用いた類似画像検索
5.6 ニューラルネットワークを用いた機械学習
5.6.1 積層自己符号化器（Stacked Autoencoder）
[5.6.2.1 ディープラーニング：畳み込みニューラルネットによる分類](https://qiita.com/tohruk/items/61d5a71c674f09ce127f)
5.6.2.1 ディープラーニング：ディープネットワークデザイナアプリ
5.6.2.2 ディープラーニング：学習済みモデル
5.6.2.2 ディープラーニング：学習済みモデルによる転移学習
5.6.2.3 ディープラーニング：領域ベース(R-CNN)による検出
5.6.2.4 ディープラーニング：Fast R-CNNによる検出
5.6.2.5 ディープラーニング：Faster R-CNNによる検出
5.6.2.6 ディープラーニング：YOLO v2による物体検出
[5.6.2.7 ディープラーニング：SSDによる物体検出](https://qiita.com/tohruk/items/f3ca2275b72ba55614f5)
5.6.2.8 ディープラーニング：境界ボックスデータの拡張
5.6.3.1 ディープラーニング：FCNによるセグメンテーション
5.6.3.2 ディープラーニング：SegNetによるセグメンテーション
5.6.3.3 ディープラーニング：U-Netによるセグメンテーション
5.6.3.4 ディープラーニング：DeepLab v3+によるセグメンテーション
5.6.4.1 ディープラーニング：3D U-Netセグメンテーション
5.6.5.1 ディープラーニング：動画の分類
[5.6.6 ディープラーニング：点群データのサポート](https://qiita.com/tohruk/items/18efdb0bd502fbd805e6)
5.7.7 検出漏れ/誤検出の補償(トラッキング)
5.7.8 検出器の性能評価
5.7.9 ディープラーニング実装