Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
|
|
Thread Tools | Search this Thread | Display Modes |
14th March 2005, 16:04 | #1 | Link |
Huh?
Join Date: Sep 2003
Location: Uruguay
Posts: 3,103
|
Trying to find the cause of a huge flaw in a filterchain...
I am in the process of filtering a VHS capture and while I'm pretty happy at the results there's one side effect to the filterchain I'm using: small details are greatly reduced. I have tried disabling the filters individually but haven't been able to pinpoint the cause of that. This is the filterchain I'm using:
SSIQ(diameter=11,strength=50,interlaced=false) ConvertToYV12() hqdn3d(0,0,3,3) Cnr2("xxx",4,5,255) BlindDeHalo3(rx=3.25,ry=3.25,strength=140,lodamp=4.0,hidamp=0.0,PPmode=2) Undot() DeGrainMedian() Convolution3D(preset="animeLQ") aWarpSharp(depth=16,cm=1) FastLineDarken(strength=120,thinning=0) LimitedSharpen(ss_x=2,ss_y=2,Dest_x=640,Dest_y=480,Strength=128) You can download the encode [deleted]. Since the source occupies 190MBytes I can't upload it in its entirety, but ask me for whatever frame ranges you want from it (the source is 23,976 fps too) and I'll upload them (I suggest you include frames 189 and 256 in the request, they are good showcases of the issue). I would also greatly appreciate feedback on the quality of the encode. Last edited by Chainmax; 28th March 2005 at 01:57. |
14th March 2005, 16:57 | #3 | Link |
Pig on the wing
Join Date: Mar 2002
Location: Finland
Posts: 5,718
|
I was just about to say the same.
I would substitute all the denoisers with eDeen. All the details will be lost with that one alone
__________________
And if the band you're in starts playing different tunes I'll see you on the dark side of the Moon... |
14th March 2005, 19:31 | #4 | Link |
Huh?
Join Date: Sep 2003
Location: Uruguay
Posts: 3,103
|
I am not one to usually indulge in filter gorging, but SSIQ, BlindDeHalo3 and CNR2 have to be there. I used aWarpSharp and FastLineDarken with thinning = 0 because aWarpSharp's thinning looks better to me than FastLineDarken's. Undot is pretty much like using no filter at all speedwise and gives a little extra compressibility. That leaves out hqdn3d, DeGrainMedian and C3DYV12 up for discussion. I would appreciate it if you could download the encode, ask for some frames from the source and discuss this in a more informative way.
P.S: in case you have actually downloaded the encode, did it look that bad to you? I thought it looked awesome considering the source. |
15th March 2005, 06:53 | #6 | Link |
ReMember
Join Date: Nov 2003
Posts: 416
|
Can you post the original frames next to the filtered that you speak of?
www.uploadhouse.com or www.imageshack.us |
15th March 2005, 08:27 | #8 | Link |
Does it really matter?
Join Date: Jun 2004
Location: Chicago, IL
Posts: 1,542
|
your definitely going to have to post the full source. I can't even judge what filters you should dump by that clip. all I know is it's super blurry and several of those filters can cause that.
if you need a place to host your clip pm me and let me know and I can host it for you. |
15th March 2005, 10:46 | #10 | Link | |
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,389
|
Quote:
temporal first -> noise is "huge", low limits for the temporal filter won't catch all noise ("cutoff"-effect), high limits will remove the noise but cause damage, too. spatial first, then temporal -> noise has "softened down", and the temporal filter has a much better chance to do good work with lower limits. However it's dangerous to make a general statement about this. It absolutely depends on the charecteristics of source/detail and noise.
__________________
- We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!) |
|
15th March 2005, 12:38 | #11 | Link |
Bored...
Join Date: Apr 2003
Location: Unknown
Posts: 2,812
|
Yeah, I know it depends one the source etc...
But this statement refers to the script Chainmax posted !!! Maybe have another look at the 1st. filter Chainmax used... I guess temporal denoisers have problems to "catch" the noise after it was smoothed by something like sshq, no? So, my suggestion was more like... Calm the noise down via temporal denoising and then do the final smoothing with sshq !!! EDIT: Doh, just realize that Chainmax used ssiq and not sshiq... ^^ Bye Last edited by Soulhunter; 15th March 2005 at 15:08. |
15th March 2005, 15:03 | #12 | Link | |
Guest
Join Date: Jan 2002
Posts: 21,901
|
Quote:
|
|
15th March 2005, 15:05 | #13 | Link |
Registered User
Join Date: Nov 2004
Posts: 227
|
When processing VHS I prefer using something like :
---------------- Cnr2() RemoveDirt() FFT3DFilter(sigma=5) or VagueDenoiser(threshold=2.5,method=1,nsteps=8,chromaT=0.9,wiener=true) LimitedSharpen(ss_x=1.5,ss_y=1.5,Strength=100,wide=true,special=true) ---------------- and details are okay Last edited by Leo 69; 15th March 2005 at 15:08. |
15th March 2005, 16:26 | #14 | Link | |
Huh?
Join Date: Sep 2003
Location: Uruguay
Posts: 3,103
|
Quote:
ChronoCross: unless I mistook what you said, I must clarify that the 16MB clip that can be downloaded from the OP is the final filtered encode so it doesn't need any extra filtering. What I need help in is how to solve the loss of tiny details (like the dimming of the stars in frame 189 or the disappearance of nightcrawler's eyes in frame 256) via eliminating/replacing some of the filters in the chain because other than that the clip looks perfect to me. Then again, I would certainly appreciate your comments on the quality of the encode or suggestions for alternate filters like Soulhunter and Leo 69 did. Soulhunter: the first version of the clip was made with the following script: SSIQ(diameter=11,strength=50,interlaced=false) ConvertToYV12() hqdn3d(0,0,3,3) BlindDeHalo3(lodamp=4.0, hidamp=4.0,PPmode=2) RemoveGrain() Deen() LimitedSharpen(ss_x=2,ss_y=2,Strength=160) FastLineDarken() and IMO it looked much worse. I can upload it too if you want to check it out. Leo 69: I tried VagueDenoise and didn't like it much, and IIRC RemoveDirt is known for having trouble with fine lines. I will try out replacing DeGrainMedian and C3D with FFT3DFilter though, thanks for the suggestion . Last edited by Chainmax; 15th March 2005 at 16:29. |
|
15th March 2005, 16:33 | #15 | Link |
Pig on the wing
Join Date: Mar 2002
Location: Finland
Posts: 5,718
|
Have you tried Didée's LRemoveDust? You might try substituting some of the stronger filters with that one, maybe DeGrainMedian+Con3D. It can be found in the RemoveGrain thread, second or third page from the end.
I belong to those who think that less filtering is better, especially with VHS sources where you can easily remove all the details there's left
__________________
And if the band you're in starts playing different tunes I'll see you on the dark side of the Moon... |
15th March 2005, 16:46 | #16 | Link |
Huh?
Join Date: Sep 2003
Location: Uruguay
Posts: 3,103
|
I'll try that as well, thanks for the suggestion. Like I said in my first reply, I am not one to usually indulge in filter gorging either. Is this the function you're referring to:
function LRemoveDust(clip input, int _mode, int "limit") { limit = default(limit,4) LL = string(limit) STR = "x "+LL+" + y < y "+LL+" - x "+LL+" - y > y "+LL+" + x ? ?" repmode = 2 clensed = Clense(input) rep = Repair(clensed, input, mode=repmode) rg = RemoveGrain(rep, mode=_mode) trep = TemporalRepair(rg, rep) trep2 = isyuy2(input) \ ? trep.converttoyv12() \ : trep input2 = isyuy2(input) \ ? input.converttoyv12() \ : input limit!=0 ? yv12lutxy(trep2,input2,yexpr=STR,U=2,V=2) : last out = isyuy2(input) \ ? last.converttoyuy2().mergechroma(trep) \ : last return out } ? Does it only need MaskTools? |
15th March 2005, 17:20 | #17 | Link | |
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,389
|
Quote:
Apart from the speed, the nice thing is that in case of a less noisy clip, the noise can be removed more or less completely - and in case of bigger noise, when LRemoveDust turns out to kill too much detail when trying to achieve full noise removal (with a big limit), it still does a very good job in "taming down" the noise (with lower limits), so that life for upfollowing filters gets much easier. "My" version LRemoveDust indeed needs the MaskTools (as the majority of my scripts do ). However, in the RemoveGrain thread, kassandro posted a newer version (together with some "inofficial" plugins), that does all the work by plugins only: no MaskTools needed for that one, and it's even a tad faster.
__________________
- We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!) |
|
15th March 2005, 17:36 | #18 | Link |
Huh?
Join Date: Sep 2003
Location: Uruguay
Posts: 3,103
|
Are you referring to this function:
function MCRemoveDust(clip input, int _smooth, bool _grey) { repmode = 2 clmode = 4 quad = Quadruple(input, grey=_grey) # each pixel is quadrupled, SSETools are needed qpel = RemoveGrain(quad, mode=12, modeU=-1) # blur the luma for searching motion vectors bvectors = MVAnalyse(qpel, blksize=16, lambda=200, isb=true) fvectors = MVAnalyse(qpel, blksize=16, lambda=200, isb=false) backward = MVCompensate(quad, bvectors, mode=1) forward = MVCompensate(quad, fvectors, mode=1) clensed = mcclense(quad, backward, forward, grey=_grey).shrinkby2(grey=_grey) #SSETools are needed for shrinking rep=Repair(clensed, input, mode=repmode, modeU=_grey ? -1 : repmode) rg = RemoveGrain(rep, mode=clmode, modeU=_grey ? -1 : clmode) return TemporalRepair(rg, rep, grey=_grey, smooth=_smooth) } ? It needs MVTools and RemoveGrain at least... |
15th March 2005, 17:56 | #19 | Link |
Pig on the wing
Join Date: Mar 2002
Location: Finland
Posts: 5,718
|
No, there's
Code:
function LRemoveDust(clip input, int _mode, int "limit") { limit=default(limit,4) repmode = 2 clensed = Clense(input) rep=Repair(clensed, input, mode=repmode) rg = RemoveGrain(rep, mode=_mode) rd=TemporalRepair(rg, rep) return LimitChange(rd, input, limit, limitU=255) } Yep, credits also to kassandro for RemoveGrain, Clense, (Temporal)Repair and LimitChange
__________________
And if the band you're in starts playing different tunes I'll see you on the dark side of the Moon... Last edited by Boulder; 15th March 2005 at 18:00. |
15th March 2005, 18:18 | #20 | Link |
Huh?
Join Date: Sep 2003
Location: Uruguay
Posts: 3,103
|
Ok, the fourth try is on the works, with chroma-limiting LRemoveDust to substitute Undot+DeGrainMedian+C3D and without aWarpSharp (gonna give FastLineDarken,s thinning another go), thanks for all the suggestiosn so far people .
|
Thread Tools | Search this Thread |
Display Modes | |
|
|