## Compare

`Compare` (clip_filtered, clip_original, string "channels", string "logfile", bool "show_graph")

このフィルタは、オリジナルのクリップ（clip_original）とそのフィルタ適用済みのバージョン（clip_filtered）を比較します。フィルタ適用済みのバージョンは、比較の結果付きで返却されます。フレームごとに Mean Absolute Difference*1 、Mean Difference*2およびピーク信号対雑音比（PSNR）*3のほか、（フレームごとに計算される）そのフレームまでの PSNR の min （最小値）、avg （平均値）および max （最大値）も与えられます。v2.53 から、（すべてのフレームのすべてのピクセルにわたって計算される）「Overall PSNR*4」も出力クリップ上に表示されます。

channels 文字列（デフォルト ""）は R、G、B （、A）または Y、U、V のいずれかの組み合わせからなり、どちらを使用するのかはソースクリップによります。空の場合*5、入力クリップが YCbCr なら "YUV" を、入力クリップが RGB なら "RGB" を意味します。

show_graph （デフォルト false）が true なら、Marc の PSNR グラフも描画されます。

logfile が指定されると、結果はその名前でファイルに書き出され、クリップ上には描画されません。たくさんのフレームを比較する必要がある場合にはずっと高速です。

使用例:

    # 画面上に 2 つのクリップの差を表示する:
    Compare(clip1, clip2)
    # ログファイルの生成用:
    Compare(clip1, clip2, "", "compare.log")
    # YUY2 クリップの色差チャンネルのみ比較する:
    Compare(clip1, clip2, "UV")

PSNR*6 は、dB（デシベル）で評価されます。以下のように定義されます*7

    MSE(I,K) = 1/M * sum_{j,k} | I(j,k) - K(j,k) |^2
    PSNR(I,K) = 20 * log_10 ( 255/sqrt(MSE(I,K)) )

(j,k) は、フレームのすべてのピクセルに及びます。M は、フレーム内のピクセル数です。

更新履歴:

v2.58 | YV12 サポート。

`原文 Date: 2008/06/16 19:42:53`
`日本語訳 $Date: 2008/08/13 02:48:39 $`

- 訳者註:
  - *1 MAD。絶対誤差平均。
  - *2 平均差。
  - *3 PSNR は Peak Signal to Noise Ratio の略。日本語では「ピーク信号対雑音比」。参考: PSNRとは - Mov日記 - Fraternity7、2008-07-10 - makorin72の日記（と、いうよりもメモ）
  - *4 「Overall PSNR は、すべてのビデオフレームがタイル上に敷き詰められて巨大な 1 つの画像になったかのようにビデオシーケンスを取り扱います。PSNR は、この巨大な画像に対して効果的に算出されます。」（Overall PSNR for Compare() - Doom9's Forum より）
  - *5 "" のこと。下記の使用例の 2 つ目を参照。
  - *6 訳者註の 3 を参照。
  - *7 式中の MSE は、平均二乗誤差（Mean Squared Error）の意味。