Comments

johnmeyer wrote on 9/23/2009, 7:31 AM
I have tried Neat with both SD and HD on a number of occasions. It is probably the best spatial noise reducer out there, but the simple-minded temporal noise reduction is not very effective. I do a LOT of noise reduction work and still find that the fft3Dfilter and the Degrain filter (both AVISynth plugins) leave fewer artifacts, especially when combined with motion compensation where you temporarily remove all motion between frames by moving all things that have moved from the previous and succeeding frames back to where they "were" in the reference frame, and then do the de-noising.

Also, Neat is painfully slow, even on SD. Maybe they have updated it to solve that problem. By contrast, if you use the hacked version of AVISynth which takes advantage of multi-core, denoising can be extremely fast. I was able to get an 8x speed up (I have 8 cores) when I switched to the multi-core version of AVISynth. Thus, my de-noising takes place at about 15x faster than Neat (because Neat was much slower than the AVISynth denoisers to begin with).

I am just finishing a project involving noise reduction on 58 SD videotapes of 50 minutes each, and I was able to get the noise reduction to speed along at about 3x real time. I couldn't have done this project if I had used Neat.

So, in summary, if you want to use a spatial denoiser (which simply looks for noise in each frame and blends it with surrounding pixels), Neat is probably the best there is. However, if you want to take advantage of the considerably more advanced concepts of looking at adjacent frames to see what has changed (noise tends to be random from frame to frame) and then only remove that stuff, you would be better using a temporal denoiser, something that Neat has, but which is very crude, and nothing more than you get with the Mike Crash Vegas plugin which is an adaptation of one of the VirtualDub spatial denoisers.


vtxrocketeer wrote on 9/23/2009, 8:39 AM
Yes, I use NeatVideo and I'm quite pleased with its performance, despite the massive hit I take on rendering times. Because I don't use avisynth, and because I don't really understand noise removal algorithms, I can't disagree with anything that JM stated. My dumb litmus test is how the image looks in the end.

I'm just an experienced hobbyist producing videos of about 15 minutes long, so the render times resulting from NV don't bother me at all. However, I can appreciate how the long render times would severely impact workflow in a demanding business setting, such as the one JM described.

As to quality of noise removal, the difference over the raw footage is whopping. I wonder, therefore, if using JM's preferred method provides a slightly (marginal?) improvement IN QUALITY (not speed) over what NV offers. My HDV footage is pretty clean to begin with (see below), so I'm not looking to clean it up that much.

Anyway, I shoot on a Canon XHA1 -- brightly lit scenes are very clean but they still have noise, which then becomes more evident in low light situations, of course. I find that a conservative application of NV removes most of the noise without the footage becoming 'plastic.' On my 30" LCD computer monitor, the resulting image looks just terrific. I have yet to view a completed project with NV on my 52" HDTV.

$0.02,
Steve
Marc S wrote on 9/23/2009, 9:51 AM
I love Neat Video (except the render times). One of the great features is that you can add sharpening that does not sharpen the noise so the clips come out cleaner and sharper than the original.

I have also found stability problems on large projects. There is an annoying memory error that pops up and you have to force a restart of Vegas to get rid of it. I've had the same issue in AE. Also if you render only the video to a new track the resulting video is one frame off from the original.

Marc
bsuratt wrote on 9/23/2009, 11:26 AM
Neat has saved my butt more than once! Good product!
johnmeyer wrote on 9/23/2009, 12:21 PM
One thing that gets done from time to time over at the doom9.org forum is for people to try their hand at de-noising a test clip. Someone posts 5-15 seconds of video at some ftp site, and then everyone takes a whack at trying to denoise it, and posts their results back at the same site.

So, if someone has some footage, and can provide some upload/download space, I'd be happy to give it a shot.

ScorpioProd wrote on 9/23/2009, 3:09 PM
I've used TMPGEnc's noise reduction to clean up footage before, worked well.
vtxrocketeer wrote on 9/23/2009, 9:50 PM
I just noticed today that when the temporal noise reduction in NeatVideo is a non-zero value (up to the maximum 5 frames), the RENDERED video lags behind the audio by the number of frames selected for the temporal noise reduction. I verified this by placing the rendered clip back onto the timeline and shifting the video forward (in time) by 5 frames (since I used 5 frames for temporal noise reduction). Sure enough, the audio and video got back into sync.

Thought I'd mention this here because I found this documented quirk buried in a NeatVideo forum. I would have gone mad had I not discovered it and tried to figure out why and how the audio lost sync with the video.

Steve
John_Cline wrote on 9/24/2009, 1:37 AM
Yes, this is a quirk of Neat Video and the way Vegas serves up video frames to plug-ins. This quirk probably doesn't get mentioned often enough.
Jay Gladwell wrote on 9/24/2009, 4:43 AM

Thanks to all who have commented.

John, (Meyer and Cline) I wish I had your understanding when it comes to these script-based applications and all things technical. The truth is I simply can't wrap my brain around them (though heaven knows I've tried).

A client forced me to shoot in a situation in which the light levels were so low, I had no choice but to pump up the gain to +18! The noise, to my eye, is staggering!

I may be forced, once more, to live with the long render times of Neat Video.

Just as a side bar... I contacted NV and asked if a demo for HD was available. I was told "no" just use the SD version. Considering how many are shooting in HD today, one would think they would provide an HD demo.

And I wonder why the "quirk" mentioned above in NV hasn't been fixed? Does no one care anyone about their product(s)?


Grazie wrote on 9/24/2009, 5:15 AM
Jay, I think they do care. Perhaps they care too much and are not wanting 3rd party developers access to the source code which 3rd party developers are wanting access to. That COULD be it?

Now, what you are calling for is a GUI front end that will work with AviSynth - and be done! But that takes time and a group of like minded individuals to wish to invest their time into it. I don't think John Meyer will? He spent MUCH unpaid time on the Deshake script. I'd have liked a framerate converter - but I have resigned to the fact of using NTSC on a PAL DVD player. For him to invest ooddles of time on this one . .well, let's leave that to John to reply to.

In the meantime the likes of you and I have to get along as much as we can with the products that firstly turn a penny for their developers and secondly achieve some, and often great, results for what we have.

No, I don't think it is that people don't care - they want access and make a profit. And why not?

Go to the Neat Forum and read "Vlad's" comments on wanting more input from SONY?

Grazie
fausseplanete wrote on 9/24/2009, 6:23 AM
I've found NeatVideo to be best quality for all resolutions, SD->HD, though I'm still willing to learn of better. Interestingly (given previous comments) its only its temporal denoising I make use of - I imagined it did do motion compensation in some thorough way, and that's what makes it so slow.

I do indeed apply it (in Vegas 8.0c) to HD, which in my latest project is 1080 50i as mxf from an EX3 (forgot to set its gain low...). In the denoising project (Vegas) I offset (on timeline) the video stream to compensate for the phase shift.

One initial hurdle regarding my 1.5 hour clip was that Vegas(8.0c)+NeatVideo(2.0Pro) crashed about half way through, repeatably. The Vegas memory-use hack did not fix this. Ultimately I worked round it by batch-rendering of three regions (with slight overlap to ease re-stitching). Took about half a day per 30 minute region. Who knows what it was, maybe some kind of memory leak. Froze the whole computer. The "three regions" workaround solved it, thankfully. Don't know if it's just my system or what.

Quality-wise, I found I got even better results (better retention of detail) when the clip was put first through AviSynth's TDeint (mode=1) to get 50p (warning - AviSynth assumes LFF as default, you have to specify UFF). This also makes for better downrez quality than the default Vegas deinterlacing/reinterlacing method. Boy was it slow though - on my Mac Pro 8-core (utilised by AviSynth+Vegas+NeatVideo at about 55%) it took about a whole day to process each 30min segment of a 1.5 hour recording. Time to do those other jobs...

Attempts to get an EX3 mxf or mp4 file directly into AviSynth (via DgIndex etc.) were not successful. In the end I gave up and just transcoded the clip (via Vegas) into Cineform, which did open easily in AviSynth. I wonder if anyone has a way of doing it directly. Probably best to take that to another thread.

Can any more detail be given on use of AviSynth alone for mo-comp denoising? Like is there a good example AviSynth script somewhere? Closest thing I found to a GUI for AviSynth in general is AvsP, it's really helpful.
vtxrocketeer wrote on 9/24/2009, 6:30 AM
I just spent some time trolling through the NeatVideo forums in more detail and discovered a constellation of threads that address the out-of-sync audio and video. NeatVideo is quick to point out that the sync problem has nothing to do with NV, but rather the way that Vegas serves frames to third party plug-ins. Specifically, it appears that Vegas can do this only one frame at a time, but not many frames at a time as is required for any kind of temporal filtration so as to allow re-synchronizing of audio and video. Apparently other NLEs can do this, in contrast to Vegas. The "problem" has been known for years and requested of Sony to fix in Vegas, to no avail.

In the meantime, "band-aid" solutions appear to be (1) don't use temporal filtration or (2) shift the filtered video, at some point in a workflow, by the number of frames equal to the radius of temporal filtration.

Steve
ECB wrote on 9/24/2009, 6:32 AM
If you use the Neat filter with the temporal filter in Vegas I suggest you create a test clip with a sequence number on each frame. Apply the Neat filter and compare the before and after clips. YOu will see exactly what the 'quirk' is doing. I aways use a numbered leader and trailer for each clip I filter. Very easy to match the frames after filtering. If you don't wnat to use leaders/trailers make sure you have extra frames at the end of the clip or you will lose frames depending on the temporal frame setting. Last, I find the 64 bit version to run ~20% faster than the 32x on a quad core 8G Vista 64x..

Ed B
Marc S wrote on 9/24/2009, 8:02 AM
Another tip (buried in the manual) is to have the Vegas preview window set to "best" quality when taking your noise sample. If you don't the noise sample will not work as well. I usually have my preview window at "preview" quality so I have to remember to change it.

On most big projects I also have to render out clips one at a time or the memory problem surfaces. 64 bit is better but I usually need to use 32 bit plugins like magic bullet so....
fausseplanete wrote on 9/24/2009, 10:10 AM
Re AviSynth:

Just tried SansGrip's "NoMoSmooth" and it appeared to work very well. I used VFAPI to frameserve it into Vegas(8.0c) and it rendered about as fast (or slow) as NeatVideo, while only using 1 or 2 cores. Also there was no frame delay/shift.

AviSynth multicore - I just did some googling on that (never heard of it before - thanks). It looks like "SEt" made an original version then "Jeremy Duncan" modified it. I downloaded his DLLs for AviSynth 2.5.8. Unless there is anything better (being new to this), I'll try the latter with NoMoSmooth.

David
fausseplanete wrote on 9/24/2009, 11:21 AM
OK yes, it (AviSynth multi-thread hack) ROCKS. 80% CPU use now.. AviSynth script using SansGrip's "NoMoSmooth" motion-compensated denoiser. Before the hack it was only 15% i.e. about 1 core's worth.

Having replaced avisynth.dll by Jeremy Duncan's hacked version of it, and rebooted the machine, all I had to do was say "SetMtMode(2,8)" before the first instruction (AVISource) in my AviSynth script.

AvsP Tools>Save using Avs2Avi, rendering to Cineform (NeoHD) and the dialog says it's going at 27 fps. Cor! All 8 of my Mac Pro cores are being employed (according to Task Manager). Running XP-Pro 32bit by the way.

Multitudinous thanks to John Meyer for pointing it out.
johnmeyer wrote on 9/24/2009, 11:28 AM
There is some sort of GUI front-end to AVISynth, but I've never tried it.

Since there are a few AVISynth users reading this, I am posting below the two scripts I most often use on interlaced material. I have several hundred AVISynth scripts (for things like scene detection; finding individual blank frames to overcome that old Vegas bug; removing white dropouts from VHS tape; removing dirt from film; recovering 24p from 29.97 video that was telecined; converting frame rates; slow motion; creating "real" video from kinescopes; and lots of others.

I have posted variations on these same scripts before in other threads, so this doesn't represent anything new.

Every noise reduction situation is different, so there is no universal script that works with everything. However, I find the following two scripts provide very useful starting points for de-noising interlaced 29.97 video.

The first script is amazingly fast if you use the modified AVISynth (for multi-core computers). I get about 90 fps (3x real time). It does leave a little residual "screen door" effect on large flat areas, typical of temporal denoisers, but it is barely perceptible.

The second script uses the amazing fft3Dfilter, which is neither a spatial nor a temporal denoiser, but a thing unto itself (it denoises in the frequency domain, more or less). It does an amazing job of not destroying detail, and doesn't have any of the annoying screen door effect of temporal denoisers or detail-destroying tendencies of most spatial denoisers (including Neat). Its one downside is the "ringing" you get around strong contrast objects, a little like the HQ circuit found in most VHS decks. However, it is an artifact that doesn't call attention to itself, especially since people are accustomed to the peaking circuits used in TVs and video playback equipment which generates similar looking stuff.

The amazing thing about this script is that it can sometimes actually recover details that are not apparent in the original video.

I have a more complex version of this second script which uses motion compensation to improve the quality of the denoising, but often find that it is not needed.

#Denoiser script for interlaced video using MDegrain2
Loadplugin("C:\Program Files\AviSynth 2.5\plugins\MVTools\mvtools2.dll")
loadPlugin("c:\Program Files\AviSynth 2.5\plugins\CNR\Cnr2.dll")
loadPlugin("c:\Program Files\AviSynth 2.5\plugins\MT.dll")

SetMTMode(5) # This requires the multi-core-modified AVISynth

#Modify this line to point to your video file. Make sure the field order matches your source.
source=AVISource("E:\frameserver.avi").killaudio().AssumeTFF()

SetMTMode(2,0) # This requires the multi-core-modified AVISynth

#Only use chroma restoration for analog source material
chroma=source.Cnr2("oxx",8,16,191,100,255,32,255,false) #VHS
#chroma=source.Cnr2("oxx",8,14,191,75,255,20,255,false) #Laserdisc

output=MDegrain2i2(chroma,0,0) #Use 2 or 4 for the first number for better quality (but slower)
#Use 1 for the second number if video flickers (but it degrades quality)

#stackhorizontal(source.separatefields(),output.separatefields())
return output


function MDegrain2i2(clip source, int "overlap", int "dct")
{
overlap=default(overlap,0) # overlap value (0 to 4 for blksize=8)
dct=default(dct,0) # use dct=1 for clip with light flicker
fields=source.SeparateFields() # separate by fields
super = fields.MSuper()
backward_vec2 = super.MAnalyse(isb = true, delta = 2, overlap=overlap, dct=dct)
forward_vec2 = super.MAnalyse(isb = false, delta = 2, overlap=overlap, dct=dct)
backward_vec4 = super.MAnalyse(isb = true, delta = 4, overlap=overlap, dct=dct)
forward_vec4 = super.MAnalyse(isb = false, delta = 4, overlap=overlap, dct=dct)

#The thSAD parameter is the main "control" over the denoising
fields.MDegrain2(super, backward_vec2,forward_vec2,backward_vec4,forward_vec4,thSAD=400)
Weave()
}




#Denoising using fft3Dfilter, but without motion compensation, for interlaced video.
loadPlugin("c:\Program Files\AviSynth 2.5\plugins\CNR\Cnr2.dll")
loadPlugin("c:\Program Files\AviSynth 2.5\plugins\fft3dfilter.dll")

#Modify this to point to the video file you use.
source=AVISource("E:\frameserver.avi").KillAudio()

#Chroma denoising for VHS tapes (not needed for digital video)
chroma=source.Cnr2("oxx",8,16,191,100,255,32,255,false)

#The following is the usual setting
final=chroma.fft3dfilter(sigma=2, sigma2=3, sigma3=6, sigma4=10, bt=4, bw=16, bh=16, ow=8, oh=8, dehalo=0, sharpen=1, degrid=1,interlaced=true)

#These are additional settings that might be useful
#final=chroma.FFT3DFilter(sigma=2, sigma2=3, sigma3=6, sigma4=10, bt=4, bw=16, bh=16, ow=8, oh=8, dehalo=1, sharpen=1, degrid=1,interlaced=true)
#final=chroma.FFT3DFilter(sigma=3, sigma2=7, sigma3=12, sigma4=20, bt=4, bw=16, bh=16, ow=8, oh=8, dehalo=1, sharpen=1, interlaced=true)
#final=chroma.FFT3DFilter(sigma=3, sigma2=5, sigma3=10, sigma4=15, bt=4, bw=16, bh=16, ow=8, oh=8, dehalo=1, sharpen=1, degrid=1, interlaced=true)
#final=chroma.fft3dfilter(sigma=8, plane=0, bh=16, bw=16, ow=8, oh=8, sharpen=3, bt=3, interlaced=true)
#final=chroma.fft3dfilter(sigma=14, plane=0, sharpen=0, dehalo=1,interlaced=true)
#final=chroma.fft3dfilter(sigma=2, sigma2=10, sigma3=15, sigma4=8, plane=0, bt=3, bw=16, bh=16, ow=8, oh=8, dehalo=1, sharpen=1, smin=20, smax=1000, wintype=2, kratio=1.0, measure=true, interlaced=true, degrid=1)
#final=chroma.fft3dfilter(sigma=3, sigma2=7, sigma3=12, sigma4=20, plane=0, bt=3, bw=16, bh=16, ow=8, oh=8, dehalo=1, sharpen=0.5, smin=20, smax=1000, wintype=2, kratio=1.0, measure=true, interlaced=true, degrid=1)
#final=chroma.fft3dfilter(sigma=1.5, plane=0, sharpen=0.4, dehalo=1, wintype=2, bt=5, bw=32, bh=32, ow=16, oh=16, interlaced=true)

return final



Jay Gladwell wrote on 9/25/2009, 4:24 AM

In the for-what-it's-worth department...

A fella named David Esp posted this at the DVinfo forum regarding the EX3 and AviSynth.

The bottom line being, I presume (shooting with an EX3) AviSynth would be of no help to me, even if I was able to use it.


apit34356 wrote on 9/25/2009, 5:06 AM
Jay, maybe you would be better off converting the EX codec to uncompress avi because of video noise, then processing the avi with different noise programs as needed. You'll save a lot of headaches avoiding re-compressing noise and loss issues.
plasmavideo wrote on 9/25/2009, 11:21 AM
Part 1:

I've been piddling around with different NR methods for a while, mostly trying to clean up old VHS stuff with moderate success. I like Neat Video, but as John says the render times can be a real killer. I also have Topaz Enhance, which has a Reduce Noise and Enhance mode. Render times for that is a killer too.

After trying many different filters in VirtualDub, I recently found a combo that's fast and pretty effective, although the resultant quality is not quite as good as the above mentioned programs.

MSU has a NR Filter, MSU Denoiser version 2.5.1 which uses GPU processing, and is very speedy. Using that in combination with the Smart Smoother filter does a pretty fair job for general noise. I'm playing with various other combinations of filters used in conjunction with the MSU one now, trying to see which ones are the best with usable render times.

Something else that I just got was the NewBlue FX Video Essentials II pack which has a denoiser. It is intriguing, and is very simple to adjust. If you set the NR to be too aggressive, it tends to flatten detail too much, so I'm now trying to see what the best settings for that are. It works in Vegas.

Now, something I've used in Edius, but haven't tried in Vegas yet, is applying a small amount of motion blur combined with a small amount of median filter. That works well if you only have a small amount of camera generated grain.

Here's part 2:

Up until recently, I was shooting and producing everything in 4:3 SD. However, last Christmas, I started shooting all of our church productions, and most other stuff in 16:9 HDV, and producing DVDs that would play letterboxed on a SD TV, and fullscreen on an HD set. I figured the SD upconverted by the DVD players would look pretty good on an HD set, and generally they do. However, several weeks ago, on one production, I noticed the camera grain noise on an upconverted DVD and wanted to see what using some NR would do to it. I had thought that the NR would cause loss of detail and sharpness, so I hadn't really done much of it on typically well lit video in the past.

My jaw hit the floor after processing the video with the aforementioned slight motion blur and median filter. The DVD video looked sharper and more realistic. I'm guessing that what's happening is that the mpeg encoder is operating much more efficiently without having to deal with trying to process that grain, and can instead pay more attention to the detail processing.

So, I plan on implementing some form of NR on all of my stuff from now on, especially indoor footage, even if the lighting appears to be adequate. I want to shoot some footage in good outdoor lighting to see if the NR helps there, but I can't help but think that applying just a tiny bit of NR would help virtually all footage shot with today's cameras. I have to say my cameras fall more into the upper end consumer/lower prosumer line though, so footage from a high end camera might not show the same benefit. I'll try some stuff shot on a good P2 camera and evaluate that next.

I really want to get my head wrapped around AVIsynth and try John's scripts.

Fun stuff . . . .
fausseplanete wrote on 9/25/2009, 2:19 PM
Jay,

That was me on that other forum. Not a show-stopper, just a nuisance, having to transcode EX3 footage to AVI (I happened to use Cineform) before I can put it thru AviSynth. Nobody replied there yet (since a day ago), so I guess there's no obvious way to do it. But it works OK using the AVI.

Meanwhile I'm in the process of comparing results of my best denoising practice using NeatVideo and those of various AviSynth options including John Meyer's scripts (in between all the other chores etc.). Many thanks to John for helping out. More work needed on my part at this stage, so no firm conclusions yet.

David
eVoke wrote on 10/10/2009, 1:04 PM
Downloaded and installed the 64bit version last night. I really like the ability to use it within Vegas Pro itself versus using it in After Effects then bringing the clip back over to Vegas Pro.
The only hiccup I encountered was after the initial install my Vegas Pro layout changed and I needed to reset it.
robwood wrote on 11/28/2009, 5:20 PM
"recovering 24p from 29.97 video that was telecined"

thats interesting>useful. where is this script posted?!