Tempter57
1st June 2013, 22:26
My opinion: filter NeatVideo does strong smoothing and the image to become wax, as wax museum from Madame Tussauds. Used, for example
function dfttestMCmod (clip input, bool "Y", bool "chroma", int "ftype", float "sigma", float "sigma2", float "pmin", float "pmax",
\ int "sbsize", int "smode", int "sosize", int "dither", int "tmode", int "tosize", int "swin", int "twin", float "sbeta",
\ float "tbeta", bool "zmean", float "f0beta", int "tr", bool "mdg", int "pp", int "thSAD", int "mdgthSAD",
\ int "thSCD1", int "thSCD2", int "limit", int "blksize", int "pel", int "dct", int "search", bool "lsb")
{
o = input
chroma = default(chroma, true)
# dfttest-related options
Y = default(Y, true)
U = chroma?true:false
V = chroma?true:false
ftype = default(ftype, 0)
sigma = default(sigma, 2.0)
sigma2 = default(sigma2, 2.6)
pmin = default(pmin, 0.0)
pmax = default(pmax, 500.0)
sbsize = default(sbsize, 12)
smode = default(smode, 1)
sosize = default(sosize, 9)
dither = default(dither, 1)
tmode = default(tmode, 0)
tosize = default(tosize, 0)
swin = default(swin, 0)
twin = default(twin, 7)
sbeta = default(sbeta, 2.5)
tbeta = default(tbeta, 2.5)
zmean = default(zmean, true)
f0beta = default(f0beta, 1.0)
lsb = default(lsb, true)
# mvtools-related options
tr = default(tr, 2)
tr = (tr>5) ? 5 : (tr<1) ? 1 : tr
mdg = default(mdg, true)
pp = default(pp, 2)
mdgthSAD = default(thSAD, 135)
thSAD = default(thSAD, 10000)
thSCD1 = default(thSCD1, 150)
thSCD2 = default(thSCD2, 64)
limit = default(limit, 96)
blksize = default(blksize, 8) # 32:16:8:4
pel = default(pel, 2)
overlap = blksize/2
dct = default(dct, 0)
search = default(search, 5)
planes = chroma?4:0
# Pre-ME denoising
pp = (pp >= 2) ? o.dfttest(sstring="0.0:4.0 0.18:9.0 0.36:7.0 1.0:15.0",tbsize=1,lsb=true).DitherPost(mode=6) : (pp == 1) ? o.DeGrainMedian(limitY=3,limitUV=4,mode=1) : o
# MSuper
pp_super = pp.MSuper(pel=pel,chroma=chroma)
# Motion vector search
b5vec = (tr>=5) ?
\ MAnalyse(pp_super,isb=true,search=search,delta=5,overlap=overlap,blksize=blksize,truemotion=false,chroma=chroma,dct=dct) : NOP
b4vec = (tr>=4) ?
\ MAnalyse(pp_super,isb=true,search=search,delta=4,overlap=overlap,blksize=blksize,truemotion=false,chroma=chroma,dct=dct) : NOP
b3vec = (tr>=3) ?
\ MAnalyse(pp_super,isb=true,search=search,delta=3,overlap=overlap,blksize=blksize,truemotion=false,chroma=chroma,dct=dct) : NOP
b2vec = (tr>=2) ?
\ MAnalyse(pp_super,isb=true,search=search,delta=2,overlap=overlap,blksize=blksize,truemotion=false,chroma=chroma,dct=dct) : NOP
b1vec = MAnalyse(pp_super,isb=true, search=search,delta=1,overlap=overlap,blksize=blksize,truemotion=false,chroma=chroma,dct=dct)
f1vec = MAnalyse(pp_super,isb=false,search=search,delta=1,overlap=overlap,blksize=blksize,truemotion=false,chroma=chroma,dct=dct)
f2vec = (tr>=2) ?
\ MAnalyse(pp_super,isb=false,search=search,delta=2,overlap=overlap,blksize=blksize,truemotion=false,chroma=chroma,dct=dct) : NOP
f3vec = (tr>=3) ?
\ MAnalyse(pp_super,isb=false,search=search,delta=3,overlap=overlap,blksize=blksize,truemotion=false,chroma=chroma,dct=dct) : NOP
f4vec = (tr>=4) ?
\ MAnalyse(pp_super,isb=false,search=search,delta=4,overlap=overlap,blksize=blksize,truemotion=false,chroma=chroma,dct=dct) : NOP
f5vec = (tr>=5) ?
\ MAnalyse(pp_super,isb=false,search=search,delta=5,overlap=overlap,blksize=blksize,truemotion=false,chroma=chroma,dct=dct) : NOP
# Optional MDegrain
o_super = mdg ? o.MSuper(pel=pel,chroma=chroma,levels=1) : o
mdegrained = (tr>=3 && mdg) ? o.MDegrain3(o_super,b1vec,f1vec,b2vec,f2vec,b3vec,f3vec,thSAD=mdgthSAD,thSCD1=thSCD1,thSCD2=thSCD2,limit=limit,plane=planes,lsb=true).DitherPost(mode=6) :
\ (tr==2 && mdg) ? o.MDegrain2(o_super,b1vec,f1vec,b2vec,f2vec,thSAD=mdgthSAD,thSCD1=thSCD1,thSCD2=thSCD2,limit=limit,plane=planes,lsb=true).DitherPost(mode=6) :
\ (mdg) ? o.MDegrain1(o_super,b1vec,f1vec,thSAD=mdgthSAD,thSCD1=thSCD1,thSCD2=thSCD2,limit=limit,plane=planes,lsb=true).DitherPost(mode=6) : o
degrained = (mdg) ? mdegrained : o
# Motion Compensation
degrained_super = degrained.MSuper(pel=pel,chroma=chroma,levels=1)
b5clip = (tr>=5) ?
\ degrained.MCompensate(degrained_super,b5vec,thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2) : NOP
b4clip = (tr>=4) ?
\ degrained.MCompensate(degrained_super,b4vec,thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2) : NOP
b3clip = (tr>=3) ?
\ degrained.MCompensate(degrained_super,b3vec,thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2) : NOP
b2clip = (tr>=2) ?
\ degrained.MCompensate(degrained_super,b2vec,thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2) : NOP
b1clip = degrained.MCompensate(degrained_super,b1vec,thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2)
f1clip = degrained.MCompensate(degrained_super,f1vec,thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2)
f2clip = (tr>=2) ?
\ degrained.MCompensate(degrained_super,f2vec,thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2) : NOP
f3clip = (tr>=3) ?
\ degrained.MCompensate(degrained_super,f3vec,thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2) : NOP
f4clip = (tr>=4) ?
\ degrained.MCompensate(degrained_super,f4vec,thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2) : NOP
f5clip = (tr>=5) ?
\ degrained.MCompensate(degrained_super,f5vec,thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2) : NOP
# Create compensated clip
interleaved = (tr>=5) ? Interleave(f5clip,f4clip,f3clip,f2clip,f1clip,degrained,b1clip,b2clip,b3clip,b4clip,b5clip) :
\ (tr==4) ? Interleave(f4clip,f3clip,f2clip,f1clip,degrained,b1clip,b2clip,b3clip,b4clip) :
\ (tr==3) ? Interleave(f3clip,f2clip,f1clip,degrained,b1clip,b2clip,b3clip) :
\ (tr==2) ? Interleave(f2clip,f1clip,degrained,b1clip,b2clip) :
\ Interleave(f1clip,degrained,b1clip)
# Perform dfttest
filtered = interleaved.dfttest(Y=Y,U=U,V=V,ftype=ftype,sigma=sigma,sigma2=sigma2,pmin=pmin,pmax=pmax,sbsize=sbsize,smode=smode,sosize=sosize,
\ tbsize=tr*2+1,dither=dither,tmode=tmode,tosize=tosize,swin=swin,twin=twin,sbeta=sbeta,tbeta=tbeta,zmean=zmean,f0beta=f0beta,lsb=lsb)
output = filtered.SelectEvery(tr*2+1,tr)
return(output)
}
For 8bit:
#avstp.dll
#RemoveGrainSSE2.dll
#mvtools2.6.0.5.dll
#RepairSSE2.dll
#degrainmedian.dll
#flash3kyuu_deband.dll
#dfttest.dll
#dither.dll
#WarpSharp.dll
#mt_masktools-26.dll
#AddGrainC.dll
#dither.avsi
#mt_xxpand_multi.avsi
#dfttestMCmod.avsi
#minblur.avs
#Contrasharpening.avs
#LSFmod.avsi
setmtmode(2)
setmemorymax(768)
source = last
den = source.dfttestMCmod(chroma=true,tr=2,sigma=1.0,sigma2=1.5,f0beta=1.0,pp=2,mdg=true,\
blksize=16,pel=2,mdgthSAD=135,thSAD=300,thSCD1=256,thSCD2=96,limit=102,lsb=true)
# ===== DeBanding =====
db1 = den.GradFun3 (thr=1.4*0.3, smode=0, radius=16, lsb_in=true, lsb=true)
DB = db1.Dither_add_grain16 (var=0.1, uvar=0, soft=2) # AddGrain
# DB = den.f3kdb(16, 56, 48, 48, 0, 0, input_mode=1, output_mode=1)
output = DB.DitherPost(mode=-1)
# ===== Sharpening =====
sharp8 = Contrasharpening(output, source)
# sharp8 = output.LSFmod(defaults="slow", preblur="ON", strength=100)
lsbctr = Dither_merge16_8 (DB,sharp8.Dither_convert_8_to_16(), DitherBuildMask(sharp8, output))
lsb_out = lsbctr.DitherPost(mode=7, ampo=1.0, ampn=0.7)
lsb_out
Convert 8bit=>16bit
#avstp.dll
#RemoveGrainSSE2.dll
#RepairSSE2.dll
#Warpsharp.dll
#mvtools2.6.0.5.dll
#degrainmedian.dll
#AddGrainC.dll
#dither.dll
#dfttest.dll
#TEdgeMask.dll
#mt_masktools-26.dll
#flash3kyuu_deband.dll
#SmoothAdjust-ICL-x86.dll
#dither.avsi
#f3kgrain_v0.4.avsi
#GrainFactoryLite_v1.2.avsi
#LumaDBLite_v0.7.avsi
#mt_xxpand_multi.avsi
#dfttestMCmod.avsi
#HighPassSharp.avs
#FineSharp.avs
#O16mod_v1.6.1.avsi
#LSFmod.avsi
setmtmode(2)
setmemorymax(1536)
W = width(last)
H = height(last)
dfttestMCmod(chroma=true,tr=2,sigma=1.0,sigma2=1.5,f0beta=1.0,dither=1,pp=2,mdg=true,thSAD=300,\
blksize=16,pel=2,mdgthSAD=135,thSCD1=256,thSCD2=96,limit=102,lsb=true)
# ==== DeBanding ====
# SetMTMode(3)
# DB = last.LumaDBL(g1str=7, g2str=4, g3str=2, g1soft=5, g2soft=10, g3soft=20, g1size=1.0, g2size=0.6, g3size=0.1, lsb=true, lsb_in=true)
# DB = last.LumaDBL(g1str=7, g2str=4, g3str=2, g1soft=5, g2soft=10, g3soft=20, g1size=1.0, g2size=0.6, g3size=0.1, lsb=true, lsb_in=true, ditherC="f3kdb_dither()")
# SetMTMode(2)
f3kdb(16, 64, 48, 48, 0, 0, dynamic_grain=true, input_mode=1, output_mode=1)
# GradFun3(smode=1, thr=0.5, radius=16, lsb=true, lsb_in=true)
# GradFun3(smode=0, thr=0.35, radius=12, lsb=true, lsb_in=true)
# GradFun3 (thr=1.4*0.3, smode=0, radius=16, lsb_in=true, lsb=true)
DB = last#.Dither_add_grain16 (var=0.1, uvar=0, soft=2) # add grain
f = DB.DitherPost (mode=-1) # 16 -> 8 bits
# ==== Sharpening ====
# s = f.LSFmod(defaults="slow",preblur="ON",strength=100) # 8 -> 8 for resize < 1280х720
# s = f.FineSharp() # 8 -> 8 for resize > 1280х720
s = f.HighPassSharp(r=0.15) # 8 -> 8 for resize > 1280х720
mask = mt_lutxy (s, f, "x y != 255 0 ?", u=0, v=0) # 8, 8 -> 8
s16 = s.U16 () # 8 -> 16
Dither_merge16_8 (DB, s16, mask) # 16, 16, 8 -> 16
Dither_Resize16(W, H)
OUTPUT_BIT_DEPTH = 10
(OUTPUT_BIT_DEPTH == 16) ? Eval("""
Dither_convey_yuv4xxp16_on_yvxx() #16bit
""") : (OUTPUT_BIT_DEPTH == 10) ? Eval("""
Down10(10, stack=false, dither=-2) #10bit
""") : Down10(8) #8bit
Or used this script:
#avstp.dll
#RemoveGrainSSE2.dll
#RepairSSE2.dll
#mvtools2.6.0.5.dll
#flash3kyuu_deband.dll
#mt_masktools-26.dll
#dither.dll
#medianblur.dll
#AddGrainC.dll
#GradFun2DB.dll
#minblur.avs
#dither.avsi
#Gradfun2dbmod.avs
#ContraHD.avs
#ContraSharpening.avs
setmtmode(2)
setmemorymax(640)
source = last
blksize = 8 # or 16
overlap = blksize/2
chroma = true
lambda = 768
planes = chroma?4:0
chroma_threshold = chroma?7:0
search = 5
psuper = source.removegrain(11).MSuper(pel=2, sharp=2, chroma=chroma)
ssuper = source.MSuper(pel=2, sharp=2, chroma=chroma, levels=1)
vb3 = MAnalyse(psuper, isb=true, truemotion=false, delta=3, blksize=blksize, overlap=overlap, search=search, chroma=chroma, lambda=lambda)
vb2 = MAnalyse(psuper, isb=true, truemotion=false, delta=2, blksize=blksize, overlap=overlap, search=search, chroma=chroma, lambda=lambda)
vb1 = MAnalyse(psuper, isb=true, truemotion=false, delta=1, blksize=blksize, overlap=overlap, search=search, chroma=chroma, lambda=lambda)
vf1 = MAnalyse(psuper,isb=false, truemotion=false, delta=1, blksize=blksize, overlap=overlap, search=search, chroma=chroma, lambda=lambda)
vf2 = MAnalyse(psuper,isb=false, truemotion=false, delta=2, blksize=blksize, overlap=overlap, search=search, chroma=chroma, lambda=lambda)
vf3 = MAnalyse(psuper,isb=false, truemotion=false, delta=3, blksize=blksize, overlap=overlap, search=search, chroma=chroma, lambda=lambda)
cf3 = MCompensate(source, ssuper, vf3, thSAD=200, thSCD1=256, thSCD2=96)
cf2 = MCompensate(source, ssuper, vf2, thSAD=200, thSCD1=256, thSCD2=96)
cf1 = MCompensate(source, ssuper, vf1, thSAD=200, thSCD1=256, thSCD2=96)
cb1 = MCompensate(source, ssuper, vb1, thSAD=200, thSCD1=256, thSCD2=96)
cb2 = MCompensate(source, ssuper, vb2, thSAD=200, thSCD1=256, thSCD2=96)
cb3 = MCompensate(source, ssuper, vb3, thSAD=200, thSCD1=256, thSCD2=96)
interleave(cb3, cb2, cb1, source.MDegrain3(ssuper, vf1,vb1,vf2,vb2,vf3,vb3,thSAD=125,thSCD1=160,thSCD2=90,limit=72,lsb=true).DitherPost(mode=6), cf1, cf2, cf3)
Temporalsoften(3,7,chroma_threshold,15,2)
selectevery(7,3)
# SHARPENING
# ContraHD(last,source,cf1,cb1,3)
ContraSharpening(last,source)
# DeBanding
f3kdb(sample_mode=2,dynamic_grain=false,keep_tv_range=false,dither_algo=3,y=52,cb=36,cr=36,grainY=0,grainC=0)
# GradFun2DBmod(thr=1.4,thrC=1.6,mode=2,str=0.3,strC=0.0,temp=50,adapt=64)
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.