~SimpleX~
14th March 2010, 10:52
Hello. Is there any way to make it look better? I've tried TGMC and some other deinterlacers, but it didn't work well.
Sample (http://www.mediafire.com/?hfzw1ueawzh)
Didée
14th March 2010, 16:36
No deinterlacer will save this. There's some kind of constant field blending going on ... eventually someone had (ab)used TomsMoComp (line-averaging) or sth similar on those credits.
Maybe it can be improved with a little creativity ... I've an idea, let me try. But beware, it will be pretty slow (temporal median with radius=3, ouch). And it will work only on those scrolling credits.
Didée
14th March 2010, 20:45
Here's what I tried. The result is not perfect, but it's an improvement. Whether the improvement is worth the effort, that's another question ...
Script:
mpeg2source("VTS_01_1.demuxed_(~SimpleX~).d2v")
o = last
bobb = o.bob(0,0.5).assumetff()
# the method don't work when nothing moves
static = o.doubleweave().Vinverse()
# remove fieldblending (apparently, each field has 50% of the other-parity field, in a "max(x,y)" blend-mode )
ev = bobb.selecteven()
od = bobb.selectodd()
ev2 = mt_lutxy(ev,od.mt_expand(mode="vertical"),"x y 0.5 * - 2 *",U=2,V=2)
od2 = mt_lutxy(od,ev.mt_expand(mode="vertical"),"x y 0.5 * - 2 *",U=2,V=2)
new = interleave(ev2,od2)
# construct a helper clip for DepanEstimate (to make it not fail when the center of the screen is empty)
center = new.crop(248,0,-248,-0,true)
center2 = center.crop(56,0,-56,-0,true)
left = center2.selectevery(1,-150)
rite = center2.selectevery(1, 150)
center3 = stackhorizontal(left,center,rite).addborders(136,0,136,0)
center3 = center3.trim(0,framecount(bobb)-1)
# # a little pimp-up for more clarity of the letters ?
# new = new.mt_adddiff(mt_makediff(new,new.removegrain(3)),U=2,V=2)
# new = new.mt_adddiff(mt_makediff(new,new.removegrain(11)).mt_lut("x 128 - abs 16 / 1 4 / ^ 16 * 1.51 * x 128 - 3 ^ x 128 - 3 ^ abs 3 + 0.001 + / * 128 +"),U=2,V=2)
# do DepanInterleave, process with radius=3 temporal-median
mdata = center3.removegrain(11).removegrain(11).DepanEstimate(range=3)
long = new.DepanInterleave(mdata,prev=3,next=3,subpixel=2)
long.MedianBlurT(0,0,0,3) # why, oh why is this so ridiculously slow ...
# long.temporalsoften(3,255,255,255,2) # theory said "use median". Practice said "use temporalsoften" ;-)
selectevery(7,3)
# splice static text
last.trim(0,5135) + static.trim(5136,0)
# show result
stackhorizontal( bobb.subtitle("source.bob()"), last.subtitle("source.bob.FunkyRepair") )
Result: LINK (http://www.mediafire.com/file/hdgdmkmwzz1/VerySlowFunkyRepair.avi) (MediaFire, ~16MB)
Note -- It is not my fault that MedianBlurT() is so extremely slow. :(
~SimpleX~
14th March 2010, 21:05
The result is awesome, thanks, Didée!
Didée
15th March 2010, 01:51
That's too much. It's just OK.
For some awesome-ness, try swapping the "#" comments between the red lines and the blue lines in the freshly edited script. :)
(i.e. *do* use the removegrain(11) sharpening line)
~SimpleX~
15th March 2010, 22:07
It doesn't work. It seems "new" has less frames than bobb. Should "new" be formed from bobb?
Didée
15th March 2010, 23:15
Yes, exactly. It's one of my famous "break-script-by-last-minute-modification" mistakes.:devil: -- It's "ev=bobb.selecteven", and same for ~odd. Script will be corrected in a minute. Also, upload of the 2nd sample (with suggested settings) is running ...
Result#2: LINK (http://www.mediafire.com/file/ztkmnnwdzot/FunkyRepair_2.avi) (MediaFire,~16.5MB)
Practice over theory ... with temporalsoften the script runs 400% the speed of medianblur (I was concerned TS would smear, but it doesn't in this case). Also, the plain RG11 kernel here seems to work better for sharpening than the RG4 median.
I'd rate it "not half-bad". ;)
~SimpleX~
15th March 2010, 23:57
Is it a good idea to add eedi2 antialiasing and awarpsharp2 here? It looks somewhat better.
And what to use for lowering framerate by half? selectevery(2, 0)?
EDIT: Oh, 30 fps video is too ugly...
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.