Log in

View Full Version : denoiser comparison for analogue caps


Wilbert
24th February 2004, 00:36
Ivo (i4004) and I, finally finished our denoiser comparison for analogue captures!

The comparison can be found here:
http://www.geocities.com/wilbertdijkhof/analog_comp/comparison.htm

A summary of the conclusions:


source: 75 frames huffyuv from a music clip (Dido).

denoisers: PixieDust and combo's with the spatial denoisers Mip/Vague and temporal denoisers Vague/TC/TS. Why didn't we use other denoisers? The reason is that we believe that these are the "best" ones. Anyway, read the disclaimer if you think you can do better :)

summary:
Some conclusions and recommendations about the tested filters:

PeachSmoother + VagueDenoiser (or MipSmoother) is a nice combo where user will try to achieve best of both worlds; excellent denoising of still scenes of Peach, and smoothing out the ghosting artefacts on hi-motion levels. But it won't make wonders, Pixie will probably work slightly better on motion. Note that Peach's algorithm tries to leave elements that are important for sharpness (edges etc.) intact. You will notice that Peach leaves those vertical lines of vhs pretty noisy and shimmering.

Pixie has best quality on motion. We recommend this where Peach would normally ghost too much (higher motion/noise levels; in music videos etc), and you have a lot of time to do your encodings. The main issue is that Pixie is VERY slow (it's probably doing 2 passes internally), and it looks slightly blurrier than Peach.

Peach has best quality/speed ratio overall. We recommend this filter for long clips (like movies/tv-series), in case the combo's are too slow.

Overlay can be used for short (and difficult to denoise) clips if captures of different broadcastings (of the same clip) are available (like music clips).

Best filter is usually the slowest one (Murphy's Law).

Some conclusions about the encoders:

Project Mayo/Open Divx derived codecs act unpredictable in the event of noise+motion, artefacts range from hardly noticeable to very annoying (more noise means bigger troubles for XviD/DivX5). DivX3 [Nandub] and FFVFW don't have this issue.

Better denoising means less problems for XviD/DivX5. We doubt you can surpress the issue completely, no matter how well you cleaned the source.



remarks)

1) Images can be downloaded separately (see introduction), if the site loads too slow.

2) If someone knows how to simplify/improve the javascript, please let us know.

DSP8000
24th February 2004, 15:55
Very educational & well explained.I do lots of analog captures & DV video.Peach realy does better job than the others but for heavy denoising I like Pixie.TNX. for the comparison.

DSP8000

Fizick
25th February 2004, 18:33
Good works!
But I have only slow dial-up modem.
May be, you can present not full images, but fragments (1/4)?

Piper
25th February 2004, 21:05
Nice work as always Wilbert!

It's great to see some quality attention being given to analogue encoding. Thanks again.

Wilbert
25th February 2004, 21:20
Thanks!

@Fizick,

I stripped out the large bmp pictures (from the raw XviD animation):

http://www.geocities.com/wilbertdijkhof/analog_simple.zip

It's 1.11 MB.

North2Polaris
25th February 2004, 22:24
@Wilbert,

How would you modify the combo script if your target is 1/2 DVD and you want to keep the video interlaced?

I know how to do this with PixieDust...

Thanks.

acrespo
26th February 2004, 19:09
Can I consider these tests valid on anime analog material too?

Wilbert
26th February 2004, 20:40
How would you modify the combo script if your target is 1/2 DVD and you want to keep the video interlaced?


# QUANTIFIED MOTION FILTER v1.4
# EXAMPLE 2 : ADAPTIVE RESIZING FILTER

# LOADING QUANTIFIED MOTION FILTER SCRIPT
Import("D:\Test\Ivo\Wilbert\qmf.avs")

# LOW MOTION FILTER FUNCTION
# -> SHARP RESIZING + TEMPORAL ONLY
function Low_Motion_Filter(clip c)
{
ConvertToYUY2(c)
PeachSmoother(noiselevel=4.286, baseline=3.141, NoiseReduction = 60, Stability = 30, Spatial = 0)
ConvertToYV12()
BicubicResize(480, 288, 0, 0.75)
}

# MEDIUM MOTION FILTER FUNCTION
# -> NEUTRAL BICUBIC RESIZING + TEMPORAL & SPATIAL
function Medium_Motion_Filter(clip c)
{
c.MipSmooth(spatial=9, temporal=0, spatial_chroma=10, method="superstrong", downsizer="bilinear", upsizer="bilinear", scalefactor=0.60, weigh=true)
BicubicResize(480, 288, 0, 0.75)
}

# HIGH MOTION FILTER FUNCTION
# -> SOFT RESIZING + SPATIAL ONLY
function High_Motion_Filter(clip c)
{
c.MipSmooth(spatial=9, temporal=0, spatial_chroma=10, method="superstrong", downsizer="bilinear", upsizer="bilinear", scalefactor=0.60, weigh=true)
BicubicResize(480, 288, 0, 0.75)
}

# OPENING VIDEO SOURCE
Avisource("D:\Test\huffyuv_raw2.avi")+Avisource("D:\Test\huffyuv_raw.avi")
ConvertToYV12(interlaced=true)

# APPLYING ADAPTATIVE RESIZING FILTER (USING QMF)
#QMF(debug=true)
clip = SeparateFields(last)
even = SelectEven(clip)
odd = SelectOdd(clip)
even_filt = QMF(even)
odd_filt = QMF(odd)
Weave(even_filt,odd_filt)
Tweak(0.0, 0.8, 0.0, 1.0)


Something like that ... (PAL). You might need to low the denoiser settings though.

Can I consider these tests valid on anime analog material too?
No ... I don't know anything about anime, but I can imagine that there are more smoothers who do a good job here.

North2Polaris
28th February 2004, 03:45
@Wilbert

Many thanks! :)

Does this need the ConvertToYV12 step or can the video stay in YUY2?

ADLANCAS
6th March 2004, 04:34
# APPLYING ADAPTATIVE RESIZING FILTER (USING QMF)
#QMF(debug=true)
clip = SeparateFields(last)
even = SelectEven(clip)
odd = SelectOdd(clip)
even_filt = QMF(even)
odd_filt = QMF(odd)
Weave(even_filt,odd_filt)
Tweak(0.0, 0.8, 0.0, 1.0)

I think that is necessary to change:
Weave(even_filt,odd_filt)

to

Interleave(even_filt,odd_filt)
Weave()

Wilbert
8th March 2004, 10:27
You are correct of course. Thanks!

troy
9th March 2004, 04:29
I am sure that this is a newbie response but why didnt you try convolution 3d.

Wilbert
9th March 2004, 10:18
I am sure that this is a newbie response but why didnt you try convolution 3d.
Actually we tried. But we couldn't get good (as in better than of the tested smoothers) results with it. But of course you can try yourself, since the source clip is available!

North2Polaris
20th July 2005, 23:27
@Wilbert,

Fizick's FFT3DFilter (Version 1.3 - July 20, 2005) has reached a point where it may be better at denoising and preserving detail than PixieDust:

http://forum.doom9.org/showthread.php?p=689122#post689122

Since your comparison results are "based on our visual inspection", would you & Ivo (i4004) be willing to put this filter through your test?

North

Poutnik
21st July 2005, 08:09
Once I have played with PeachSmoother (suppose to be useful for any filter with startup delay), I used a trick with extra added first n-frame part of movie.
After processing the movie I have trimmed this extra leading part away.

mg262
21st July 2005, 10:29
@North2Polaris
It's been a long time since they did that test... It may very well be that you can find a set of filters which produce better quality than the filters we used. The source clips can be downloaded (see introduction), so everyone can take a try. If you have found something better, please contact us :) (assuming the source clips are still up), did you try it? How are the results (in your eyes) if you did?
_____________________________

Back in December '03 when I was a total newbie playing with videos (and not just a semi-newbie like now!) I sifted these forums for all the denoising advice and scripts I could get, and then spent about a fortnight comparing them against each other split-screen using the CompareVersions script I posted elsewhere... about 20-25 different filters IIRC; I ended up deciding that there were plenty of contenders on still scenes but the Dust filters were the only ones I was happy with on motion scenes. I remember being pretty happy on finding this thread and seeing that people who knew about video had reached the same conclusion.

But about a year or so later it seemed, at least to me, that the ground rules had changed completely... there were sufficiently good motion estimation + compensation tools out there (MVTools) that all the denoising filters would have to be tested against Dust again but this time with a motion compensation forward/back frames interleaved in.

Wilbert
21st July 2005, 19:51
@North2Polaris
It's been a long time since they did that test...
Yeah, there are more filters which i would like to see included, like FFT3DFilter, TTempSmooth, RemoveDirt and perhaps a few others. I've yet to see someone using MVTools to outperform some of the filters we tested. Hint :)

The pb is that i don't have time anymore to do such tests. Of course i will assist you if some of you want to do these tests.

Didée
22nd July 2005, 08:07
I've yet to see someone using MVTools to outperform some of the filters we tested. Hint :)

Starting point:
http://img316.imageshack.us/img316/3815/01thenoise2pj.png

PixieDust:
http://img316.imageshack.us/img316/1833/03pixiedust162ix.png

LTSMC:
http://img316.imageshack.us/img316/115/09ltsmc3dg.png

mg262
22nd July 2005, 08:51
:eek: ... :eek: ... :eek: ... :eek: ... :eek:

Can we have the script?

(Don't worry if is not ready for release.)

Piper
22nd July 2005, 14:18
Sorry for being redundant but, WOW!!!!

Chainmax
22nd July 2005, 15:35
Didée: it does remove the noise which is very impressive in and of itself, but the result looks extremely softened too. Will this have adjustable strength? Also, in your own words, how does LTSMC compare to PixieDust and LRemoveDust in terms of operation and side effects?

Didée
22nd July 2005, 16:30
Since I did not have any source with really strong noise, I added artificial noise manually. So I can also show you the underlying original:

http://img290.imageshack.us/img290/3922/00source7xj.jpg

As you can see, overall softening surely is there, but it's not that bad, considering the extreme amount of noise I had thrown in.
(Note: the color shift was not introduced by the denoising, but on noise creation: I wasn't careful enough and accidentially introduced an offset :o )

How it compares? PixieDust's result you've already seen - it doesn't cut it, the noise is too much for it (same goes for GoldDust). However, the "blocking" artefacts typical to MC'ed denoisers will NOT occur. This is one of the main objectives for LTSMC.

LRemoveDust also is way too weak for such noise. It's parent, kassandro's original RemoveDust, performs like this:

RemoveDust(4):
http://img290.imageshack.us/img290/3050/05removedust8ov.png

RemoveDust(4).RemoveDust(4):
http://img290.imageshack.us/img290/9148/062xremovedust3ud.png

So, a single RemoveDust() leaves the clip in the middle of nowhere. Double appliance still doesn't fully cut down the noise, but already makes the result unusable by its side effects.


As of now, the problems are:

1) The current method of artefact protection indeed causes some unwanted softening on sharp sources (trying to find a better one)

2) In its current form, it is close to unusable: Due to some, erhm, uneducated usage of MVTools, switching on LTSMC's stronger features will cause h.u.g.e. memory consumption. Read: without at least 1GB of RAM, don't even think of using it. 2GB would be recommended.

For 2) I know the solution already (Manao enlightened me ;) ). But currently I can't work at all on this function. Too little time, my world is breaking apart.

However in the meantime, many of the used sub-functions were already improved in other contexts. So the last state of the script is already obsolete ....

The nosey ones might have a look here (http://home.arcor.de/dhanselmann/_stuff/LTSMC.rar). But again: usage is not recommended.


Credits: LTSMC is based on and inspired by Manao's "efficace()" function.

Chainmax
22nd July 2005, 17:41
If you want a noisy, crappy clip to try LTSMC on, then use my immortal enemy (http://www.31012.com/~azulftp/TestClip.vob). I'd be very interested to know how it deals with it.

North2Polaris
23rd July 2005, 00:59
@North2Polaris
It's been a long time since they did that test... (assuming the source clips are still up), did you try it? How are the results (in your eyes) if you did?
@mg262
Based on Wilbert's posts in other threads, I know that he is busy with other projects, but I thought I would ask first before trying this myself. One of the great things about this forum is that a simple question can lead to a very interesting discussion in an unanticipated direction.

@North2Polaris
But about a year or so later it seemed, at least to me, that the ground rules had changed completely... there were sufficiently good motion estimation + compensation tools out there (MVTools) that all the denoising filters would have to be tested against Dust again but this time with a motion compensation forward/back frames interleaved in.
@mg262
Based on this, do you use Dust (or other filters) with motion compensation forward/back frames interleaved in using a motion estimation and compensation tool like MVTools? If yes, would you be willing to share your script?

Thanks.

North

mg262
23rd July 2005, 04:48
You're welcome to any script I have ever used... but I only tried this once, back before reinstalling my OS, so you'll have to wait a bit for me to dig it out. I didn't try motion compensation with Dust ... Dust has its own motion compensation, so I don't think this would necessarily be a useful direction to go. I tried it with PeachSmoother ... I think ... but I can't remember for sure. It was a script written when I knew very very little about video, so I'm not sure it will help you much anyway. If you try putting together a script and it won't run, I'm sure people will help.

Soulhunter
23rd July 2005, 13:22
Fizick's FFT3DFilter (Version 1.3 - July 20, 2005) has reached a point where it may be better at denoising and preserving detail than PixieDust...

FFT3DFilter is a excellent denoiser for DVD (and similar) sources...

But I dont think its able to remove "TV interferences" like in Wilbert's samples!?


Bye

Wilbert
23rd July 2005, 14:18
Guys, instead of just talking, you can also download my clips and run script on it. I promise i will merge the results when i'm back.

mg262
23rd July 2005, 14:43
Guys, instead of just talking, you can also download my clips and run script on it.I think Didée's example has left the rest of us scared to try! :scared:

Didée
23rd July 2005, 20:07
Important (maybe) note

Please note that all my AviSynth scripts are slow, totally useless, and either have no effect at all, or make the output worse than the input originally was. This is because I don't know what I'm doing, don't know what I'm saying, and have bad eyesight close to blindness.

Proof:

funny reading #1 (http://www.neuron2.net/board/viewtopic.php?p=6106#6106)

funny reading #2 (http://www.neuron2.net/board/viewtopic.php?p=5352#5352)

These are (roughly) the entry points into discussions that start out rather harmless and slowly, but then quickly pick up speed. It's pretty *much* text to read, sure. But as a reward, they reveal lots of ... interesting insights ;)

So: don't say you were not warned ... think twice and more before using any of my scripts. All of them are nothing but a waste of time :D

Yes, this was mean. I just can't stand it any more.

Excuse: Over there, it is stated that all my work is just plain bullsh*t. Since I post most of my stuff here on Doom9's, this potentially is of interest to the community members here. Hence the note.

mg262
23rd July 2005, 20:29
Please note that all my AviSynth scripts are slow, totally useless, and either have no effect at all, or make the output worse than the input originally was. This is because I don't know what I'm doing, don't know what I'm saying, and have bad eyesight close to blindness.This does not sound good. I think from my last two posts you will already know my opinion of your scripts, so I won't repeat it.* But if you were to Google (to take a random example) 'SixOfNine' or '6of9 matrix' you may find a more representative sample opinions of your work.

For what it's worth, if I'm in mfps territory I generally find ways to slow my scripts down (cf QuadDust...). And to make a more serious point, albeit which might get me flamed, speed is cheap -- ideas are expensive. ... someone else can always come along later and make a plug-in; writing C++ or ASM is far far easier than coming up with the ideas.

*It will be a little while before I have time to wade through those threads... I did try to start skimming one, but it seemed to be about sterility ...

Soulhunter
23rd July 2005, 21:54
@ Didée

Just the usual surliness... :rolleyes:

You should be already used to this!


Bye

Didée
23rd July 2005, 22:17
Well, you can see it as some sort of politeness:

Since he cannot post in this forum anymore, I took the freedom to direct others to a place where he is still allowed to produce his points of view.

(And if you're not involved personally, its makes a quite funny reading for sure) ;)

mg262
24th July 2005, 18:44
@North2Polaris,

to my great annoyance I simply cannot find that script; the final script for that source is there but doesn't contain any motion estimation. I am sorry about that.
_______

I can remember some things from that experiment, and this seems like a good place to set them down. (Please remember that I'm much less concerned about speed than most.)

- The biggest problem was the discontinuity between blocks. This could be reduced to some extent by switching to 4x4, but the accuracy of motion finding dropped considerably.
- I thought of some (slow) ways around this; one was to use a 8x8 context for finding the blocks, but only retain the central 4x4 part. The other is to use overlapping blocks, and blend the blocks at the edges.

Please bear in mind that this may all reflect my inexperience with MVTools. It is also likely that someone has thought of these or better variants already; in particular, I know nothing about efficace, and I haven't delved into LTMSC yet (mainly because I'm very bad at making sense of complex scripts).

Chainmax
25th July 2005, 17:12
Didée, you can't possibly take what those people say seriously. Your scripts are terrific and work wonders for most people. You shouldn't let yourself be affected by those few who claim your filters don't work because they bitch at anything anyway.

By the way, aside from my immortal enemy clip, you can also try the halo torture clip as a test for LTSMC.

Didée
26th July 2005, 10:07
"Those" people is only *one* people, actually ;) - No, it's really not to be taken serious. But it's frustrating when carved-in-stone conclusions are drawn from smattering, and even explaining the relations actually taking place doesn't help. Feels like talking to a wall ... a wall that throws an echo distorted through 1000 dB amplification ... :eek:

From your "immortal enemy", I DL'ed only the first half (brave enough - 56k modem...). This first half does not look that extremely challenging, honestly said. Does it get worse in the 2nd half? What's your current solution so far? Seems to me as if LTSLP (http://home.arcor.de/dhanselmann/_stuff/LTSLP_v02.avs) already could do a reasonable job on it, but didn't try yet - possibly it will leave some mosquitos around lines that are moving. (PM me if you need a custom solution - then I'll tell you "no time" ;) ).

The "halo torture" is another story ... it's suffers more from dirt than from noise, and for dirt you need a dedicated dirt cleaner, not a temporal smoother.

Chainmax
26th July 2005, 14:56
The biggest problem with the immortal enemy clip are the blocks, which can be diminished by a denoiser. There are other, less evident issues that are quite hard to handle as well. I'll try LTSLP (why the underline?). As for the halo torture clip, do you really think something like removedirt() will help? Oh well, it doesn't hurt to try :).

mg262
26th July 2005, 15:12
What is this legendary halo torture clip of which you speak? Forum search doesn't yield anything and Google ... well, trust me, you just don't want to know :)

Chainmax
26th July 2005, 15:21
What is this legendary halo torture clip of which you speak? Forum search doesn't yield anything and Google ... well, trust me, you just don't want to know :)

Hahaha, lol. I am imagining something that involves dogs, leather and whips :p
The halo torture clip is maybe the nastiest clip I ever saw. It's a sample from one of the extras from the Simpsons First Season R4 NTSC DVDs. The halos are so awful that a custom function had to be made to remove them.