Optical Flow

AIと読む
全ドキュメントを1ファイルで(llms-full.txt)
OpticalFlow #Field #ノード
Optical Flow

入力映像の前フレームとの比較から動きを推定し、流れ場(FlowField)として出力します。ブロック単位で輝度(0.299/0.587/0.114の加重)の時間差と空間勾配を取り、法線フロー -It・∇I / |∇I|²(Lucas-Kanadeの1タップ版)で変位を求め、1/deltaTime を掛けて「UV変位/秒」に直しています。

  • Block Size — Small8 / Medium16(初期値)/ Large32 のドロップダウン。ブロックが大きいほど大きな動きを拾い、結果は粗くなります
  • Scale — 推定結果に掛ける倍率。0〜8にクランプ、初期値1(currentScale

外れ値の抑制として、1フレームあたりの変位は1ブロック2個ぶんが上限にクランプされます。速すぎる動きは頭打ちになります。

接続直後とプロジェクトのロード直後の1フレームは、比較の基準を作るだけで推定を行いません(出力はクリアされます)。

出力解像度は入力の1/8、フォーマットはRGHalfです。場は低周波なので、消費側がbilinearで読む前提で軽く作られています。

推定結果の確認には Field Visualize を、動き量を1つの値にしたいときは Motion Amount を使います。

動画

入力ポート

Port ID
InRenderTexture

出力ポート

Port ID
FlowFlowFieldOutput

スクリプトから設定可能なメンバー

パス
currentScalefloat

Synapse Apps(スクリプティング)

await synapse.modules.create({ type: "OpticalFlow" })

このページへのリンク