OpenCVで動画の手振れ補正

こちらのサイトに手振れ補正する理屈とOpenCVで書いたサンプルが載ってる。

Simple video stabilization using OpenCV

1. オプティカルフローを用いて、前後フレーム間のトランスフォームを求める。トランスフォームは3つのパラメータ:dx, dy,da(角度)で構成され、基本的に剛体の剛性のユークリッド変換とし、スケーリングや共有は考慮しない。
2. ブレの軌跡を得るために、各フレームのx, y, 角度のトランスフォームを保存する。
3. 移動平均窓を使用して軌跡を滑らかにする。ユーザが平滑化に使用するフレーム数となる半径を指定する。
4. 以下のように新しいトランスフォームを求める。
新しいトランスフォーム = 元のトランスフォーム + (平滑化した軌跡 – 元の軌跡)
5. 動画に新しいトランスフォームを適用する。

サンプルコードもある。


スポンサーリンク



補正結果比較動画。


スポンサーリンク

関連記事