こんにちは私はオプティカルフローに基づいてビデオシーケンスでオブジェクトをセグメント化したいです(この回答で提案されているように)、私はopencvを使用しており、calcOpticalFlowFarneback関数を使用して2つの連続するフレームのフローフィールドを生成できました。このフローフィールドに基づいて画像をセグメント化する方法を誰かが説明できますか?
2 に答える
オプティカル フローを使用してオブジェクトをセグメント化したいので、意思決定はオブジェクトの下にあるモーションのタイプに基づいて行われます... YouTube でこのビデオを見ることができます。対象の各ピクセルが 2 つの連続するフレームで受ける変位の方向と大きさを測定して、それらの動きのパターンを把握できます。ビデオへのリンクでは、自動車はオプティカル フローに基づいて背景からセグメント化されています...
これを行うための非常に簡単な方法の 1 つは、アルゴリズムにグラウンド トゥルースを持つキー フレームを提供することです。つまり、最初のフレームを手動でセグメント化し (ここではグラブカットを使用できます)、オプティカル フローを使用してセグメント化を後続のフレームに伝播します。
注意点として、オプティカル フローはエラーが発生しやすいことで有名です。したがって、伝播されたセグメンテーションを直接使用する代わりに、伝播されたセグメンテーションを (何らかの構造化要素を使用して) 侵食し、侵食された画像をグラブカットの前景シードとして使用できます。同様に、伝播されたセグメンテーションを拡張し、拡張された境界の周りのバンドをバックグラウンド シードとして使用します。
つまり、最初のフレームでグラウンド トゥルースを指定し、それを使用して後続のフレームでグラブカットを自動的に実行します。
これは役に立ちますか?