フリーソフトで動画の手ぶれ補正する

コンパクトデジカメどころかデジタル一眼でもムービーが撮れる昨今ですが、未だに手ぶれ補正のデジカメを使ったことがない身としては、写真はまだしも、手持ちで動画は手ぶれ的に大変です。
で、これだけデジカメが世に出回っているのだから撮った動画の手ぶれ補正ができるフリーソフトはないか、といろいろYahooでググってみたのですが、有料のソフトでは3〜4種類引っかかってくるものの、なかなかフリーは見つかりません*1。それでもしつこく探すと、見つけました。一応、Windows2000とかXPとかではできる、と書かれていて、Vistaではどうかわからない、報告求む、的なことが書かれていたりしたけれど、できなきゃ残念、できたらラッキーで。あらかじめバラしておくと、一応自分のVista環境でも問題なく手ぶれ軽減できました。

使うソフトは動画編集ソフトとしてVirtualDub、その手ぶれ補正用プラグインDeshakerVirtualDubVirtualDubの日本語パッチも出ているので必要なら。ちなみに書いている時点でVirtualDubは1.8.8、Deshakerは2.4。

基本的にhttp://www.sundancemediagroup.com/articles/deshaker_guide.htmとかhttp://www.guthspot.se/video/deshaker.htmを読むとわかりやすいのですが、非常にかいつまんでとりあえず手ぶれ補正できるところまでを説明します。

インストール

まずダウンロードした2つあるいは3つのファイルを解凍します。
解凍した時点でVirtualDubはもう起動することができます。必要ならProgramフォルダーなどにVirtualDubフォルダーごと移動する。日本語化パッチはVirtualDub.exeの入っているフォルダーにいれて、起動。Deshaker.vdfはVirtualDubのpluginsフォルダーに移す。これで、準備OK。

Deshaker設定

VirtualDub.exeを起動し、openfileあるいは動画を開くで補正したい動画を開く。VirtualDubで開くことができる動画は限られているので、開くことのできる形式にあらかじめ変換しておく*2。画面が2つ開き、左側が元動画、右がフィルター適応後動画。映像→フィルター→追加でDeshakerを選択し、設定画面が開く。

ほとんどがデフォルトでよいらしいけれども一部変更したほうがよい値があるらしい。例えばNTSC方式の動画の例。

左側のPass 1 & 2


1. Source pixel aspectをStandard NTSC (0.912)
2. Video typeを適切なものに。よくわからなかったので適当*3

Pass 1のところを選択


3. ScaleをFull (most precise)
4. Use pixelsをAll (most robust)

Pass 2もところを選択


5. Edge compensationをNone (large boders)
6. Use previous and future frames to fill in bodersの左のチェックボックスをクリック
7. Motion smoothnessのなかのZoom以外を3000くらい。どれくらい補正するか。値が大きいほどなめらかに。18000くらいまであげられるらしい。Zoomは0(off)に*4
8. Max. correction limitsを4つとも99に

以上設定終わったら、Pass 1を選択した状態でOKでDeshakerの設定画面終了、フィルターの選択画面もOKで終了。

Deshaker処理、保存

再生ボタン(右下にo印)クリック。するとPass 1が始まる。これはゆっくり。
Pass 1が終了したら、映像→フィルターでDeshaker→設定→設定画面でPass 2を選択した状態にし、OK、OK。映像→圧縮から保存時の形式を選択し、OK。ファイル→名前を付けて保存するとPass 2が始まり、動画が保存される。

細かいこと

以上でできるファイルは初期設定では前の30フレーム、後の30フレームを使ってそのフレームをつくっている関係で、はじめ30フレームはデータなし(注意書き)で、最後の30フレームはその分、削除するようになっています。例えば30フレーム/秒で10秒の動画を処理したとすると、はじめ1秒間注意書き、1秒目から10秒目までは入力ファイルの0秒目から9秒目に対応する動画の計10秒の動画が出来上がることになり、入力ファイルの9秒目から10秒目までに相当する部分が削除されてしまいます。これを防ぐために、30フレーム以上を含む何でもよい動画ファイルをPass 1が終わった時点でファイル→AVIセグメントの追加により追加してやり、Pass 2(名前を付けて保存)を行います。すると、9秒目から10秒目の部分も正常に保存され、1秒間注意書き、10秒間の補正済みファイル、追加されたファイル-1秒分のエラー動画が出来上がります*5

十分に長いファイルで後ろが多少切れても気にならない、かつ音声が重要でない場合はここまでスキップしてもよいかと。
できた動画ファイルをもう一度VitualDubで開き、前後の必要ない部分を切り取って完成です*6

処理設定の保存

ファイル→処理設定の保存ですべての設定が保存できるので保存してやると、次回からは以下の流れで少しだけ楽に。
動画ファイルを開く⇒処理設定を開く⇒映像→ファイル→設定→Pass 1を選択⇒再生oボタン⇒映像→ファイル→設定→Pass 2⇒名前を付けて保存、で完成。

元の動画と手ぶれ補正後の例

*1:macで言うとiMovieだかが新しいバージョンから手ぶれ補正機能がついた、とのことで。でもWindowsだし、Vistaだし。

*2:320*240と640*480で動画がとれるカメラを持っているけれど、640*480のほうが手ぶれ補正のかかり方はよいと思う。

*3:デジカメの動画機構はパラパラマンガ方式なので1.は1:1、2.はProgressive scanでよいと思う

*4:デフォルトの1500も試してみたらそっちのほうがスムーズだった。動画によると思う

*5:音声は0秒から流れるので、結果的に1秒早く流れます。音声→インターリープあたりで直すと吉

*6:なんかここをいっぺんにできないか色々試しましたが、VirtualDub初心者なのでなんともできませんでした。