View Single Post
Old 16th July 2003, 20:41   #5  |  Link
temporance
Registered User
 
Join Date: Mar 2002
Posts: 486
Great results!!

Watch out though: there is a problem with AviSynth's PSNR measurement as done by Compare(). It measures the PSNR for each individual frame and then calculates the arithmetic mean of the frame PSNRs to get a sequence PSNR.

What, you may say, is the problem with taking an average?

Taking the mean of the PSNR for every frame only ever gives a reliable result when all frames of the sequence are of similar complexity (approx same motion, texture, brightness etc.). If frames differ a lot, then the mean PSNR becomes squewed.

Worse, if a codec has very bad rate control, or something else causes a codec to produce variable quality throughout the sequence, then the mean PSNR as computed by AviSynth's Compare() will actually come out better .

What's the solution? The best approach is to compute one PSNR for the whole sequence by treating the sequence as if it was one huge video frame. The PSNR is then a function of the total noise energy in the whole sequence and no nasty averaging effects come into play. I tried to modify AviSynth to work like this, but I couldn't get it to compile. So if anyone knows how to make this change...
temporance is offline   Reply With Quote