AviSynthのぺーじ/インターレース解除

これは、かつて「にーやんのAviSynthのぺーじ」として公開されていたものを転載したものです。内容は古く、間違いも含まれている可能性があります。より正確で新しい情報を知りたい場合は、AviSynth 付属のヘルプや AviSynth 公式サイトを参考にすることをおすすめします。AviSynth WikiAviSynth入門なども活用してください。

TomsMoCompプラグイン

 TomsMoCompプラグインは動き補償機能搭載のインターレース解除プラグインです。

 このページでは、TomsMoCompプラグインを使ってインターレース解除する方法を紹介します。

 なお、インターレース解除は必ず行わなければならないものではありません

 MPEG-2などインターレースに対応した動画形式(コーデック)で、インターレースを保持したままエンコードする場合は、以下の記事は関係ありません。

 テンプレートでは、22-24行目にTomsMoCompの設定行があります。

###### 6.インターレース解除 / 24fps化 #####
#//--- インターレース解除 ---//
#TomsMoComp(1, 5, 0)

 TomsMoCompフィルタは次のように記述します。

TomsMoComp(TopFirst, SearchEffort, VerticalFilter)

 TomsMoCompにはTopFirstSearchEffortVerticalFilterの3つのパラメータが用意されており、それぞれ数字で指定します。

 次にそれぞれのパラメータの意味と指定の仕方を見ていきましょう。

TomsMoCompのパラメータ

TopFirst - フィールドオーダーの指定

 TopFirstで、フィールドオーダーがトップファーストであるかどうかを仮定します。

 トップファーストならば1、トップファーストではない(ボトムファースト)ならば0を指定します。

 ここでは、1はYes(true)、0はNo(false)の意味で使われています。

 また-1を指定すると、AviSynthが報告したフィールドオーダー(AviSynthがどちらのフィールドが優先的であると捉えているか)を自動的にピックアップします。

 フィールドオーダーについては、フィールドオーダーの指定のページを参考に、あらかじめ確認しておいてください。

TopFirst
1トップファースト
0ボトムファースト(トップファーストではない)
-1自動(AviSynthによる判定)

SearchEffort - 動き補償のしきい値

 SearchEffortTomsMoCompプラグインの最大の特徴である動き補償のためのしきい値です。

 動きのあった画素を検索するために、どれくらいたくさんの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時間が増加
0Bob方式でインターレース解除
-1インターレース解除なし。垂直方向に2倍に拡大

VerticalFilter - 垂直フィルタ

 VerticalFilterは隣接する2ラインを平均化します。これにより、垂直方向の解像度は下がりますが、インターレースの解除残しを目立ちにくくすることができます。

 TopFirst同様、1がtrue(有効)、0がfalse(無効)です。

 下の画像はVerticalFilter(VF)を有効(1)にした場合と、無効(0)にした場合を比較したものです(IrfanView3.85で2倍に拡大したもの)。

VF 1(有効)tmc_vf1.png
VF 0(無効)tmc_vf0.png

 よく見るとVerticalFilterを有効にした画像の方が、若干ぼやけているのがわかると思います。

 もし解除残しの縞が目立つときはVerticalFilterを有効にしてみるのもいいかもしれません。

VerticalFilter
1有効
0無効

使用例

 たとえばトップファーストのビデオクリップを「SearchEffort = 5」に設定し、VerticalFilterを使用しないでインターレース解除する場合は、次のように記述します。

TomsMoComp(1, 5, 0)

 トップファーストなので「TopFirst = 1」、VerticalFilterを使用しないので「VerticalFilter = 0」になります。

 数値を記述する順番を間違えないようにしてください。

既知の問題

 TomsMoCompプラグインのSearchEffort値を大きく設定しすぎると、ドット状のノイズが発生します。

 この現象はSearchEffortの値を下げるか0以下に設定することで、ある程度、回避することが可能です。

 下のサンプル画像はTopFirstVerticalFilterの値は固定して、SearchEffort(SE)値のみを変化させたときのものです。

オリジナルtmc_org.pngオリジナルです。縞が見られます。
SE 15tmc_se15.png ドット状のノイズが発生しています。
SE 10tmc_se10.png SE15の場合よりはノイズが減っていますが、まだ残っています。
SE 5tmc_se5.png ドット状ノイズは、ほぼなくなりました。
SE 0tmc_se0.png SE0のときは動き補償は行われません。そのためドット状のノイズはありませんが、若干ぼやけた感じにも見えます。
SE -1tmc_se-1.png SE-1の時はインターレース解除なしで、画像が垂直方向に2倍に拡大されます。左の画像はSeparateFieldsフィルタでフィールド単位に分離した後、TomsMoCompフィルタをかけたもの。

 このサンプルでは5近くまでSearchEffort値を下げるとドット状のノイズは見られなくなりました。

 またTomsMoCompプラグインの作者であるtrbarry(Tom Barry)氏もホームページTomsMoCompの紹介文に、次のように書いています。

I currently just recommend SE=5 for everything.

(私は、今のところ、すべての場合においてSE(SearchEffort)=5をおすすめします。)

最終更新日 2003年12月28日


最終更新日時: 2014-03-12 (水) 23:36:45 (1990d)