2入力した映像を比較してオリジナルにどれだけ忠実であるか SSIM の値を計算する。主な用途はエンコード前後を比較してどれだけ劣化したのか、特定のフレームを抽出してエンコードを見直したりする。libx264 エンコードでリアルタイムで計測する場合はオプションの -tune ssim -ssim 1
を使う。
Windows の ffmpeg で生放送する方法 : エンコードのログ出力の方法
最終結果だけを表示
ffmpeg -i input1 -i input2 -filter_complex ssim -an -f null -
ログファイルを出力する
ffmpeg -i input1 -i input2 -filter_complex ssim=stats.txt -an -f null -
ログファイルの見方
- n
フレーム番号 - Y, U, V, R, G, B
コンポーネント別の SSIM。1 に近いほど忠実 - All
全体の SSIM - dB
dB での値。大きいほど高画質
似た指標に PSNR もあるが主観的な画質の比較なら SSIM のほうがよい。
http://www.jiima.or.jp/pdf/5_JIIMA_guideline.pdf より
PSNR | SSIM | 主観評価 |
40~∞[dB] | 0.98以上 | 元の画像と圧縮画像の区別がつかない |
30~40[dB] | 0.90~0.98 | 拡大すれば劣化がわかるレベル |
30以下[dB] | 0.90以下 | 明らかに劣化がわかる |
x264におけるSSIMの目安
http://www.wikihouse.com/htumenc/index.php?SSIM より
SSIM値 | qp設定値(例) | |
0.98 以上 | 20 | オリジナルと区別がつかない。 |
0.95 | 30 | 見るに耐えない。(*または辛うじて、そこそこ見られる*) |
0.9 | 40 | 非常に醜い。 |
0.8 | 51 | これ以上は圧縮できない |
0.7 以下 | – | 素材に大量のノイズを加え、さらにそのノイズを量子化工程で消し去るほどqpを高くしない限り、達成困難。 |
公式ドキュメント
FFmpeg Filters Documentation :: ssim
FFmpeg Filters Documentation :: psnr