Back in early 2003 I first posted about how to reduce chroma and luma noise in VHS video captures. The original technology I used then seems pretty crude now.
I guess all of us have experienced this feeling as digital video technology has progressed.
I wanted to share my latest technique which is significantly superior to both Neat Video and to fft3dfilter (an AVISynth plugin). I have mostly been using fft3dfilter. This new technique not only produces amazingly good quality, but it is also MUCH faster than anything I have used previously. On my computer (a 3.2 GHz i7), I can clean SD interlaced video at 3x real time.
Anyone who uses Neat Video should be impressed with that.
This noise reduction uses AVISynth. If that isn't your cup of tea, you don't need to read any further.
Here's the "recipe" for cleaning interlaced SD video. It can easily be adapted to HD and/or progressive. Interlaced is harder to do correctly which is why I am posting that.
1. Download AVISynth.
2. Install AVISynth.
3. Download the MVTools v2.5.2 plugin. Put the MVTools2 DLL in the AVISynth plugin folder (make sure it is MVTools2.DLL and not MVTools.DLL: you want the one with the "2" at the end).
4. Download the MT plugin. This provides multi-threading capability to AVISynth. Put the MT DLL in the plugins folder. Then, go to the C:\WINDOWS\SYSTEM32 folder and rename the AVISynth.DLL file. Once renamed, copy the "special" AVISynth.DLL file contained in the MT zip file to the SYSTEM32 folder
5. Copy the script below to Notepad and save it with the extension "AVS."
6. In the AVISource line in the script, replace the video file name with the path and name of the video file you want to improve.
7. Open the AVS script in VirtualDub and edit and save the results. If you prefer to edit and render in Vegas, you can open the AVS file in VFAPIConv and then save the result to a signpost AVI file (this takes a few minutes for a two hour file). Open the resulting AVI file in Vegas.
Here's the script:
The reason I think this is so good is that noise reduction is mostly about following the most famous line in the Hippocratic Oath: "Above all, do no harm." As I have trekked through dozens of noise reduction technologies over the past half dozen years, the main improvement has not been in the amount of noise removed, but in the elimination of all the unwanted artifacts that noise reduction technologies always seem to introduce, including ghosting, smearing, loss of detail, color shifts, and more. This technology has by far least artifacting of anything I have used.
If anyone wants to post some problem video, I'd be happy to run it through this filter and post the results.
BTW, I certainly didn't invent any of this, and much of it has been discussed for quite awhile over at the doom9.org forum. I hadn't tried any of these newer techniques because I was reasonably happy with fft3Dfilter. However, I just transferred about thirty VHS tapes and became increasingly aware of shortcomings in the fft3Dfilter, most notably in the loss of detail on large almost-uniform backgrounds.
Also, fft3Dfilter is slow. A key bonus with MVTools2/MT is performance. With the addition of the multi-threaded hack, which MVTools2 has been specifically designed to utilize, I can now use 100% of all eight cores on my i7, and as a result can achieve sustained 94 fps on 30 fps SD interlaced material, or 3x realtime speed. (I get this in VirtualDub; the VFAPIConv overhead makes the performance in Vegas somewhat slower). For reference, I just tried the Neat plugin and got about 9 fps, so this is a full order of magnitude (10x) faster.
I guess all of us have experienced this feeling as digital video technology has progressed.
I wanted to share my latest technique which is significantly superior to both Neat Video and to fft3dfilter (an AVISynth plugin). I have mostly been using fft3dfilter. This new technique not only produces amazingly good quality, but it is also MUCH faster than anything I have used previously. On my computer (a 3.2 GHz i7), I can clean SD interlaced video at 3x real time.
Anyone who uses Neat Video should be impressed with that.
This noise reduction uses AVISynth. If that isn't your cup of tea, you don't need to read any further.
Here's the "recipe" for cleaning interlaced SD video. It can easily be adapted to HD and/or progressive. Interlaced is harder to do correctly which is why I am posting that.
1. Download AVISynth.
2. Install AVISynth.
3. Download the MVTools v2.5.2 plugin. Put the MVTools2 DLL in the AVISynth plugin folder (make sure it is MVTools2.DLL and not MVTools.DLL: you want the one with the "2" at the end).
4. Download the MT plugin. This provides multi-threading capability to AVISynth. Put the MT DLL in the plugins folder. Then, go to the C:\WINDOWS\SYSTEM32 folder and rename the AVISynth.DLL file. Once renamed, copy the "special" AVISynth.DLL file contained in the MT zip file to the SYSTEM32 folder
5. Copy the script below to Notepad and save it with the extension "AVS."
6. In the AVISource line in the script, replace the video file name with the path and name of the video file you want to improve.
7. Open the AVS script in VirtualDub and edit and save the results. If you prefer to edit and render in Vegas, you can open the AVS file in VFAPIConv and then save the result to a signpost AVI file (this takes a few minutes for a two hour file). Open the resulting AVI file in Vegas.
Here's the script:
#Denoiser script for interlaced videoThe only variable you might want to change is the thSAD number. Higher numbers provides stronger filtering.
Loadplugin("C:\Program Files\AviSynth 2.5\plugins\mvtools2.dll")
loadPlugin("c:\Program Files\AviSynth 2.5\plugins\Cnr2.dll")
loadPlugin("c:\Program Files\AviSynth 2.5\plugins\MT.dll")
#The following line sets the simplest multi-threading mode
SetMTMode(5)
#Modify this line to point to your video file
source=AVISource("E:\Disney Films\Winning Inline Hockey0001.avi")
#The following line sets a faster multi-threading mode
SetMTMode(2,0)
#CNR reduces VHS chroma noise. Not needed for digital sources (like DV)
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
#This next line calls the actual noise reduction function
#Change the overlap paramater (the first "0" in the line below) to 0, 1, 2, 3, or 4
#to get different reduction characteristics.
#Change the second "0" to "1" if you want to remove flicker in video
output=MDegrain2i2(chroma,0,0)
#This next line can be uncommented if you want to compare before and after
#If you remove the comment, comment out the “return output” line below it.
#stackhorizontal(source,output)
return output
#The following is the function which actually performs the noise reduction.
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)
fields.MDegrain2(super, backward_vec2,forward_vec2,backward_vec4,forward_vec4,thSAD=400)
Weave()
}
The reason I think this is so good is that noise reduction is mostly about following the most famous line in the Hippocratic Oath: "Above all, do no harm." As I have trekked through dozens of noise reduction technologies over the past half dozen years, the main improvement has not been in the amount of noise removed, but in the elimination of all the unwanted artifacts that noise reduction technologies always seem to introduce, including ghosting, smearing, loss of detail, color shifts, and more. This technology has by far least artifacting of anything I have used.
If anyone wants to post some problem video, I'd be happy to run it through this filter and post the results.
BTW, I certainly didn't invent any of this, and much of it has been discussed for quite awhile over at the doom9.org forum. I hadn't tried any of these newer techniques because I was reasonably happy with fft3Dfilter. However, I just transferred about thirty VHS tapes and became increasingly aware of shortcomings in the fft3Dfilter, most notably in the loss of detail on large almost-uniform backgrounds.
Also, fft3Dfilter is slow. A key bonus with MVTools2/MT is performance. With the addition of the multi-threaded hack, which MVTools2 has been specifically designed to utilize, I can now use 100% of all eight cores on my i7, and as a result can achieve sustained 94 fps on 30 fps SD interlaced material, or 3x realtime speed. (I get this in VirtualDub; the VFAPIConv overhead makes the performance in Vegas somewhat slower). For reference, I just tried the Neat plugin and got about 9 fps, so this is a full order of magnitude (10x) faster.