このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
オプティカル フローの速度の計算
この例では、ビデオやイメージ シーケンス内で移動するオブジェクトのオプティカル フローの速度を計算する方法を示します。
イメージ シーケンスから 2 つのイメージ フレームを MATLAB ワークスペースに読み取ります。
I1 = imread('car_frame1.png'); I2 = imread('car_frame2.png');
Simulink® モデルを開きます。
modelname = 'ex_blkopticalflow.slx';
open_system(modelname)
モデルは、Image From Workspaceブロックを使用してイメージを読み取ります。オプティカル フローの速度を計算するには、まずColor Space Conversionブロックを使用して入力カラー イメージを強度イメージに変換しなければなりません。次に、以下のパラメーター値に設定した Optical Flow
ブロックを使用して速度を求めます。
メソッド -
Horn-Schunck
次の範囲のオプティカル フローを計算 -
Two images
平滑度係数 -
1
反復法の停止 -
When maximum number of iterations is reached
最大反復回数 -
10
速度出力 -
Horizontal and vertical components in complex form
Compositingブロックを使用して両方のイメージ フレームを重ね合わせ、重ね合わせたイメージを使用して結果をプロットします。
モデルを実行します。
out = sim(modelname);
出力速度と重ね合わせたイメージを読み取ります。
Vx = real(out.simout); Vy = imag(out.simout); img = out.simout1;
関数opticalFlow
を使用してオプティカル フロー オブジェクトを作成します。
flow = opticalFlow(Vx,Vy);
重ね合わせたイメージを表示し、関数plot
を使用して速度ベクトルをプロットします。
figure imshow(img) hold on plot(flow,'DecimationFactor',[5 5],'ScaleFactor',40)