MVTools2とは

MVTools2とは(概要)

まずこのwikiにたどり着いた方で何をするためのツールなのか知らない方はいないと思われますが、MVTools2とは動画のモーション補間を行うAviSynth用のツール,プラグインです。
簡単に説明するとアニメなどの30fpsの動画のフレームを補間し、60fps化して動きを滑らかにしたりすることに使います。

導入方法

導入方法は現在記事作成検討中か編集検討中ですので、今はAviSynth解説サイトや60fps化の手順説明を行っている方のブログなどを参考にしてください。(リンクも検討中です)

公式サイト解説

MVToolsとは(以下引用翻訳)
MVTools2はモーションの動きから補間フレームを作成したり動きのベクトルを利用する関数のために動き推定サーバー関数MAnalyse()を持っています。

このプラグインはMPEG2やMPEG4に使用されているようなblock-matching method of motion estimation(ブロックマッチング動き補間とでもいうのでしょうか)を使用しています。まず動きを分析する段階ではフレームを小さなブロックに分割し現在のフレームともうひとつのフレーム(前後のフレーム)で似ているブロックを見つけようとします。もし似ているブロックで座標がシフトしているブロックは「動き(モーションベクトル)」として認識されます。このときブロックの類似性を計るために比較した2つのブロックのすべてのピクセルの絶対差(Sum of Absolute Difference=SAD)の合計を計算しています。このSADはモーション推定がどれだけうまくできているかの数値的な値でもあります。

MAnalyse()関数の出力は特殊なフォーマットでモーションベクトルを付加したクリップになります。

次に補間する段階ではプラグインのクライアント関数がモーションベクトルを読み取り、全体的な動きもしくは部分的な動きに対してブロックを補間するのにふさわしい場所に配置します。(完全に)動きを補間したすべてのオブジェクト(ブロック)は現在のフレームにおけるこのオブジェクトと同じ場所に置かれます。[1]
そう、例えば私たちは出てきた邪魔なノイズやゴースト(完全にオブジェクト同士が重なり合うときに端がとがる現象)を出すことなく、激しい動きに瞬間的に強いノイズ除去を掛けることもできてしまいす。プラグインでは毎フレームごとに隣接した補間フレームを形成することができ、内部関数でノイズ除去できます。また、補間されたフレームとオリジナルのフレームの間に挟むフレームのクリップを作成したり、一時的な外部フィルターによってノイズ除去したり、綺麗なオリジナルのフレームを中央出力に選択することができます。(使用例があります※編集中)

もちろん動き推定と補間は正確ではなく理想的なものではありません。複雑なモーション(フェージングや超速的な動きや周期的な構造のもの)においては完全に間違うかもしれませし、補間されたフレームはずんぐりしていたりあるいは醜かったりするでしょう。複雑さはオブジェクトによるので実際に動かしてみないと分かりません。多くの動き補償機能を備えた複雑なAvisynthスクリプトは巨大な量のメモリを食べて、非常に遅い処理に帰着するかもしれません。しかしそれはプラグインを発展させる最たるものです。それを適切なケースにのみ用いパラメーターの調整にトライしてみてください。
「at doom9 Avisynth forum」にてモーション補間についてのいろいろな議論があります。特に「old MVTools thread」「true motion thread」「new MVTools thread」などは見てみるといいでしょう。この記事についての書き込みやりサポート要求はそこで行ってください。もし本当にモーション推定や補間に興味が湧いたのでしたらいろんな科学の出版物がたくさんありますのでぜひネット検索してみてください。

追記:このプラグインは開発途中で現在のバージョンの使用期限は限られてます。YV12,YUY2(色情報のフォーマット)の二つのみが開発が進んでいます。カラーフォーマットを変換してインターレースビデオに「bob-deinterlace」を試してみてください(SeparateFieldsはSelectEven/SelectOddなしに動かせるかもしれません)。いくつかの複雑なスクリプト(MVBOB, MCBOB, TempGaussMC)はdeinterlaceのモーション補間で使えました。さらにmg262のモーションプラグインも試してみてください。

MVTools2とは
MVToll2は内部的にも外部的にも主力の更新版です。バージョン2の主な完成要求は明瞭性と安定性(とくにマルチコアCPUでのマルチスレッドにおける)そしてパフォーマンスとメモリ使用量の改善です。達成への足がかりは(多人数によって)ごちゃごちゃになったインデックス、そして内部の不思議な現象(MVToolのインデックスを見ずにスレッドを見る)の内部バッファーを解消することでした。パフォーマンスを分解せずにこれを実行するに私たちはAvisynthのキャッシュを使ったり準備段階(MAnalyse()関数によるモーション推定の前に)を導入したりといったことをしました。この段階では新しい関数MSuper()がソースクリップを習得したり多層(階層スケールの)フレームによる特別な"super"クリップを準備します(以前のバージョン0,1においてもこの階層スケールのデータは用意されており、これらの"superframe"の擬似的なインデックス「idx」として内部にキャッシュ保存されていました)。このsuperなclipはMAnalyse()関数とクライアントモーションを補間する関数両方に用いられます。

この影響で文法が変わったものとしてMAnalyse()関数のパラメータ(pel, sharp)はMSuper()関数に移行されました。

他の外部の変更要素としては命名されていたクリップパラメーターはAvisynthの暗黙の「最後の」クリップの正常な仕事のために名前をつけない(引用の際ダブルクォーテーション無しを義務づける)ようになりました。

また同じくYUY2のためのより早い平面処理をバージョン2.0では施行しました。

バージョン2.2からMVTools.dllはMVTools2.dllに名称変更、2.3からすべての関数がMVxxxからMxxxに変更(MVAnalyzeからMAnalyzeに変更されたため)されたので、古いスクリプトで古いMVtools 1.xを引き続き利用でき、dllファイルの読み込みを変更することなくMVTools2のスクリプトに「/」を使えます。

同じくMVDenoiseやMVFlowFps2といった時代遅れの(使わない)機能を削除する意図もあります。

すべての変更点は「修正」の項目にリストアップしています。

一般的に、新しいMVTools2.0はバージョン1.11.4の出力と同じ結果になります。アルゴリズムの改善要項はバージョン2.1以降に計画されています。

追記:バージョン2は現在α版(β?)です(処理は安定していますがいくつか文法が変わっています)。可能なバグ報告と議題展示(将来的な要求)は歓迎しています。

最終追記:MVTools バージョン1.xは開発中止されこれ以上サポートされません(by Fizick)。






  • *1完全に意訳なので読解力のあるかた訂正あったらお願いします。

名前:
コメント:

すべてのコメントを見る
+ タグ編集
  • タグ:
  • mvtools2
  • 60fps
  • 60fps化
  • AviSynth
  • MAnalyse
  • SAD
  • モーション補間
  • doom9
  • MSuper

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2013年03月09日 20:06