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 |
11th June 2006, 03:05 | #181 | Link |
Registered User
Join Date: Sep 2004
Location: Near LA, California, USA
Posts: 1,545
|
You need to download the corrector function separately since it's not included in recent versions of mvtools.
You can get it separately here http://avisynth.org.ru/mvtools/corrector.html
__________________
Pirate: Now how would you like to die? Would you like to have your head chopped off or be burned at the stake? Curly: Burned at the stake! Moe: Why? Curly: A hot steak is always better than a cold chop. Last edited by Revgen; 11th June 2006 at 03:08. |
11th June 2006, 09:16 | #182 | Link | |
Doom9ing since 2001
Join Date: Oct 2001
Location: Seattle, WA, USA
Posts: 2,002
|
Quote:
|
|
23rd October 2006, 18:42 | #183 | Link |
Registered User
Join Date: Oct 2003
Location: Ascoli Piceno-Italy
Posts: 279
|
With this script i'm getting the error:
ther's no mvfps function.Why?Thanks!! SetMtMode(5) mpeg2source("F:\1x02\VIDEO_TS\VTS_01_1.d2v") import("d:\Programmi\AviSynth 2.5\plugins\SeeSaw.avs") import("d:\Programmi\AviSynth 2.5\plugins\mvbob.avs") #import("d:\Programmi\AviSynth 2.5\plugins\spresso.avs") ColorMatrix(d2v="F:\1x02\VIDEO_TS\VTS_01_1.d2v") Crop(8,80,-32,-80) SeparateFields() a=SelectEven().DeGrainMedian(limitY=0,limitUV=4,mode=1).SeeSaw(NRlimit=2, NRlimit2=2, Sstr=1.0, Slimit=7, Spower=2, Sdamplo=8, Szp=10, bias=1) b=SelectOdd().DeGrainMedian(limitY=0,limitUV=4,mode=1).SeeSaw(NRlimit=2, NRlimit2=2, Sstr=1.0, Slimit=7, Spower=2, Sdamplo=8, Szp=10, bias=1) weave() #TomsMoComp(1,3,1) mvbob() mvfps(25) LumaYV12(0,0.9) |
24th October 2006, 01:38 | #184 | Link |
Doom9ing since 2001
Join Date: Oct 2001
Location: Seattle, WA, USA
Posts: 2,002
|
If anyone runs into the same problem... Turns out this was causes by Avisynth's memory cap being set too low (16MB). It appears that some plugin in the MVBob suite doesn't report out of memory errors but produces bad results instead. So... Remember to give MVBob plenty of room to breathe!
|
7th August 2007, 19:21 | #186 | Link | |
Registered User
Join Date: Sep 2004
Location: Near LA, California, USA
Posts: 1,545
|
Quote:
MVBob needs RAM more than SSE2 or a faster CPU. It's also a function, so SSE2 would have to be present in all plugins in order to work.
__________________
Pirate: Now how would you like to die? Would you like to have your head chopped off or be burned at the stake? Curly: Burned at the stake! Moe: Why? Curly: A hot steak is always better than a cold chop. Last edited by Revgen; 7th August 2007 at 19:24. |
|
10th March 2008, 07:45 | #187 | Link |
likes to tinker
Join Date: Jan 2004
Location: girt by sea
Posts: 635
|
latest MVbob_MT2 ?
Is the latest MT2 version of MVbob here from foxyshadis ? http://forum.doom9.org/showthread.ph...334#post812334
|
29th March 2008, 02:49 | #188 | Link |
Registered User
Join Date: Aug 2006
Posts: 77
|
I think the newest version is on
http://forum.doom9.org/showthread.ph...18#post1052018 I myself use a modified version of mvbob as mvbob.mrestore usually gives better results than restore24 or other ivtc but it is really dead slow Code:
#needs mvtools >= 1.8.2 for pelclip, was: clip2x, dct is available since 1.6.1 #based on mvbob, a motion compensated bobber, build by scharfis_brain. ##nnedi and nnedibob was made possible by tritical and the fellow Doom9 community who contributed CPU cycles. #Helper functions: Function DumbBob(clip Input, int "Height") { Input.Bob(0, 0.5, height = Height) GetParity(Input) ? AssumeTFF() : AssumeBFF() } #slow, but accurate EEDI-bob, always dumb ;) function eedibob(clip i, bool "s") { s=default(s,false) i.separatefields().eedi2(field = (getparity(i) ? 3 : 2), nt = (s ? 35 : 50), pp = (s ? 3 : 1)) assumeframebased() getparity(i) ? assumetff() : assumebff() } Function nnEDIbob(clip Input) { Input.nnedi(field=-2) } # BSec is based on SecureBob, default is only different for YUY2 color. # l > 2 : different motiondedection, compares each field wih its temporal predessors, it reacts faster to "static" areas => anime # similar to motion/interlacing dedection of Kerneldeint # # postprocessing: (touces even non-interpolated fields in default code, one possible solution is included below) # edgeth,calmHEddge calms all nearly horizontal edges with strong temporal filtering (ReduceFlicker), # makes the bob-weakness less obvious, luma only => anime, edgeth is the threshold for the edge dedection. function BSec(clip Input, int "th", int "l",int "type", int "edgeth", bool "calmHEddge"){ function staticmask(clip e, int th, int l, int chromafilt){ e0 = e.MotionMask(thY1 = th, thY2 = th, thC1 = Round(th * 0.5), thC2 = Round(th * 0.5), thSD = 255, U = 3, V = 3) e1 = e0.trim(1, 0) e2 = e0.trim(2, 0) e3 = e0.trim(3, 0) e4 = e0.trim(4, 0) e5 = e0.trim(5, 0) e6 = e0.trim(6, 0) e7 = e0.trim(7, 0) ea0 = mt_logic(e0, e1, "or", u = chromafilt, v = chromafilt) ea1 = mt_logic(e2, e3, "or", u = chromafilt, v = chromafilt) ea2 = mt_logic(e4, e5, "or", u = chromafilt, v = chromafilt) ea3 = mt_logic(e6, e7, "or", u = chromafilt, v = chromafilt) eb0 = mt_logic(ea0, ea1, "or", u = chromafilt, v = chromafilt) eb1 = mt_logic(ea2, ea3, "or", u = chromafilt, v = chromafilt) ec = mt_logic(eb0, eb1, "or", u = chromafilt, v = chromafilt) (l==0) ? ec .duplicateframe(0).duplicateframe(0).duplicateframe(0) :\ (l==1) ? eb0.duplicateframe(0) :\ (l==2) ? ea0 : e0 return last } th = default(th, 3) l = default(l, 2) type=default(type,3) edgeth = default(edgeth, (default(calmHEddge,false) ? 110 : -1)) YV12input = isyv12(Input) i2=YV12input ? Input : Input.converttoyv12(interlaced = true) i3=i2.separatefields() YVtype = YV12input ? 3 : 1 Bobbed = (Type == 0) ? Input.DumbBob() :\ (Type == 1) ? Input.eedibob() :\ (Type == 2) ? Input.eedibob(s=true) :\ Input.nnEDIBob() Weaved = i2.DoubleWeave() EvenFields = i3.SelectEven().StaticMask(th, l, YVtype) OddFields = i3.SelectOdd() .StaticMask(th, l, YVtype) BobbedYV12= (YV12input ? Bobbed : Bobbed.converttoyv12()) CombMaskT = Interleave(EvenFields, OddFields).dumbbob() CombMask = (l > 2) ? Weaved.StaticMask(th, l-2, YVtype).fadein0(3,color=$FFFFFF) : Merge(CombMaskT.Trim(1, 0), CombMaskT, 0.5).mt_binarize(threshold=20,upper=true,u = YVtype,v = YVtype).fadein0(2).invert() HLMask = edgeth > 0 ? mt_lutxy(BobbedYV12.mt_edge(mode = "3 3 3 -1 -1 -1 -2 -2 -2 4", thY1=0, thY2=255, thC1=255, thC2=255,u=1,v=1), \BobbedYV12.mt_edge(mode = "-2 -2 -2 -1 -1 -1 3 3 3 4", thY1=0, thY2=255, thC1=255, thC2=255,u=1,v=1) \,yexpr="x y + "+string(edgeth * 2)+" > 255 0 ?",u=1,v=1).mt_expand(u=1,v=1).removegrain(12) : i3 #HLMask chroma is garbage !!! BobbedYV12 = edgeth > 0 ? mt_merge(BobbedYV12,BobbedYV12.ReduceFlicker(),HLMask, u = 2, v = 2) : BobbedYV12 ####### restrict temporal filtering to interpolated fields, instead to only moving "horizontal" lines (IMHO those are always "moving" due to interpolation) # BobbedYV12 = interleave(i2.separatefields(),BobbedYV12.separatefields().selectevery(4,1,2)).weave() # merge bobbed moving areas with weaved static areas mt_merge(Weaved, BobbedYV12, CombMask, u = YVtype, v = YVtype) ####### Debug: show difference between normal motiondedection and alternative eg. l==x and l==x+2, only useful for x <= 2 # stackhorizontal(mt_merge(Weaved, Bobbed, CombMask, u = 3, v = 3),mt_merge(Weaved, Bobbed, Weaved.StaticMask(th, l), u = 3, v = 3)) YV12input ? last : last.converttoyuy2().mergechroma(Bobbed,1.0) getparity(Input) ? assumetff() : assumebff() assumeframebased() return getparity(Input) ? assumetff() : assumebff() } # MCF (MotionCompensateFields) is based on different versions of MVBob, BSec.MCF(simplemv=true) should yield results similar to recent MVBob() # MCF makes motioncompensation on the interpolated fields on a bobbed clip, unlike MVBob which includes SecureBob. # differences: # uses pelclip instead of idx => more MT friendly # uses dct option (mdct) helps for (flickering video / fadeout) but is slow # thSAD (tSAD) makes motion compensation only in areas with reasonable results => # the blurred check in the corrector makes nearly never obvious artifacts, even for threasholds >5 # otherwise areas with very high contrast can still contain arifacts which cancel each other out in the smoother # debugtSAD: show the input and the motion compensated predesor and succesor, try on scenechanges and blends # coherence: coherence of the motion vectors, default is 1000 for mvtools, 6000 for mvbob, I took 2000 because bad blocks get thrown away - thSAD # mblur: is clip for mismatch analysis burred by simple kernelblur or medianblur? function MCF(clip bobc, int "blksize", int "th", int "tSAD", bool "debugtSAD", int "mdct", int "coherence", bool "mblur") { function blurclip(clip oclip, bool blurtype){ return blurtype ? oclip.removegrain(12).removegrain(12) : oclip.BicubicResize(oclip.Width * 2, oclip.Height).MedianBlur().BicubicResize(oclip.Width, oclip.Height) } # threshold for correcting failed compensated motion th=default(th, 10) # defaults for the mocomp blksize=default(blksize,8) ol = blksize/2 tm = true mdct= default(mdct,0) # recent versions of mvtools can implicitly mask away blocks with SAD > x, only for mvcompensate tSAD = default(tSAD,320) debugtSAD = default(debugtSAD,false) coherence = default(coherence,2000) # blur type for mismatch analysis mblur = default(mblur,false) #determine clip Fieldorder yv12 = isyv12(bobc) # create the upscaled clips for mvtools bob2x = bobc.Lanczos4Resize(bobc.width()*2,bobc.height()*2,src_left=0.25, src_top=0.25) # create motion vectors mvf=bobc.mvanalyse(blksize=blksize,pel=2,isb=false,chroma=true, pelclip=bob2x, truemotion=tm,overlap=ol, dct=mdct, lambda=coherence) mvb=bobc.mvanalyse(blksize=blksize,pel=2,isb=true, chroma=true, pelclip=bob2x, truemotion=tm,overlap=ol, dct=mdct, lambda=coherence) # create the motion compensated clip that are passed through to the output mcf=bobc.MVCompensate(mvf,pelclip=bob2x, thSAD=tSAD) mcb=bobc.MVCompensate(mvb,pelclip=bob2x, thSAD=tSAD) # create clips for mismatch detection bobcf= (yv12 == false) ? mcf.converttoyv12().blurclip(mblur).converttoyuy2() : mcf.blurclip(mblur) bobcb= (yv12 == false) ? mcb.converttoyv12().blurclip(mblur).converttoyuy2() : mcb.blurclip(mblur) bobcs= (yv12 == false) ? bobc.converttoyv12().blurclip(mblur).converttoyuy2() : bobc.blurclip(mblur) # detect mismatches of mvtools and replace them with motion adaptive bobbed areas mc=corrector(bobcs,bobc, bobcf,bobcb, mcf,mcb, mode=0,th=th) # select the correct lines compensated_even= mc.selecteven().separatefields().selectodd() compensated_odd = mc.selectodd() .separatefields().selecteven() # merge them with the original fields original_even=bobc.selecteven().separatefields().selecteven() original_odd =bobc.selectodd().separatefields().selectodd() even = interleave(original_even, compensated_even).weave() odd = interleave(original_odd , compensated_odd ).weave() interleave(even,odd) # output video (bobc.getparity()) ? last.assumetff() : last.assumebff() debugtSAD ? (isyv12 ? stackvertical(fields,mcf,mcb) : stackvertical(fields,mcf,mcb).converttoyuy2()) : last } # needed plugins LoadPlugin("RemoveGrain.dll") #use SSE version if your CPU allows LoadPlugin("masktools.dll") LoadPlugin("mt_masktools.dll") #replacement for masktools, mt_motion broken - (th unused, at least when I checked, v29 I think) LoadPlugin("mvtools.dll")#newest version recommended LoadPlugin("corrector.dll")#for new mvtools LoadPlugin("medianblur.dll") # can be used for mismatch detection instead of removegrain LoadPlugin("nnedi.dll") LoadPlugin("eedi2.dll") LoadPlugin("ReduceFlicker.dll") #use SSE version if your CPU allows Last edited by TSchniede; 29th March 2008 at 03:02. Reason: changed plugin names to standard (no cpu specific version...) |
Thread Tools | Search this Thread |
Display Modes | |
|
|