Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

vision.ForegroundDetector

混合ガウス モデルを使用した前景の検出

説明

ForegroundDetector は、カラーまたはグレースケールのビデオ フレームを背景モデルと比較して、個々のピクセルが背景または前景の一部であるかどうかを判定します。その後、前景マスクを計算します。背景差分を使用して、静止カメラで撮影されたイメージ内の前景オブジェクトを検出できます。

イメージ内の前景を検出するには、次の手順を実行します。

  1. vision.ForegroundDetector オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

detector = vision.ForegroundDetector は、混合ガウス モデル (GMM) を使用して前景マスクを計算し、返します。

detector = vision.ForegroundDetector(Name,Value) は、名前と値のペアを 1 つ以上使用してプロパティを設定します。各プロパティ名を引用符で囲みます。たとえば、detector = vision.ForegroundDetector('LearningRate',0.005) です。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

学習率の適応。'true' または 'false' として指定します。このプロパティでは、NumTrainingFrames プロパティによって指定された期間中にオブジェクトによって学習率を適応させることができます。このプロパティを true に設定すると、オブジェクトは LearningRate プロパティを 1/(現在のフレーム番号) に設定します。このプロパティを false に設定すると、タイム ステップごとに LearningRate プロパティを設定しなければなりません。

背景モデルの学習用の初期ビデオ フレームの数。整数として指定します。AdaptLearningRatefalse に設定すると、このプロパティは使用できなくなります。

パラメーター更新の学習率。数値スカラーとして指定します。学習率を指定して、モデルをパラメーターに適応させます。このプロパティは、モデルがどの程度迅速に状況の変化に適応するかを制御します。このプロパティを適切に設定してアルゴリズムの安定性を確保します。

このプロパティで指定された学習率は、AdaptLearningRatetrue に設定したとき、および NumTrainingFrames で指定された学習期間が終了した後にのみ実装できます。

調整可能: Yes

背景モデルを判定するしきい値。数値スカラーとして指定します。このプロパティは、背景値と見なす、ピクセルの最小確率値を表すように設定します。この値が小さすぎる場合、多様な背景に対処できなくなります。

混合モデル内のガウス モードの数。正の整数として指定します。通常、この値は 34 または 5 に設定します。複数の背景モードをモデル化できるようにするには、値を 3 以上に設定します。

混合モデルの初期分散。数値スカラーまたは 'Auto' 文字ベクトルとして指定します。

イメージのデータ型初期分散
double/single(30/255)^2
uint830^2

このプロパティは、色の入力のすべてのカラー チャネルに適用されます。

使用法

説明

foregroundMask = detector(I) は、入力イメージ I の前景マスクを計算して、論理マスクを返します。マスク内の 1 の値は前景ピクセルに対応します。

foregroundMask = detector(I,learningRate) は、LearningRate を使用して前景マスクを計算します。

入力引数

すべて展開する

入力イメージ。グレースケールまたはトゥルーカラー (RGB) として指定します。

パラメーター更新の学習率。数値スカラーとして指定します。学習率を指定して、モデルをパラメーターに適応させます。このプロパティは、モデルがどの程度迅速に状況の変化に適応するかを制御します。このプロパティを適切に設定してアルゴリズムの安定性を確保します。

このプロパティで指定された学習率は、AdaptLearningRatetrue に設定したとき、および NumTrainingFrames で指定された学習期間が終了した後にのみ実装できます。

調整可能: Yes

出力引数

すべて展開する

混合ガウス モデルを使用して計算された前景マスク。バイナリ マスクとして返されます。

オブジェクト関数

オブジェクト関数を使用するには、System object™ を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

ファイルを読み取るビデオ ソース オブジェクトを作成します。

videoSource = VideoReader('viptraffic.avi');

検出器オブジェクトを作成し、学習フレームの数を 5 に設定します (短いビデオを使用するため)。初期標準偏差を設定します。

detector = vision.ForegroundDetector(...
       'NumTrainingFrames', 5, ...
       'InitialVariance', 30*30);

ブロブ解析を実行します。

blob = vision.BlobAnalysis(...
       'CentroidOutputPort', false, 'AreaOutputPort', false, ...
       'BoundingBoxOutputPort', true, ...
       'MinimumBlobAreaSource', 'Property', 'MinimumBlobArea', 250);

境界を挿入します。

shapeInserter = vision.ShapeInserter('BorderColor','White');

結果を再生します。自動車の周りに境界ボックスを描画します。

videoPlayer = vision.VideoPlayer();
while hasFrame(videoSource)
     frame  = readFrame(videoSource);
     fgMask = detector(frame);
     bbox   = blob(fgMask);
     out    = shapeInserter(frame,bbox);
     videoPlayer(out);
     pause(0.1);
end

オブジェクトを解放します。

release(videoPlayer);

参照

[1] Kaewtrakulpong, P. and R. Bowden. An Improved Adaptive Background Mixture Model for Realtime Tracking with Shadow Detection. In Proc. 2nd European Workshop on Advanced Video Based Surveillance Systems, AVBS01, VIDEO BASED SURVEILLANCE SYSTEMS: Computer Vision and Distributed Processing (September 2001)

[2] Stauffer, C. and W.E.L. Grimson. Adaptive Background Mixture Models for Real-Time Tracking, Computer Vision and Pattern Recognition, IEEE Computer Society Conference on, Vol. 2 (06 August 1999), pp. 2246-252 Vol. 2.

拡張機能

バージョン履歴

R2011a で導入