最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

opticalFlowLK

Lucas-Kanade 法を使用してオプティカル フローを推定するオブジェクト

説明

Lucas-Kanade 法を使用して移動するオブジェクトの方向と速度を推定するオプティカル フロー オブジェクトを作成します。オブジェクト関数 estimateFlow を使用して、オプティカル フロー ベクトルを推定します。オブジェクト関数 reset を使用すると、オプティカル フロー オブジェクトの内部状態をリセットできます。

作成

説明

opticFlow = opticalFlowLK は、ビデオ内の移動するオブジェクトの方向と速度の推定に使用できるオプティカル フロー オブジェクトを返します。オプティカル フローは Lucas-Kanade 法を使用して推定されます。

opticFlow = opticalFlowLK('NoiseThreshold',threshold) は、Name,Value のペアとして指定された 'NoiseThreshold' プロパティをもつオプティカル フロー オブジェクトを返します。プロパティ名を引用符で囲みます。

たとえば、opticalFlowLK('NoiseThreshold',0.05) です。

プロパティ

すべて展開する

ノイズ除去のしきい値。正のスカラーとして指定します。この数値を大きくすると、オブジェクトの動きがオプティカル フローの計算に与える影響が小さくなります。

オブジェクト関数

estimateFlowEstimate optical flow
resetReset the internal state of the optical flow estimation object

すべて折りたたむ

ビデオ ファイルを読み取ります。読み取るフレームのタイムスタンプを指定します。

vidReader = VideoReader('visiontraffic.avi','CurrentTime',11);

Lucas-Kanade 法を使用してオプティカル フローを推定するオプティカル フロー オブジェクトを作成します。ノイズ除去のしきい値を指定します。出力は、オプティカル フロー推定法とそのプロパティを指定するオプティカル フロー オブジェクトです。

opticFlow = opticalFlowLK('NoiseThreshold',0.009);

カスタム Figure ウィンドウを作成して、オプティカル フロー ベクトルを可視化します。

h = figure;
movegui(h);
hViewPanel = uipanel(h,'Position',[0 0 1 1],'Title','Plot of Optical Flow Vectors');
hPlot = axes(hViewPanel);

イメージ フレームを読み取って、グレースケール イメージに変換します。連続するイメージ フレームからオプティカル フローを推定します。現在のイメージ フレームを表示して、オプティカル フロー ベクトルを Quiver プロットとしてプロットします。

while hasFrame(vidReader)
    frameRGB = readFrame(vidReader);
    frameGray = rgb2gray(frameRGB);
    flow = estimateFlow(opticFlow,frameGray);
    imshow(frameRGB)
    hold on
    plot(flow,'DecimationFactor',[5 5],'ScaleFactor',10,'Parent',hPlot);
    hold off
    pause(10^-3)
end

アルゴリズム

すべて展開する

2 つのイメージ間のオプティカル フローを計算するには、次のオプティカル フロー拘束方程式を解かなければなりません。

Ixu+Iyv+It=0

  • IxIy および It は、時空間イメージの明るさの導関数です。

  • u は水平方向のオプティカル フローです。

  • v は垂直方向のオプティカル フローです。

参照

[1] Barron, J. L., D. J. Fleet, S. S. Beauchemin, and T. A. Burkitt. “ Performance of optical flow techniques.” In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR),236-242. Champaign, IL: CVPR, 1992.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

R2015a で導入