こちらのサイトに手振れ補正する理屈とOpenCVで書いたサンプルが載ってる。
Simple video stabilization using OpenCV
- オプティカルフローを用いて、前後フレーム間のトランスフォームを求める。
トランスフォームは3つのパラメータ:dx, dy, da(角度)で構成され、基本的に剛体の剛性のユークリッド変換とし、スケーリングや共有は考慮しない。
- ブレの軌跡を得るために、各フレームのx, y, 角度のトランスフォームを保存する。
- 移動平均窓を使用して軌跡を滑らかにする。
ユーザが平滑化に使用するフレーム数となる半径を指定する。
- 以下のように新しいトランスフォームを求める。
新しいトランスフォーム = 元のトランスフォーム + (平滑化した軌跡 – 元の軌跡)
- 動画に新しいトランスフォームを適用する。
サンプルコードもある。
補正結果比較動画。
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/
関連記事
UnityでARKit2.0
オープンソースの物理ベースレンダラ『Mitsuba』をMay...
書籍『3次元コンピュータビジョン計算ハンドブック』を購入
Deep Learningとその他の機械学習手法の性能比較
自前Shaderの件 解決しました
3Dスキャンに基づくプロシージャルフェイシャルアニメーション
MVStudio:オープンソースのPhotogrammetr...
フィーリングに基づくタマムシの質感表現
GoB:ZBrushとBlenderを連携させるアドオン
PSPNet (Pyramid Scene Parsing ...
Python.NET:Pythonと.NETを連携させるパッ...
FCN (Fully Convolutional Netwo...
Mechanizeで要認証Webサイトをスクレイピング
ドットインストールのWordPress入門レッスン
Google Chromecast
Web経由でRaspberry PiのGPIOを操作したい
PyTorch3D:3Dコンピュータービジョンライブラリ
UnityでShaderの入力パラメータとして行列を渡す
Faster R-CNN:ディープラーニングによる一般物体検...
UnrealCLR:Unreal Engineで.NET C...
GAN (Generative Adversarial Ne...
Gource:バージョン管理の履歴を可視化するツール
為替レートの読み方 2WAYプライス表示
AR (Augmented Reality)とDR (Dim...
AMIMOTO(PVM版)で作成したインスタンスをAMIMO...
オープンソースの人体モデリングツール『MakeHuman』の...
Webサイトのワイヤーフレームが作成できるオンラインツール
Autodesk Mementoでゴジラを3次元復元する
iPhoneアプリ開発 Xcode 5のお作法
ブログが1日ダウンしてました
Webスクレイピングの勉強会に行ってきた
UnityのGameObjectの向きをScriptで制御す...
OpenCV 3.1のsfmモジュールを試す
コンピュータビジョンの技術マップ
Javaで作られたオープンソースの3DCGレンダラ『Sunf...
顔画像処理技術の過去の研究
Raspberry Pi 2のGPIOピン配置
統計的な顔モデル
OpenCVで顔のランドマークを検出する『Facemark ...
ZScript
Super Resolution:OpenCVの超解像処理モ...
FacebookがDeep learningツールの一部をオ...


コメント