OpenCVで動画の手ぶれ補正

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

Simple video stabilization using OpenCV

  1. オプティカルフローを用いて、前後フレーム間のトランスフォームを求める。
  2. トランスフォームは3つのパラメータ:dx, dy, da(角度)で構成され、基本的に剛体の剛性のユークリッド変換とし、スケーリングや共有は考慮しない。

  3. ブレの軌跡を得るために、各フレームのx, y, 角度のトランスフォームを保存する。
  4. 移動平均窓を使用して軌跡を滑らかにする。
  5. ユーザが平滑化に使用するフレーム数となる半径を指定する。

  6. 以下のように新しいトランスフォームを求める。
  7. 新しいトランスフォーム = 元のトランスフォーム + (平滑化した軌跡 – 元の軌跡)

  8. 動画に新しいトランスフォームを適用する。

サンプルコードもある。



補正結果比較動画。



2020年10月 追記:このC++実装をもとに有志がPythonで実装したPython Video StabilizationがGitHubで公開されている↓
https://github.com/AdamSpannbauer/python_video_stab

2019年1月 追記:Learn OpenCVでも手振れ補正のチュートリアルが公開されたぞ↓
https://www.learnopencv.com/video-stabilization-using-point-feature-matching-in-opencv/


関連記事

続・ディープラーニングの資料

iOSで使えるJetpac社の物体認識SDK『DeepBel...

Google XML Sitemap Generatorプラ...

viser:Pythonで使える3D可視化ライブラリ

C++の抽象クラス

オープンソースの物理ベースGIレンダラ『appleseed』

hloc:SuperGlueで精度を向上させたSfM・Vis...

PyDataTokyo主催のDeep Learning勉強会

SONYの自律型エンタテインメントロボット『aibo』

TensorSpace.js:ニューラルネットワークの構造を...

Point Cloud Utils:Pythonで3D点群・...

写真から3Dメッシュの生成・編集ができる無料ツール『Auto...

HD画質の無駄遣い

BGSLibrary:OpenCVベースの背景差分ライブラリ

Mayaのシェーディングノードの区分

3D Gaussian Splatting:リアルタイム描画...

uvでWindows11のPython環境を管理する

Regard3D:オープンソースのStructure fro...

OpenMVS:Multi-View Stereoによる3次...

Google App EngineでWordPress

ニューラルネットワークと深層学習

OpenCVでカメラ画像から自己位置認識 (Visual O...

Autodesk Mementoでゴジラを3次元復元する

Python2とPython3

書籍『ROSプログラミング』

FCN (Fully Convolutional Netwo...

WordPress on Windows Azure

Photogrammetry (写真測量法)

CGのためのディープラーニング

ブログの復旧が難航してた話

OpenGVの用語

Point Cloud Consortiumのセミナー「3D...

まだ続くブログの不調

Amazon Web ServicesでWordPress

iOSデバイスと接続して連携するガジェットの開発方法

定数

ブログが1日ダウンしてました

ブログをGoogle App EngineからAmazon ...

MLDemos:機械学習について理解するための可視化ツール

PeopleSansPeople:機械学習用の人物データをU...

openMVG:複数視点画像から3次元形状を復元するライブラ...

Python for Unity:UnityEditorでP...

コメント