Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Usage
Register FAQ Calendar Today's Posts Search

Reply
 
Thread Tools Search this Thread Display Modes
Old 19th August 2006, 00:47   #41  |  Link
shaolin95
Registered User
 
Join Date: Aug 2005
Posts: 275
OK, so whos "winning" at the moment?
shaolin95 is offline   Reply With Quote
Old 22nd August 2006, 04:01   #42  |  Link
tritical
Registered User
 
Join Date: Dec 2003
Location: MO, US
Posts: 999
Some results on the flower clip with noise std of 10 (var 100):

tested filters:

Code:
sw-3ddct(NoiseParam=9)  <= sw-3ddct  (not an avisynth filter)

dctfun4b(24.0)  <= dctfun4b

frfun7(lambda=2.0,T=14.125)  <= frfun7

frfun3d(t=13.3)  <= frfun3d

fft3dfilter(sigma=7.9, bt=4, bw=16, bh=16, ow=8, oh=8, plane=0)  <= fft3dfilter

dfttest(sigma=3.9,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=800)\
, mvcompensate(noisy,vf,idx=1,thSCD1=800)\
, noisy\
, mvcompensate(noisy,vb,idx=1,thSCD1=800))
FFT3DFilter(sigma=7.4, bt=4, bw=8, bh=8, ow=4, oh=4)
denoised=selectevery(4,2)  <= fft3dfilter+emc

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=800)\
, mvcompensate(noisy,vf1,idx=1,thSCD1=800)\
, noisy\
, mvcompensate(noisy,vb1,idx=1,thSCD1=800)\
, mvcompensate(noisy,vb2,idx=1,thSCD1=800))
dfttest(sigma=3.6,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:                 35.2520 -  (32.3217, 33.4911, 34.0736)
fft3dfilter+emc:             34.8975 -  (32.1083, 33.1366, 33.7318)
sw-3ddct:                    34.2174 -  (31.9290, 32.4565, 32.7581)
dfttest:                     33.9319 -  (30.8815, 32.1710, 32.4758)
fft3dfilter:                 33.7370 -  (30.5839, 31.9761, 32.3819)
dctfun4b:                    32.6397 -  (30.6978, 30.8788, 31.1775)
frfun7:                      32.2570 -  (30.3373, 30.4960, 30.7684)
frfun3d:                     32.0432 -  (30.1331, 30.2823, 30.5516)
noisy clip:                  30.2587 -  (28.4802, 28.4978, 28.5098)

SSIM (frames 0-29):
name:                        Scaled SSIM Value
dfttest+emc:                 79.876
fft3dfilter+emc:             77.437
sw-3ddct:                    74.833
dfttest:                     73.102
fft3dfilter:                 71.763
frfun7:                      65.280
frfun3d:                     64.830
dctfun4b:                    64.262
noisy clip:                  30.906

SSIM (frames 2-27):
name:                        Scaled SSIM Value
dfttest+emc:                 80.837
fft3dfilter+emc:             78.402
sw-3ddct:                    75.162
dfttest:                     73.580
fft3dfilter:                 72.700
frfun7:                      65.345
frfun3d:                     64.885
dctfun4b:                    64.319
noisy clip:                  31.098
Here's a graph of the per-frame SSIM Values.



And for those who prefer pictures to numbers, here's a pic of frame 21 showing the original source, the noisy source, and denoised versions.

Last edited by tritical; 22nd August 2006 at 04:16.
tritical is offline   Reply With Quote
Old 22nd August 2006, 04:59   #43  |  Link
foxyshadis
ангел смерти
 
foxyshadis's Avatar
 
Join Date: Nov 2004
Location: Lost
Posts: 9,565
Is dfttest so far only optimized for uniform gaussian noise, or does it work just as well if you toss your noisy subject video into an encoder at some middling bitrate first?
foxyshadis is offline   Reply With Quote
Old 22nd August 2006, 06:17   #44  |  Link
tritical
Registered User
 
Join Date: Dec 2003
Location: MO, US
Posts: 999
I've only tested on gaussian noise so far, but I would expect it to perform similarly to fft3dfilter on other types of noise. I am definitely going to start testing on some other sources soon. Would it be more desirable to test on a noisy source generated by:

1.) sequence -> add gaussian noise -> mpeg2

2.) sequence -> mpeg2 (dvd) -> dvd player -> huffyuv capture (composite)

3.) sequence -> add gaussian noise -> mpeg2 (dvd) -> dvd player -> huffyuv capture (composite)

? I am also thinking about switching to a clip that isn't so perfect for block based motion compensation.
tritical is offline   Reply With Quote
Old 22nd August 2006, 07:06   #45  |  Link
Richard Berg
developer wannabe
 
Richard Berg's Avatar
 
Join Date: Nov 2001
Location: Brooklyn, NY
Posts: 1,211
I think #2 would be most interesting.

I have a large collection of old (read: noisy) capture cards but no DVD player Best I could contribute would be the same program captured from both a good and bad card.
Richard Berg is offline   Reply With Quote
Old 22nd August 2006, 07:48   #46  |  Link
Mug Funky
interlace this!
 
Mug Funky's Avatar
 
Join Date: Jun 2003
Location: i'm in ur transfers, addin noise
Posts: 4,555
@ tritical: try old footage from archive.org.

the kind with strong luminance flicker... this'll make block-based motion compensation retch.
__________________
sucking the life out of your videos since 2004
Mug Funky is offline   Reply With Quote
Old 22nd August 2006, 13:04   #47  |  Link
frednerk33
Registered User
 
Join Date: Jan 2006
Posts: 25
How about Pookie's http://forum.doom9.org/showthread.ph...906#post865906 ?
Code:
backward_vec2 = last.MVAnalyse( isb = true, delta = 2, pel = 2, overlap=4, sharp=1, idx = 1 )
backward_vec1 = last.MVAnalyse( isb = true, delta = 1, pel = 2, overlap=4, sharp=1, idx = 1 )
forward_vec1 = last.MVAnalyse( isb = false, delta = 1, pel = 2, overlap=4, sharp=1, idx = 1 )
forward_vec2 = last.MVAnalyse( isb = false, delta = 2, pel = 2, overlap=4, sharp=1, idx = 1 )
a = last.MVDegrain2( backward_vec1, forward_vec1, backward_vec2, forward_vec2, thSAD=400, idx=1 )
b = a.DeGrainMedian( mode=1 )
SeeSaw( a, b, NRlimit=4, NRlimit2=5, Sstr=1.5, Slimit=9, Spower=9, Szp=16, sootheT=80, bias=40 )
Referred to in a visual test at http://forum.doom9.org/showthread.ph...972#post865972

Pretty results from noisy input: http://forum.doom9.org/showthread.ph...872#post865872

Last edited by frednerk33; 22nd August 2006 at 13:13.
frednerk33 is offline   Reply With Quote
Old 22nd August 2006, 13:17   #48  |  Link
Didée
Registered User
 
Join Date: Apr 2002
Location: Germany
Posts: 5,393
"Visually pleasing" and "good metrics" are two different pairs of shoes.

I tried FFT3D+motioncompensation (top-notch combo in this thread) on a grainy DVD source, and the result looked kind of boring ("emptied-out"), while not being able to truly kill low-frequency flicker. OTOH, a custom-made MC'ed temporal averaging looked sharp & detailed, and highly stable: no more LF flicker ... though the same script gives a 2 points lower SSIM (!) on the source of this thread, heh.

Me, I dont care for high SSIMs or PSNRs, if the result is blurry and keeps flickering ...
__________________
- We´re at the beginning of the end of mankind´s childhood -

My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!)
Didée is offline   Reply With Quote
Old 23rd August 2006, 00:07   #49  |  Link
tritical
Registered User
 
Join Date: Dec 2003
Location: MO, US
Posts: 999
You're saying that your method looked better on the current test clip then the fft3d+mc method even though it scored 2 points lower on ssim? ... or just that it looked better on the grainy dvd source?

It's not surprising to me that fft3d+mc (and the like) has so far dominated this comparison (ssim/psnr wise) based on removing zero mean gaussian noise from a clip with pretty consistent global motion. It is also not surprising to me that it would not win in other noise removal tests (either different scoring system or different types of noise).

Start rant about metrics:

The thing to remember about ssim/psnr is that they are 'image' quality assessments, so for video they compare single frames and then pretty much just average (in the case of overall psnr it's slightly different) the results of all frames. In the original ssim paper there was a proposal for simple motion weighting (give less weight to frames in areas of large motion), but that doesn't come close to handling a lot of cases. For example, consider two 6 frame sequences with ssim scores of:

80.005 80.005 80.005 80.005 80.005 80.005
(.9725 .9725 .9725 .9725 .9725 .9725)

86.611 72.139 86.611 72.139 86.611 72.139
(.9850 .9600 .9850. 9600 .9825 .9600)

both would get an overall score of: 80.005 even though the first sequence would in all likelihood be ranked higher from a subjective quality perspective. ssim/psnr will also not account for things such as flickering/moving blocks in flat areas between frames, etc...

Even on the single image level, PSNR has been shown to not correspond well with subjective human tests as far as image quality is concerned. SSIM has been shown to be better, but is still not perfect. There are newer versions of ssim (cwssim, wcwssim) that come closer to human rankings of quality for certain types of artifacts (one is low frequency structural noise, such as block mean shift).

Another problem with using these types of metrics is that it assumes that the original source is the optimum. For example, assume you have a source that is noise free, you then add some noise to it, afterwhich you denoise the image using two different filters. One filter perfectly removes the noise and does nothing else. The other removes the noise, but also slightly sharpens, increases saturation, performs aa, or whatever... From a metric perspective the first denoiser is the best, but a person might prefer the look of the second denoiser (due to the fact that they would prefer a slightly modified version of the original vs the original itself).

end rant:

Anyways, I am sure almost everyone here already knows the limitations/issues of using psnr/ssim/etc... metrics. However, it is still interesting to perform these types of tests, if only to see how poorly the metrics compare to human perception (to me at least).

Last edited by tritical; 23rd August 2006 at 00:09.
tritical is offline   Reply With Quote
Old 24th August 2006, 12:40   #50  |  Link
Soulhunter
Bored...
 
Soulhunter's Avatar
 
Join Date: Apr 2003
Location: Unknown
Posts: 2,812
IRC copy/pasta

Ok, let's compare temporal filters with temporal filters... ^^

Using tritical's settings for motion compensation on the flower sequence:


Noisy=Source.AddGrain(25,0,0)

Measured on frames 0-30


Denoised=MC.FFT3DFilter(Sigma=3.7,bt=4,bw=8,bh=8,ow=4,oh=4)
> Average SSIM = 91.19802121

Denoised=MC.DCTFun7(Ty=2.9)
> Average SSIM = 92.42250950
> Average SSIM = 92.68476356 [on frames 2-27]

The resul tritical published for DFTTest+EMC
> Average SSIM = 92.052


Noisy=Source.AddGrain(100,0,0)

Measured on frames 2-27


Denoised=MC.FFT3DFilter(Sigma=7.4,bt=4,bw=8,bh=8,ow=4,oh=4)
> Average SSIM = 78.28281343

Denoised=MC.DCTFun7(Ty=2.9*2)
> Average SSIM = 81.90503727

The result tritical published for DFTTest+EMC
> Average SSIM = 80.837


In short...

Some noise :

92.422 for DCTFun7
92.052 for DFTTest+EMC
91.198 for FFT3DFilter

Some more noise :

81.905 for DCTFun7
80.837 for DFTTest+EMC
78.282 for FFT3DFilter

Conclusion: MVTools wins! :]


Trivia about DCTFun7 [is a little bit less XD]

It's an hard thresholded TI 4x4x4 ICT using a multiplierless and branchless core!
__________________

Visit my IRC channel

Last edited by Soulhunter; 25th August 2006 at 01:17.
Soulhunter is offline   Reply With Quote
Old 25th August 2006, 07:52   #51  |  Link
Backwoods
ReMember
 
Backwoods's Avatar
 
Join Date: Nov 2003
Posts: 416
Do you have a download link for DCTFun7?
Backwoods is offline   Reply With Quote
Old 25th August 2006, 20:17   #52  |  Link
Fizick
AviSynth plugger
 
Fizick's Avatar
 
Join Date: Nov 2003
Location: Russia
Posts: 2,183
http://forum.doom9.org/showthread.ph...535#post864535
Fizick is offline   Reply With Quote
Old 26th August 2006, 00:18   #53  |  Link
Soulhunter
Bored...
 
Soulhunter's Avatar
 
Join Date: Apr 2003
Location: Unknown
Posts: 2,812
Quote:
It's coming...
Same goes for DCTFun7! ^^


Bye
__________________

Visit my IRC channel
Soulhunter is offline   Reply With Quote
Old 26th August 2006, 07:31   #54  |  Link
frednerk33
Registered User
 
Join Date: Jan 2006
Posts: 25
Is it wrong to post a link to http://forum.doom9.org/showthread.ph...048#post868048 which has visual results but not objective per above ? (I am not smart enough to do the above, but someone else here might be.)
frednerk33 is offline   Reply With Quote
Old 26th August 2006, 07:37   #55  |  Link
DryFire
Perpetually Lost
 
Join Date: Sep 2005
Posts: 93
What if you all used the lossless version of elphant's dream as a starting source? I'd suggest the 640x360 one, unless you just feel like playing with 20gb's worth of hd png's (the is the same source from saggatire's hd comparison test):
http://orange.blender.org/blog/origi...rce-available/

Or some other, clean predefined clip.
DryFire is offline   Reply With Quote
Old 8th September 2006, 19:32   #56  |  Link
Fizick
AviSynth plugger
 
Fizick's Avatar
 
Join Date: Nov 2003
Location: Russia
Posts: 2,183
O.K., now I have secret weapon (bt=5) too
Code:
interleave(\
mvcompensate(noisy,vf2,idx=1,thSCD1=600)\
, mvcompensate(noisy,vf,idx=1,thSCD1=600)\
, noisy\
, mvcompensate(noisy,vb,idx=1,thSCD1=600)\
, mvcompensate(noisy,vb2,idx=1,thSCD1=600))
FFT3Dfilter(sigma=3.6, bt=5, bw=8, bh=8, ow=4, oh=4)
denoised=selectevery(5,2)
Average SSIM= 91.75

But fft3d is still the worst of secret filters.
__________________
My Avisynth plugins are now at http://avisynth.org.ru and mirror at http://avisynth.nl/users/fizick
I usually do not provide a technical support in private messages.
Fizick is offline   Reply With Quote
Old 8th September 2006, 22:21   #57  |  Link
cwk
Registered User
 
Join Date: Jan 2004
Location: earth, barely
Posts: 96
Quote:
O.K., now I have secret weapon (bt=5) too
Should we be expecting FFT3dFilter v 1.8.6??????
cwk is offline   Reply With Quote
Old 8th September 2006, 23:16   #58  |  Link
Didée
Registered User
 
Join Date: Apr 2002
Location: Germany
Posts: 5,393
Quote:
Originally Posted by Fizick
O.K., now I have secret weapon (bt=5) too
Pfffft. There was already bt=7 in use.

Well okay, [(bt=4)+(bt=4)]*0.5 is not exactly bt=7 ... just what a poor scripter can do.
__________________
- We´re at the beginning of the end of mankind´s childhood -

My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!)
Didée is offline   Reply With Quote
Old 9th September 2006, 02:23   #59  |  Link
frednerk
Registered User
 
Join Date: Nov 2005
Posts: 37
Quote:
Originally Posted by Fizick
O.K., now I have secret weapon (bt=5) too
Er, bt=5 gives me an error message saying values must be -1,0,1,2,3,4 ... am using FFT3Dfilter Version 1.8.5 - 4 December 2005.

Am using
Code:
ConvertToYV12(interlaced=FALSE) 
#http://forum.doom9.org/showthread.php?p=873307#post873307 
#O.K., now I have secret weapon (bt=5) too 
noisy = LAST 
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)) 
FFT3Dfilter(sigma=3.6, plane=4, bt=5, bw=8, bh=8, ow=4, oh=4) 
selectevery(5,2)
Can you share the secret here ? I won't pass it on.
__________________
Box: Athlon64 3500. 1Gb DDR. ATI Radeon 9250. Analogue:Winfast-TV2000Expert. Digital:DVICO-FusionHDTV-lite, DigitalNow TinyUSB 2.

Last edited by frednerk; 9th September 2006 at 02:26.
frednerk is offline   Reply With Quote
Old 9th September 2006, 07:44   #60  |  Link
Fizick
AviSynth plugger
 
Fizick's Avatar
 
Join Date: Nov 2003
Location: Russia
Posts: 2,183
v.1.9.2 is coming somedays ...

EDIT:
Released for public.

Last edited by Fizick; 11th January 2007 at 23:12.
Fizick is offline   Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 18:14.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2022, vBulletin Solutions Inc.