Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

opticalFlowLK

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

説明

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

作成

説明

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

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

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

プロパティ

すべて展開する

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

オブジェクト関数

estimateFlow 估计光流
reset Reset 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 =轴(hViewPanel);

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

whilehasFrame(vidReader) frameRGB = readFrame(vidReader); frameGray = im2gray(frameRGB); flow = estimateFlow(opticFlow,frameGray); imshow(frameRGB) holdonplot(flow,'DecimationFactor',[5 5],'ScaleFactor',10,'Parent',hPlot); holdoffpause(10^-3)end

Figure contains an axes object and an object of type uipanel. The axes object contains 2 objects of type image, quiver.

Figure contains an axes object and an object of type uipanel. The axes object contains 2 objects of type image, quiver.

アルゴリズム

すべて展開する

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

I x u + I y v + I t = 0

  • I x I y および I t は、時空間イメージの明るさの導関数です。

  • 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 で導入