Ja die DVD Source ist wirklich grausam.
Hiermit gings bis jetzt eigentlich am besten:
Code
loadplugin("D:\Programme\StaxRip\Applications\AviSynth Plugins\RemoveDirt.dll")
Import("D:\Programme\StaxRip\Applications\AviSynth Plugins\LimitedSharpenFaster.avs")
Import("D:\Programme\StaxRip\Applications\AviSynth Plugins\FastLineDarken.avs")
Import("D:\Programme\StaxRip\Applications\AviSynth Plugins\BlindDeHalo3.avs")
Import("D:\Programme\StaxRip\Applications\AviSynth Plugins\DeHalo_alpha.avs")
loadCplugin("D:\Programme\StaxRip\Applications\AviSynth Plugins\SmartDecimate.dll")
mpeg2source("F:\FAMILY GUY\s01d1\Family Guy S01E01 - Der großzügige Wohlfahrtsscheck\VTS_01_1.d2v")
Crop(12,4,-12,-4)
SmartDecimate()
aWarpSharp(depth=16,cm=1)
removegrain(mode=4).removedirt()
CdeblendMOD(perc=7, dmode=2, omode=3, thresh=111)
Function CdeblendMOD(clip input, int "dmode", int "perc", int "omode", float "thresh", float "dthresh", float "mthresh", float "mil", clip "clip2")
{
###### PREPARATION ######
global output = input
global blendclip = default(clip2, input)
global predup = input.duplicateframe(0).tweak(hue=-0.22)
global postdup = input.trim(1,0).tweak(hue=0.22)
global perc = default(perc,3)
global thresh = default(thresh,50.0)/100.0 + 1.0
global dmode = default(dmode,0)
global omode = default(omode,0)
global dthresh = default(dthresh,0)/100.0
global mthresh = default(mthresh,0)
global mil = default(mil, 255.0)
###### Mask-Preparation ######
fr_diff = mt_lutxy(blendclip,blendclip.trim(1,0), yexpr="128 y + x -", uexpr="x", vexpr="x")
global m2_mask = mt_lutxy(fr_diff, fr_diff.trim(1,0), yexpr="x 128 > y 128 < & x 128 < y 128 > & | x 128 - abs y 128 - abs < x 128 - 2 ^ 2 - y 128 - 2 ^ 2 - ? 0 ?", uexpr="x", vexpr="x")
global ssd = mt_lut(fr_diff.trim(1,0), yexpr="128 x - 2 ^ 9 -", uexpr="x", vexpr="x").mt_inpand()
###### VAR.. ######
global diffn = 1.0
global difc1 = 1.0
global temp = 1.0
global btest1 = 1.0
global btest0 = 1.0
###### Conditional Function Chain, evaluated from bottom to top (!) ######
b99=scriptclip(input, " omode == 4 ? output.subtitle(string(btest0)).subtitle(string(diffc), y=25) :
\ (diffc > mthresh ? (omode==3 && btestb*dthresh > btest0 && btestb*dthresh > btest1 ? predup :
\ (omode==3 && btest1*dthresh > btest0 && btest1*dthresh > btestb ? postdup :
\ (thresh < 2.0 && (btest0/btestb + btest0/btest1) < thresh || thresh >= 2.0 && btest0 < btestb && btest0 < btest1 ?
\ (omode==1 || omode==2 && difcb<difc0 || omode==3 && btest1<btestb ? predup : postdup) : output))) : output)")
b3=FrameEvaluate(b99, " global btest1 = (dmode == 0 ? difc1+difc0-diffn : AverageLuma(m2_mask)) / (difc1<difc0 ? (difc1+difc0/perc > mil ? mil :
\ difc1+difc0/perc) : (difc0+difc1/perc > mil ? mil : difc0+difc1/perc))
global temp = difc0")
b2=FrameEvaluate(b3, " global difc1 = dmode != 2 ? YDifferenceToNext(blendclip.trim(1,0)) : AverageLuma(ssd)
global diffn = LumaDifference(blendclip,blendclip.trim(2,0))
global btest0 = btest1")
b1=FrameEvaluate(b2, " global difc0 = difc1
global difcb = temp
global diffc = diffn
global btestb = btest0")
return(b1)
}
DeRainbow()
function DeRainbow(clip org, int "thresh")
{
assert(org.isYV12(),"DeRainbow() requires YV12 input!")
thresh = default(thresh, 10)
org_u = utoy(org)
org_v = vtoy(org)
msharpen(org, threshold = thresh, mask=true)
reduceby2()
greyscale()
uv = blur(1.5).levels(0,2.0,255,0,255, coring=false).blur(1.5).blur(1.5).levels(50,2.0,255,0,255, coring=false)
filtered_u = org_u.mipsmooth(spatial=255, temporal=255, scenechange=3, show=false, method="strong", scalefactor=0.5)
filtered_v = org_v.mipsmooth(spatial=255, temporal=255, scenechange=3, show=false, method="strong", scalefactor=0.5)
u_final = MaskedMerge(org_u, filtered_u, uv)
v_final = MaskedMerge(org_v, filtered_v, uv)
return ytouv(u_final, v_final, org)
}
UnDot.Deen()
LanczosResize(688,512)
Alles anzeigen
[Blockierte Grafik: http://img60.imageshack.us/img60/1921/vorher8bi.th.jpg][Blockierte Grafik: http://img76.imageshack.us/img76/8728/nachher6vg.th.jpg]