View Full Version : Analog Capture Postprocessing - Filter selection help
chaembian
26th August 2006, 08:47
Hi
@Mods - if this post is better posted at the capture forum, kindly move the post.
I'm trying to get a good DVD quality video out of the capture I have made. I've been trying to follow the analog capture guide but I don't seem to be doing a good job. Besides there seems to be plenty of new filters available since the guide was last updated. I do not have much time left to encode this capture. I've spent some time searching the threads. I've only discovered the names of various new denoisers to try and see. There's so much to learn to even use these denoisers. And here I seek your help in assisting me to make my choice.
The sample from the source, HuffYUV 2.2 -- about 40M.
http://rapidshare.de/files/30796219/Show_Original_Sample.rar.html
I tried encoding with a simple,
AviSource("The.Show1.00.avi")
Trim(0,13229)
Letterbox(0, 4)
## deinterlacing ##
LeakKernelDeint(order=0)
## denoiser ##
fft3dgpu(sigma=3,bt=4,plane=4,sharpen=0.5)
The result was nice on the TV but with these visible artifacts -- in the sample video uploaded, the grey floor visible was blocking. In the PC, it looked blocking but in the TV, it looked like a pattern of / scattered across. And the movements weren't all that smooth. I don't think I'm describing it well -- kind of flickering in places. It's hard to notice but once you have noticed, pretty hard to ignore. The movements sometimes don't look fluid. I'll try to upload a sample from the encode. I'm trying to figure out a way to snip a clip a mpg2 clip.
Can these flickerings be avoided by using another deinterlacer? For improvising the image, can I use this FRFun() as smoothener with SeeSaw as sharpener?
Thanks in advance.
regards
Chaembian
Blue_MiSfit
26th August 2006, 09:39
Deinterlacing will almost always affect motion a bit.
Here is what I ended up thinking was a good result:
loadplugin("...\fft3dgpu.dll")
avisource("...\Show_Original_Sample.avi")
# Deinterlacing
assumetff()
interp = separatefields().selecteven().EEDI2(field=1)
tdeint(order=1,field=1,edeint=interp)
# Denoising
fft3dgpu(sigma=3, sharpen=.3)
I noticed that with fft3dgpu, you were trying to process both chroma and luma, using the highest temporal setting, an increased noise threshold, and a moderate sharpening. I saw similar effects to what you described with thse settings. The source has lots of noise, both luma and chroma on the gray floor area. This call to fft3dgpu removed this noise but replaced it with blocks and smudgy noise. fft3dgpu() seemed to produce much better results, and through trial and error, I discovered the bt setting to be causing the most damage. Eventually, I settled on the setting you see in this script.
As far as deinterlacing goes, I just tried what seems to work well for me with analog interlaced captures. It seems to work VERY well for this short sample.
This script is really slow. :) But I think it gets the job done well!
Good luck, let me know what you think
Do I understand that this source you provided is from the re-encoded capture? What did you capture into, interlaced MPEG-2? If so, use DGIndex to trim a section and demux it to an m2v. I am not totally clear on what this sample is, exactly.
~MiSfit
chaembian
26th August 2006, 17:46
Hi
Firstly, thank you for the troubles. The sample provided was HuffYUV encoded sample. I used VirtualDub to capture into HuffYUV.
Can you tell me the rationale behind picking the deinterlacer? Or was this a choice made by trail and error too?
regards
Chaembian
edit - A big thansk for the script. I'll run it thro' and come back! :)
Boulder
26th August 2006, 18:55
Are you sure you want to deinterlace? If you plan to put the video on DVD and watch it on the TV, don't deinterlace but process and encode as interlaced.
chaembian
26th August 2006, 20:03
How do I interpret the deinterlacer filters you have used in the script? The deinterlacing smears the faces in the background every alternative frame ... hmmm, smearing happens in areas with movement. I tried with securedeint() and it looked OK, but with mvbob(), there were very little hint of smearing and no jumping movements at all. Rendering got super slow though! Will these smearings be visible during real time play at all? Are the frame jumps responsible for the flickering?
A big thanks on the settings for fft3dgpu(). Noise seems to be non-existant. How did you figure about the noise in chroma and luma and how did you use that information to set fft3dgpu()?
chaembian
26th August 2006, 20:10
Are you sure you want to deinterlace? If you plan to put the video on DVD and watch it on the TV, don't deinterlace but process and encode as interlaced.
I was also thinking about just,
loadplugin("C:\Program Files\AviSynth 2.5\plugins\fft3dgpu.dll")
avisource("Show_Original_Sample.avi")
# Denoising
fft3dgpu(sigma=3, sharpen=.3, interlaced=true)
But I'm not able to decide between interlaced and deinterlaced content.
Blue_MiSfit
27th August 2006, 00:40
The fft3dfilter and fft3dgpu manuals were helpful in setting the parameters for fft3dgpu. It's obvious that there is a lot of luma noise especially on the floor. It looks like there is a lot of chroma noise too, and perhaps there is. Unfortunately, setting plane=4 (which asks fft3dgpu to process all planes) created the evil blocking artifacts we both witnessed. leaving it at the default (which only proceses luma) seemed to provide the best image quality to me.
I didnt notice the smearing from eedi that you mentioned. Perhaps it was not visible in the small test clip you provided? In any case choosing a deinterlacer seems to be best achieved through trial and error. I know very little about these powerful and dreadfully slow filters. I'm still at the copy and paste from the forums stage on deinterlacing :D
But yes, if you plan on making a DVD, just keep it interlaced. Intelaced MPEG-2 is ubiquitous. (sp?)
Good luck...
~MiSfit
chaembian
27th August 2006, 03:06
But yes, if you plan on making a DVD, just keep it interlaced. Intelaced MPEG-2 is ubiquitous. (sp?)
I guess I'll go deinterlaced way then! :) I'll post my results in sometime.
Boulder
27th August 2006, 09:37
I guess I'll go deinterlaced way then! :) I'll post my results in sometime.
Uhm, did you mean interlaced way?
When you play the interlaced content on your DVD and view it on the TV, it'll look exactly like the original capture what comes to motion fluidity (be it VHS or a TV capture).
I'll take a look at the sample if I can come up with anything. Meanwhile, there's a thousand threads about treating interlaced material. Based on your posts, it looks to me that you haven't reinterlaced the video after bobbing.
Boulder
27th August 2006, 10:27
A very quick-and-dirty test:AVISource("E:\Temp\Captures\Show_Original_Sample.avi")
AssumeTFF()
TDeint(mode=1)
cleaned=TemporalSoften(2,5,0,8,2)
vbw1=cleaned.MVAnalyse(isb=true,truemotion=true,delta=1,pel=2,chroma=false,blksize=16,idx=1,sharp=1)
vfw1=cleaned.MVAnalyse(isb=false,truemotion=true,delta=1,pel=2,chroma=false,blksize=16,idx=1,sharp=1)
vbw2=cleaned.MVAnalyse(isb=true,truemotion=true,delta=2,pel=2,chroma=false,blksize=16,idx=1,sharp=1)
vfw2=cleaned.MVAnalyse(isb=false,truemotion=true,delta=2,pel=2,chroma=false,blksize=16,idx=1,sharp=1)
MVDegrain2(last,vbw1,vfw1,vbw2,vfw2,thSAD=400,idx=2)
AssumeTFF()
SeparateFields()
SelectEvery(4,0,3)
Weave()
I don't know what colorspace you originally used so I just got YV12 with AVISource.
For chroma denoising, I recommend FFT3DGPU. In that case you could use the parameter plane=0 in MVDegrain2.
chaembian
28th August 2006, 16:15
A very quick-and-dirty test:AVISource("E:\Temp\Captures\Show_Original_Sample.avi")
AssumeTFF()
TDeint(mode=1)
cleaned=TemporalSoften(2,5,0,8,2)
vbw1=cleaned.MVAnalyse(isb=true,truemotion=true,delta=1,pel=2,chroma=false,blksize=16,idx=1,sharp=1)
vfw1=cleaned.MVAnalyse(isb=false,truemotion=true,delta=1,pel=2,chroma=false,blksize=16,idx=1,sharp=1)
vbw2=cleaned.MVAnalyse(isb=true,truemotion=true,delta=2,pel=2,chroma=false,blksize=16,idx=1,sharp=1)
vfw2=cleaned.MVAnalyse(isb=false,truemotion=true,delta=2,pel=2,chroma=false,blksize=16,idx=1,sharp=1)
MVDegrain2(last,vbw1,vfw1,vbw2,vfw2,thSAD=400,idx=2)
AssumeTFF()
SeparateFields()
SelectEvery(4,0,3)
Weave()
I don't know what colorspace you originally used so I just got YV12 with AVISource.
For chroma denoising, I recommend FFT3DGPU. In that case you could use the parameter plane=0 in MVDegrain2.
Boulder, I meant processing as interlaced material only! :o
The capture was done in YUY2 colorspace as it was mentioned in the guide.
I ran your script and wow!! :D I'm sorry but I did not get your point on the usage of FFT3DGPU (and thence, MVDegrain2) Are you recommending to denoise chroma noise using FFT3DGPU and then do away with luma noise using MVDegrain2 (by overriding default 4 with 0)?
Boulder
28th August 2006, 16:20
I ran your script and wow!! :DActually the MVDegrain part contains pretty much the default settings, though I changed blocksize to 16 and don't use any overlapping. Overlapping should make motion estimation more accurate but it'll slow the process down quite a bit.
I'm sorry but I did not get your point on the usage of FFT3DGPU (and thence, MVDegrain2) Are you recommending to denoise chroma noise using FFT3DGPU and then do away with luma noise using MVDegrain2 (by overriding default 4 with 0)?
Yes, use MVDegrain2 for luma only (with plane=0) and then use FFT3DGPU for chroma denoising only (it's plane=1 IIRC).
What encoder do you use to create the MPEG2 files for DVD?
chaembian
28th August 2006, 16:50
Actually the MVDegrain part contains pretty much the default settings, though I changed blocksize to 16 and don't use any overlapping. Overlapping should make motion estimation more accurate but it'll slow the process down quite a bit.
Yes, use MVDegrain2 for luma only (with plane=0) and then use FFT3DGPU for chroma denoising only (it's plane=1 IIRC).
What encoder do you use to create the MPEG2 files for DVD?
OK! The show is mostly close-ups and the last couple of frames are sharp enough. :) For FFT3DGPU, planes 1,2 and 3 are chroma denoisers. How do I choose between the planes? Are they various degrees of denoising?
On your script, shouldn't the IDX values be the same for both MVAnalyse and MVDegrain2? Or are these kept different intentionally?
I'm using CCE 2.7.
Boulder
28th August 2006, 17:48
In FFT3DGPU it doesn't matter, the whole chroma information is processed if plane is 1, 2 or 3. You can play around with the sigma settings (there's four of them, see the documentation) for different strength for different frequencies. Place it right after MVDegrain2.
The idx's are different because I use a pre-denoised clip for motion estimation.
To make sure you get YUY2 out of AVISource, add the parameter pixel_type="YUY2" in it (ffdshow can output YV12 data when decoding HuffYUV).
chaembian
29th August 2006, 14:31
In FFT3DGPU it doesn't matter, the whole chroma information is processed if plane is 1, 2 or 3. You can play around with the sigma settings (there's four of them, see the documentation) for different strength for different frequencies. Place it right after MVDegrain2.
The idx's are different because I use a pre-denoised clip for motion estimation.
To make sure you get YUY2 out of AVISource, add the parameter pixel_type="YUY2" in it (ffdshow can output YV12 data when decoding HuffYUV).
AVISource("K:\CAPTURE\The.Show1.00.avi",pixel_type="YUY2").ColorYUV(levels="PC->TV")
Trim(0,13229)
Letterbox(0, 5)
AssumeTFF()
TDeint(mode=1)
cleaned=TemporalSoften(2,5,0,8,2)
vbw1=cleaned.MVAnalyse(isb=true,truemotion=true,delta=1,pel=2,chroma=false,blksize=16,idx=1,sharp=2)
vfw1=cleaned.MVAnalyse(isb=false,truemotion=true,delta=1,pel=2,chroma=false,blksize=16,idx=1,sharp=2)
vbw2=cleaned.MVAnalyse(isb=true,truemotion=true,delta=2,pel=2,chroma=false,blksize=16,idx=1,sharp=2)
vfw2=cleaned.MVAnalyse(isb=false,truemotion=true,delta=2,pel=2,chroma=false,blksize=16,idx=1,sharp=2)
MVDegrain2(last,vbw1,vfw1,vbw2,vfw2,thSAD=400,idx=2,plane=0)
fft3dgpu(sigma=2,plane=3)
AssumeTFF()
SeparateFields()
SelectEvery(4,0,3)
Weave()
This was the script I used to encode the first of the three parts. It looks nice but is smooth. Is there a sharpening filter that I can use? I guess I should have used the sharpen option if FFT3DGPU(). The test clip looked sharp. But this seems to be smooth or blurred. I'll run with sharpen=0.3 as Misfit had suggested and then another with LimitedSharpen() and get back with results.
Boulder
29th August 2006, 15:09
You could try lowering the thSAD value to taste, LimitedSharpenFaster is also a good choice. If you use the sharpen parameter in FFT3DGPU with those settings, you only sharpen the chroma.
chaembian
31st August 2006, 19:38
SetMemoryMax(128) # for 512MB RAM
loadplugin("C:\Program Files\AviSynth 2.5\plugins\RemoveNoiseMC\LimitedSupport_03Dec05B.dll")
loadplugin("C:\Program Files\AviSynth 2.5\plugins\LSF\mt_masktools.dll")
loadplugin("C:\Program Files\AviSynth 2.5\plugins\LSF\RemoveGrainSSE2.dll")
import("C:\Program Files\AviSynth 2.5\plugins\LSF\LimitedSharpenFaster.avsi")
AVISource("K:\CAPTURE\The.Show1.00.avi",pixel_type="YUY2").ColorYUV(levels="PC->TV")
Trim(0,13229)
Letterbox(0, 5)
ConvertToYV12
AssumeTFF()
TDeint(mode=1)
cleaned=TemporalSoften(2,5,0,8,2)
vbw1=cleaned.MVAnalyse(isb=true,truemotion=true,delta=1,pel=2,chroma=false,blksize=16,idx=1,sharp=2)
vfw1=cleaned.MVAnalyse(isb=false,truemotion=true,delta=1,pel=2,chroma=false,blksize=16,idx=1,sharp=2)
vbw2=cleaned.MVAnalyse(isb=true,truemotion=true,delta=2,pel=2,chroma=false,blksize=16,idx=1,sharp=2)
vfw2=cleaned.MVAnalyse(isb=false,truemotion=true,delta=2,pel=2,chroma=false,blksize=16,idx=1,sharp=2)
MVDegrain2(last,vbw1,vfw1,vbw2,vfw2,thSAD=400,idx=2,plane=0)
fft3dgpu(sigma=2,plane=3)
LimitedSharpenFaster(ss_x=1.0, ss_y=1.0, Smode=3, strength=40)
AssumeTFF()
SeparateFields()
SelectEvery(4,0,3)
Weave()
ConvertToYUY2
This was the script used and the results look very good. A big thanks for all the help, Boulder.
Boulder
31st August 2006, 19:59
You might want to move the ConverttoYV12 after TDeint, it's better to let the deinterlacer do its job in the original colorspace. Also convert back to YUY2 right after LimitedSharpen for optimal results. Using Soothe with LimitedSharpenFaster is also recommended, the search should help you find the thread where it is discussed.
The MaskTools v2 alpha package should include the latest LimitedSharpenFaster, make sure you use that one. With it, you don't need the LimitedSupport dll anymore.
chaembian
1st September 2006, 20:11
SetMemoryMax(128) # for 512MB RAM
loadplugin("C:\Program Files\AviSynth 2.5\plugins\LSF\mt_masktools.dll")
loadplugin("C:\Program Files\AviSynth 2.5\plugins\LSF\RemoveGrainSSE2.dll") # <- Ditto
import("C:\Program Files\AviSynth 2.5\plugins\LSF\LimitedSharpenFaster.avsi")
import("C:\Program Files\AviSynth 2.5\plugins\LSF\Soothe.avsi")
AVISource("K:\CAPTURE\The.Show3.00.avi",pixel_type="YUY2").ColorYUV(levels="PC->TV")
Trim(83,13874)
Letterbox(0, 5)
AssumeTFF()
TDeint(mode=1)
ConvertToYV12
cleaned=TemporalSoften(2,5,0,8,2)
vbw1=cleaned.MVAnalyse(isb=true,truemotion=true,delta=1,pel=2,chroma=false,blksize=16,idx=1,sharp=2)
vfw1=cleaned.MVAnalyse(isb=false,truemotion=true,delta=1,pel=2,chroma=false,blksize=16,idx=1,sharp=2)
vbw2=cleaned.MVAnalyse(isb=true,truemotion=true,delta=2,pel=2,chroma=false,blksize=16,idx=1,sharp=2)
vfw2=cleaned.MVAnalyse(isb=false,truemotion=true,delta=2,pel=2,chroma=false,blksize=16,idx=1,sharp=2)
MVDegrain2(last,vbw1,vfw1,vbw2,vfw2,thSAD=400,idx=2,plane=0)
fft3dgpu(sigma=2,plane=3)
dull = last
sharp = dull.LimitedSharpenFaster(ss_x=1.0, ss_y=1.0, Smode=3, strength=50)
Soothe(sharp,dull,20)
ConvertToYUY2
AssumeTFF()
SeparateFields()
SelectEvery(4,0,3)
Weave()
I have made the updates. I'll run them thro'... thanks again for the suggestions.
chaembian
10th September 2006, 04:57
:(
The second instalment of the show had too much noise! :( In comparison, the first capture looks so good unprocessed. Can anything be done at all to remove the noise?
Please find the sample clip uploaded here:
http://rapidshare.de/files/32573948/Sample_Ep_2.avi
I hope we can do something to remove the noise!
chaembian
14th September 2006, 02:40
I tried using the lq_filter() from RemoveNoiseMC and Fizick's DegrainMedian.
import("C:\Program Files\AviSynth 2.5\plugins\RemoveNoiseMC\RemoveNoiseMC.avs")
loadplugin("C:\Program Files\AviSynth 2.5\plugins\DeGrainMedian.dll")
AVISource("L:\Sample_Ep_2.avi",pixel_type="YUY2").ColorYUV(levels="PC->TV")
AssumeTFF()
TDeint(mode=1)
ConvertToYV12
lq_filter()
DeGrainMedian(limitY=1,limitUV=3,mode=1)
DeGrainMedian(limitY=1,limitUV=3,mode=1)
ConvertToYUY2
AssumeTFF()
SeparateFields()
SelectEvery(4,0,3)
Weave()
There is still some white noise. I'm not sure if that is term. I was meaning to follow the calls to DegrainMedian with the denoising scriptlet suggested by Boulder. Do comment on the script and let me know if this is a correct direction to take.
nibbles
16th September 2006, 18:29
You might try this. It's called SeeSaw.avs by didee, and you pass it like this:
LoadPlugin("C:\Temp\filters32\LeakKernelDeint.dll")
LoadPlugin("C:\Temp\filters32\mvtools.dll")
LoadPlugin("C:\Temp\filters32\DeGrainMedian.dll")
LoadPlugin("C:\Temp\filters32\masktools.dll")
LoadPlugin("C:\Temp\filters32\removegrainsse2.dll")
LoadPlugin("C:\Temp\filters32\repairsse2.dll")
Import("C:\Temp\filters32\seesaw.avs")
AviSource("C:\stuff\cap1.avi").ColorYUV(levels="PC->TV")
AssumeTFF()
LeakKernelDeint(threshold=10, map=false, order=1)
ConvertToYV12()
backward_vec2 = last.MVAnalyse( isb = true, delta = 2, pel = 2, overlap=4, sharp=1, idx = 1 )
backward_vec1 = last.MVAnalyse( isb = true, delta = 1, pel = 2, overlap=4, sharp=1, idx = 1 )
forward_vec1 = last.MVAnalyse( isb = false, delta = 1, pel = 2, overlap=4, sharp=1, idx = 1 )
forward_vec2 = last.MVAnalyse( isb = false, delta = 2, pel = 2, overlap=4, sharp=1, idx = 1 )
a = last.MVDegrain2( backward_vec1, forward_vec1, backward_vec2, forward_vec2, thSAD=400, idx=1 )
b = a.DeGrainMedian( mode=1 )
SeeSaw( a, b, NRlimit=4, NRlimit2=5, Sstr=1.5, Slimit=9, Spower=9, Szp=16, sootheT=80, bias=40 )
ConvertToYUY2()
You can also substitue fft3dgpu in there for DeGrainMedian like this: b = a.fft3dgpu(sigma=3, bt=4, bw=16, bh=16, ow=8, oh=8)
The values are copy/pasted from another thread comparing denoisers on doom9,
except I changed sigma=3 the way you were using it. I think you would definitely
want to adjust the threshold on LeakKernelDeint by commenting out all the other
steps and setting map to true and adjusting threshold to your tastes. It does an
amazing job cleaning up vhs clone from a clone from a clone captures. It is still an
experimental script, and I wonder how it compares?
chaembian
17th September 2006, 09:19
Hi
Firstly, Thank you for the suggestion. I'll test with your script and come back with results here.
This is what I was playing with now.
SetMemoryMax(128) # for 512MB RAM
import("C:\Program Files\AviSynth 2.5\plugins\RemoveNoiseMC\RemoveNoiseMC.avs")
loadplugin("C:\Program Files\AviSynth 2.5\plugins\DeGrainMedian.dll")
loadplugin("C:\Program Files\AviSynth 2.5\plugins\RemoveNoiseMC\RemoveGrainSSE2.dll")
loadplugin("C:\Program Files\AviSynth 2.5\plugins\RemoveNoiseMC\RemoveDirtSSE2.dll")
AVISource("L:\Sample_Ep_3.avi",pixel_type="YUY2").ColorYUV(levels="PC->TV")
AssumeTFF()
TDeint(mode=1)
ConvertToYV12
lq_filter()
VagueDenoiser(threshold=0.8, method=1, nsteps=6)
#RemoveDirt(mthreshold=50,pthreshold=20)
DeGrainMedian(limitY=3,limitUV=2,mode=2)
DeGrainMedian(limitY=3,limitUV=2,mode=2)
backward_vec2 = last.MVAnalyse(isb = true, delta = 2, pel = 2, overlap=4, sharp=1, idx = 1)
backward_vec1 = last.MVAnalyse(isb = true, delta = 1, pel = 2, overlap=4, sharp=1, idx = 1)
forward_vec1 = last.MVAnalyse(isb = false, delta = 1, pel = 2, overlap=4, sharp=1, idx = 1)
forward_vec2 = last.MVAnalyse(isb = false, delta = 2, pel = 2, overlap=4, sharp=1, idx = 1)
a=last.MVDegrain2(backward_vec1,forward_vec1,backward_vec2,forward_vec2,thSAD=400,idx=1)
b = a.frfun3d()
SeeSaw(a,b,NRlimit=3, NRlimit2=4, Sstr=1.5, Slimit=5, Spower=5, Sdamplo=6, Szp=16)
ConvertToYUY2
AssumeTFF()
SeparateFields()
SelectEvery(4,0,3)
Weave()
An adaptation of Boulder's script. The other filters are put in. I was pretty much playing with the default values suggested in the respective manuals. It looked nice, but after encoding, there was still some noise buzzing around. This was even with FrFun3D() in the SeeSaw. The testing I tried with only FrFun3D() after the 2 calls DeGrainMedian had this noise too. This was the complaint for the first capture and then, Boulder did some magic and made them go away. ;) I'm trying to figure out to find a way to do it here to no avail. :/
Encoding seems to make the video go soft. Is there a way to retain the sharpness?
Didée
8th October 2006, 12:18
Didn't try all your other scripts yet, but played a little with the second source. Hm-hmh. Seems somehow immune against spelled magic. Nothing to be too proud of, but still: what about this:
http://img168.imageshack.us/img168/2429/trickyyb8.th.png (http://img168.imageshack.us/my.php?image=trickyyb8.png)
(DumbBobbed source, Frame 12)
Don't know how the other solutions look like ... but if anything is sure, then that above one was slower. By very much. And it doesn't look that brilliant, really. :o
chaembian
9th October 2006, 19:09
Didn't try all your other scripts yet, but played a little with the second source. Hm-hmh. Seems somehow immune against spelled magic. Nothing to be too proud of, but still: what about this:
http://img168.imageshack.us/img168/2429/trickyyb8.th.png (http://img168.imageshack.us/my.php?image=trickyyb8.png)
(DumbBobbed source, Frame 12)
Don't know how the other solutions look like ... but if anything is sure, then that above one was slower. By very much. And it doesn't look that brilliant, really. :o
Thank you very much!! :D
I'm sorry to be sounding naive but what is dumb bobbing? Searching returned this (http://forum.doom9.org/showthread.php?p=855626#post855626) . Are you suggesting to use TomsMoComp with Search effort set to 0? But from the manual, when SE is 0, its 'just a smarter bob'. :/
foxyshadis
9th October 2006, 19:34
Dumb bob is any bobber that works by interpolating a single field, ignoring its neighbors completely. (Bob, Eedi2, Sangnom, for example.) Smart bobs will interpolate spatially and temporally. (Which includes TomsMoComp.)
chaembian
9th October 2006, 19:43
Didn't try all your other scripts yet, but played a little with the second source. Hm-hmh. Seems somehow immune against spelled magic. Nothing to be too proud of, but still: what about this:
http://img168.imageshack.us/img168/2429/trickyyb8.th.png (http://img168.imageshack.us/my.php?image=trickyyb8.png)
(DumbBobbed source, Frame 12)
Don't know how the other solutions look like ... but if anything is sure, then that above one was slower. By very much. And it doesn't look that brilliant, really. :o
If that isn't magic, what is? ;) Will you kindly share the script? One of the scripts I was trying was running at 0.03 fps. Surely it cannot beat that! Even if it did, I wouldn't mind! :)
chaembian
9th October 2006, 19:48
Dumb bob is any bobber that works by interpolating a single field, ignoring its neighbors completely. (Bob, Eedi2, Sangnom, for example.) Smart bobs will interpolate spatially and temporally. (Which includes TomsMoComp.)
Aha, thank you! I just downloaded MVBob and tried the various dumb bob functions implemented at their defaults. Didée's is much cleaner!
nibbles
9th October 2006, 20:44
Firstly, Thank you for the suggestion. I'll test with your script and come back with results here.
Do you have any framecaps?
chaembian
9th October 2006, 21:09
Do you have any framecaps?
With the script as it was posted,
http://img181.imageshack.us/img181/2707/nibbles1xp2.th.png (http://img181.imageshack.us/my.php?image=nibbles1xp2.png)
With FFT3DGPU in place of DegrainMedian in b,
http://img128.imageshack.us/img128/1299/nibbles2bx2.th.png (http://img128.imageshack.us/my.php?image=nibbles2bx2.png)
Didée
10th October 2006, 09:09
ATM I'm not at home, may take a day or two to post a script.
What I meant is that I just used "Bob(0,0.5)" for bob-deinterlacing (since due to the noise, smart deinterlacing probably isn't of too much use here).
For the denoising part, basically I tried two different things:
a) motion compensation with strong temporal averaging
b) motion compensated FFT3DFilter + MVDegrain2
The former (from which is the screenshot derived) made the result more calm, but at the expense of some static noise appearing after the following sharpening stage. Picture was more crisp.
The latter (http://rapidshare.de/files/36185064/tricky_try2_ff-huffy.rar.html) (ffdshow-Huffyuv!!) left over some more fluctuations, but thereby appeared more vivid in that respect. Picture was more soft, though.
Sharpening was a bit tricky, too.
Generally, the script uses an approximation procedure. Noise is too strong for one-step denoising, so some pre-denoising is done for a better initial estimate. But this leaves much headroom for complexity ... one could as far as to do an insanely slow MC-denoising, just to get an estimate for the first, even slower pre-denoising, on which the (once more slower) final denoising is based. Not to forget that the sharpening stage should use motion compensation, too ... :(
May I ask:
- how long is the source? some minutes, two hours, ... ?
- what's your PC system like, in particular:
- how much RAM do you have installed?
Getting the maximum out of the source basically isn't a problem ... but the processing better should finish before the show's contestants have become grandmothers, shouldn't it.
BTW, I myself am (under-) equipped with only 512MB RAM, which is definetly too little for such complex stuff.
chaembian
10th October 2006, 19:38
ATM I'm not at home, may take a day or two to post a script.
What I meant is that I just used "Bob(0,0.5)" for bob-deinterlacing (since due to the noise, smart deinterlacing probably isn't of too much use here).
For the denoising part, basically I tried two different things:
a) motion compensation with strong temporal averaging
b) motion compensated FFT3DFilter + MVDegrain2
The former (from which is the screenshot derived) made the result more calm, but at the expense of some static noise appearing after the following sharpening stage. Picture was more crisp.
The latter (http://rapidshare.de/files/36185064/tricky_try2_ff-huffy.rar.html) (ffdshow-Huffyuv!!) left over some more fluctuations, but thereby appeared more vivid in that respect. Picture was more soft, though.
Sharpening was a bit tricky, too.
Generally, the script uses an approximation procedure. Noise is too strong for one-step denoising, so some pre-denoising is done for a better initial estimate. But this leaves much headroom for complexity ... one could as far as to do an insanely slow MC-denoising, just to get an estimate for the first, even slower pre-denoising, on which the (once more slower) final denoising is based. Not to forget that the sharpening stage should use motion compensation, too ... :(
The video looks good! :D However slow the script is, it definitely has made the noise non-existant.
May I ask:
- how long is the source? some minutes, two hours, ... ?
- what's your PC system like, in particular:
- how much RAM do you have installed?
1. 9, 9 and 10 minutes of the show essentially. I captured in 3 segments leaving out the commercials.
2. AMD Athlon 64 3200+ with 1G of RAM running Windows XP 32 bit. (From 512M upgraded for this task specifically! :/ ) If we'll need more, I think I can borrow another 512M from a friend.
The only issue I have with long encodes is the occasional power cuts here. After I leave for work, I simply cannot take the chance of leaving the computer running. What I have been doing is splitting the process into filter processing first, encoding next. :o
Getting the maximum out of the source basically isn't a problem ... but the processing better should finish before the show's contestants have become grandmothers, shouldn't it.
ROFLOL!!!
BTW, I myself am (under-) equipped with only 512MB RAM, which is definetly too little for such complex stuff.
I'll do my best to test the scripts for you! :sly: ;)
Pookie
11th October 2006, 01:14
b) motion compensated FFT3DFilter + MVDegrain2
:D
http://fileserver2.jpghosting.com/images/calendar_b74e85750ee1f646f35feccd07f407f9.jpg (http://www.jpghosting.com/showpic.php?image=calendar_b74e85750ee1f646f35feccd07f407f9.jpg)
chaembian
12th October 2006, 04:51
:D
http://fileserver2.jpghosting.com/images/calendar_b74e85750ee1f646f35feccd07f407f9.jpg (http://www.jpghosting.com/showpic.php?image=calendar_b74e85750ee1f646f35feccd07f407f9.jpg)
:scared:
Pookie
12th October 2006, 10:24
Just making a funny for Didée's amusement. :D
As long as you're not filtering "ApocalypseNow Redux" or "The Godfather Trilogy", you'll be fine.
chaembian
12th October 2006, 19:59
Just making a funny for Didée's amusement. :D
As long as you're not filtering "ApocalypseNow Redux" or "The Godfather Trilogy", you'll be fine.
I got the joke! Its just that I forgot to wink! ;)
nibbles
13th October 2006, 21:43
With the script as it was posted,
...
Ok, with the DegrainMedian version, what did it look like when you
adjusted the NRLimits for on the unique characteristics of your video?
What I meant is that I just used "Bob(0,0.5)" for bob-deinterlacing ....
The Catmull-Rom spline... :) It'll be interesting to
compare those to the Mitchell and Netravali defaults.
chaembian
16th October 2006, 20:31
Ok, with the DegrainMedian version, what did it look like when you
adjusted the NRLimits for on the unique characteristics of your video?
I don't know how but I completely missed this note from your old post
I think you would definitely
want to adjust the threshold on LeakKernelDeint by commenting out all the other
steps and setting map to true and adjusting threshold to your tastes. It does an
amazing job cleaning up vhs clone from a clone from a clone captures.
I did just that. Increasing the threshold made the footage better and there was a jerky movement that got corrected too. But the resultant video was still noisy to be used in MV steps, so I tried using LeakKernelDeInt in the script I was playing with. The result was very nice. The swarming noise seemed invisible and image looked crisper. :D But sadly, there are deinterlacing artifacts from LeaKKernelDeInt stage. Any suggestions to do away with those?
http://img176.imageshack.us/img176/8185/nibbles3fg0.th.png (http://img176.imageshack.us/my.php?image=nibbles3fg0.png)
pvann
25th October 2006, 22:54
ATM I'm not at home, may take a day or two to post a script.
.......
Generally, the script uses an approximation procedure. Noise is too strong for one-step denoising, so some pre-denoising is done for a better initial estimate. But this leaves much headroom for complexity ... one could as far as to do an insanely slow MC-denoising, just to get an estimate for the first, even slower pre-denoising, on which the (once more slower) final denoising is based. Not to forget that the sharpening stage should use motion compensation, too ...
Have you found the script? The frame grab you posted looked great.
chaembian
28th October 2006, 02:18
Have you found the script? The frame grab you posted looked great.
Seconded! :D
vcmohan
9th November 2006, 12:28
The magic of Didee has some what challenged me. I am using the source image and his processed image posted a little above to test my plugins. I got the following result using the script
<code>
crop(704,0,400,-10)
# 4 iterations RGB32 format
denoise( lx = 350, rx = 390, ty=460,by=560)
denoise( lx = 350, rx = 390, ty=460,by=560)
denoise( lx = 350, rx = 390, ty=460,by=560)
denoise( lx = 350, rx = 390, ty=460,by=560)
</CODE>
On left is input, in the middle Denoise output and on right is Didee's magic.
http://img95.imageshack.us/img95/952/denoised0cr6.jpg (http://imageshack.us)
While didee's image is sharper specially the background, and the self stripe design on the girls blouse, DeNoise output is softer and the forehead , cheeks and the hand have less blemishes. For some reason the stones (diamonds) on the bangle are not seen on Didee's output. The DeNoise process being only spatial I may not get much improvement. More images can be seen at my plugins page (clicking on the left column of the DeNoise plugin).
For getting noise statistics I used the part of saree worn by the girl ( lower right hand side).
Fizick
9th November 2006, 18:25
vcmohan,
Can you rename your 'denoise' filter to more specific name?
;)
Livesms
11th April 2007, 13:39
Is there any working ready-to-use edition of this script?
pvann
11th April 2007, 22:51
I'm only guessing, but I suspect that Didee's magic script is the one provided by Pookie in
http://forum.doom9.org/printthread.php?t=122069
It is slow but does a great job on old analogue video I have feed this hungry script. I have also found that you can adjust how many forward and backward motion compensations it does (eg only 1 or 2 forward + backward steps) and still get good results on some clips with a commensurate speed increase; of course you have to modify the interleave() and selectevery() calls to reflect less frames.
Didée
12th April 2007, 00:15
No, the script in ^that^ thread is not the same than the one that was used here. In the other thread, juggling was done with three iron balls, clockwise. Here, juggling was done with five daggers, counterclockwise, while riding a unicycle.
Both scripts were written from scratch, independendly. They share similar ideas, but the actual implementation differs significantly.
In the area of complex scripts like these ones are, I dislike posting not-yet-finished stuff. Posting the other script was a mistake.
pvann
12th April 2007, 00:47
LOL
I suggest you ride a bicycle while juggling five daggers counter clockwise - more stability!
I for one appreciate you posting not yet finished, but working, scripts since it advanced my understanding and use of motion compensation for cleaning analogue video (and for that matter any video).
I'm sure many await the finessed five dagger script you used in this thread so that we all can learn more about this complex topic.
Cheers
Livesms
12th April 2007, 06:51
No, the script in ^that^ thread is not the same than the one that was used here. In the other thread, juggling was done with three iron balls, clockwise. Here, juggling was done with five daggers, counterclockwise, while riding a unicycle.
Both scripts were written from scratch, independendly. They share similar ideas, but the actual implementation differs significantly.
In the area of complex scripts like these ones are, I dislike posting not-yet-finished stuff. Posting the other script was a mistake.
Would you be so kind to give both examples :)
Thanks in advance
jeffy
11th December 2007, 15:12
Didée, please, could you please publish the scripts? Thank you very much for all your work, time and patience so far.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.