Optical Flow
オブジェクト速度の推定
ライブラリ:
Computer Vision Toolbox /
Analysis & Enhancement
説明
Optical Flow ブロックは、Horn-Schunck 法または Lucas-Kanade 法のいずれかを使用して、2 つのイメージの間、または 1 つのビデオ フレームと別のビデオ フレームとの間のオブジェクトの動きの方向と速度を推定します。
端子
入力
I/I1 — イメージまたはビデオ フレーム
スカラー | ベクトル | 行列
イメージまたはビデオ フレーム。スカラー、ベクトルまたは行列として指定します。[次の範囲のオプティカル フローを計算] パラメーターが [2 つのイメージ]
に設定されている場合、この端子の名前は [I1] に変更されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
I2 — イメージ
スカラー | ベクトル | 行列
イメージまたはビデオ フレーム。スカラー、ベクトルまたは行列として指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
出力
|V|^2 — 速度の振幅
スカラー | ベクトル | 行列
速度の振幅。スカラー、ベクトルまたは行列として返されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
V — 複素数形式の速度成分
スカラー | ベクトル | 行列
複素数形式の速度成分。スカラー、ベクトルまたは行列として指定します。
依存関係
この端子を有効にするには、[速度出力] パラメーターを [複素数形式の水平成分と垂直成分]
に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
パラメーター
[メイン] タブ
メソッド — オプティカル フローの計算方法
Horn・Schunck
(既定値) | Lucas・Kanade
オプティカル フローの計算に使用する方法を選択します。オプションには、[Horn・Schunck]
や [Lucas・Kanade]
があります。
次の範囲のオプティカル フローを計算 — オプティカル フローを計算
現在のフレームと N 個前のフレーム
(既定値) | 2 つのイメージ
オプティカル フローの計算方法を選択します。[2 つのイメージ]
を選択して 2 つのイメージ間のオプティカル フローを計算します。[現在のフレームと N 個前のフレーム]
を選択して N フレーム分離れている 2 つのビデオ フレーム間のオプティカル フローを計算します。
依存関係
このパラメーターを有効にするには、次のように設定します。
[メソッド] パラメーターを
[Horn・Schunck]
にする[メソッド] パラメーターを
[Lucas・Kanade]
にし、[時間勾配フィルター] を[差分フィルター [-1 1]]
にする
N — フレーム数
1
(既定値) | スカラー
基準フレームと現在のフレームの間のフレーム数を表すスカラー値を入力します。
依存関係
このパラメーターを有効にするには、[次の範囲のオプティカル フローを計算] パラメーターを [現在のフレームと N 個前のフレーム]
に設定します。
平滑度係数 — 平滑度係数
1
(既定値) | 正のスカラー
平滑度係数を指定します。2 つのイメージ間または 2 つのビデオ フレーム間の相対的な動きが大きい場合は、大きい正のスカラー値を入力します。相対的な動きが小さい場合は、小さい正のスカラー値を入力します。
依存関係
このパラメーターを有効にするには、[メソッド] パラメーターを [Horn・Schunck]
に設定します。
反復法の停止 — 反復法の停止
最大反復回数に到達したとき
(既定値) | 速度差がしきい値未満になったとき
| 先に該当した方
ブロックの反復法プロセスが停止するタイミングを制御する方法を指定します。速度差が特定のしきい値を下回った場合にプロセスを停止する場合は、[速度差がしきい値未満になったとき]
を選択します。一定数の反復が行われた後にプロセスを停止する場合は、[最大反復回数に到達したとき]
を選択します。[先に該当した方]
を選択することもできます。
依存関係
このパラメーターを有効にするには、[メソッド] パラメーターを [Horn・Schunck]
に設定します。
Maximum number of iterations — 最大反復回数
10
(既定値) | スカラー
ブロック実行の最大反復回数を指定します。
依存関係
このパラメーターを有効にするは、[メソッド] パラメーターを [Horn・Schunck]
に設定し、[反復法の停止] パラメーターを [最大反復回数に到達したとき]
または [先に該当した方]
に設定します。
速度出力 — オプティカル フローの出力
振幅の 2 乗
(既定値) | 複素数形式の水平成分と垂直成分
オプティカル フローの出力方法を指定します。[振幅の 2 乗]
を選択した場合、ブロックは各要素の形式が であるオプティカル フロー行列を出力します。[複素数形式の水平成分と垂直成分]
を選択した場合、ブロックは各要素の形式が であるオプティカル フロー行列を出力します。
時間勾配フィルター — 時間勾配に使用するフィルター
差分フィルター [-1 1]
(既定値) | ガウス導関数
ブロックが u と v を解くのに差分フィルターとガウス フィルターの導関数のどちらを使用するのかを指定します。
依存関係
このパラメーターを有効にするには、[メソッド] パラメーターを [Lucas・Kanade]
に設定します。
バッファリングする入力フレーム数 — 平滑化のためにバッファリングする入力フレームの数
3
(既定値) | スカラー
平滑化のためにバッファリングする入力フレームの数を指定します。このパラメーターは、標準偏差やフィルター係数の数などの時間フィルターの特性に対して使用します。
依存関係
このパラメーターを有効にするには、[時間勾配フィルター] パラメーターを [ガウス導関数]
に設定します。
イメージ平滑化フィルターの標準偏差 — イメージ平滑化フィルターの標準偏差
1.5
(既定値) | スカラー
イメージ平滑化フィルターの標準偏差を指定します。
依存関係
このパラメーターを有効にするには、[時間勾配フィルター] パラメーターを [ガウス導関数]
に設定します。
勾配平滑化フィルターの標準偏差 — 勾配平滑化フィルターの標準偏差
1
(既定値) | スカラー
勾配平滑化フィルターの標準偏差を指定します。
依存関係
このパラメーターを有効にするには、[時間勾配フィルター] パラメーターを [ガウス導関数]
に設定します。
拘束方程式が悪条件である場合は通常のフロー推定を破棄 — 通常のフロー推定を破棄
off (既定値) | on
オプティカル フローの拘束方程式が悪条件の場合に動きベクトルをゼロに設定するには、このパラメーターを選択します。
依存関係
このパラメーターを有効にするには、[時間勾配フィルター] パラメーターを [ガウス導関数]
に設定します。
動きベクトルに対応するイメージを出力 (ブロックの遅延の要因) — 動きベクトルに対応するイメージを出力
off (既定値) | on
ブロックにより出力される動きベクトルに対応するイメージを出力するには、このパラメーターを選択します。
依存関係
このパラメーターを有効にするには、[時間勾配フィルター] パラメーターを [ガウス導関数]
に設定します。
ノイズ除去のしきい値 — ノイズ除去のしきい値
0.0039
(既定値) | スカラー
各イメージ間または各ビデオ フレーム間の動きしきい値を決定するスカラー値を指定します。この数値を大きくすると、小さい動きがオプティカル フローの計算に与える影響が小さくなります。
依存関係
このパラメーターを有効にするには、[メソッド] パラメーターを [Lucas・Kanade]
に設定します。
[データ型] タブ
固定小数点ブロック パラメーターの詳細については、ブロックの固定小数点属性の指定 (DSP System Toolbox)を参照してください。
ブロックの特性
データ型 |
|
多次元信号 |
|
可変サイズの信号 |
|
アルゴリズム
オプティカル フローの方程式
2 つのイメージ間のオプティカル フローを計算するには、次のオプティカル フロー拘束方程式を解かなければなりません。
、 および は、時空間イメージの明るさの導関数です。
u は水平方向のオプティカル フローです。
v は垂直方向のオプティカル フローです。
Horn-Schunck 法
Horn-Schunck 法では、オプティカル フローがイメージ全体にわたって平滑であると仮定して、次の方程式を最小化する速度フィールド を推定します。
.
この方程式の と はオプティカル速度成分 u の空間導関数で、 はグローバルな平滑化項をスケーリングします。Horn-Schunck 法では、上記の方程式を最小化して、イメージ内のピクセルごとに速度フィールド [u v] を取得します。この手法は次の方程式で求められます。
.
これらの方程式の は (x,y) のピクセルの速度推定値で、 は の近傍平均値です。k = 0 の場合、初期速度は 0 です。
Horn-Schunck 法を使用して u と v を求めるには以下のようにします。
最初のイメージ内のピクセルごとに、ソーベル畳み込みカーネル とその転置を使用して、 と を計算します。
カーネルを使用して、イメージ 1 と 2 の間の を計算します。
上記の速度が 0 であると仮定し、 を畳み込みカーネルとして使用して各ピクセルの平均速度を計算します。
u と v を反復して求めます。
Lucas-Kanade 法
u および v のオプティカル フロー拘束方程式を解くために、Lucas-Kanade 法では元のイメージを小さなセクションに分割して、各セクションで等速度を仮定します。次に、各セクション の に対して、定数モデルへのオプティカル フロー拘束方程式の重み付き最小二乗近似を実行します。メソッドは次の方程式を最小化することによって、この近似を実行します。
W は、各セクションの中心の拘束を強調するウィンドウ関数です。最小化問題に対する解は次のとおりです。
[時間勾配フィルター] を [差分フィルター [-1 1]]
に設定すると、u と v は次のように解かれます。
カーネル とその転置を使用して、 と を計算します。
固定小数点データ型を使用している場合、カーネルの値は、語長が 16 に等しく小数部の長さが 15 に等しい符号付き固定小数点値になります。
カーネルを使用して、イメージ 1 と 2 の間の を計算します。
有効な 1 次元係数が である分離可能で等方性のある 5 行 5 列の要素カーネルを使用して、勾配コンポーネント 、 および を平滑化します。固定小数点データ型を使用している場合、カーネルの値は、語長が 8 に等しく小数部の長さが 7 に等しい符号なし固定小数点値になります。
次のメソッドを使用して、各ピクセルについて 2 行 2 列の 1 次方程式を解きます。
の場合
A の固有値は です。
固定小数点のダイアグラムでは、 です。
固有値としきい値 を比較します。このしきい値は、ノイズ除去のしきい値として入力した値に対応します。結果は次のいずれかになります。
ケース 1: かつ
A は非特異であるため、方程式系はクラメルの公式を使用して解かれます。
ケース 2: かつ
A は特異 (不可逆) であるため、勾配フローを正規化して u と v が計算されます。
ケース 3: かつ
オプティカル フロー u と v は 0 です。
ガウス導関数
時間勾配フィルターを [ガウス導関数]
に設定すると、u と v は次の手順を使用して解かれます。
および を計算します。
ガウス フィルターを使用して時間フィルター処理を実行します。[時間的平滑化のためにバッファリングするフレームの数] パラメーターを使用して、標準偏差やフィルター係数の数などの時間フィルターの特性を指定します。
ガウス フィルターとガウス フィルターの導関数を使用して、空間フィルター処理を使用したイメージの平滑化を実行します。[イメージ平滑化フィルターの標準偏差] パラメーターを使用して、イメージ平滑化フィルターの標準偏差と長さを指定します。
イメージ 1 と 2 の間の を計算します。
ガウス フィルターの導関数を使用して時間フィルター処理を実行します。[時間的平滑化のためにバッファリングするフレームの数] パラメーターを使用して、標準偏差やフィルター係数の数などの時間フィルターの特性を指定します。
手順 1b に示したフィルターを使用して、時間フィルターの出力で空間フィルター処理を実行します。
勾配平滑化フィルターを使用して、勾配成分 、 および を平滑化します。[勾配平滑化フィルターの標準偏差] パラメーターを使用して、勾配平滑化フィルターの標準偏差とフィルター係数の数を指定します。
次のメソッドを使用して、各ピクセルについて 2 行 2 列の線形方程式を解きます。
の場合
A の固有値は です。
固有値を検出すると、ブロックはその固有値としきい値 を比較します。このしきい値は、[ノイズ除去のしきい値] パラメーターに入力した値に対応します。結果は次のいずれかになります。
ケース 1: かつ
A は非特異であるため、ブロックはクラメルの公式を使用して方程式系を解きます。
ケース 2: かつ
A は特異 (不可逆) であるため、ブロックは勾配フローを正規化して u と v を計算します。
ケース 3: かつ
オプティカル フロー u と v は 0 です。
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)