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/


関連記事

第1回 3D勉強会@関東『SLAMチュートリアル大会』

Iterator

UnrealCV:コンピュータビジョン研究のためのUnreal Engineプラグイン

Konashiを買った

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

Google App Engine上のWordPressでFlickrの画像を貼る

trimesh:PythonでポリゴンMeshを扱うライブラリ

iPhoneで3D写真が撮れるアプリ『seene』

cvui:OpenCVのための軽量GUIライブラリ

OpenMVS:Multi-View Stereoによる3次元復元ライブラリ

法線マップを用意してCanvas上でShadingするサンプル

Google Colaboratoryで遊ぶ準備

『手を動かしながら学ぶエンジニアのためのデータサイエンス』ハンズオンセミナーに行ってきた

MB-Lab:Blenderの人体モデリングアドオン

ArUco:OpenCVベースのコンパクトなARライブラリ

ROMOハッカソンに行ってきた

CGAN (Conditional GAN):条件付き敵対的生成ネットワーク

「ベンジャミン·バトン数奇な人生」でどうやってCGの顔を作ったのか

TensorFlowでCGを微分できる『TensorFlow Graphics』

Math.NET Numerics:Unityで使える数値計算ライブラリ

OpenCV3.3.0でsfmモジュールのビルドに成功!

OpenSfM:PythonのStructure from Motionライブラリ

pythonの機械学習ライブラリ『scikit-learn』

Pix2Pix:CGANによる画像変換

UnityでShaderの入力パラメータとして行列を渡す

WordPress on Windows Azure

このブログのデザインに飽きてきた

Pythonの自然言語処理ライブラリ『NLTK(Natural Language Toolkit)』

HD画質の無駄遣い

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

AnacondaとTensorFlowをインストールしてVisual Studio 2015で使う

機械学習で遊ぶ

openMVGをWindows10 Visual Studio 2015環境でビルドする

オープンソースの取引プラットフォーム

機械学習手法『Random Forest』

BlenderのPython環境にPyTorchをインストールする

AndroidもopenGLも初心者さ (でもJavaは知ってるよ)

Point Cloud Libraryに動画フォーマットが追加されるらしい

統計的な顔モデル

OpenCVでiPhone6sのカメラをキャリブレーションする

UnityでPoint Cloudを表示する方法

VCG Library:C++のポリゴン操作ライブラリ

コメント