niiyan's blog

niiyanの個人ブログ。

RemoveDirt

説明書見てみたんですが、いろいろ設定できるぶん、何だか難しそうです。

挫折しそうな心にむち打って(笑)、パラメータに関係してそうなところだけ、簡単にまとめてみました。自分が試すための下準備みたいな感じです。

まだ使ってみてないですし、説明書をざっくり斜め読みしただけなので、間違っている可能性があります。英語が読める人は説明書を読んでください。

※バージョン0.5のリリースに合わせて、2004/2/29の投稿で、以下の記事に修正を加えたものを紹介しています。バージョン0.5を使用する場合は、そちらをご覧下さい。

書式

RemoveDirt(clip clip, clip neighbour, int dist, int mthreshold, int athreshold,
\ int pthreshold, int soscillation, int doscillation, int tolerance , int mode,
\ bool grey, bool debug, int show)

※順番不明

パラメータ

  • [ノイズ検出関連の変数]
    • pthreshold: ポストプロセスのしきい値(デフォルト50)
    • soscillation: この値を超えるピクセルを選択し、振幅を計算(デフォルト50)
    • doscillation: 振幅がこの値を超えていたら、ノイズ除去をやめる(デフォルト70)
  • [動き検出関連の変数]
    • mthreshold: 動き検出のしきい値(デフォルト150)
    • athreshold: 適用度のしきい値(デフォルト50)
    • dist: 範囲。1/近傍9pixel,2/近傍25pixel...(デフォルト1)
    • tolerance: 許容度。motionブロックの%がこの値を超えるとノイズ除去なし(デフォルト12)
    • neighbour: 反復処理用比較対象クリップ(デフォルトclip)
  • [ノイズ除去のモード用の変数]
    • mode: 0はシンプルな平均化。1は0と2の中間(実験的)。速さは0>2>1(デフォルト2)
  • [白黒クリップ用の変数]
    • grey: デフォルトはfalse
  • [デバッグ関連の変数]
    • debug: trueでdebugviewユーティリティ用のデバッグ出力(デフォルトfalse)
    • show: 1でノイズ除去済みブロックを、2でノイズ除去されていないブロックを赤く表示。YUY2のみ(デフォルト0)

注意点

Avisynthスレの81さんがまとめておられたのをパク…(略)

  1. RemoveDirtのあとにCropしないこと
  2. Cropするなら"align=true"(AviSynth2.5.3以降)で
  3. 24fpsものはRemoveDirtの前に逆テレシネしておかないとダメ
  4. 他のフィルタはRemoveDirtより後に

RemoveDirt簡易版(関数)

使い勝手が微妙っぽいので(失礼)、デバッグ関係とかのパラメータを省略して関数化してみました。名前に反して、あまりシンプルじゃありません(笑)

neighbour/grey/debug/showを省略(デフォルト値適用)し、mode=2に固定しています。

ちなみにこれも試していませんので・・・(^^;

  • [書式]
SimpleRemoveDirt(dist, mthreshold, athreshold, pthreshold, soscillation, doscillation, tolerance)
  • [例]
SimpleRemoveDirt(1, 150, 50, 50, 50, 70, 12)
  • [関数]
function SimpleRemoveDirt(clip clip, int "dist", int "mthreshold", int "athreshold",
\ int "pthreshold", int "soscillation", int "doscillation", int "tolerance")
{
#//--- デフォルト値の設定 ---//
dist = default(dist, 1)
mthreshold = default(mthreshold, 150)
athreshold = default(athreshold, 50)
pthreshold = default(pthreshold, 50)
soscillation = default(soscillation, 50)
doscillation = default(doscillation, 70)
tolerance = default(tolerance, 12)

#//--- メイン ---//
clip = clip.RemoveDirt(dist=dist, mthreshold=mthreshold, athreshold=athreshold,
\ pthreshold=pthreshold, soscillation=soscillation, doscillation=doscillation,
\ tolerance=tolerance, mode=2, grey=false, debug=false, show=0)
return clip
}