nlmeans
フィルタ並みに処理が遅いが、フレーム間の動きを推定してデノイズする3次元デノイザbm3d
フィルタの使い方。3次元のデノイザは他に hqdn3d
フィルタがある。bm3dはBlock-Matching 3Dの略語。
非局所平均のデノイザ nlmeans
Windows の ffmpeg で生放送する方法 – hqdn3d
- PDF : デジタル画像のスパース性抽出型ノイズ除去技術 – global.toshiba
- Block-matching algorithm – Wikipedia
- Block-matching and 3D filtering – Wikipedia
基本コマンド
ffmpeg -i input -vf bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic -c:a copy output
最初のチャンネル、YUVの映像なら輝度の Y だけフィルタを当てる。
ffmpeg -i input -vf bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1 -c:a copy output
estimを使って推定モードに変える。
ffmpeg -i input -vf split[0][1];[0]bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic[0a];[1][0a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1 -c:a copy output
先に当てるフィルタをnlmeans
に代える。
ffmpeg -i input -vf split[0][1];[0]nlmeans=s=3:r=7:p=3[0a];[1][0a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1 -c:a copy output
公式ドキュメント:FFmpeg Filters Documentation : bm3d
オプション
- sigma[float]
デノイズ強度の指定。この値がデノイズに大きな影響があるので映像によって調整する
既定値:1
範囲:0から99999.9まで - block[int]
2次元のローカルパッチサイズの指定
既定値:4
範囲:4から6まで - bstep[int]
処理ブロックのスライディングステップの指定。値が小さいほどより多くの参照ブロックを処理でき処理速度は遅くなる
既定値:4
範囲:1から64まで - group[int]
3次元の類似ブロックの最大数の指定。1にするとブロッキングマッチを行わない。値を大きくすると1つのグループ内のブロック数が多くなる
既定値:1
範囲:1から256まで - range[int]
探索ブロックマッチングの半径の指定
既定値:9
範囲:1からINT_MAXまで - mstep[int]
ブロックマッチングのための2区間のステップの指定。小さな値ほど遅くなる
既定値:1
範囲:1から64まで - thmse[float]
ブロックマッチングの二乗平均誤差のしきい値の指定
既定値:0
範囲:0からINT_MAXまで - hdthr[float]
3次元に変換されたドメインでのハードなしきい値の指定
既定値:2.7
範囲:0からINT_MAXまで - estim[int]
フィルタの推測モード指定。ブロックマッチングで2番目の映像を参照するときはfinalになる - 0, basic:既定値
- 1, final
- ref[boolean]
ブロックマッチングに2番目のストリームを参照する
既定値:0 - planes[int]
フィルタを当てるチャンネル指定
詳しくはffmpeg について | チャンネルの順番と注意点を参照
既定値:7(3つのチャンネル全部)
範囲:0から15まで