2つ入力した映像を比較し PNSR(Peak Signal to Noise Ratio:2つの映像、または画像の同位置のピクセルの輝度を比較する指標)。MSE(mean squared error) は PSNR を計算するのに使われる。

関連フィルタ
2つの映像の画質評価をする SSIM
新しい映像の品質評価 libvmaf

海外カンファレンスで得た知見を最大化する 〜 NAB Show 2018 編 〜 : developers.cyberagent.co.jp

基本コマンド

最終結果だけを表示。1入力がオリジナルの動画で、2入力が PSNR を計算する動画
ffmpeg -i input1 -i input2 -filter_complex psnr -an -f null -

ログファイルを出力する。
ffmpeg -i input1 -i input2 -filter_complex psnr=stats.txt -an -f null -

metadata フィルタでフレーム単位でコンソールに表示する方法。ここでは unsharp フィルタの psnr_avg を表示している。
ffplay -i input -vf split[a][b];[b]unsharp[B];[a][B]psnr,metadata=print:key=lavfi.psnr.psnr_avg

映像に焼き付けて再生する。
ffplay -f lavfi -i movie=input1.mp4[a];movie=input2.mp4[b];[a][b]psnr,drawtext=fontfile="c\://Windows/Fonts/arial.ttf":fontsize=20:fontcolor=white:box=1:boxcolor=black@0.4:text='"PSNR="%{metadata\:lavfi.psnr.psnr_avg}'

lavfi.psnr.X 形式で X に代入できるのは、mse_avg, psnr_avg である。

framesync の設定にも対応している
2ファイル入力するフィルタの挙動設定 framesync

オプション

  • stats_file, f[string]
    ログファイルの出力名
  • stats_version[int]
    ログファイルのバージョン指定
    既定値:1、ログファイル1行目の項目を表示しない
    範囲:1, 2
  • stats_add_max[boolean]
    最大値をログファイルに出力するかの指定。出力する場合は stats_version=2 を指定する
    既定値:0

ログファイルの見方

  • psnr_log_version
    stats_version のバージョン
  • n
    フレーム番号
  • mse_avg
    すべてのチャンネルの不偏分散平均
  • mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
    個別のチャンネルの不偏分散平均
  • psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
    個別のチャンネルの psnr
  • max_avg, max_y, max_u, max_v
    YUVチャンネルの最大許容値の平均、個別のチャンネルの最大許容値

コメントを残す

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

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