Computer Vision System Toolbox

主な機能

  • Viola-Jones やその他の事前学習済みの検出器による物体検出
  • KLT (Kanade-Lucas-Tomasi) やカルマン フィルターなどの物体追跡
  • FAST、BRISK、MSER、HOG などの特徴検出、抽出およびマッチング
  • チェッカーボードの自動検出やワークフロー自動化アプリを含む、単一のカメラおよびステレオ カメラ用のキャリブレーション
  • 平行化、視差計算、3D 再構成を含むステレオ ビジョン
  • コード生成製品による C コード生成および固定小数点演算のサポート
  • 映像処理、注釈、映像ファイル入出力 (I/O)、映像表示、グラフィック オーバーレイおよび合成

特徴の検出、抽出、マッチング

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

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

特徴の検出と抽出

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

  • Shi Tomasi、Harris、FAST 手法などのコーナー検出
  • BRISK、MSER および SURF の手法によるブロブと領域の検出
  • BRISK、FREAK、SURF および単純なピクセル近傍記述子の抽出
  • 勾配方向ヒストグラム (HOG)特徴量抽出
  • 特徴点の場所、スケール、向きの可視化
SURF, MSER, and corner detection with Computer Vision System Toolbox.
Computer Vision System Toolbox を使用した SURF (左)、MSER (中央)、およびコーナー (右) の検出。同じ画像を使用して、3 つの異なる種類の特徴を検出し、結果を元の画像の上にプロット。
Histogram of Oriented Gradients (HOG) feature extraction of image
画像 (上) の勾配方向ヒストグラム (HOG) 特徴量抽出。 セルサイズを変えることで、画像から異なるサイズの特徴ベクトルを得ることが出来ます。

特徴のマッチング

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

  • SAD、SSD および正規化相互相関を含む、設定可能なマッチングメトリック
  • バイナリ特徴のハミング距離
  • 最近傍比率、最近傍、しきい値などのマッチング手法
  • 特徴点が多い場合に実行を高速化する複数コア対応
Detected features indicated by red circles and green crosses.
検出された特徴点を赤の丸 (左) と緑の十字 (右) で表示。 黄色の線は 2 つの画像間で対応する一致した特徴点を示す。

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

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

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

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

Feature-based registration, as used for video stabilization.
特徴に基づくレジストレーションを使用した映像の安定化。 コーナー特性を使用して 2 つの連続する映像フレームで特徴点を検出 (上)。多数の外れ値とともに、推定の一致を判断 (左下)。RANSAC 手法を使用して外れ値を除去 (右下)。

物体の検出と認識

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

物体の分類

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

Viola-Jones アルゴリズムを使用した顔検出

Viola-Jones アルゴリズムを使用した顔検出
カスケードされた分類器を使用して顔を検出

Detecting people using pretrained support vector machine(SVM) with histogram of oriented gradient (HOG) features

人物検出
あらかじめトレーニングされた SVM (サポート ベクター マシン) と HOG (勾配方向ヒストグラム) 特徴量を使用して人物を検出

Text detection and optical character recognition (OCR)

テキスト検出と OCR (光学式文字認識)
未加工の画像内のテキストの認識

Classifying digits using support vector machines (SVM) and HOG feature extraction

数字の分類
SVM (サポート ベクター マシン) と HOG 特性抽出を使用して数字を分類

動きに基づく物体検出

動きに基づくオブジェクト検出アルゴリズムでは、シーン内で移動しているオブジェクトを検出するために、動き抽出およびオプティカル フローや GMM (ガウス混合モデル) 前景検出のようなセグメンテーション技法が用いられます。 対象物体を特定するためにブロブ解析が使用されます。セグメンテーションまたは背景除去などの動き抽出アルゴリズムの出力からブロブ プロパティを計算します。

特徴に基づく物体検出

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

Reference image of object, input image; the yellow lines indicate the corresponding matched features between the two images.
物体の参照画像 (左)、入力画像 (右)。黄色の線は、2 枚の画像間で対応する特徴点を示す。

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

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

  • スケールや向きがさまざまな対象オブジェクトによる正例画像
  • 対象オブジェクトと通常関係する背景による負例画像
  • 対象オブジェクトに外観が似ている非オブジェクト

このシステム ツールボックスには、ROI (関心領域) の選択と割り当ておよび学習用画像のラベル付けを行うアプリが用意されています。

Training image labeler app to select regions of interest (ROIs) in positive training images
学習画像ラベル付けアプリによる正例学習画像内の ROI (関心領域) の選択

このシステム ツールボックスには、任意の対象オブジェクトを特定するために、Viola-Jones オブジェクト検出器の学習機能が用意されています。 また、検出器を学習させるためのアプリが、File Exchange で提供されています。

Process of training a cascade object detector.
カスケード オブジェクト検出器の学習プロセス。

物体の追跡と動きの推定

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

オブジェクトトラッキング

Computer Vision System Toolbox には、CAMShift (Continuously Adaptive Mean Shift) や KLT (Kanade-Lucas-Tomasi) などのビデオ追跡アルゴリズムが用意されています。 これらのアルゴリズムを、単一のオブジェクトをトラッキングするために使用したり、より複雑なトラッキングシステムの基本構成として使用したりできます。 このシステム ツールボックスには複数のオブジェクトをトラッキングするためのフレームワークも用意されており、オブジェクト検出をトラックに割り当てるためのカルマン フィルターやハンガリー アルゴリズムなどが含まれています。

KLT は、一連の特徴点をフレームからフレームへトラッキングします。映像安定化、カメラの動き推定、オブジェクトトラッキングアプリケーションで使用できます。

Detected feature points and object tracked using KLT.
検出された特徴点 (左) と、KLT を使用してトラッキングされたオブジェクト (右)。

CAMShift は、オブジェクトの色ヒストグラムのBack Projectionを交差する四角い動くウィンドウを使用して、フレームからフレームへ、オブジェクトの場所、サイズ、向きをトラッキングします。

複数オブジェクトトラッキングのフレームワーク

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

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

動き推定

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

Detecting moving objects using a stationary camera. Optical flow is calculated and detected motion is shown by overlaying the flow field on top of each frame.
固定カメラを使用した移動するオブジェクトの検出。 オプティカル フローが計算され、検出されたモーションが各フレームの上にフロー フィールドを重ねて表示されています。

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

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

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

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

Camera Calibrator アプリを使用して、キャリブレーション画像を選択およびフィルタリングし、樽型歪み係数の数とタイプを選択し、再投影エラーを表示し、外部パラメーターを可視化して、カメラ キャリブレーション パラメーターをエクスポートします。

The Camera Calibration app in Computer Vision System Toolbox.

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

単一のキャリブレーションされたカメラを使用してさまざまなオブジェクトの直径を測定。

単一のキャリブレーションされたカメラを使用してさまざまなオブジェクトの直径を測定。 キャリブレーションされたカメラを使用すると、平面オブジェクトをワールド単位で測定できます。この例として、コンベヤー ベルト上で部品のサイズを測定することがあります。

MATLAB によるカメラ キャリブレーション 4:56
MATLAB® のカメラ キャリブレーション機能について紹介します。カメラ キャリブレーション アプリを使用してカメラのキャリブレーションを行い、画像の歪みを取り除くと、キャリブレーションされたカメラを使用してオブジェクトの実際のサイズを測定できます。

ステレオ ビジョン

ステレオ ビジョン とは、複数の 2D ビューからシーンの 3D 構造を抽出するプロセスです。

Computer Vision System Toolbox は、次のステレオ ビジョン ワークフローのステップを実施するための機能とアルゴリズムを提供します。

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

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

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

Visualizing the extrinsic parameters of a pair of stereo cameras
1 組のステレオ カメラの外部パラメーターの視覚化。

ステレオ画像の平行化

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

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

視差計算と 3D シーン再構築

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

  • セミグローバル マッチング
  • ブロックマッチング
シーン (左) 内の点の相対深度を表すステレオ視差マップ (右)。
シーン (左) 内の点の相対深度を表すステレオ視差マップ (右)。

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

Reconstructing a scene using a pair of stereo images.
一組のステレオ画像を使用したシーンの再構成。 視差を可視化するため、右画像を左画像と合成 (左上)。シーンの視差マップ (右上) とシーンの 3 次元レンダリング (下)。

映像処理、表示、およびグラフィックス

映像処理のためのアルゴリズムとツールが用意されている Computer Vision System Toolbox を使用することにより、 一般的な映像形式の読み書き、デインターレースや彩度のリサンプリングなどの一般的な映像処理アルゴリズムの実行、テキストやグラフィックを映像に取り入れた結果の表示が可能です。 MATLAB での映像処理には、処理するデータを一度に 1 フレームずつストリーミングして過剰なメモリの使用を避ける、System object™ を使用します。

Video deinterlacing in MATLAB.
MATLAB での映像のデインタレース。

ビデオ入出力

Computer Vision System Toolbox では、AVI、MPEG、WMV など多様な形式のマルチメディア ファイルを読み書きできます。さらに、インターネットまたはローカル ネットワークを介して、MMS ソースとの間で映像をストリーミングできます。Image Acquisition Toolbox™ を使用すると、Web カメラ、フレーム グラバー、DCAM 互換カメラなどの画像機器から映像を直接取得することができます。Simulink ユーザーは、MATLAB ワークスペースを映像ソースまたはシンクとして使用することも可能です。

ビデオの表示

このシステム ツールボックスにはビデオ ビューアーが付属しており、次のことが可能です。

  • データを処理しながら、ループ内のビデオ ストリームを表示
  • コードまたはブロック線図内のビデオ信号を表示
  • 複数のビデオ ビューアーを同時に使用
  • 表示を固定し、現在のフレームを評価
  • フレーム内の任意の領域に関するピクセル情報を表示
  • シミュレーションの実行中に、さらに詳しく調べるためのパンおよびズーム機能
  • Simulink でのシミュレーション中に、フレームごとに、開始、停止、一時停止、コマ送り
Model with viewers for four videos.
4 つのビデオのビューアーがあるモデル。 (左から) オリジナル映像、推定された背景、前景ピクセル、追跡結果。

グラフィックス

グラフィックスをビデオに追加すると、抽出した情報の可視化やシステム設計のデバッグを行いやすくなります。テキストを挿入して、オブジェクトの数を表示したり、その他の重要な情報を記録しておくことができます。また、マーカーや、線、多角形などのグラフィックスを挿入して、検出された特性をマークしたり、オブジェクトの輪郭を描いたり、その他の重要な特性を強調表示することも可能です。このシステム ツールボックスでは、挿入したテキストとグラフィックスは、独立したレイヤーとして維持されるのではなく、画像やビデオ自体に追加されます。さらに、2 つのビデオ ソースを 1 つに合成して、オブジェクトや重要な領域を強調表示できます。

Images with text and graphics inserted.
テキストとグラフィックスが挿入された画像。これらの要素を追加することで、抽出した情報の可視化や、設計のデバッグが行いやすくなります。

固定小数点とコード生成

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

コード生成のサポート

Computer Vision System Toolbox のほとんどの System object、関数、およびブロックでは、MATLAB Coder™Simulink Coder™、または Embedded Coder™ を使用して ANSI/ISO C コードを生成できます。 特定のプロセッサ アーキテクチャに対する最適化を選択し、生成されたコードと既存の C コードを統合することで、既存の知的所有権を有効に活用することができます。 C コードは、浮動小数点および固定小数点の両方のデータ タイプから生成できます。 このシステム ツールボックスに付随している例では、コード生成を使用して MATLAB で作成されたアルゴリズムを C コードに変換する方法が示されています。

固定小数点モデリング

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

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

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

画像処理の基本機能

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

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

製品評価版の入手
または製品の購入

評価版Computer Vision System Toolbox

評価版ソフトウェアを入手する

いまからはじめるMATLAB画像処理ワークフロー

Web セミナーを表示する