GoPro動画を内蔵センサーデータだけで傾き補正する方法をまとめた。
水平補正前 ➡ 補正後
youtu.be
【関連記事】
>>>【2018最新】GoPro用 防水シンバル・スタビライザー
>>>サーフィン動画にGoProのGPSが面白い!Search GPSやTraceのようなテレメトリーオーバーレイ
>>>サーフィン動画撮影はGoPro HERO5がおすすめ!HERO6やSessionとの違いと選び方
目的
物理機構や画像解析によらず、GoProに内蔵されたセンサーだけで傾きの自動補正(水平保持)を実現する。
・水平保持の例
ジンバルを用いずセンサーのデータだけで水平を保持(回転を補正)している。
方法
GoPro HERO5,HERO6はGPS、ジャイロ、加速度センサーを搭載している。
>>>サーフィン動画にGoProのGPSが面白い!Search GPSやTraceのようなテレメトリーオーバーレイ
そのデータは動画に影響を与えないメタデータとして動画に保存されている。
github.com
記録されるデータ
~400 Hz 3-axis gyro readings
~200 Hz 3-axis accelerometer readings
~18 Hz GPS position (lat/lon/alt/spd)
1 Hz GPS timestamps
1 Hz GPS accuracy (cm) and fix (2d/3d)
1 Hz temperature of camera
GoPro HERO5 SESSIONはGPSを搭載していないのでジャイロ、加速度センサーだけを記録している。
なおGPSはOFFでもセンサーデータだけは記録されている。
3軸ジャイロのの記録したY軸方向の動きを打ち消すように動画を傾ければ水平を保てるはず。
GPMF Introduction | gpmf-parser by gopro
手順の概要
①動画からメタデータの取り出し
②AfterEffects用のキーフレームデータを作成する
③AfterEffectsで回転を補正する
①動画からメタデータの取り出し(Windowsのみ)
下記から「GPMD2CSV.zip」をダウンロード
http://tailorandwayne.com/GPMD2CSV.zip
github.com
GPMD2CSVはGoProのメタデータ入り動画からCSVを書き出すWindowsのフリーソフト。
Zipを解凍すると下記の4ファイルが展開される。
ffmpeg.exe
gpmd2csv.exe
GPMD2CSV.bat
README.txt
GPMD2CSV.batに動画をドラッグアンドドロップするとCSVが作られる。
[動画のファイル名]-temp.csv:GoProの内部温度データ
[動画のファイル名]-gyro.csv:3軸ジャイロのデータ
[動画のファイル名]-gps.csv:GPSのデータ
[動画のファイル名]-accl.csv:3軸加速度センサーのデータ
この作られたCSVを更に変換する。
②AfterEffects用のキーフレームデータを作成する(Windows & Mac)
GPMD2CSVで作られたデータをAfterEffects用のキーフレームデータで変換する。
変換はgyrocamというプログラム(スクリプト)で行う。
github.com
gyrocamはProcessingという言語で書かれているので、まずは実行環境を構築する。
Processingのインストール
Processingは「Java を単純化し、グラフィック機能に特化した言語」らしい。
下記よりダウンロード&インストール。
Download \ Processing.org
gyrocam.pdeの実行
gyrocam.pdeをダブルクリックして実行する
なお自分の環境(Windows10)では「このアプリはお使いのPCでは実行できません」と出て先に進めなかった。
どうやらzipの解凍に失敗しているらしい。
「processing.exe」や「processing-java.exe」のサイズが0kbのときは失敗している。
Zipファイルをエクスプローラーで開いてから任意の場所(デスクトップなど)にコピーするといい。
gyrocam.pdeを実行、起動するとダイアログが表示される。
Processingが実行されるファイルはファイル名と同名のフォルダの配下に入っている必要があるらしい。
フォルダーを作って移動する?と聞いてくるので「OK」をクリック。
スケッチ(プログラム)が開くので初期設定を行う。
gyrocam.pdeの初期設定
変換する動画に合わせてgyrocam.pdeの初期設定を行う。
スケッチの47〜82行目。この中で関連する部分を修正する。
50行目:String filename = “GOPR0083”;
「GOPR0083」は元動画のファイルネームに書き換える。GPMD2CSVで作られたファイルネームも同じはず。
今回は「GOPR0114.MP4」という動画なので「GOPR0083」の部分を「GOPR0114」に書き換える。
51行目:float vFov = 69.5;
動画のVFovに合わせて書き換える。デフォルトは「69.7」
この数値はHERO6、HERO5、HERO5 Sessionで異なる。
下記の表で適正な値を設定する。
HERO5 Session
https://gopro.com/help/articles/Question_Answer/HERO5-Session-Field-of-View-FOV-Information
HERO5
https://gopro.com/help/articles/Question_Answer/HERO5-Black-Field-of-View-FOV-Information
HERO6
https://gopro.com/help/articles/question_answer/hero6-black-field-of-view-fov-information
今回はHERO5の1080P Wの動画なので16:9の「69.5」で設定する。
SuperViewの数値がないが適当に「120」とか入れても補正できたので水平保持には関係ないのかもしれない(プログラム未確認)
69行目:int offset = -30;
動画とCSVデータのタイムラグを調整する。
とりあえずそのままでもOK。水平補正がずれるようなら微調整する。
各GoProで固有の値があるらしい。初期値は-30。単位はマイクロ秒。
74行目:float smooth = 1;
回転のスムーズさ。。.95 ➡ 1 に書き換える
75行目:float smoothZ= .95
Z軸方向スムーズさ。.95 ➡ 1 に書き換える
76行目:float limitY = -1;
Y軸回転の制限。.02 ➡ -1 に書き換える
78行目:float limitZ = -1;
水平方向回転の制限。.06 ➡ -1 に書き換える
これでスケッチの初期設定が完了。
ソースファイルの用意
先程自動で作られた「gyrocam」フォルダの配下に「data」というフォルダを作成する。
またそのフォルダに動画ファイルとCSVファイルをコピー(移動)する。
ライブラリをインストールする
この状態で実行しても「 processing.video」というライブラリがないと怒られる。
No library found for processing.video
Libraries must be installed in a folder named ‘libraries’ inside the sketchbook folder (see the Preferences window).
メニューのスケッチ➡ライブラルをインポート➡ライブラリを追加
libraryタブの検索窓に「video」と入力し検索。
上記のライブラリを選択してインストールをクリックする。
これでやっと準備完了。
スケッチを実行する
IDEの上にある三角の再生ボタンっぽいのをクリックするとスケッチが実行される。
フォルダにAfter Effects用のキーフレームファイルが作成される。
この中の [元動画のファイル名]-AErotation.csv が水平補正用のファイルとなる。
③AfterEffectsで回転を補正する
Adobe AfterEffectsをインストールする
導入済みの場合はスキップしてください。
www.adobe.com
動画読み込み
Adobe AfterEffectsを起動。
「新規コンポジション フッテージから」➡元動画を選択
キーフレームをクリップボードにコピー
gyrocam.pdeで作成された[元動画のファイル名]-AErotation.csvをエクセルで開く。
表全体選択➡コピー
csvファイルなのでやGoogle スプレッドシートやOpenOfficeでもいいはず(未検証)
動画の詳細を展開➡トランスフォーム➡回転を選択した状態で貼付け(ペースト Ctrl+V)
これで○フレーム目に△度回転させるというデータが転記される。
これが冒頭の動画。
補正データの貼付け前 ➡ 貼付け後
youtu.be
センサーデータ補正の利点
・機械要素がないの故障などの心配がない。
・GPS非搭載のGoPro HERO5 Session でも利用できる。
センサーデータ補正の欠点
・傾いて動画が切れた部分をクロップ(トリミング)すると1/4ほどの画面サイズとなってしまう。
www.youtube.com
・編集が面倒
・AfterEffectsが高い
AfterEffectsの体験版の期限が切れたらキーフレームのインポートに対応したフリーの動画編集ソフトを探してみよう。
それに合わせてgyrocam.pdeを改変しよう。
せっかくgitにあげてくれてるんだからforkとやらをしたほうがいいんだろうか。。。
【関連記事】
>>>【2018最新】GoPro用 防水シンバル・スタビライザー