View Full Version : Noise removal VCR Capture
flebber
1st January 2010, 03:27
I have started to convert some old videos I own to X264 files. I am capturing the files via Virtualdub and FFdshow mjpeg codec with the dscaler FLT_temporalcomb filter enabled.
I am trying to use avisynth when converting to x264. I am using a basic set of filters to try and remove noise, the results are okay but not great. Was hoping for any opinions on filter combinations you may have had success with.
My current filter:
DeGrainMedian(limitY=3,limitUV=4,mode=3,norow=true)
DeGrainMedian(limitY=3,limitUV=4,mode=3,norow=true)
VagueDenoiser(threshold=0.8, method=1, nsteps=6, chromaT=0.8)
asharp(1.75,4.0,0.25,hqbf=true)
results in this output.
http://farm5.static.flickr.com/4065/4232774270_05fa36dcc0_o.png and http://farm5.static.flickr.com/4043/4232002415_91f689a08b_o.png
flebber
1st January 2010, 11:21
Any other recommendations other than DegrainMedian ? Or should I use Degrainmedia via avisynth when capturing will this better eliminate the noise?
thetoof
1st January 2010, 12:01
temporaldegrain with user-specified prefiltered clip, fft3dfilter with adaptive sigmas or dfttest for denoising
lsfmod for sharpening, but you need dehaloing (like dehalo_alpha) before
flebber
1st January 2010, 15:03
Thanks, trying a few pf the filters on a test clip now :)
markanini
1st January 2010, 22:30
Thanks, trying a few pf the filters on a test clip now :)
thetoof's advice seems wise. Please post some shots of your results.
flebber
3rd January 2010, 06:25
thetoof's advice seems wise. Please post some shots of your results.
I will post results not intending to be rude, I haven't used some of thee scripts thetoof suggested and they are giving errors which I need to figure out.
Dehalo_alpha errors that expand is an invalid function.
LSFmod errors that mode 19 in the below section of the script is an invalid mode.
sharpdiff = mt_lutxy(sharpdiff,sharpdiff.removegrain(19,-1),
\ "x 128 - abs y 128 - abs > y "+string(soft)+" * x "+string(100-soft)+" * + 100 / x ?",U=1,V=1)
I have changed it to below to get it working though I not sure thats what they intended.
sharpdiff = mt_lutxy(sharpdiff,sharpdiff.RemoveGrain(mode=2).RemoveGrain(mode=2),
\ "x 128 - abs y 128 - abs > y "+string(soft)+" * x "+string(100-soft)+" * + 100 / x ?",U=1,V=1)
markanini
3rd January 2010, 06:37
No obiligation flebber just a personal wish. I'm guessing you have an issue lsfmod due to incorrect masktools version. Make sure you have v2.0a35 in your plugin directory. No idea about Dehalo_alpha but I'd do a forum search for updated versions of the script.
flebber
3rd January 2010, 06:58
I had masktools 2.0a36 I will change it to 35
LaTo
3rd January 2010, 12:16
I had masktools 2.0a36 I will change it to 35
You should use v2.0a36 but you only need mt_masktools-25.dll and not mt_masktools-26.dll (delete this one)
flebber
3rd January 2010, 12:40
You should use v2.0a36 but you only need mt_masktools-25.dll and not mt_masktools-26.dll (delete this one)
Thanks and you have got the up to date LSFmod in your signature too. Bonus.
flebber
3rd January 2010, 23:38
TemporalDegrain(degrain=1, ov=2, hq=1).dfttest(sigma=1.2).BlindDeHalo3(2.00,2.00,100,ppmode=-3).LSFmod()
http://farm5.static.flickr.com/4052/4242552696_18a1d89493_o.jpg
markanini
4th January 2010, 01:51
pretty good results your getting there. degrainmedian is good for what it is but nothing looks as clean and natural as mdegrain and derived scripts. did you try upping degrain and ov? that might just make dffttest reduant if your source allows for it. Yours seem to be a tough case for edge ringing, wish I could help more with that but i don't have much experince with blinddehalo etc. I do think ringing is a bigger problen than haloing in you source. Maybe try edgecleaner in mctemporaldenoisepp? I belive it's the latest and greatest of it's kind.
flebber
8th January 2010, 14:11
pretty good results your getting there. degrainmedian is good for what it is but nothing looks as clean and natural as mdegrain and derived scripts. did you try upping degrain and ov? that might just make dffttest reduant if your source allows for it. Yours seem to be a tough case for edge ringing, wish I could help more with that but i don't have much experince with blinddehalo etc. I do think ringing is a bigger problen than haloing in you source. Maybe try edgecleaner in mctemporaldenoisepp? I belive it's the latest and greatest of it's kind.
Definitely looking at other options to replace dfftest too. On my system it is very slow.
flebber
8th January 2010, 23:12
You were definitely right with the edgeclean theory on this one. This filter setup worked a charm
TemporalDegrain(degrain=1, ov=2, hq=1)
fft3dfilter(sigma=2.75, plane=3, bt=5, bw=32, bh=32)
MCTemporalDenoise(settings="low", edgeclean=true, ecrad=4, stabilize=true, maxr=2)
LSFmod()
R3Z
9th January 2010, 06:21
Mate, check the videos you are about to convert arent on rage first!
www.abc.net.au/rage
In regards to your filtering, how many fps are tyou getting ? The filtering looks like overkill for such videos.
flebber
9th January 2010, 12:07
Mate, check the videos you are about to convert arent on rage first!
www.abc.net.au/rage
In regards to your filtering, how many fps are tyou getting ? The filtering looks like overkill for such videos.
Dfftest was killing me its not much better without. Rage is a good idea but these are full band video's screaming jets - insanitary, anthrax persistence of time, cult - pure cult etc.
Any advice on filters gladly accepted, the one above is slow but the result was good.
markanini
9th January 2010, 23:29
I've had good experiences with mctemporaldenoise at medium or high presets on sources that look like yours. That would make the other denoisers redundant and you could use 'gpu=true' which would further decrease processing time if you have a relatively modern video card. Running different denoisers on top of each other can lead to weird motion and loss of details, Mctemporaldenoise is really good at balancing detail/noise.
R3Z
10th January 2010, 06:56
I would give the following a try (the TempGaussMC or YadifMod with Nnedi2 are only valid if its interlaced video);
TempGaussMC_beta1(blocksize=16,edimode="nnedi2",tr0=1,tr1=1,tr2=1,sovs=0,svthin=0,sharp=0)
#~ yadifmod(order=1, mode=1, edeint=nnedi2(field=3,threads=2)) Try either of these ! TempGauss is better but slower.
super = MSuper(pel=2, sharp=2)
backward_vec2 = super.MAnalyse(isb = true, delta = 2, overlap=8,blksize=16)
backward_vec1 = super.MAnalyse(isb = true, delta = 1, overlap=8,blksize=16)
forward_vec1 = super.MAnalyse(isb = false, delta = 1, overlap=8,blksize=16)
forward_vec2 = super.MAnalyse(isb = false, delta = 2, overlap=8,blksize=16)
MDegrain2(super, backward_vec1,forward_vec1,backward_vec2,forward_vec2,thSAD=400)
LimitedSharpenFaster(Strength=35,smode=3,soft=25)
I usually add some noise back in at the end, otherwise the videos tend to look lifeless and stale (a processed look).
Chainmax
10th January 2010, 07:17
Also, if you do dehaloing, follow thetoof's advice and use Dehalo_Alpha. It really beats the pants off any current alternatives in regards of detail retention (not-detail-massacre actually) and actual halo removal.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.