Guys I'm struggling with one really in bad condition tape to transfer it and to restore some of it on PC. First I tryed to fix the tape it self put it in the other housing ( the old one was squiling ) and fast forward it and rewind it couple of times because it had some wrinkles and the tape was like bend it self like from heat or something. I also put it in the old vcr and clean the tape it self with 98% alchocol and take some black garbage from it (no its not the tape couting if you think just garbage) ( althou many of you do not recomend that but i tried on couple of tapes that were mesing my vcr and it really worked they where clean and dont dropeed frames like before). I still didn’t backed the tape ( but I would like to try that in a regular owen so to see what will happen). I uploaded the mkv ( lagarith was to big ) file for you to see what is going on with the tape mind you that noise ( I will fix that in post processing ) and especially color shift is because of the bad antenna reception that I had in the time when the tape was recorded from aerial ( I have 2 or 3 with the same bad tv reception). The source vcr is FS nv 200 passtrough Panasonic dvd recorder ( tbc of the vcr is off because it makes bad jitter when on with these tape especially ). By the way the cleaning of the tape helped tremendously because before it was unwatchable at all ( the vcr head is regularly cleaned if you mean that) but it has some constant lines going up and down and periodical tripping I don’t have dropped frames by the way so I know it’s the tape the recording its in vdub lagarith 720x576 25 tff. I know that some will tell me to forget but can someone help with some software script ( no hardware ) that can at least minor this error i know that you guys know
http://www.mediafire.com/?xt18n1g0ua6hdsc
Thanks
Tried with despot and descratch in avisynth ( even tries the doom forum that talks about this)but nothing happened, I played with the parameters probably the last resort is photoshop and frame by frame to mask the errors some suggestions are welcome
1mb picture file link
http://www.mediafire.com/?pwoyhbpbmdyovz8
Try StreamFab Downloader and download from Netflix, Amazon, Youtube! Or Try DVDFab and copy Blu-rays! or rip iTunes movies!
+ Reply to Thread
Results 1 to 30 of 97
Thread
-
Last edited by mammo1789; 5th Feb 2012 at 19:35.
-
This script doesn't remove all artifacts but helps to mitigate them:
Code:FFMPEGSource("C:\mendo22.mkv") BOB().SELECTEVEN() #input must be progressive, use here your preferred deinterlacer, # a smart bob if you want to reinterlace MERGECHROMA(AWARPSHARP().AWARPSHARP())# to mitigate that sort of chroma bleeding CLP=LAST PREFILT= CLP.FFT3DGPU(SIGMA=10,PLANE=4).Deen(mode="a3d", rad=4, thrY=255, thrUV=255,tthY=255,tthUV=255, min=1.0) BS=16 #####################vectors computation##################### Super=MSuper(prefilt,pel=1,sharp=1) vf=MAnalyse(super,isb=false, delta=1, blksize=bs,overlap=bs/2, lambda=1000) vf1=MAnalyse(super,isb=false,delta=2, blksize=bs,overlap=bs/2, lambda=1000) vf2=MAnalyse(super,isb=false,delta=3, blksize=bs,overlap=bs/2, lambda=1000) vf3=MAnalyse(super,isb=false,delta=4, blksize=bs,overlap=bs/2, lambda=1000) vf4=MAnalyse(super,isb=false,delta=5, blksize=bs,overlap=bs/2, lambda=1000) vf5=MAnalyse(super,isb=false,delta=6, blksize=bs,overlap=bs/2, lambda=1000) vb=MAnalyse(super, isb=true, delta=1, blksize=bs,overlap=bs/2, lambda=1000) vb1=MAnalyse(super,isb=true, delta=2, blksize=bs,overlap=bs/2, lambda=1000) vb2=MAnalyse(super,isb=true, delta=3, blksize=bs,overlap=bs/2, lambda=1000) vb3=MAnalyse(super,isb=true, delta=4, blksize=bs,overlap=bs/2, lambda=1000) vb4=MAnalyse(super,isb=true, delta=5, blksize=bs,overlap=bs/2, lambda=1000) vb5=MAnalyse(super,isb=true, delta=6, blksize=bs,overlap=bs/2, lambda=1000) clp=clp.Awarpsharp(depth=6, cm=0, blurlevel=3)#Xsharpen(25, 255) superclp=MSuper(clp,pel=1,sharp=1) #####################rebuilding frame form original clip and vectors from prefiltered one ##################### xf5=mflow(clp,superclp,vf5,thSCD1=220,thscd2=75) xf4=mflow(clp,superclp,vf4,thSCD1=220,thscd2=75) xf3=mflow(clp,superclp,vf3,thSCD1=220,thscd2=75) xf2=mflow(clp,superclp,vf2,thSCD1=220,thscd2=75) xf1=mflow(clp,superclp,vf1,thSCD1=220,thscd2=75) xf=mflow(clp,superclp,vf,thSCD1=220, thscd2=75) xb=mflow(clp,superclp,vb,thSCD1=220, thscd2=75) xb1=mflow(clp,superclp,vb1,thSCD1=220, thscd2=75) xb2=mflow(clp,superclp,vb2,thSCD1=220, thscd2=75) xb3=mflow(clp,superclp,vb3,thSCD1=220, thscd2=75) xb4=mflow(clp,superclp,vb4,thSCD1=220, thscd2=75) xb5=mflow(clp,superclp,vb5,thSCD1=220, thscd2=75) #####################average##################### o=Average(clp,0.01,xf5,0.012,xf4,0.018,xf3,0.028,xf2,0.042,xf1,0.115,xf,0.28,xb,0.28,xb1,0.115, \xb2,0.042,xb3,0.028,xb4,0.018,xb5,0.012) #####################final denoising step##################### dg123=MDegrain3(o,superclp, vb,vf,vb1,vf1,vb2,vf2, thsad=360) dg234=MDegrain3(o,superclp, vb1,vf1,vb2,vf2,vb3,vf3, thsad=360) dg456=MDegrain3(o,superclp, vb3,vf3,vb4,vf4,vb5,vf5, thsad=360) o=average(dg123,0.40,dg234,0.35,dg456,0.25) return o
-
If you capture the tape again are the lines in the same places in the same frames? Or do they vary with each cap? If the latter, you can use a median filter and 3 or 5 caps to eliminate most of them.
https://forum.videohelp.com/threads/340963-Best-quality-and-speed-video-denoisers-2011?...=1#post2122313
Then you can work on the other problems. I don't have multiple caps so I used your one cap with single frame offsets, backward and forward (as a rough approximation of 3 caps, since there's little motion) and a median of 3. First 5 seconds attached.Last edited by jagabo; 6th Feb 2012 at 19:30.
-
I didn't address the colors or other issues; this just addresses the dropouts and line noise while maintaining interlace. It's based on a modifed script from "pirej", who has posted some scripts on VHS cleaning before
It's a fairly strong filtered version, but still retains a decent amount of details. You can improve it by using a weaker filtered version , and composite them using feathered masks in after effects or a NLE or multiple layers - the point is using avisynth can reduce the amount of manual work for restoration .
I replaced a bad section of frames using a mvtools modified function based on mflowinter ("RX, RP, R") . There are other scripts, that may give better results , but I'm just used to using these older functions. See the last few pages of this thread
http://forum.doom9.org/showthread.php?t=152758
If you want to use the older ones:
R is for one frame, eg. R(101) would replace 101
RP is for pair, e.g. RP(101) would replace 101,102
RX is for any number, eg. RX(101,5), would replace 101-105
I posted more info in another thread, use search if you want more info
Code:FFVideoSource("mendo22.mkv", fpsnum=25, fpsden=1, seekmode=0) AssumeTFF() SeparateFields() a=last clense(reduceflicker=false).merge(last,0.5).clense(reduceflicker=false) mot=removegrain(11,0).removegrain(20,0).DepanEstimate(range=2) take2=a.depaninterleave(mot,prev=2,next=2,subpixel=2) clean1=take2.TMedian2().selectevery(5,2) sup1 = clean1.minblur(1).removegrain(11,0).removegrain(11,0) \ .mt_lutxy(clean1,"x 1 + y < x 2 + x 1 - y > x 2 - y ? ?",U=2,V=2) \ .msuper(pel=2,sharp=0) sup2 = a.msuper(pel=2,levels=1,sharp=2) bv22=sup1.manalyse(isb=true, truemotion=false,global=true,delta=2,blksize=16,overlap=8,search=5,searchparam=4,DCT=5) bv21=sup1.manalyse(isb=true, truemotion=false,global=true,delta=1,blksize=16,overlap=8,search=5,searchparam=4,DCT=5) fv21=sup1.manalyse(isb=false,truemotion=false,global=true,delta=1,blksize=16,overlap=8,search=5,searchparam=4,DCT=5) fv22=sup1.manalyse(isb=false,truemotion=false,global=true,delta=2,blksize=16,overlap=8,search=5,searchparam=4,DCT=5) interleave(a.mcompensate(sup2,fv22),a.mcompensate(sup2,fv21),a,a.mcompensate(sup2,bv21),a.mcompensate(sup2,bv22)) TMedian2().selectevery(5,2) sup3 = last.msuper(pel=2,sharp=2) bv33=sup3.manalyse(isb=true, truemotion=false,global=true,delta=3,blksize=8,overlap=4,search=5,searchparam=4,DCT=5) bv32=sup3.manalyse(isb=true, truemotion=false,global=true,delta=2,blksize=8,overlap=4,search=5,searchparam=4,DCT=5) bv31=sup3.manalyse(isb=true, truemotion=false,global=true,delta=1,blksize=8,overlap=4,search=5,searchparam=4,DCT=5) fv31=sup3.manalyse(isb=false,truemotion=false,global=true,delta=1,blksize=8,overlap=4,search=5,searchparam=4,DCT=5) fv32=sup3.manalyse(isb=false,truemotion=false,global=true,delta=2,blksize=8,overlap=4,search=5,searchparam=4,DCT=5) fv33=sup3.manalyse(isb=false,truemotion=false,global=true,delta=3,blksize=8,overlap=4,search=5,searchparam=4,DCT=5) last.mdegrain3(sup3,bv31,fv31,bv32,fv32,bv33,fv33,thSAD=499) Interleave() Weave() ### #####interpolate bad frames and residual cleaning ### Super = msuper() bv1 = manalyse(Super, isb=true, delta=2) fv1 = manalyse(Super, isb=false, delta=2) bv2 = manalyse(Super, isb=true, delta=3) fv2 = manalyse(Super, isb=false, delta=3) global CandidatesForN = mflowinter(Super, bv2, fv2, time=33.3, ml=100) global CandidatesForO = mflowinter(Super, bv2, fv2, time=66.7, ml=100) global CandidatesForC = mflowinter(Super, bv1, fv1, time=50.0, ml=100) last rx(104,12) #104-116 replaced AssumeTFF() SeparateFields() f1=SelectEven().RemoveDirtMC(500,false).LSFMod(strength=50) f2=SelectOdd().RemoveDirtMC(500,false).LSFMod(strength=50) Interleave(f1,f2) Weave() function MinBlur(clip clp, int r, int "uv") { uv = default(uv,3) uv2 = (uv==2) ? 1 : uv rg4 = (uv==3) ? 4 : -1 rg11 = (uv==3) ? 11 : -1 rg20 = (uv==3) ? 20 : -1 medf = (uv==3) ? 1 : -200 RG11D = (r==0) ? mt_makediff(clp,clp.sbr(),U=uv2,V=uv2) \ : (r==1) ? mt_makediff(clp,clp.removegrain(11,rg11),U=uv2,V=uv2) \ : (r==2) ? mt_makediff(clp,clp.removegrain(11,rg11).removegrain(20,rg20),U=uv2,V=uv2) \ : mt_makediff(clp,clp.removegrain(11,rg11).removegrain(20,rg20).removegrain(20,rg20),U=uv2,V=uv2) RG4D = (r<=1) ? mt_makediff(clp,clp.removegrain(4,rg4),U=uv2,V=uv2) \ : (r==2) ? mt_makediff(clp,clp.medianblur(2,2*medf,2*medf),U=uv2,V=uv2) \ : mt_makediff(clp,clp.medianblur(3,3*medf,3*medf),U=uv2,V=uv2) DD = mt_lutxy(RG11D,RG4D,"x 128 - y 128 - * 0 < 128 x 128 - abs y 128 - abs < x y ? ?",U=uv2,V=uv2) clp.mt_makediff(DD,U=uv,V=uv) return(last) } # median of 5 clips from Helpers.avs by G-force Function Median2(clip "input_1", clip "input_2", clip "input_3", clip "input_4", clip "input_5", string "chroma") { chroma = default(chroma,"process") #default is "process". Alternates: "copy first" or "copy second" #MEDIAN(i1,i3,i5) Interleave(input_1,input_3,input_5) chroma == "process" ? Clense(reduceflicker=false) : Clense(reduceflicker=false,grey=true) m1 = selectevery(3,1) #MAX(MIN(i1,i3,i5),i2) m2 = input_1.MT_Logic(input_3,"min",chroma=chroma).MT_Logic(input_5,"min",chroma=chroma).MT_Logic(input_2,"max",chroma=chroma) #MIN(MAX(i1,i3,i5),i4) m3 = input_1.MT_Logic(input_3,"max",chroma=chroma).MT_Logic(input_5,"max",chroma=chroma).MT_Logic(input_4,"min",chroma=chroma) Interleave(m1,m2,m3) chroma == "process" ? Clense(reduceflicker=false) : Clense(reduceflicker=false,grey=true) selectevery(3,1) chroma == "copy first" ? last.MergeChroma(input_1) : chroma == "copy second" ? last.MergeChroma(input_2) : last Return(last) } function TMedian2(clip c) { Median2( c.selectevery(1,-2), c.selectevery(1,-1), c, c.selectevery(1,1), c.selectevery(1,2) ) } function RemoveDirt(clip input, int limit, bool _grey) { clensed=input.Clense(grey=_grey, cache=4) alt=input.RemoveGrain(2) return RestoreMotionBlocks(clensed,input,alternative=alt,pthreshold=6,cthreshold=8, gmthreshold=40,dist=3, dmode=2,debug=false,noise=limit,noisy=4, grey=_grey) # Alternative settings # return RestoreMotionBlocks(clensed,input,alternative=alt,pthreshold=4,cthreshold=6, gmthreshold=40,dist=1,dmode=2,debug=false,noise=limit,noisy=12,grey=_grey,show=true) # return RestoreMotionBlocks(clensed,input,alternative=alt,pthreshold=6,cthreshold=8, gmthreshold=40,dist=3,tolerance= 12,dmode=2,debug=false,noise=limit,noisy=12,grey=_grey,show=false) } function RemoveDirtMC(clip,int limit, bool "_grey") { _grey=default(_grey, false) limit = default(limit,6) i=MSuper(clip,pel=2) bvec = MAnalyse(i,isb=false, blksize=8, delta=1, truemotion=true) fvec = MAnalyse(i,isb=true, blksize=8, delta=1, truemotion=true) backw = MFlow(clip,i,bvec) forw = MFlow(clip,i,fvec) clp=interleave(backw,clip,forw) clp=clp.RemoveDirt(limit,_grey) clp=clp.SelectEvery(3,1) return clp } function R(clip Source, int N) { # N is number of the frame in Source that needs replacing. # Frame N will be replaced. Source.trim(0,-N) ++ CandidatesForC.trim(N-1,-1) ++ Source.trim(N+1,0) } function RP(clip Source, int N) { # N is number of the first frame in Source that needs replacing. # Frames N and N+1(O) will be replaced. Source.trim(0,-N) ++ CandidatesForN.trim(N-1,-1) \ ++ CandidatesForO.trim(N-1,-1) ++ Source.trim(N+2,0) } function RX(clip Source, int N, int X) { # N is number of the 1st frame in Source that needs replacing. # X is total number of frames to replace #e.g. RX(101, 5) would replace 101,102,103,104,105 , by using 100 and 106 as reference points for mflowfps interpolation start=Source.trim(N-1,-1) #one good frame before, used for interpolation reference point end=Source.trim(N+X,-1) #one good frame after, used for interpolation reference point start+end AssumeFPS(1) #temporarily FPS=1 to use mflowfps super = MSuper() backward_vec = MAnalyse(super, isb = true) forward_vec = MAnalyse(super, isb = false) MFlowFps(super, backward_vec, forward_vec, blend=false, num=X+1, den=1) #num=X+1 AssumeFPS(FrameRate(Source)) #return back to normal source framerate for joining Trim(1, framecount-1) #trim ends, leaving replacement frames Source.trim(0,-N) ++ last ++ Source.trim(N+X+1,0) }
-
jagabo and poisondeathray, you both have enough in one post apiece to keep us all studying for a month. Very nice.
Last edited by sanlyn; 21st Mar 2014 at 21:04.
-
My script was pretty simple:
Code:# median of 3 clips from Helpers.avs by G-force Function Median1(clip input_1, clip input_2, clip input_3, string "chroma") { chroma = Default(chroma,"process") #default is "process". Alternates: "copy first" or "copy second" Interleave(input_1,input_2,input_3) chroma == "process" ? Clense(reduceflicker=false) : Clense(reduceflicker=false,grey=true) SelectEvery(3,1) chroma == "copy first" ? last.MergeChroma(input_1) : chroma == "copy second" ? last.MergeChroma(input_2) : last Return(last) } # replace these with three separate caps # use Trim() to sync them. v1=ffMpegSource2("mendo22.mkv") v2=Trim(v1, 1, 0) v3=Trim(v2, 1, 0) Median1(v1,v2,v3)
-
jagabo and poisondeathray, you both have enough in one post apiece to keep us all studying for a month. Very nice.
One question is this works random ( automatically) on the clip or I have to specify which frames are bad ( I couldn’t understand that in doom forum)?
If you capture the tape again are the lines in the same places in the same frames? Or do they vary with each cap? If the latter, you can use a median filter and 3 or 5 caps to eliminate most of them. -
Last edited by sanlyn; 21st Mar 2014 at 21:04.
-
Mostly automatic for the thin little dropouts, but there was a section that was very bad - with thick distortions or completely damaged frames - those are the sections you interpolate (generate new "inbetween" frames between 2 reference points).
eg if you look at the script:
rx(104,12) #104-116 replaced so 104-116 were completely replaced, because frames were too damaged. Order or filters is important, because you need clean frames to interpolate from (otherwise you propogate noise and errors). Interpolation -
I'm trying this script but it return an error, i am missing msuper it seems, where can i get this
It would be nice to have the full list of all the plugins/versions requiredLast edited by themaster1; 7th Feb 2012 at 08:34.
*** DIGITIZING VHS / ANALOG VIDEOS SINCE 2001**** GEAR: JVC HR-S7700MS, TOSHIBA V733EF AND MORE -
yeah i've managed to make it work the filters required are RemoveGrain.dll, DePanEstimate.dll, DePan.dll, mvtools2.dll(v2.5.10), RemoveDirt.dll
*** DIGITIZING VHS / ANALOG VIDEOS SINCE 2001**** GEAR: JVC HR-S7700MS, TOSHIBA V733EF AND MORE -
yeah i've managed to make it work the filters required are RemoveGrain.dll, DePanEstimate.dll, DePan.dll, mvtools2.dll(v2.5.10), RemoveDirt.dll
-
-
You only need to look at two short caps to see if the lines are in the same place or not. If they're all in the same place the median technique will not work at all.
[Attachment 10811 - Click to enlarge] -
[Attachment 10812 - Click to enlarge]
Here we go again I get error on the script
i put RemoveGrain.dll, DePanEstimate.dll, DePan.dll, mvtools2.dll(v2.5.10), RemoveDirt.dll
what else ? -
Good question, i have quite a few that autoload so i probably have missed some
*** DIGITIZING VHS / ANALOG VIDEOS SINCE 2001**** GEAR: JVC HR-S7700MS, TOSHIBA V733EF AND MORE -
poisondeathray I like you script but I don’t know how to make it work some help I will appreciate a lot is master right with needed plugins? Or is something else needed, I put them in plugins folder but I got this error also should I change the avisource instead of ffsource
script
FFVideoSource("D:\VIDEO OBR\snimak eden.avi", fpsnum=25, fpsden=1, seekmode=0)
AssumeTFF()
SeparateFields()
a=last
clense(reduceflicker=false).merge(last,0.5).clense (reduceflicker=false)
mot=removegrain(11,0).removegrain(20,0).DepanEstim ate(range=2)
take2=a.depaninterleave(mot,prev=2,next=2,subpixel =2)
clean1=take2.TMedian2().selectevery(5,2)
sup1 = clean1.minblur(1).removegrain(11,0).removegrain(11 ,0)
\ .mt_lutxy(clean1,"x 1 + y < x 2 + x 1 - y > x 2 - y ? ?",U=2,V=2)
\ .msuper(pel=2,sharp=0)
sup2 = a.msuper(pel=2,levels=1,sharp=2)
bv22=sup1.manalyse(isb=true, truemotion=false,global=true,delta=2,blksize=16,ov erlap=8,search=5,searchparam=4,DCT=5)
bv21=sup1.manalyse(isb=true, truemotion=false,global=true,delta=1,blksize=16,ov erlap=8,search=5,searchparam=4,DCT=5)
fv21=sup1.manalyse(isb=false,truemotion=false,glob al=true,delta=1,blksize=16,overlap=8,search=5,sear chparam=4,DCT=5)
fv22=sup1.manalyse(isb=false,truemotion=false,glob al=true,delta=2,blksize=16,overlap=8,search=5,sear chparam=4,DCT=5)
interleave(a.mcompensate(sup2,fv22),a.mcompensate( sup2,fv21),a,a.mcompensate(sup2,bv21),a.mcompensat e(sup2,bv22))
TMedian2().selectevery(5,2)
sup3 = last.msuper(pel=2,sharp=2)
bv33=sup3.manalyse(isb=true, truemotion=false,global=true,delta=3,blksize=8,ove rlap=4,search=5,searchparam=4,DCT=5)
bv32=sup3.manalyse(isb=true, truemotion=false,global=true,delta=2,blksize=8,ove rlap=4,search=5,searchparam=4,DCT=5)
bv31=sup3.manalyse(isb=true, truemotion=false,global=true,delta=1,blksize=8,ove rlap=4,search=5,searchparam=4,DCT=5)
fv31=sup3.manalyse(isb=false,truemotion=false,glob al=true,delta=1,blksize=8,overlap=4,search=5,searc hparam=4,DCT=5)
fv32=sup3.manalyse(isb=false,truemotion=false,glob al=true,delta=2,blksize=8,overlap=4,search=5,searc hparam=4,DCT=5)
fv33=sup3.manalyse(isb=false,truemotion=false,glob al=true,delta=3,blksize=8,overlap=4,search=5,searc hparam=4,DCT=5)
last.mdegrain3(sup3,bv31,fv31,bv32,fv32,bv33,fv33, thSAD=499)
Interleave()
Weave()
###
#####interpolate bad frames and residual cleaning
###
Super = msuper()
bv1 = manalyse(Super, isb=true, delta=2)
fv1 = manalyse(Super, isb=false, delta=2)
bv2 = manalyse(Super, isb=true, delta=3)
fv2 = manalyse(Super, isb=false, delta=3)
global CandidatesForN = mflowinter(Super, bv2, fv2, time=33.3, ml=100)
global CandidatesForO = mflowinter(Super, bv2, fv2, time=66.7, ml=100)
global CandidatesForC = mflowinter(Super, bv1, fv1, time=50.0, ml=100)
last
rx(104,12) #104-116 replaced
AssumeTFF()
SeparateFields()
f1=SelectEven().RemoveDirtMC(500,false).LSFMod(str ength=50)
f2=SelectOdd().RemoveDirtMC(500,false).LSFMod(stre ngth=50)
Interleave(f1,f2)
Weave()
function MinBlur(clip clp, int r, int "uv")
{
uv = default(uv,3)
uv2 = (uv==2) ? 1 : uv
rg4 = (uv==3) ? 4 : -1
rg11 = (uv==3) ? 11 : -1
rg20 = (uv==3) ? 20 : -1
medf = (uv==3) ? 1 : -200
RG11D = (r==0) ? mt_makediff(clp,clp.sbr(),U=uv2,V=uv2)
\ : (r==1) ? mt_makediff(clp,clp.removegrain(11,rg11),U=uv2,V=u v2)
\ : (r==2) ? mt_makediff(clp,clp.removegrain(11,rg11).removegra in(20,rg20),U=uv2,V=uv2)
\ : mt_makediff(clp,clp.removegrain(11,rg11).removegra in(20,rg20).removegrain(20,rg20),U=uv2,V=uv2)
RG4D = (r<=1) ? mt_makediff(clp,clp.removegrain(4,rg4),U=uv2,V=uv2 )
\ : (r==2) ? mt_makediff(clp,clp.medianblur(2,2*medf,2*medf),U= uv2,V=uv2)
\ : mt_makediff(clp,clp.medianblur(3,3*medf,3*medf),U= uv2,V=uv2)
DD = mt_lutxy(RG11D,RG4D,"x 128 - y 128 - * 0 < 128 x 128 - abs y 128 - abs < x y ? ?",U=uv2,V=uv2)
clp.mt_makediff(DD,U=uv,V=uv)
return(last)
}
# median of 5 clips from Helpers.avs by G-force
Function Median2(clip "input_1", clip "input_2", clip "input_3", clip "input_4", clip "input_5", string "chroma")
{
chroma = default(chroma,"process") #default is "process". Alternates: "copy first" or "copy second"
#MEDIAN(i1,i3,i5)
Interleave(input_1,input_3,input_5)
chroma == "process" ? Clense(reduceflicker=false) : Clense(reduceflicker=false,grey=true)
m1 = selectevery(3,1)
#MAX(MIN(i1,i3,i5),i2)
m2 = input_1.MT_Logic(input_3,"min",chroma=chroma).MT_L ogic(input_5,"min",chroma=chroma).MT_Logic(input_2 ,"max",chroma=chroma)
#MIN(MAX(i1,i3,i5),i4)
m3 = input_1.MT_Logic(input_3,"max",chroma=chroma).MT_L ogic(input_5,"max",chroma=chroma).MT_Logic(input_4 ,"min",chroma=chroma)
Interleave(m1,m2,m3)
chroma == "process" ? Clense(reduceflicker=false) : Clense(reduceflicker=false,grey=true)
selectevery(3,1)
chroma == "copy first" ? last.MergeChroma(input_1) : chroma == "copy second" ? last.MergeChroma(input_2) : last
Return(last)
}
function TMedian2(clip c) {
Median2( c.selectevery(1,-2), c.selectevery(1,-1), c, c.selectevery(1,1), c.selectevery(1,2) ) }
function RemoveDirt(clip input, int limit, bool _grey)
{
clensed=input.Clense(grey=_grey, cache=4)
alt=input.RemoveGrain(2)
return RestoreMotionBlocks(clensed,input,alternative=alt, pthreshold=6,cthreshold=8, gmthreshold=40,dist=3, dmode=2,debug=false,noise=limit,noisy=4, grey=_grey)
# Alternative settings
# return RestoreMotionBlocks(clensed,input,alternative=alt, pthreshold=4,cthreshold=6, gmthreshold=40,dist=1,dmode=2,debug=false,noise=li mit,noisy=12,grey=_grey,show=true)
# return RestoreMotionBlocks(clensed,input,alternative=alt, pthreshold=6,cthreshold=8, gmthreshold=40,dist=3,tolerance= 12,dmode=2,debug=false,noise=limit,noisy=12,grey=_ grey,show=false)
}
function RemoveDirtMC(clip,int limit, bool "_grey")
{
_grey=default(_grey, false)
limit = default(limit,6)
i=MSuper(clip,pel=2)
bvec = MAnalyse(i,isb=false, blksize=8, delta=1, truemotion=true)
fvec = MAnalyse(i,isb=true, blksize=8, delta=1, truemotion=true)
backw = MFlow(clip,i,bvec)
forw = MFlow(clip,i,fvec)
clp=interleave(backw,clip,forw)
clp=clp.RemoveDirt(limit,_grey)
clp=clp.SelectEvery(3,1)
return clp
}
function R(clip Source, int N)
{
# N is number of the frame in Source that needs replacing.
# Frame N will be replaced.
Source.trim(0,-N) ++ CandidatesForC.trim(N-1,-1) ++ Source.trim(N+1,0)
}
function RP(clip Source, int N)
{
# N is number of the first frame in Source that needs replacing.
# Frames N and N+1(O) will be replaced.
Source.trim(0,-N) ++ CandidatesForN.trim(N-1,-1) \
++ CandidatesForO.trim(N-1,-1) ++ Source.trim(N+2,0)
}
function RX(clip Source, int N, int X)
{
# N is number of the 1st frame in Source that needs replacing.
# X is total number of frames to replace
#e.g. RX(101, 5) would replace 101,102,103,104,105 , by using 100 and 106 as reference points for mflowfps interpolation
start=Source.trim(N-1,-1) #one good frame before, used for interpolation reference point
end=Source.trim(N+X,-1) #one good frame after, used for interpolation reference point
start+end
AssumeFPS(1) #temporarily FPS=1 to use mflowfps
super = MSuper()
backward_vec = MAnalyse(super, isb = true)
forward_vec = MAnalyse(super, isb = false)
MFlowFps(super, backward_vec, forward_vec, blend=false, num=X+1, den=1) #num=X+1
AssumeFPS(FrameRate(Source)) #return back to normal source framerate for joining
Trim(1, framecount-1) #trim ends, leaving replacement frames
Source.trim(0,-N) ++ last ++ Source.trim(N+X+1,0)
-
mammo - I can't see your attachments. Please fix them, use another hosting site, or type the error message out
( I change to avisource for the lagarith file instead of ffsource but I don’t understand “fpsnum=25, fpsden=1, seekmode=0” probably not necessary right ? -
Yes, AVISource is fine. The reason why that was used for FFVideoSource, was that sometimes the frame rate is a bit off, and seekmode=0 gives a bit more frame accuracy (when you do non linear seeks when tweaking the script, it can lose it's place, or give slightly different results - but if you go linearly you will get consistent results)
The error message
http://img826.imageshack.us/img826/2492/untited2.png
I’m using avisynth mt version 2.5.8 this is my plugin folder
http://img69.imageshack.us/img69/3224/avisynth.png
So I will use FFVideoSource then your script just source file different -
I posted the screenshot here, incase problems with imageshack
What does that line correspond to? line 176, column 49? Upload your .avs file (the spaces and line order might make the script different than mine) -
BTW, I generally break the script out into sections using lossless encodes (e.g. lagarith) - this helps so you can tweak & fine tune settings when stacking filters
e.g. I did an encode all the way upto
###
#####interpolate bad frames and residual cleaning
###
Then afterwards AVISoure() plus the rest in a 2nd script for the residual cleaning and interpolating frames (you need clean frames to interpolate from, so usually interpolation is done near the last)
-
Here is the avs script
yes the source is lagarith also maybe Super = msuper() is problem -
By the way how do you know which line is which and which column is which in notepad is something counting them automaticly that I don’t know
line 176, column 49? -
I use avspmod, and you can see the line numbers easily
Not sure of the error, that corresponds to the function RX
line 176
Code:Source.trim(0,-N) ++ last ++ Source.trim(N+X+1,0)
EDIT you're missing a "}"bracket
You copy & pasted the code incorrectly -
O and jagabo if i trimmed them the clips to match already in vdub no need for
trim function right or wrong?
# replace these with three separate caps
# use Trim() to sync them.
v1=ffMpegSource2("mendo22.mkv")
v2=Trim(v1, 1, 0)
v3=Trim(v2, 1, 0)
Median1(v1,v2,v3)
I saw it now my bad thanks but the error now says no function named FFvideosource am I missing some plugin for opening some files ( i uploaded the plugin folder something missing so the script will work ? or)Last edited by mammo1789; 7th Feb 2012 at 15:35.
-
View -> Status Bar (word wrap must be off).
That's correct.
http://code.google.com/p/ffmpegsource/
What type of file are you trying to open? -
What type of file are you trying to open?
http://img12.imageshack.us/img12/3214/sdsog.png
nope that way invalid mode 20 in remove grain ?!
my plugin folder anything missing ? different versions
http://img684.imageshack.us/img684/6351/65763674.png
is there somewhere i can put planar= true ?Last edited by mammo1789; 7th Feb 2012 at 16:30.
Similar Threads
-
Can this machine transfer from tape to disc?
By Janowski in forum Newbie / General discussionsReplies: 5Last Post: 19th Oct 2010, 13:23 -
DCR-HC42 Transfer Still Images from Tape
By MichaelRD in forum Newbie / General discussionsReplies: 1Last Post: 6th Sep 2010, 22:09 -
Heelp to restore this SVHS tape (a frame of the video attached)
By SorenFRB in forum RestorationReplies: 32Last Post: 15th Dec 2009, 09:19 -
DV tape damage during transfer
By syberkill in forum Camcorders (DV/HDV/AVCHD/HD)Replies: 5Last Post: 22nd May 2008, 21:03 -
Question about how can Ghost (restore) avoid bad sectors on disk
By jimdagys in forum ComputerReplies: 4Last Post: 26th Apr 2008, 20:43