View Full Version : Seesaw and noise addition
DeathAngelBR
16th August 2007, 22:11
I've been trying lots of sharpening filters and seesaw obviously does it best. But I'm worried about the noise it adds to the whole frame, so I wonder if there's a way I'm not aware of that seesaw sharpens the image but doesn't add noise to it?
ColorMatrix(hints=true,interlaced=true)
tfm(d2v="VTS_01_1.d2v",cthresh=2,blockx=4,blocky=4).tdecimate(hybrid=1)
crop( 4, 4, -2, 0)
Lanczos4Resize(848,480)
a=last
b=a.Undot()
SeeSaw(a,b, NRlimit=3, NRlimit2=4, Sstr=1.5, Slimit=5, Spower=5, Sdamplo=6, Szp=16)
Original image:
http://img169.imageshack.us/img169/1839/1010001originalxa0.th.png (http://img169.imageshack.us/img169/1839/1010001originalxa0.png)
Sharpening with seesaw:
http://img169.imageshack.us/img169/6164/1010002seesawcu0.th.png (http://img169.imageshack.us/img169/6164/1010002seesawcu0.png)
Undot() after seesaw:
http://img169.imageshack.us/img169/3057/1010003seesawundotiw5.th.png (http://img169.imageshack.us/img169/3057/1010003seesawundotiw5.png)
Considering that there's an Undot() before, could it be that using it again would "blur" too much or decrease overall quality?
edit: I decreased Sstr to 1.0, but there's little noise left still. My concern is that denoising too much = bluring too much.
Nikos
17th August 2007, 00:49
Undot() has negligible effect. Try using another filter like degrainmedian() for serious denoise.
TheRyuu
17th August 2007, 04:17
With IVTC, I recommend you use Colormatrix after tfm+tdecimate. But it really doesn't matter.
undot really doesn't do anything. And removegrain(mode=1) is the same thing only faster if your looking for that (especially the sse3 version).
degrainmedian(mode=1) would be better (pretty fast too).
Even better fft3dfilter() (but a lot slower)
SeeSaw really shouldn't create noise. Maybe you need to tweak the settings more?
Also for anime, I'd suggest trying LSF (LimitedSharpenFaster) as well. I like the result it gives. Also try smode=3 and smode=4 with it and compare.
(were the denoiser is before LSF, also LSF is by far much easier to configure):
fft3dfilter()
LimitedSharpenFaster(ss_x=1.5, ss_y=1.5, smode=3, stregnth=125, overshoot=1, undershoot=1) #play around with smode=3/4, see which you like better
FastLineDarkenMOD(thinning=0, strength=50) #change strength to suit your taste
And don't forget about line darkerners like FastLineDarken (see FastLineDarkenMOD, newest version is a May 2007 version by Didee), toon or vmtoon.
Play around and see what you like.
P.S. Resizing before you filters can blur noise (causing it to not be picked up by the denoiser) but it's your call were you want to put it. Sometimes it's better with it before, sometimes after.
R3Z
17th August 2007, 04:43
Personally i would use a combination of RemoveGrain(2).Vaguedenoiser()
I normally alter vaguedenoisers settings, but they wont help here so you have to do that yourself.
DeathAngelBR
17th August 2007, 05:25
With IVTC, I recommend you use Colormatrix after tfm+tdecimate. But it really doesn't matter.
It matters, because I get an error if I put it after tfm+tdecimate.
undot really doesn't do anything. And removegrain(mode=1) is the same thing only faster if your looking for that (especially the sse3 version).
degrainmedian(mode=1) would be better (pretty fast too).
Even better fft3dfilter() (but a lot slower)
degrainmedian blurs too many details and removegrain ignores or doesn't detect stuff that fluxsmoothst does. (don't ask)
SeeSaw really shouldn't create noise. Maybe you need to tweak the settings more?
Been doing it.
I'll give LSF a try. :thanks:
TheRyuu
17th August 2007, 06:07
It matters, because I get an error if I put it after tfm+tdecimate.
You shouldn't. Your using info=3 on the mpeg2source right?
Furthermore, I like using it like this:
movie = mpeg2source("C:\movie.d2v", info=3)
movie = tfm(movie,d2v="movie.d2v").tdecimate()
movie = ColorMatrix(movie,mode="Rec.709->Rec.601",hints=true,threads=0) #or appropriate color conversion
last = movie
Same way automkv does it, and I like it.
degrainmedian blurs too many details and removegrain ignores or doesn't detect stuff that fluxsmoothst does. (don't ask)
Then try fft3dfilter. Best denoiser on the planet. IMO, vaguedenoiser can take away too many details and as long as the source isn't really noisy, fft3dfilter will do just fine (or fft3dgpu).
Been doing it.
I'll give LSF a try. :thanks:
Probably a good shot :)
I think that SeeSaw i just amplifying the blocking/noise that is already there.
Dark Shikari
17th August 2007, 06:34
Well the best is probably MVTools-motion-compensated FFT3DFilter :cool:
R3Z
17th August 2007, 06:41
Then try fft3dfilter. Best denoiser on the planet. IMO, vaguedenoiser can take away too many details and as long as the source isn't really noisy, fft3dfilter will do just fine (or fft3dgpu).
Vaguedenoiser takes away too many details?
Only if you fudge the settings. The same is also true for fft3d. That can make the picture like a gauss blur :p
*.mp4 guy
18th August 2007, 00:35
There is hardly any noise (or detail) in that screenshot, dctfun4b(4,4) should be more then good enough, and relatively fast.
DeathAngelBR
18th August 2007, 23:21
There is hardly any noise (or detail) in that screenshot, dctfun4b(4,4) should be more then good enough, and relatively fast.
There are more frames, you know :p
I'm getting an error when using LSF (removegrain invalid mode 19) or FastLineDarkenMOD (removegrain invalid mode 20). Am I missing something? I got removegrain 0.9, masktools v2.0a32 and mvtools.dll :confused:
TheRyuu
18th August 2007, 23:50
There are more frames, you know :p
I'm getting an error when using LSF (removegrain invalid mode 19) or FastLineDarkenMOD (removegrain invalid mode 20). Am I missing something? I got removegrain 0.9, masktools v2.0a32 and mvtools.dll :confused:
Install removegrain 0.9 then copy over it removegrain 1.0 (remove grain 0.9 and 1.0 also have a few different files (like ssetools with 0.9 and denoisesharpen with 1.0))
Terranigma
19th August 2007, 00:03
Well the best is probably MVTools-motion-compensated FFT3DFilter :cool:
FFT3D is great, but mvdegrain totally destroys it. mvdegrain + mvmask + qpel estimation + exhaustive search + overlap 8/2 = Very slow processing, but probably the greatest denoiser combo there is. This combo requires like a quad core and maybe 8 gigs of memory to use properly.
ChrisW77
19th August 2007, 01:27
FFT3D is great, but mvdegrain totally destroys it. mvdegrain + mvmask + qpel estimation + exhaustive search + overlap 8/2 = Very slow processing, but probably the greatest denoiser combo there is. This combo requires like a quad core and maybe 8 gigs of memory to use properly.
Do you happen to have a general script to test with ?
I happen to have a newly purchased Core2Quad Q6600, and 4Gb RAM, and wouldn't mind giving this beast something to play with :devil: :)
Terranigma
19th August 2007, 01:49
Do you happen to have a general script to test with ?
I happen to have a newly purchased Core2Quad Q6600, and 4Gb RAM, and wouldn't mind giving this beast something to play with :devil: :)
Ok, You asked for it. :D
Start from your post here (http://forum.doom9.org/showthread.php?p=1010433#post1010433).
Since then, it's involved into something only a hebephrenic would use.
source = last.deblock_qed()
w=width()
h=height()
backward_vec2 = source.MVAnalyse(isb=true, delta=2,blksize=8,search=3,searchparam=2,pel=4,overlap=8/2,overlapV=8/2,dct=0,idx=1)
backward_vec1 = source.MVAnalyse(isb=true, delta=1,blksize=8,search=3,searchparam=2,pel=4,overlap=8/2,overlapV=8/2,dct=0,idx=1)
forward_vec1 = source.MVAnalyse(isb=false, delta=1,blksize=8,search=3,searchparam=2,pel=4,overlap=8/2,overlapV=8/2,dct=0,idx=1)
forward_vec2 = source.MVAnalyse(isb=false, delta=2,blksize=8,search=3,searchparam=2,pel=4,overlap=8/2,overlapV=8/2,dct=0,idx=1)
maskp1 = mvmask(kind=1, vectors=forward_vec1, ysc=255).UtoY()
maskp2 = mvmask(kind=1, vectors=forward_vec2).UtoY()
maskp3 = mvmask(kind=1, vectors=backward_vec1, ysc=255).UtoY()
maskp4 = mvmask(kind=1, vectors=backward_vec2).UtoY()
maskf = average(maskp1, 0.25, maskp2, 0.25, maskp3, 0.25, maskp4, 0.25).spline36resize(w,h)
smooth = source.degrainmedian(mode=3, limity=16, limituv=8).fft3dfilter(bw=16, bh=16, bt=3, sigma=4, plane=0)
source2 = maskedmerge(source,smooth,maskf)
source2.MVDegrain2(backward_vec1,forward_vec1,backward_vec2,forward_vec2,thSAD=400,idx=2)
RemoveGrain(0,11).gradfun2db(1.51).RemoveGrain(mode=1)
What I did was basically took *.mp4 guy's script and made it slower. This works very well on sources with rain, snow, sleet, fire, or whatever other misconception you may find.
For a slight speed (haha, not by much), use fft3dgpu instead, and maybe remove deblock_qed. =P
ChrisW77
19th August 2007, 02:10
Holy crap :eek: lol.
Thanks for the script, should make this PC break down and beg for mercy.
Overclockers, should forget about a 24-hour Prime session, and just run this script, lol.
Thanks again. :)
Dark Shikari
19th August 2007, 02:41
Ok, You asked for it. :D
Start from your post here (http://forum.doom9.org/showthread.php?p=1010433#post1010433).
Since then, it's involved into something only a hebephrenic would use.
w=720
h=480
fields = last
backward_vec2 = fields.MVAnalyse(isb=true, delta=2,blksize=8,search=3,searchparam=2,pel=4,overlap=8/2,overlapV=8/2,dct=0)
backward_vec1 = fields.MVAnalyse(isb=true, delta=1,blksize=8,search=3,searchparam=2,pel=4,overlap=8/2,overlapV=8/2,dct=0)
forward_vec1 = fields.MVAnalyse(isb=false, delta=1,blksize=8,search=3,searchparam=2,pel=4,overlap=8/2,overlapV=8/2,dct=0)
forward_vec2 = fields.MVAnalyse(isb=false, delta=2,blksize=8,search=3,searchparam=2,pel=4,overlap=8/2,overlapV=8/2,dct=0)
maskp1 = mvmask(kind=1, vectors=forward_vec1, ysc=255).UtoY()
maskp2 = mvmask(kind=1, vectors=forward_vec2).UtoY()
maskp3 = mvmask(kind=1, vectors=backward_vec1, ysc=255).UtoY()
maskp4 = mvmask(kind=1, vectors=backward_vec2).UtoY()
maskf = average(maskp1, 0.25, maskp2, 0.25, maskp3, 0.25, maskp4, 0.25).spline36resize(w,h)
smooth = fields.degrainmedian(mode=3, limity=16, limituv=8).fft3dfilter(bw=16, bh=16, bt=3, sigma=4, plane=4)
fields2 = maskedmerge(fields,smooth,maskf)
fields2.MVDegrain2(backward_vec1,forward_vec1,backward_vec2,forward_vec2,thSAD=400)
RemoveGrain(0,11).gradfun2db(1.51).deblock_qed().RemoveGrain(mode=1)
What I did was basically took *.mp4 guy's script and made it slower. This works very well on sources with rain, snow, sleet, fire, or whatever other misconception you may find.
For a slight speed (haha, not by much), use fft3dgpu instead, idx values, and maybe remove deblock_qed. =P
Why dct=0?
Didée
19th August 2007, 02:50
By all means, do assign idx identifiers in this script. idx=1 in all MVanalyse, idx=2 in MVDegrain2.
You can use FFT3D with plane=0. In your maskedmerge line, you're discarding FFT3D's chroma filter'ed planes anyway.
If you use deblock_qed there, you can kick it out as well. It's close to useless in that place. Rather apply it directly to the input clip. This even will potentially improve motion estimation. (Unless you find it's such a broadsword detail killer, hrmh.)
Instead of
w=720 h=480 fields=last,
be smart and write
fields=last w=width() h=height()
Oh, and it's a bit irritating to name a progressive clip "fields", isn't it.
For the OP's clip, this filtering is breaking a fly on the wheel.
Blue_MiSfit
19th August 2007, 11:27
Good advice! I will have to try this out on the MacPro at work (assuming I can get her b0rken Windows install functioning properly again!!)
I had to do some industrial grain denoising a few months ago from a DV source, and I think this would be a lovely script to try.
Now all I need is another 6 gigs of RAM, and x64 to make use of it. Oh wait, no AviSynth x64 to run this properly :(
~MiSfit
*.mp4 guy
19th August 2007, 12:32
If you use deblock_qed there, you can kick it out as well. It's close to useless in that place. Rather apply it directly to the input clip. This even will potentially improve motion estimation. (Unless you find it's such a broadsword detail killer, hrmh.)
For the OP's clip, this filtering is breaking a fly on the wheel.
Agreed, If your source is blocky Deblock qued should be run earlier;
and this filtering is extremely excessive for the example in this thread.
@Didée
Deblock qued isn't a big detail killer, I just find any loss of detail to be unacceptable, even the tiny little bits of detail lost by plain mvdegrain bother me from time to time, and I can't stand fft3d with sigma > 1.
Terranigma
19th August 2007, 15:40
Haha, thanks Didée and *.mp4 guy. I'll edit it accordingly to what you guys suggested. :)
---
Updated
Terranigma
19th August 2007, 15:49
Why dct=0?
Well, some oscillation may occur, and it's noticeable around scene changes. Also, there really isn't any benefits from using anything other than 0 with this chain. You seen me using/specifying it in an earlier thread for a pointless purpose (All it was good for was just slowing down processing with maybe a 1% difference). DCT is set to 0 by default anyways, I just have it in there just in case some folks might like to use a different dct method.
ChrisW77
19th August 2007, 16:57
Haha, thanks Didée and *.mp4 guy. I'll edit it accordingly to what you guys suggested
Thats works pretty impressive, though, like you originally said, very slow.
I tried it out on some VHS material I'm struggling with thats full of VHS Long-Play noise, and some diagonal interference, and it done a better job than my own mvtools script, but was at least 5-times slower.
Cheers for sharing that, anyway. :)
ficofico
19th August 2007, 19:04
I've done some test and result are very, but very good.....
source it's dv interlaced 720*576 16:9
only mvbob & lanczosresize(720,400)
http://ficofico.interfree.it/mvbob.jpg
after:
MT("SeeSaw(NRlimit=0, NRlimit2=5, Sstr=2.8, Szp=1, Slimit=50, Sdamplo=29, Spower=1, sootheT=0, SdampHi=35)",2)
dull = last
sharp = dull.mt("LimitedSharpenfaster(ss_x=6.8,ss_y=6.8,smode=3,strength=230,overshoot=3)")
Soothe(sharp,dull,15)
http://ficofico.interfree.it/sharpen.jpg
and after denoising using the script:
http://ficofico.interfree.it/finale.jpg
Finally I've found "the denoiser"............ but I need an upgraded at my pc, 0,30 frame/s only for denoising...
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.