Our website is made possible by displaying online advertisements to our visitors. Consider supporting us by disable your adblocker or Try ConvertXtoDVD and convert all your movies to DVD. Free trial ! :)

# Grotesque Anomaly is back (Sorry buddies, but I need suggestions)

Thread
1. I really did not want to bring this back, but this video is very rare, and I really did not get another source.
So reviewing an old topic I felt a little hope of making it at least acceptable, lessen these comets and improve this crap a little.
I would like some suggestion of bright minds, and I know have many here, thank you!

Sample:

1-More static
2-More movement  Quote
2. Mr. Jagabo suggested me RemoveDirtMC() or RemoveSpotsMC()
But I can not make it work  Quote
3. Mr. johnmeyer show me this:
Code:
```function Remove_TearsI(clip source) {

#Create mask
ml           = 100 # mask scale
scene_change = 900 # scene change

fields=source.SeparateFields()
even_fields=selecteven(fields)
odd_fields =selectodd(fields)

super_even = MSuper(even_fields,pel=2, sharp=1)
vfe = MAnalyse(super_even,isb=false) # forward vectors
vbe = MAnalyse(super_even,isb=true)  # backward vectors

cfe = MFlow(even_fields,super_even,vfe,thSCD1=scene_change) # previous compensated forward
cbe = MFlow(even_fields,super_even,vbe,thSCD1=scene_change) # next compensated backward

sadfe = MMask(super_even,vfe, ml=100,kind=1,gamma=1, thSCD1 = scene_change)
msadfe= sadfe.Binarize() # binary inverted forward SAD mask

sadbe = MMask(super_even,vbe, ml=ml, gamma=1, kind=1, thSCD1 = scene_change) # backward SAD mask
msadbe= sadbe.Binarize() # binary inverted backward SAD mask

msade = Logic(msadfe,msadbe,"OR") # combined inverted SAD mask
msade = msade.Expand() # expanded inverted SAD mask
msadie = Interleave(msade, msade, msade) # interleaved 3-frame inverted SAD mask

Interleave(cfe,even_fields,cbe) # interleave forward compensated, source, and backward compensated

even_result_fields=DeSpot(show=0,mscene=99,p1percent=3,dilate=3,maxpts=1000,p2=6,mthres=9,p1=12,pwidth=840,pheight=12,mwidth=7,mheight=5,merode=33,interlaced=false,seg=1,sign=0,ranked=true).SelectEvery(3,1)

super_odd = MSuper(odd_fields,pel=2, sharp=1)
vfo = MAnalyse(super_odd,isb=false) # forward vectors
vbo = MAnalyse(super_odd,isb=true)  # backward vectors

cfo = MFlow(odd_fields,super_odd,vfo,thSCD1=scene_change) # previous compensated forward
cbo = MFlow(odd_fields,super_odd,vbo,thSCD1=scene_change) # next compensated backward

sadfo = MMask(super_odd,vfo, ml=100,kind=1,gamma=1, thSCD1 = scene_change)
msadfo= sadfo.Binarize() # binary inverted forward SAD mask

sadbo = MMask(super_odd,vbo, ml=ml, gamma=1, kind=1, thSCD1 = scene_change) # backward SAD mask
msadbo= sadbo.Binarize() # binary inverted backward SAD mask

msado = Logic(msadfo,msadbo,"OR") # combined inverted SAD mask
msado = msado.Expand() # expanded inverted SAD mask
msadio = Interleave(msado, msado, msado) # interleaved 3-frame inverted SAD mask

Interleave(cfo,odd_fields,cbo) # interleave forward compensated, source, and backward compensated

odd_result_fields=DeSpot(show=0,mscene=99,p1percent=3,dilate=3,maxpts=1000,p2=6,mthres=9,p1=12,pwidth=840,pheight=12,mwidth=7,mheight=5,merode=33,interlaced=false,seg=1,sign=0,ranked=true).SelectEvery(3,1)
interleave(even_result_fields,odd_result_fields)
weave()
}``` [Attachment 46599 - Click to enlarge] [Attachment 46600 - Click to enlarge]

Really effective, but it can be very complex to play with these numbers for me.  Quote
4. I recognize that image. Isn't this an exact duplicate of what you (or someone else) asked about a year or two ago?  Quote
5. I recognize that image. Isn't this an exact duplicate of what you (or someone else) asked about a year or two ago?
Yes,is this, is me  Quote
6. Once again, with video this bad you will be trading one type of artifact for another. It's debatable whether anything you do is an improvement or not. But this might give you some ideas to work with:

Code:
```LWLibavVideoSource("1-Grotesque Anomaly-1996 MX 125.mkv")
TNLMeans(Ax=0, Ay=0, Az=1, h=16) # reduces intensity of comets
BilinearResize(288, 270) # smaller gives more noise reduction, larger gives less
RemoveDirtMC(30) # reduce comets, adjust along with size
TemporalDegrain(SAD1=200, SAD2=150, sigma=8) #general noise reduction
MergeChroma(aWarpSharp(depth=20)) # sharpen colors
Sharpen(0.3)
nnedi3_rpow2(2, cshift="Spline36Resize", fwidth=src.width, fheight=src.height) # upscale
Sharpen(0.3)```
The result is a very over filtered look but the comets are greatly reduced. You can try higher or lower settings in the filters to get the compromise you want.  Quote
7. The following link will take you to a discussion, by this same person, of the exact same image posted here, from almost two years ago:

Cleaning trash ...

We're covering the same ground, going in circles.

Déjà vu.  Quote
8. I know. I just thought I'd give it a shot since we passed the last time. And had some free time.  Quote
9. Once again, with video this bad you will be trading one type of artifact for another. It's debatable whether anything you do is an improvement or not. But this might give you some ideas to work with:

Code:
```LWLibavVideoSource("1-Grotesque Anomaly-1996 MX 125.mkv")
TNLMeans(Ax=0, Ay=0, Az=1, h=16) # reduces intensity of comets
BilinearResize(288, 270) # smaller gives more noise reduction, larger gives less
RemoveDirtMC(30) # reduce comets, adjust along with size
TemporalDegrain(SAD1=200, SAD2=150, sigma=8) #general noise reduction
MergeChroma(aWarpSharp(depth=20)) # sharpen colors
Sharpen(0.3)
nnedi3_rpow2(2, cshift="Spline36Resize", fwidth=src.width, fheight=src.height) # upscale
Sharpen(0.3)```
The result is a very over filtered look but the comets are greatly reduced. You can try higher or lower settings in the filters to get the compromise you want.

I believe you've thought about it on a coffee break ... because this looks really delicious!

I geting error on last line, more precisely in "src"

Code:
`nnedi3_rpow2(2, cshift="Spline36Resize", fwidth=src.width, fheight=src.height)`
PS:I know it's not the same thing,but
This Worked:
Code:
```Spline64Resize(width*2, height*2)
Sharpen(0.3)```
Edit:
Work... but I lost the aspect ratio...   Quote
10. I know. I just thought I'd give it a shot since we passed the last time. And had some free time.
Just, are my vacations

The following link will take you to a discussion, by this same person, of the exact same image posted here, from almost two years ago:

Cleaning trash ...

We're covering the same ground, going in circles.

Déjà vu.
Started with..."I really did not want to bring this back..."
I think we're walking in line, crooked, but going in some direction, thank you.  Quote
11. Does that make any sense?
Code:
```DirectShowSource("C:\Users\User\Desktop\2-Sample-1996 MX 125.mkv")
TNLMeans(Ax=0, Ay=0, Az=1, h=16) # reduces intensity of comets
RemoveDirtMC(30) # reduce comets, adjust along with size
QTGMC(InputType=1, EZDenoise=2.0, DenoiseMC=true) # Denoise
BilinearResize(width/2, height) # downsize, clean edges, upsize, sharpen
Santiag(strv=4, strh=4) #anti-aliasing
Spline36Resize(width*2, height)``` [Attachment 46608 - Click to enlarge]

Sorry renamed"My After"...It's actually jagabo mesh  Quote
12. I'd run QTGMC while the video was downscaled. nnedi3 will get you sharper upscaling with less aliasing.  Quote
13. I'd run QTGMC while the video was downscaled. nnedi3 will get you sharper upscaling with less aliasing.
But I get error on "src"

Code:
`nnedi3_rpow2(2, cshift="Spline36Resize", fwidth=src.width, fheight=src.height)`

Could I have more something working focused only in this (aprox.) area? [Attachment 46610 - Click to enlarge]  Quote
14. It looks like I took out the "src=last" line just after the source filter. It's just to restore the original frame size.  Quote
15. It looks like I took out the "src=last" line just after the source filter. It's just to restore the original frame size.
AviSynth xxx "I do not know what "src" is."

I try This, but lost aspect ratio

Code:
```DirectShowSource("C:\Users\User\Desktop\1-Sample-1996 MX 125.mkv")
TNLMeans(Ax=0, Ay=0, Az=1, h=16) # reduces intensity of comets
BilinearResize(288, 270)
RemoveDirtMC(30) # reduce comets, adjust along with size
RemoveSpotsMC()
QTGMC(InputType=1, EZDenoise=2.0, DenoiseMC=true) # Denoise
Spline36Resize(width*2, height*2)
Santiag(strv=4, strh=4) #anti-aliasing```  Quote
16. QTGMC(preset="very slow",edithreads=4).selecteven() plus Neatvideo V4 on Virtualdub works rather well   Quote
17. QTGMC(preset="very slow",edithreads=4).selecteven() plus Neatvideo V4 on Virtualdub works rather well Look's Very interesting!
Sample please  Quote
18. It looks like I took out the "src=last" line just after the source filter. It's just to restore the original frame size.
AviSynth xxx "I do not know what "src" is."
Jesus christ!

Code:
```LWLibavVideoSource("1-Grotesque Anomaly-1996 MX 125.mkv")
src=last
TNLMeans(Ax=0, Ay=0, Az=1, h=16) # reduces intensity of comets
BilinearResize(288, 270) # smaller gives more noise reduction, larger gives less
RemoveDirtMC(30) # reduce comets, adjust along with size
TemporalDegrain(SAD1=200, SAD2=150, sigma=8) #general noise reduction
MergeChroma(aWarpSharp(depth=20)) # sharpen colors
Sharpen(0.3)
nnedi3_rpow2(2, cshift="Spline36Resize", fwidth=src.width, fheight=src.height) # upscale
Sharpen(0.3)```  Quote
19. Eu ja vi que voce não fez a pausa para um café...
Muitas das vezes isso é irritante mesmo, voce fazer entender coisas que são simples para voce,
Porem muitas frases podem nao ser tão claras dependendo o contexto, ou algo assim, tipo "Sua batata esta assando, não fica dando sopa"... Bom, de repente voce prefere tomar seu "café acompanhado de um nego deitado..."
Obrigado!
Abraço.  Quote
20. As my work seems to be appreciated, for once i have uploaded the neat profiles

video processed by neatvideo v4: here
neatvideo profiles: here

comparison original Vs qtgmc + neatv4   Quote
21. As my work seems to be appreciated, for once i have uploaded the neat profiles

video processed by neatvideo v4: here
neatvideo profiles: here

comparison original Vs qtgmc + neatv4 Really good!

This can be an interesting combination:
Code:
```TNLMeans(Ax=0, Ay=0, Az=1, h=16)
RemoveDirtMC(30)
QTGMC(InputType=1, EZDenoise=2.0, DenoiseMC=true)

+neatvideo v4```

PS: ...+Tortelli Wins!  Quote
22. tnlmeans h=16 is too strong
qtgmc(inputtype=1) that's for a real progressive video which is not even close for this source

My 2 cents  Quote
23. tnlmeans h=16 is too strong
Yes. I was using that to reduce comets on the still shots. It does very bad things on moving shots.

Certainly, Neat Video does a good job. Unfortunately, it's not free.  Quote
24. I almost forgot the magic script that you could use after neat (it's not artifacts free, careful) :

a=last
#clense(reduceflicker=false).merge(last,0.5).clens e(reduceflicker=false)
mot=removegrain(8,0).DepanEstimate(range=2)
take2=a.depaninterleave(mot,prev=2,next=2,subpixel =2)
clean1=take2.selectevery(5,2)

sup1 = clean1.minblur(1).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)
###### Good mvtools values, Do not change, checked##########
bv22=sup1.manalyse(isb=true, truemotion=false,global=true,delta=1,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=1,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))
mergeluma(TMedian2(),0.9).mergechroma(TMedian2(),1 ).selectevery(5,2)

sup3 = last.msuper(pel=2,sharp=2)
bv33=sup3.manalyse(isb=true, truemotion=false,global=true,delta=1,blksize=8,ove rlap=4,search=5,searchparam=4,DCT=5)
bv32=sup3.manalyse(isb=true, truemotion=false,global=true,delta=1,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=1,blksize=8,overlap=4,search=5,searc hparam=4,DCT=5)
fv33=sup3.manalyse(isb=false,truemotion=false,glob al=true,delta=1,blksize=8,overlap=4,search=5,searc hparam=4,DCT=5)
last

# To remove small Black streaks and some white dots :
noisy = last
nonoise = RemoveDirtMC()
# note:Can work best with : nonoise = RemoveDirtMC.fft3dfilter(sigma=7.0,sigma2=7.0,sigm a3=7.0,sigma4=7.0, bt=1, bw=32, bh=32, ow=16, oh=16,plane=0, sharpen=0.0,interlaced=false,dehalo=0.0)
diff = 5 # default10 / between 18- 5 to remove more or less
m = mt_lutxy(noisy,nonoise,"y x - "+string(diff)+" - 255 *")
mt_merge(noisy,nonoise,m)
#########################
Function EdgeCleaner(clip c, float "strength", bool "rep", int "rmode", int "smode", bool "hot", bool "fix") {

strength = default(strength, 8.0)
rep = default(rep, true)
rmode = default(rmode, 17)
smode = default(smode, 0)
hot = default(hot, false)
fix = default(fix, true)

c = (c.isYV12()) ? c : c.ConvertToYV12()
strength = (smode==0) ? strength : strength+4

main = c.aWarpSharp(strength,1)
main = (rep) ? Repair(main,c,rmode) : main

mask = c.mt_edge("prewitt",4,32,4,32).mt_invert().mt_conv olution()

final = (!hot) ? mt_merge(c,main,mask) : Repair(mt_merge(c,main,mask),c,2)
final = (fix) ? Overlay(final,c.ConvertToRGB24().Crop(0,1,-c.width+1,-c.height+2),x=0,y=1) : final
final = (smode != 0) ? mt_merge(final,c,c.StarMask(smode)) : final

return final

}

function StarMask(clip c, int "mode") {

mode = default(mode, 1)

clean = (mode==1) ? c.RemoveGrain(17) : Repair(c.Deen("a3d",4,12,0),c,15).RemoveGrain(21)
diff = (mode==1) ? mt_makediff(c,clean) : NOP

final = (mode==1) ? diff.Greyscale().Levels(40,0.350,168,0,255).remove grain(7,-1).mt_edge("prewitt",4,16,4,16) : \
Subtract(mt_merge(clean,c,c.mt_edge("roberts",0,2, 0,2).mt_expand(mode=mt_circle(1)).mt_invert()),c). mt_edge("roberts",0,0,0,0).mt_deflate()

return final

}

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
ConverttoRGB32(matrix="rec601",interlaced=false)
LoadVirtualDubPlugin("C:\Program Files (x86)\VirtualDub\plugins\Camcorder_Color_Denoise_s se2.vdf", "CCD", 1)
CCD(7,1) # de 0 à 100 # Défaut =30 /
converttoyv12(matrix="rec601",interlaced=false)
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=li mit,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)
}
Processed video (with the script above): https://mega.nz/#!N05DTQaJ!2GCTwr9AYDFAIa8czzzx7oosga2wegIHNOh2NHG5PA8

example (Neat v4, Neat+Script above, Original):  Quote
25. I just A/B'd between the two pics, and your improvement over using just Neat Video was quite good. Nice job.  Quote

Statistics