主な機能

  • Viola-Jones、Kanade-Lucas-Tomasi (KLT)、Kalman フィルターなどを含むオブジェクト検出および追跡
  • カスケード オブジェクト検出や bag-of-features メソッドを含む、オブジェクト検出、オブジェクト認識、画像検索システムの機械学習
  • チェッカーボードの自動検出や作業自動化用アプリケーションを含む、単一およびステレオ カメラ用のカメラキャリブレーション
  • 平行化、視差計算、3 次元構造の再構築を含むステレオ ビジョン
  • I/O、可視化、位置合わせ、ノイズ除去、幾何学的形状の近似を含む 3 次元点群処理
  • 特徴の検出、抽出、照合
  • コード生成製品による C コード生成と固定小数点演算のサポート

オブジェクトの検出と認識

オブジェクトの検出と認識は、画像や映像内のオブジェクトを特定、同定および分類するために使用されます。Computer Vision System Toolbox は、オブジェクトの検出と認識のためのアルゴリズムとツールを包括的に提供します。


オブジェクトの分類

パターン認識アルゴリズムを使用してオブジェクト分類器に学習させることで画像内のオブジェクトの検出または認識ができます。パターン認識アルゴリズムによってさまざまなオブジェクト クラスの学習データに基づいた分類器が作成できます。分類器は画像データを受け取り、適切なオブジェクト ラベルまたはクラス ラベルを割り当てます。

Computer Vision System Toolbox は、bag-of-words モデルを使用して画像分類と画像検索システムを学習するためのアルゴリズムを提供します。また、Statistics and Machine Learning Toolbox™ の教師あり分類アルゴリズムを使用してカスタム分類器を作成するときに使用できる特性抽出の手法を提供します。

bag-of-visual words を使用した画像カテゴリ分類
類似した画像を見つけるための画像セット
Use object recognition and tracking to create an augmented reality application with a webcam in MATLAB . Recognize an image in a scene, track its position, and augment the display by playing a video in the image’s place.
未加工画像内のテキストの認識
SVM (サポート ベクター マシン) と HOG (勾配方向ヒストグラム) 特徴抽出を使用した数字の分類

オブジェクト検出

オブジェクト検出を使用して、画像内のオブジェクトの位置を決定します。Computer Vision System Toolbox は、事前学習済みの検出モデルやオブジェクト検出器を学習させるための関数およびアプリケーションなど、オブジェクトを検出するための複数のアルゴリズムと手法を提供します。

カスケードされた分類器を使用した顔検出
事前学習済みの SVM および HOG 特徴を使用した人物検出

動きに基づくオブジェクト検出

動きに基づくオブジェクト検出アルゴリズムでは、シーン内で移動しているオブジェクトを検出するために、モーション抽出およびオプティカル フローや GMM (混合ガウス モデル) 前景検出のようなセグメンテーション技法が用いられます。

オプティカル フロー推定を使用した車両検出および追跡
前景検出器を使用した車両検出およびカウント

特徴に基づくオブジェクト検出

特徴点を使用すると、参照画像内の一連の特徴を検出し、特徴記述子を抽出し、参照画像と入力の間で特徴を照合することにより、オブジェクトを検出できます。このオブジェクト検出手法では、スケールや向きが変わっても参照オブジェクトを検出でき、部分遮蔽に対して高い堅牢性を発揮します。

オブジェクトの参照画像 (左) と入力画像 (右)。黄色の線は 2 つの画像間で対応する一致した特徴を示す。

オブジェクト検出器および分類器の学習

学習とは、オブジェクト検出器または分類器が特定の対象オブジェクトを検出または認識できるようにするプロセスのことです。学習プロセスでは次が使用されます。

  • スケールや向きがさまざまな対象オブジェクトによるポジティブ画像
  • 対象オブジェクトと通常関連する背景のネガティブ画像
  • 対象オブジェクトに外見が似ている非対象オブジェクト

学習画像ラベル付けアプリケーションを使用して、ROI (関心領域) の選択と割り当ておよび学習用画像のラベル付けができます。

Computer Vision System Toolbox には、任意の対象オブジェクトを特定するために、Viola-Jones オブジェクト検出器の学習機能が用意されています。また、検出器を学習させるためのアプリケーションが、File Exchange で提供されています。

Statistics and Machine Learning Toolbox と Computer Vision System Toolbox の機械学習手法を使用して、オブジェクト認識システムを作成できます。

Explore gallery (3 images)


カメラ キャリブレーション

カメラ キャリブレーションとは、カメラの内部、外部、およびレンズ歪みのパラメーターを推定することです。キャリブレーション済みのカメラは通常、光学的歪みのアーティファクトの修正、オブジェクトとカメラの距離の推定、画像内でのオブジェクトのサイズの測定、拡張現実システム用の 3 次元ビューの構築などに使用されます。

MATLAB ® のカメラ キャリブレーション機能について紹介します。カメラ キャリブレーション アプリを使用してカメラのキャリブレーションを行い、画像の歪みを取り除くと、キャリブレーションされたカメラを使用してオブジェクトの実際のサイズを測定できます。
ステレオ カメラ キャリブレーション アプリケーションの使用
キャリブレーションされた単一カメラを使用してさまざまなオブジェクトの直径を測定
キャリブレーションされた単一カメラを使用してシーンの 3 次元ビューを生成

カメラ キャリブレーション アプリケーション

Computer Vision System Toolbox には、カメラ キャリブレーション ワークフローにおいて必要なすべての作業を行うためのアプリケーションや関数が用意されています。

  • サブピクセル精度のコーナー検出を含む、チェッカーボード キャリブレーション パターンの全自動検出および特定
  • 軸歪みを含む、内部および外部のすべてのパラメーターの推定
  • 放射状および接線方向のレンズ歪み係数の計算
  • 光学的歪みの修正
  • 単一カメラのキャリブレーションとステレオ キャリブレーションのサポート

MATLAB のカメラ キャリブレーション 4:56 を使用して、キャリブレーション画像の選択およびフィルター処理、放射状歪み係数の数値とタイプを選択、再投影エラーの表示や外部パラメーターを可視化したり、カメラ キャリブレーション パラメーターをエクスポートします。

カメラ キャリブレーション アプリケーション。キャリブレーション画像の追加または削除 (左)、検出されたコーナーや再投影された点の表示 (中央)、再投影エラーのプロット (右上)、外部パラメーターの可視化 (右下) が可能です。

ステレオ ビジョン

ステレオ ビジョンとは、複数の 2 次元ビューからシーンの 3 次元構造を抽出するプロセスです。Computer Vision System Toolbox は、次のステレオ ビジョン ワークフローのステップを実施するための関数とアルゴリズムを提供します。

  • ステレオ キャリブレーション
  • ステレオ画像の平行化
  • 視差マップの計算
  • 3 次元シーンの再構成

ステレオ キャリブレーション

ステレオ キャリブレーションとは、2 台のカメラの内部と外部のパラメーターおよびカメラの相対位置と向きを求めるプロセスです。ステレオ キャリブレーションは、キャリブレーションされたステレオ 平行化および 3 次元シーン再構築の前に行われます。Computer Vision System Toolbox は、チェッカーボード キャリブレーション パターンを使用した 1 組のステレオ カメラのキャリブレーションのためのアルゴリズム、関数およびアプリケーションを提供します。

ステレオ カメラ キャリブレーション アプリケーション。キャリブレーション画像の追加または削除 (左)、平行化された画像の表示 (中央)、再投影エラーのプロット (左下)、外部パラメーターの可視化 (右下) が可能です。

ステレオ画像の平行化

ステレオ画像の平行化は、1 組のステレオ画像において、片方の画像にある対応する点が、もう一方の画像の対応する行にあるように変換します。このプロセスによって、2 次元ステレオの対応問題を 1 次元の問題に縮小でき、シーンにおける各点のカメラからの深度を判定するプロセスを簡略化できます。Computer Vision System Toolbox は、次のようなステレオ平行化機能を提供します。

  • 特徴点マッチングと RANSAC を使用して、キャリブレーションなしのステレオ平行化を行い、カメラ間の射影変換を推定
  • ステレオ キャリブレーションを使用して、キャリブレーションされたステレオ平行化を行い、基本行列を計算
キャリブレーションなしのステレオ画像平行化の結果。オーバーラップしない領域は赤とシアンで表示。

視差計算と 3 次元シーンの再構成

シーン内の点の相対深度はステレオ視差マップで表現されます。これは 1 組の平行化された立体画像内の対応する点から計算されます。Computer Vision System Toolbox が提供する視差計算アルゴリズムには次のものが含まれます。

  • セミグローバル照合
  • ブロック照合

視差マップとステレオ キャリブレーションからの情報を使用すれば、シーンの 2 次元コンテンツを 3 次元に投影してシーンの 3 次元構造を再構成できます。

1 組のステレオ画像を使用した 3 次元シーンの再構成
三角測量を使用して、検出されたオブジェクトまでの距離を測定
シーン (左) 内の点の相対深度を表すステレオ視差マップ (右)

3 次元点群処理

3 次元点群は、3 次元座標系のデータ ポイントのセットを表します。通常、点群は、ステレオ カメラなどのセンサー、LIDAR、3 次元スキャナーまたは Microsoft® Kinect® for Windows® などの RGB-D センサーから取得されます。3 次元点群処理アルゴリズムは、ロボットや自律型車両の視覚センシングおよびナビゲーションに使用されます。

Computer Vision System Toolbox は、I/O、操作、位置合わせ、フィルター処理および 3 次元点群処理のための関数およびアルゴリズムのセットを提供します。


点群 I/O と可視化

Computer Vision System Toolbox は、PLY 形式でポイントを読み書きするための関数を提供します。また、Image Acquisition Toolbox™ を使用して、Kinect for Windows から 3 次元点群をライブで取得できます。

Kinect for Windows を使用した、3 次元点群の取得

Computer Vision System Toolbox は、点群のプロット、ストリーミング 3 次元点群データの可視化および 2 つの点群間の差異の表示を行う関数を提供します。

テクスチャ マッピングを使った、点群のプロット
配列内の 2 つの点群間の差異の可視化

3 次元点群登録およびステッチ

点群の位置合わせおよび結合により、点群の集合からシーンまたはオブジェクトの 3 次元ビューを再構成します。これらの手法を使用して、検査および可視化のためにオブジェクトの 3 次元モデルを作成したり、SLAM (同時自己位置推定およびマッピング) アプリケーションのために 3 次元地図を生成したりします。

点群の位置合わせおよび結合をするための関数とアルゴリズム

点群の配列からの 3 次元モデルの作成

点群への幾何学的形状の近似

Computer Vision System Toolbox は、RANSAC を使用して幾何学的形状を 3 次元点群に近似させるための関数のセットを提供します。ロボット工学の分野でこれらのアルゴリズムを使用して、グラスピング、基平面のセグメンテーションおよびナビゲーションのために 3 次元オブジェクトを特定します。

Computer Vision System Toolbox は、平面および円柱を 3 次元点群に近似させるための関数を提供します。

平面、球および円柱の幾何学的モデル (左) を 3 次元点群シーン (右) に近似させる代替テキスト:平面、球および円柱の幾何学的モデル

オブジェクト追跡と動き推定

コンピューター ビジョンには、多くの場合、ビデオ内の移動しているオブジェクトの追跡が含まれます。Computer Vision System Toolbox には、オブジェクト追跡と動き推定のための一連の包括的なアルゴリズムおよび関数が用意されています。


オブジェクト追跡

Computer Vision System Toolbox には、次のようなビデオ追跡アルゴリズムが用意されています。

KLT アルゴリズムを使用して、ライブ ビデオ ストリームから顔を自動的に検出および追跡
移動している車両にマウントされたカメラを使用した歩行者の追跡方法
Use object recognition and tracking to create an augmented reality application with a webcam in MATLAB . Recognize an image in a scene, track its position, and augment the display by playing a video in the image’s place.
ライブ ビデオから複数の顔を検出および追跡するための簡易なシステム

複数オブジェクト追跡のフレームワーク

Computer Vision System Toolbox には、ビデオ ストリームで複数のオブジェクトを追跡する拡張性に優れたフレームワークが備えられています。また、複数のオブジェクトを追跡しやすくするための次のような機能が含まれています。

  • オブジェクトの未来の場所を予測し、検出された場所のノイズを軽減し、複数のオブジェクトを対応するそれぞれのトラックに関連付ける Kalman フィルター
  • オブジェクトの検出をトラックに割り当てるハンガリー法 アルゴリズム
  • ブロブ解析と前景検出を使用した、移動するオブジェクトの検出
  • オブジェクトの場所を可視化し、オブジェクト ラベルを追加する注釈機能
Computer Vision System Toolbox の複数オブジェクト追跡フレームワークを使用した複数オブジェクトの追跡追跡痕は追跡されているオブジェクトの軌跡を示します。

動き推定

動き推定は、隣接するビデオのフレーム間でブロックの動きを決定するプロセスです。Computer Vision System Toolbox には、オプティカル フロー、ブロック マッチング、テンプレート マッチングなど、さまざまな動き推定アルゴリズムが用意されています。これらのアルゴリズムによって、画像全体、ブロック、任意の区画、または個々のピクセルに関連する動きベクトルを作成できます。ブロック マッチングとテンプレート マッチングでは、MSE、MAD、MaxAD、SAD、SSD などの、最適なブロック マッチとテンプレート マッチを見つけるための評価指標も用意されています。

固定カメラを使用した移動するオブジェクトの検出。オプティカル フローが計算され、検出された動きが現在のフレーム上に重ねて表示されています。

特徴点検出、特徴量抽出、マッチング

Computer Vision System Toolbox は、一連の特徴点検出器と特徴量記述子を提供します。また、Computer Vision System Toolbox には、2 つの特徴ベクトルのマッチングと結果を可視化する機能が用意されています。

特徴点検出、特徴量抽出およびマッチングを単独のワークフローに統合すれば、画像レジストレーション、ステレオ ビジョン、オブジェクトの検出と追跡など、多くのコンピューター ビジョンの設計における課題を解決することができます。


特徴点の検出と特徴量抽出

特徴点とは、コーナー、粒子、エッジ、ラインなどの、画像内の関心部分を指しています。特徴量抽出では、検出された一連の特徴点から、特徴ベクトルのセットを導出できます。これらの特徴ベクトルは記述子とも呼ばれます。Computer Vision System Toolbox には、次のような、特徴点検出および特徴量抽出の機能が用意されています。

  • Shi & Tomasi、Harris、FAST 手法などの、コーナー検出
  • BRISK、MSER および SURF の手法によるブロブと領域の検出
  • BRISK、FREAK、SURF および単純なピクセル近傍記述子の抽出
  • HOG (勾配方向ヒストグラム) および LBP (局所 2 値パターン) 特徴量抽出
  • 特徴点の場所、スケール、向きの可視化

Explore gallery (2 images)


特徴の照合

特徴のマッチングとは、異なる画像から取得された 2 組の特徴記述子を比較して、画像間の点の対応付けを行なうことですComputer Vision System Toolbox は、次のような特徴マッチング機能を提供します。

  • SAD、SSD、および正規化相互相関を含む、設定可能なマッチングメトリクス
  • バイナリ特徴のハミング距離
  • 最近傍比率、最近傍、しきい値などのマッチング手法
  • 特徴点が多い場合に実行を高速化する複数コア対応

RANSAC のような統計的に堅牢な手法を使用して、一致した特徴セットの外れ値をフィルター処理し、同時に幾何学的変換や基底行列を推定することができます。これは特徴マッチングを画像レジストレーション、オブジェクト検出またはステレオ ビジョン アプリケーションで使用する際に便利です。

検出された特徴点を赤の丸 (左) と緑の十字 (右) で表示。黄色の線は 2 つの画像間で対応する一致した特徴点を示す。

特徴に基づく画像レジストレーション

画像レジストレーションとは、統合された共通座標系を使用するために、異なるカメラ ビューからの画像を変換することです。Computer Vision System Toolbox は、特徴を使用した自動画像レジストレーションをサポートしています。この機能は一般的に、動画のモザイク処理やブレ補正、イメージ フュージョンなどに使用されます。

特徴点検出、特徴量抽出、マッチングは、特徴に基づく自動画像レジストレーションのワークフローにおける最初の作業です。一致した特徴セット内の外れ値を RANSAC で除去して画像間の幾何学的変換を計算し、次にその幾何学的変換を適用して 2 つの画像の位置を合わせることができます。

特徴に基づくレジストレーションを使用した映像のブレ補正。コーナー特徴を使用して 2 つの連続する映像フレームで特徴点を検出 (上)。多数の外れ値とともに、推定の一致を判断 (左下)。RANSAC 手法を使用して外れ値を除去 (右下)。

コードの生成と固定小数点

Computer Vision System Toolbox では、システムレベルのテスト ベンチの作成、固定小数点モデリング、MATLAB および Simulink 内部からのコード生成がサポートされています。このため、アルゴリズムの開発を、ラピッド プロトタイピング、実装、および検証のワークフローと統合できます。


コード生成のサポート

Computer Vision System Toolbox のほとんどの System objects™、関数およびブロックから、MATLAB Coder™Simulink Coder™ または Embedded Coder® を使用して ANSI/ISO C コードを生成できます。特定のプロセッサ アーキテクチャに対する最適化を選択し、生成されたコードと既存の C コードを統合することで、既存資産を有効に活用することができます。C コードは、浮動小数点および固定小数点の両方のデータ タイプから生成できます。

MATLAB Coder を使用して MATLAB ファイルの C コードを生成する方法
packNGo 関数を使用したコードの生成方法
MATLAB Coder を使用して MATLAB 関数の C コードを生成する方法

固定小数点モデリング

多くのリアルタイム システムでは、ハードウェアに実装するためにアルゴリズムを固定小数点で表現する必要があります。Computer Vision System Toolbox では、ほとんどのブロックと System objects で固定小数点モデリングがサポートされており、ダイアログ ボックスやオブジェクトのプロパティを使用して設定を行うことができます。

Computer Vision System Toolbox による固定小数点のサポートには、次のものが含まれます。

  • 1 ~ 128 ビットまでのワード サイズ
  • 任意の小数点位置
  • オーバーフロー処理手法 (ラップまたは飽和)
  • ceil、convergent、floor、nearest、round、simplest、zero などの丸め関数
特定のハードウェア ターゲット用のコードを作成するために設計された Simulink モデルの例このモデルは動画ブレ補正システムのための C コードを生成し、アルゴリズムをデジタル信号プロセッサ (DSP) に組み込む。

画像処理の基本機能

Computer Vision System Toolbox には、固定小数点データ型と C コード生成をサポートする、画像処理の基本機能が用意されています。これらの System objects と Simulink ブロックには、次のものが含まれます。

  • 2 次元空間フィルタリングと周波数フィルタリング
  • 画像の前処理と後処理のためのアルゴリズム
  • モルフォロジー演算子
  • 幾何学的変換
  • 色空間変換