AviSynthのぺーじ/インターレース解除
これは、かつて「にーやんのAviSynthのぺーじ」として公開されていたものを転載したものです。内容は古く、間違いも含まれている可能性があります。より正確で新しい情報を知りたい場合は、AviSynth 付属のヘルプや AviSynth 公式サイトを参考にすることをおすすめします。AviSynth Wiki の AviSynth入門なども活用してください。
TomsMoCompプラグイン †
TomsMoCompプラグインは動き補償機能搭載のインターレース解除プラグインです。
このページでは、TomsMoCompプラグインを使ってインターレース解除する方法を紹介します。
なお、インターレース解除は必ず行わなければならないものではありません。
MPEG-2などインターレースに対応した動画形式(コーデック)で、インターレースを保持したままエンコードする場合は、以下の記事は関係ありません。
テンプレートでは、22-24行目にTomsMoCompの設定行があります。
###### 6.インターレース解除 / 24fps化 ##### #//--- インターレース解除 ---// #TomsMoComp(1, 5, 0)
TomsMoCompフィルタは次のように記述します。
TomsMoComp(TopFirst, SearchEffort, VerticalFilter)
TomsMoCompにはTopFirst、SearchEffort、VerticalFilterの3つのパラメータが用意されており、それぞれ数字で指定します。
次にそれぞれのパラメータの意味と指定の仕方を見ていきましょう。
TomsMoCompのパラメータ †
TopFirst - フィールドオーダーの指定 †
TopFirstで、フィールドオーダーがトップファーストであるかどうかを仮定します。
トップファーストならば1、トップファーストではない(ボトムファースト)ならば0を指定します。
ここでは、1はYes(true)、0はNo(false)の意味で使われています。
また-1を指定すると、AviSynthが報告したフィールドオーダー(AviSynthがどちらのフィールドが優先的であると捉えているか)を自動的にピックアップします。
フィールドオーダーについては、フィールドオーダーの指定のページを参考に、あらかじめ確認しておいてください。
TopFirst | |
1 | トップファースト |
0 | ボトムファースト(トップファーストではない) |
-1 | 自動(AviSynthによる判定) |
SearchEffort - 動き補償のしきい値 †
SearchEffortはTomsMoCompプラグインの最大の特徴である動き補償のためのしきい値です。
動きのあった画素を検索するために、どれくらいたくさんのCPU時間を使用するかを決定するのに使われます。
指定可能な数値は-1から30までの整数で、このうち動き補償が機能するのは1から30までのときです。
値が大きいほど動き検索に使用されるCPU時間が多くなりますが、15以上の数値はCPUへの負荷が大きくなるため推奨されていません。
ただし実際に利用可能な数値は1,3,5,9,11,13,15,19,21,maxで、これら以外の数値を指定した場合、これらの数値の中からもっとも近い値が適用されます。
SearchEffortが0の時は動き補償は無効で、Bob*1方式でインターレース解除します。
SearchEffortが-1の時はインタレース解除が行われず、画像を垂直方向に2倍に拡大します。この場合、すでにプログレッシブ*2化(ノンインタレース化)が行われていることが前提となります。
SearchEffort | |
1-30 | 数値に応じて動き検索に使用するCPU時間が増加 |
0 | Bob方式でインターレース解除 |
-1 | インターレース解除なし。垂直方向に2倍に拡大 |
VerticalFilter - 垂直フィルタ †
VerticalFilterは隣接する2ラインを平均化します。これにより、垂直方向の解像度は下がりますが、インターレースの解除残しを目立ちにくくすることができます。
TopFirst同様、1がtrue(有効)、0がfalse(無効)です。
下の画像はVerticalFilter(VF)を有効(1)にした場合と、無効(0)にした場合を比較したものです(IrfanView3.85で2倍に拡大したもの)。
よく見るとVerticalFilterを有効にした画像の方が、若干ぼやけているのがわかると思います。
もし解除残しの縞が目立つときはVerticalFilterを有効にしてみるのもいいかもしれません。
VerticalFilter | |
1 | 有効 |
0 | 無効 |
使用例 †
たとえばトップファーストのビデオクリップを「SearchEffort = 5」に設定し、VerticalFilterを使用しないでインターレース解除する場合は、次のように記述します。
TomsMoComp(1, 5, 0)
トップファーストなので「TopFirst = 1」、VerticalFilterを使用しないので「VerticalFilter = 0」になります。
数値を記述する順番を間違えないようにしてください。
既知の問題 †
TomsMoCompプラグインのSearchEffort値を大きく設定しすぎると、ドット状のノイズが発生します。
この現象はSearchEffortの値を下げるか0以下に設定することで、ある程度、回避することが可能です。
下のサンプル画像はTopFirstとVerticalFilterの値は固定して、SearchEffort(SE)値のみを変化させたときのものです。
このサンプルでは5近くまでSearchEffort値を下げるとドット状のノイズは見られなくなりました。
またTomsMoCompプラグインの作者であるtrbarry(Tom Barry)氏もホームページのTomsMoCompの紹介文に、次のように書いています。
I currently just recommend SE=5 for everything.
(私は、今のところ、すべての場合においてSE(SearchEffort)=5をおすすめします。)
最終更新日 2003年12月28日
*1 参考: http://www.watch.impress.co.jp/pc/docs/article/20001109/key142.htm#Bob
*2 参考: http://e-words.jp/w/E38397E383ADE382B0E383ACE38383E382B7E38396.html