Registered User
Join Date: Dec 2003
Location: MO, US
Posts: 999
|
Sorry for hijacking your thread Fizick, but I'm gonna be w/o internet for the next 4 days so have to get everything done quick . Some results using the noisy clip with noise variance of 25 from the rar file I posted:
tested filters:
Code:
sw-3ddct(NoiseParam=4) <= sw-3ddct (not an avisynth filter)
dctfun4b(12) <= dctfun4b
tnlmeans(h=3.5,bx=1,by=1,sx=3,sy=3,ax=6,ay=6,az=2) <= tnlmeans
frfun7(lambda=2.0,T=7.5) <= frfun7
frfun3d(t=7.0) <= frfun3d
fft3dfilter(sigma=3.8, bt=4, bw=16, bh=16, ow=8, oh=8, plane=0) <= fft3dfilter
dfttest(sigma=1.87,bsize=16,osize=12,tsr=1,ssr=0,max2dblocks=3) <= dfttest
vf=noisy.mvanalyse(pel=2,blksize=8,isb=false,idx=1,overlap=4,sharp=2,truemotion=true)
vb=noisy.mvanalyse(pel=2,blksize=8,isb=true,idx=1,overlap=4,sharp=2,truemotion=true)
vf2=noisy.mvanalyse(pel=2,blksize=8,isb=false,idx=1,delta=2,overlap=4,sharp=2,truemotion=true)
interleave(\
mvcompensate(noisy,vf2,idx=1,thSCD1=600)\
, mvcompensate(noisy,vf,idx=1,thSCD1=600)\
, noisy\
, mvcompensate(noisy,vb,idx=1,thSCD1=600))
FFT3DFilter(sigma=3.7, bt=4, bw=8, bh=8, ow=4, oh=4)
denoised=selectevery(4,2) <= fft3dfilter+emc
dfttest(sigma=1.87,bsize=8,osize=6,tsr=2,ssr=6,max2dblocks=4) <= dfttest+imc
vf1=noisy.mvanalyse(pel=2,blksize=8,isb=false,idx=1,overlap=4,sharp=2,truemotion=true)
vf2=noisy.mvanalyse(pel=2,blksize=8,isb=false,idx=1,delta=2,overlap=4,sharp=2,truemotion=true)
vb1=noisy.mvanalyse(pel=2,blksize=8,isb=true,idx=1,overlap=4,sharp=2,truemotion=true)
vb2=noisy.mvanalyse(pel=2,blksize=8,isb=true,idx=1,delta=2,overlap=4,sharp=2,truemotion=true)
interleave(\
mvcompensate(noisy,vf2,idx=1,thSCD1=600)\
, mvcompensate(noisy,vf1,idx=1,thSCD1=600)\
, noisy\
, mvcompensate(noisy,vb1,idx=1,thSCD1=600)\
, mvcompensate(noisy,vb2,idx=1,thSCD1=600))
dfttest(sigma=1.87,bsize=8,osize=6,ssr=0,tsr=2,max2dblocks=5)
denoised=selectevery(5,2) <= dfttest+emc
I tested only luma denoising (chroma from source was merged into the denoised clip before computing metrics). The bold writing above indicates the name I gave to each set of settings for making the graph and listing the results. (emc = external motion compenstation, imc = internal motion compensation... external as in a separate filter and internal as in part of the filter itself).
I optimized the settings for best ssim (or at least tried to), so read what you will into the psnr results.
Code:
PSNR:
name: Overall - (Y-min, Y-avg, Y-max)
dfttest+emc: 39.6374 - (36.9429, 37.8764, 38.4442)
dfttest+imc: 39.5612 - (36.8100, 37.8003, 38.2116)
fft3dfilter+emc: 39.5062 - (37.1861, 37.7453, 38.2638)
dfttest: 38.8855 - (36.1973, 37.1246, 37.3587)
fft3dfilter: 38.6796 - (35.8878, 36.9187, 37.2048)
sw-3ddct: 38.6577 - (36.5600, 36.8968, 37.1035)
dctfun4b: 38.0481 - (36.1463, 36.2872, 36.5296)
frfun7: 37.8178 - (35.9513, 36.0569, 36.2783)
frfun3d: 37.7291 - (35.8747, 35.9682, 36.1844)
tnlmeans: 37.2052 - (34.3804, 35.4443, 36.1713)
noisy clip: 36.6127 - (34.8308, 34.8518, 34.8684)
SSIM (frames 0-29):
name: Scaled SSIM Value
dfttest+emc: 91.836
dfttest+imc: 91.166
fft3dfilter+emc: 91.124
sw-3ddct: 89.606
dfttest: 89.263
fft3dfilter: 88.590
tnlmeans: 88.172
frfun7: 86.789
dctfun4b: 86.694
frfun3d: 86.640
noisy clip: 67.518
SSIM (frames 2-27):
name: Scaled SSIM Value
dfttest+emc: 92.052
fft3dfilter+emc: 91.374
dfttest+imc: 91.318
sw-3ddct: 89.766
dfttest: 89.435
fft3dfilter: 88.906
tnlmeans: 88.340
frfun7: 86.835
dctfun4b: 86.731
frfun3d: 86.684
noisy clip: 67.644
Here's a graph of the per-frame SSIM Values. I've scaled the values to the 0-100 range using the same equation that the ssim filter uses when it outputs the overall ssim value (scaled_value = 100*pow(original_value,8)).
After running the tests I noticed that lumimasking for ssim didn't really change anything on this clip (weights for all frames were > 0.999 with both lumimask=1 and 2)... so I just used the results for lumimask=0.
I'll try to add the execution times for each of the tested setting combinations...
Last edited by tritical; 21st August 2006 at 17:21.
|