MVtools覚え書きページその2。
「複雑なシーン」や、「ジッターやノイズが多くかつ動きの小さなシーン」などにMVtoolsでモーションブラーを適用しようとすると、1フレーム丸ごとブラー処理されず次のフレーム処理に移り、取りこぼしが発生しちゃう。

なんとかパラメータを弄って「複雑な動画も上手いこと処理してくれないかなあ・・・」と悪戦苦闘した結果メモ。

通常のスクリプト
AVISource("c:\test.avi")
super = MSuper()
backward_vectors = MAnalyse(super, isb = true)
forward_vectors = MAnalyse(super, isb = false)
MFlowBlur(super, backward_vectors, forward_vectors, blur=50)
一番効果の上がったスクリプト(ただし非常に重い)
AVISource("c:\test.avi")

super = MSuper(hpad=0,vpad=0,pel=4,rfilter=0)

 backward_vectors = MAnalyse(super, overlap=2,  isb =true,search=3,delta=1,  blksize=4 , blksizev=4)
 forward_vectors = MAnalyse(super, overlap=2,  isb =false,search=3,delta=1,  blksize=4 , blksizev=4)

MFlowBlur(super, backward_vectors, forward_vectors, blur=50)

サンプル

Vueという景観制作3DCGソフトで、ゆっくりと動く山並み風景のアニメーションを制作し、それにブラーをかけて見た。

処理前
サンプル
▲クリックで拡大(200%)
はっきり言ってギザギザのガクガク。さらにこれが動画になると、ジッターも酷い。
もちろん、CGソフト内にこれらのノイズを軽減させる機能は盛り沢山用意されている。
レンダリング処理に時間をかければ、3DCGツール内で全部のノイズを取り払う事は可能。・・・・でも、画像処理に時間がかかりすぎる('Α`)

MVtoolsで処理後
サンプル(処理後)
▲クリックで拡大(200%)
色々と悪戦苦闘したが、ほぼ違和感の無い結果が出た。
画面全体スムーズに流れるし、ジッターの量も体感8割くらい減った。
処理の精度は随分と落ちるが、全部3DCGソフトに処理させて似たような結果を得る為には、MVToolsの300~1000倍くらいの処理時間が必要だ。

スポンサー リンク

メモ

MSuper
 hpad,vpad・・・小さな値にした方が画面フチ部分の処理がキレイ
 rfilter・・・・4の方がキレイな仕上がりになる。0の方がブラーさせやすい
 pel・・・通常は2が良さそう。ノイズの多い複雑な絵の場合、4の方が処理抜けしない。
 rfilter、pel両方を最大(共に4)にすると、とんでもなく処理が重くなった。

MAnalyse
 blksize,blksizev・・・小さいほうが処理が正確。最小4
 overlap・・・・大きいほうが処理が正確。blksize,blksizevの半分の値が最大値
 search・・・・色々試したが、3が一番無難。

その他のパラメータ
 ・delta・・・動きの小さな動画の場合、ここで参照フレームの枚数を増やす事で
      処理ヌケを回避できる。(当然重くなる)
      また、ブラーのボケ具合を大きくしたい場合もココ
 ・pelclip・・今回のようなサンプルではpelclipによるアップサンプリングの効果は無し。
      逆に、縮小したりブラーかける等、データ量を減らす工夫の方が効果が
      大きかった。
 ・その他・・・色々試すものの、大きな効果はなし。

メモその2(どうしても処理抜けしてしまう場合)

 ・blur(0.5) くらいでソース画像をボカして見る
 ・LanczosResizeを利用して、半分くらいのサイズに縮小してみる
  (BicubicResize や Spline16Resize より、LanczosResizeの方が
   良い結果が出た。理由はわからない)
 ・deltaの値を大きくする(ブラーのかかりが大きくなりすぎるのであんまりオススメできない)

上記の対策を行うと、もちろん画質は大幅に甘くなる。
が、もともと画面をボカしたくて処理を行っているので、仕方が無い事だと思って諦める。