Compare: Difference between revisions

From Avisynth wiki
Jump to navigationJump to search
Raffriff42 (talk | contribs)
m added category:Debugging/Diagnostic_filters
add link to avs+ documentation
 
(4 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{Template:FuncDef|Compare(clip_filtered ''clip'', clip_original ''clip'', string ''channels'', string ''logfile'', bool ''show_graph'')}}
__NOTOC__
<div style="max-width:60em" >


This filter compares the original clip "clip_original" and its filtered version "clip_filtered". The filtered version will be returned with the results of the comparison. Per frame the Mean Absolute Difference, Mean Difference and Peak signal-to-noise ratio ([[PSNR]]) is given, as well as the min (minimum), avg (average) and max (maximum) PSNR up to that frame (calculated frame-wise). Starting from v2.53, the 'Overall PSNR' (calculated over all pixels in all frames) is also shown on the output clip.
<div {{BlueBox2|40|0|3px solid purple}} >
{{AvsPlusFullname}}<br>
Up-to-date documentation: [https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/compare.html https://avisynthplus.readthedocs.io]
</div>


The ''channels'' (default "") string is a combination of R,G,B [,A] or Y,U,V, depending on the source clips. If it is empty (default), it means either "[[YUV]]" when the input clips are YCbCr or "[[RGB]]" when in the input clips are RGB.


If ''show_graph'' (default true) is true then Marc's PSNR graph is also drawn on it.
Compares two clips (the "filtered" clip and the "original" clip) and returns the following data for each frame:
:;Mean Absolute Deviation <sup>[[wikipedia:Statistical_dispersion|1]]</sup>
::''(minimum, average, maximum)''
:;Mean Deviation
::''(minimum, average, maximum)''
:;Max. Positive Deviation
:;Max. Negative Deviation
:;Peak Signal-to-Noise Ratio (PSNR) <sup>[[PSNR|2]]</sup>
::''(minimum, average, maximum)''
:;PSNR
::''(minimum, average, maximum)''
:;Overall PSNR


If a logfile is specified, the results will be written to a file by this name and not drawn on the clip. It is much faster if you need to compare a lot of frames.
These data are displayed on screen by default (see [[#Examples|example image]]), or can optionally be written to a {{FuncArg|logfile}}.  


'''Examples:'''
By default a ''PSNR graph'' is displayed; this graph shows overall PSNR visually as a timeline that grows left-to-right along the bottom of the screen as the clip plays.


# displays differences on screen:
=== Syntax and Parameters ===
Compare(clip1, clip2)
{{FuncDef
|Compare(clip ''clip_filtered'', clip ''clip_original''<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  [, string ''channels'', string ''logfile'', bool ''show_graph'' ] )
}}


  # for creating a log file:
{{Par2|clip_filtered, clip_original|clip|}}
:The "filtered" clip and the "original" clip. Size and color formats must match.
:Color format may be [[RGB24]], [[RGB32]], [[YUY2]] or [[YV12]].
:The "filtered" clip is returned.
 
{{Par2|channels|string|""}}
:Set the color channels to be compared with a combination of ''R'',''G'',''B'' [,''A''] or ''Y'',''U'',''V'', depending on the source color format.
:By default, all channels are compared.
 
{{Par2|show_graph|bool|true}}
:If true, (the default) the PSNR graph is drawn on the screen.
 
{{Par2|logfile|string|""}}
:If specified, the results will be written to a file, and not drawn on the clip.
:Using a {{FuncArg|logfile}} is much faster if you need to compare a lot of frames.
 
=== Examples ===
* Basic usage &ndash; display differences on screen:
<div {{BoxWidthIndent|36|2}} >
[[FFmpegSource|FFmpegSource2]]("[http://www.sintel.org/ sintel].mp4")
A=[[BicubicResize]](640, 272)
  B=A.[[Sharpen]](1.0) ## Sharpen is our ''filter under test''
return Compare(B, A)
</div>
:[[File:Compare-Sintel-9507.png]]
 
* Create a log file:
<div {{BoxWidthIndent|36|2}} >
  Compare(clip1, clip2, "", "compare.log")
  Compare(clip1, clip2, "", "compare.log")
</div>


# will only compare chroma channels of YUY2 clips:
* Compare chroma channels only:
<div {{BoxWidthIndent|36|2}} >
  Compare(clip1, clip2, "UV")
  Compare(clip1, clip2, "UV")
</div>
</div>


=== External Links ===
*[http://forum.doom9.org/showthread.php?t=29538 discussion]


'''Changes:'''
=== Changes ===
{| border="1"
{| border="1"
|-  
|-  

Latest revision as of 05:20, 18 September 2022

AviSynth+
Up-to-date documentation: https://avisynthplus.readthedocs.io


Compares two clips (the "filtered" clip and the "original" clip) and returns the following data for each frame:

Mean Absolute Deviation 1
(minimum, average, maximum)
Mean Deviation
(minimum, average, maximum)
Max. Positive Deviation
Max. Negative Deviation
Peak Signal-to-Noise Ratio (PSNR) 2
(minimum, average, maximum)
PSNR
(minimum, average, maximum)
Overall PSNR

These data are displayed on screen by default (see example image), or can optionally be written to a logfile.

By default a PSNR graph is displayed; this graph shows overall PSNR visually as a timeline that grows left-to-right along the bottom of the screen as the clip plays.

Syntax and Parameters

Compare(clip clip_filtered, clip clip_original
      [, string channels, string logfile, bool show_graph ] )

clip  clip_filtered, clip_original =

The "filtered" clip and the "original" clip. Size and color formats must match.
Color format may be RGB24, RGB32, YUY2 or YV12.
The "filtered" clip is returned.

string  channels = ""

Set the color channels to be compared with a combination of R,G,B [,A] or Y,U,V, depending on the source color format.
By default, all channels are compared.

bool  show_graph = true

If true, (the default) the PSNR graph is drawn on the screen.

string  logfile = ""

If specified, the results will be written to a file, and not drawn on the clip.
Using a logfile is much faster if you need to compare a lot of frames.

Examples

  • Basic usage – display differences on screen:
FFmpegSource2("sintel.mp4")
A=BicubicResize(640, 272)
B=A.Sharpen(1.0) ## Sharpen is our filter under test
return Compare(B, A)
  • Create a log file:
Compare(clip1, clip2, "", "compare.log")
  • Compare chroma channels only:
Compare(clip1, clip2, "UV")

Changes

v2.58 Added YV12 support.