camera_shake.jpg


手ブレ加工フィルタを試す

 Olive+に新たに「手ブレ加工」フィルタ機能が追加されました。ビデオカメラなどで、手ブレ「補正」機能を持ったものがありますが、このフィルタは全く逆の働きをします。撮影した動画に、後から手ブレを加えて緊迫感や臨場感を演出するなど、使い道は様々です。
 今回は、CG(Xi-TRACE)で作った(手ブレの全くない)動画に手ブレを加工してみたいと思います。

普通に手ブレを加工してみる

 「落下物の座標計算」で作ったCG動画を引用しておきます。



 「落下物の座標計算」のページで解説したように、データ中、重力加速度g=9.8を使用しています。0.98でも、980でもなく、9.8、ですので、まぎれもなく、データ中の数値1は、1[m]を指していることになります(地球の重力加速度は9.8[m/s2]なので)。という事は、落下していく小さな球体の直径が1[m]なので、結構大きな物体が落下していく様子だという事も、「落下物の座標計算」ページで解説済みです。あと、この動画は上下が反転していて、落下していく物体が宙に飛んでいくように見えていることも、解説済みです。

 視野面(カメラ)の設定を確認してみると、落下物の奥行きの中央付近が(0, 0, 500)という座標になっていて、その周辺を(0, -500, 400)の点から眺めています。

  view 20, 0,0,-1, 0,0,500, 0,-500,400, 5;

 つまり、落下物のあるあたりから、ざっと、510[m](=sqrt(sq(0-0)+sq(0+500)+sq(500-400))=509.90…)離れた点から、結構な望遠レンズで撮影していることになります。仮に三脚でカメラを固定したとしても、風や地面からの振動がカメラに伝わって、多少は手ブレしますよね?上で引用したようにピタッと静止した映像にはならないはず。ピタッと静止するのは「CGならでは」ですが、少し不自然。

 Olive+を起動して、「連続メニュー ⇒ 手ブレ加工」を選択します。

finout.png

 「入力ファイル」の「…」ボタンを押して、動画のAVIファイルを指定します。「出力ディレクトリ」と「出力ファイル名」を適切に設定します。もし、二度目以降の実行で、既に出力ファイルが存在するなら、「今ディレクトリにあるファイルを削除」にチェックを入れます(入れないと、現在のファイルに追記します)。
 設定できたら「OK」ボタンを押して先に進みます。

cshake.png

 まずは、デフォルト設定で手ブレ加工してみて、後で微調整しましょう。「OK」ボタンを押すと処理が始まります。処理終了までしばらくお待ちください。



 どんな手ブレを加工したいか?にもよりますが、まあ、普通に加工するだけなら、デフォルト設定で十分な様です。以下、微調整する時の考え方です。

フレーム内ブレの計算

 手に持ったビデオカメラで動画を撮影した場合、シャッタースピードが十分速い場合は、全てのフレームで被写体がきっちり止まって撮影できます。一方、手ブレのスピードより、シャッタースピードの方が遅かった場合、シャッターが開いている間にも、手ブレによって被写体が移動してしまうため、フレーム内でブレて撮影されます。
 先ほどの設定パネルの中で、「フレーム内ブレを計算する」にチェックすると、この様なフレーム内ブレをエミュレートすることができます。チェックボックスと同じ高さにあるフィールドにサンプリング数を設定してください。フレーム内ブレを実現するためには、時間軸方向に何点かサンプリングして平均化するしかありませんので、サンプリング数の分だけ計算時間が増大します。例えば、サンプリング数を10に設定すると、計算時間がほぼ×10倍になります。

 非常に計算時間がかかる機能のため、気軽に使える機能ではありませんが、特に大きな手ブレを加工する時に、この機能を有効にすると、リアルな手ブレを表現することができます。

 今度は、「コップに水をそそぐ」で作った動画にフレーム内ブレを適用した手ブレを加工してみます。まずは、手ブレ無しの動画。



 フレーム内ブレを表現するには、ある程度大きな手ブレが必要ですので、「元画像と切り出し矩形の比」に、デフォルトより少し小さい0.95、「手ブレの大きさ」にも、デフォルトより少し大きい0.4と言う値をセットしました。
 最後に「フレーム内ブレを計算する」にチェックを入れ、その右側のフィールドにサンプリング数として4を設定します。

iframe_4.jpg×4

 サンプリング数4では、どんな感じでフレーム内ブレが起きるのか?を、確認することができました。ただし、サンプリング数が圧倒的に足りないようです。ザラザラとノイジーなブレとなっています。

iframe_16.jpg×16

 今度は一気にサンプリング数を16にしてみました。動画の中で見たら、それらしく見えるかもしれませんが、まだザラついて見えます。更に、×32と×64倍サンプリングが以下。

iframe_32.jpg×32

iframe_64.jpg×64

 うーん、64倍サンプリングでも、こんなものですか……。だいぶマシになりましたが、静止画で見るとまだ粗が目立ちます。思った以上に手強い。
 何しろ、フレーム内ブレなしの場合に比べて、処理量が×64倍になっています。フレーム内ブレなしの処理に1分かかっていたら、×64倍サンプリングでは64分かかる計算になります。……実際の計測では、サンプリング処理以外の処理部分があるため、64倍ほどの差は開きませんでしたが、

 サンプリング数×64で、計算時間は×37倍かかりました……。

 手ブレ動画をコマ送りで確認していくと、動き(手ブレ)の大きいところではフレーム内ブレも大きく、動き(手ブレ)の小さいところではフレーム内ブレも小さくなっていることが確認できます。シャッターが開いている間に動いた分だけ、ブレるのがフレーム内ブレなので、期待通りです。
 そもそも、物体のエッジがクリアなCGだったので、粗が目立ったのかもしれません。ビデオカメラなどで撮影した、自然画像の動画であれば、少なめのサンプリング数でも綺麗に見えるかもしれませんので、対象の動画で試してみてください。

 比較のため、元の手ブレ無し動画と、フレーム内ブレ付手ブレ動画を左・右に並べた動画を作成しました。見比べてみてください。ちなみに、以下の動画に使用したサンプリング数は×128です(1,920×1,080ドット60フレーム2秒の動画に対して、作者の環境で処理時間は64分でした)。



home

download

gallery