AviSynthのGPUを利用したノイズ除去プラグイン「FFT3DGPU」関連のメモ。
SDサイズの動画エンコで使っていたスクリプトをHDサイズの動画に使うと、正しく処理できない場合があるみたいです。原因はFFT3DGPUのパラメータ、bw、bh、ow、ohっぽい。
(GPUを使わないオリジナルのFFT3Dとは作動が少し異なるので注意。)

FFT3DGPUのスクリプト例

以下、448x256~960x540と比較的小サイズの動画をエンコしてた時の設定
FFT3DGPU(sigma=2,beta=1,plane=1,bw=16, bh=16, ow=8, oh=8, bt=3,mode=2,sharpen=0, nterlaced=false, NVPerf=false, wintype=0, precision=0 )

FFT3DGPUは、ノイズ除去処理をブロックに分けて行いますが、bw、bh、は一度に計算する横幅、高さをピクセル単位で指定するもの。4を最小に8,16,32,64,128,256,512と2進数でキリの良い数値入力指定します。

 

エラー発生

ビデオカードに9600GTを利用して、448X336~960X540サイズの動画を処理する場合は、
bw=16,bh=16,ow=8,oh=8,とすると画質・速度両面で一番効率良く処理できた。しかし1280x720サイズ以上ではエラーが発生する事が分かった。

画面下半分が緑になったり、まっ黒になったり、紫になったり、色差、明度差でのズレが発生する。

FFT3DGPUの良くある不具合
  ・スリープ復帰後に緑
  ・GPUクロックを可変させると緑
  ・特定バージョンのドライバで緑
とは何やら違う症状が発生。

途中のある一定ブロックから以降が色化けしている感じ。

エラー解消方法

bw=32,bh=32,ow=16,oh=16,とブロックの単位を大きくしてやるとエラー解消した。
CUDAプロセッサーの数に対して過剰なブロック数を送るとエラーが出るんだろうか?

HDサイズの動画とSDサイズの動画では、FFT3DGPUのパラメータの一部を変更しないとダメみたい。

サイト内関連ページ

  1. AviSynthのGPUプラグインFFT3DGPU(覚書き)
  2. FFT3DGPUを二重に使ってみる
  3. FFT3DGPU使うと緑になっちゃうよヽ(`Д´)ノ ≫ 解決(´∀`)ノ