nlmeansフィルタ並みに処理が遅いが、フレーム間の動きを推定してデノイズする3次元デノイザbm3dフィルタの使い方。3次元のデノイザは他に hqdn3d フィルタがある。bm3dはBlock-Matching 3Dの略語。

非局所平均のデノイザ nlmeans
Windows の ffmpeg で生放送する方法 – hqdn3d

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まで

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)