Petit rappel parceque là je commence à me pommer!!!!
» 25 Jan 2005 12:21
Je veins de refaire un tour sur avs.
Pour récapituler, il y a eu le script:
LimitedSharpen et le call était:
Import("C:\Program Files\AviSynth 2.5\plugins\LimitedSharpen.avs")
LimitedSharpen(ss_x=1.0,ss_y=1.0,Smode=3,strength=40)
Puis il y a eu le script:
LimitedSharpen2 et le call était :
Import("C:\Program Files\AviSynth 2.5\plugins\LimitedSharpen2.avs")
LimitedSharpen2(ss_x=1,ss_y=1,Smode=4,aSharpS=0.5)
Puis il y a eu une modification au script LimitedSharpen2 et le call était :
Import("C:\Program Files\AviSynth 2.5\plugins\LimitedSharpen2.avs")
LimitedSharpen2(ss_x=1,ss_y=1,Smode=4,aSharpS=0.4,aWThresh=0.5)
Donc on est bien d'accord, c'est le dernier qui est censé donner le meilleur résultat et c'est celui qu'il faut arriver à faire passer.
Je vous remet le script au cas ou, le dernière mouture donc :
# LimitedSharpen2()
#
# A multi-purpose sharpener by Didée, hacked by Akirasuto n' Soulhunter... ^^
#
function LimitedSharpen2( clip clp,
\ float "ss_x", float "ss_y",
\ int "dest_x", int "dest_y",
\ int "Smode" , int "strength", int "radius",
\ int "Lmode", bool "wide", int "overshoot",
\ bool "soft", int "edgemode", bool "special",
\ float "aSharpS", float "aWThresh", int "exborder" )
{
ox = clp.width
oy = clp.height
ss_x = default( ss_x, 1 )
ss_y = default( ss_y, 1 )
dest_x = default( dest_x, ox )
dest_y = default( dest_y, oy )
Smode = default( Smode, 4 )
strength = Smode==1
\ ? default( strength, 160 )
\ : default( strength, 100 )
strength = Smode==2&&strength>100 ? 100 : strength
radius = default( radius, 2 )
Lmode = default( Lmode, 1 )
aSharpS = default(aSharpS, 0.5)
aWThresh = default(aWThresh,0.75)
wide = default( wide, false )
overshoot= default( overshoot, 1)
overshoot= overshoot<0 ? 0 : overshoot
soft = default( soft, false )
edgemode = default( edgemode, 0 )
special = default( special, false )
exborder = default( exborder, 0)
xxs=round(ox*ss_x/8)*8
yys=round(oy*ss_y/8)*8
smx=exborder==0?dest_x:round(dest_x/Exborder/4)*4
smy=exborder==0?dest_y:round(dest_y/Exborder/4)*4
clp.isYV12() ? clp : clp.converttoyv12()
ss_x != 1.0 || ss_y != 1.0 ? last.lanczosresize(xxs,yys) : last
tmp = last
edge = logic( tmp.DEdgeMask(0,255,0,255,"5 10 5 0 0 0 -5 -10 -5", divisor=2)
\ ,tmp.DEdgeMask(0,255,0,255,"5 0 -5 10 0 -10 5 0 -5", divisor=2)
\ ,"max").levels(0,0.86,128,0,255,false)
bright_limit = (soft == true) ? tmp.blur(1.0) : tmp
dark_limit = bright_limit.inpand()
bright_limit = bright_limit.expand()
dark_limit = (wide==false) ? dark_limit : dark_limit .inflate.deflate.inpand()
bright_limit = (wide==false) ? bright_limit : bright_limit.deflate.inflate.expand()
minmaxavg = special==false
\ ? yv12lutxy(bright_limit,dark_limit,yexpr="x y + 2 /")
\ : maskedmerge(dark_limit,bright_limit,tmp,Y=3,U=-128,V=-128)
Str=string(float(strength)/100.0)
normsharp = Smode==1 ? unsharpmask(strength,radius,0)
\ : Smode==2 ? sharpen(float(strength)/100.0)
\ : Smode==3 ? yv12lutxy(tmp,minmaxavg,yexpr="x x y - "+Str+" * +")
\ : asharp(aSharpS,0,0).awarpsharp(3,1,bm=3,cm=0,aWThresh)
OS = string(overshoot)
Lmode == 1 ? yv12lutxy( bright_limit, normsharp, yexpr="y x "+OS+" + < y x "+OS+" + ?")
\ : yv12lutxy( bright_limit, normsharp, yexpr="y x "+OS+" + < y x y x - "+OS+" - 1 2 / ^ + "+OS+" + ?")
Lmode == 1 ? yv12lutxy( dark_limit, last, yexpr="y x "+OS+" - > y x "+OS+" - ?")
\ : yv12lutxy( dark_limit, last, yexpr="y x "+OS+" - > y x x y - "+OS+" - 1 2 / ^ - "+OS+" - ?")
edgemode==0 ? NOP
\ : edgemode==1
\ ? MaskedMerge(tmp,last,edge.inflate.inflate.blur(1.0),Y=3,U=1,V=1)
\ : MaskedMerge(last,tmp,edge.inflate.inflate.blur(1.0),Y=3,U=1,V=1)
(ss_x != 1.0 || ss_y != 1.0)
\ || (dest_x != ox || dest_y != oy) ? lanczosresize(dest_x,dest_y) : last
ex=blankclip(last,width=smx,height=smy,color=$FFFFFF).addborders(2,2,2,2).coloryuv(levels="TV->PC")
\.blur(1.3).inpand().blur(1.3).bicubicresize(dest_x,dest_y,1.0,.0)
tmp=clp.lanczosresize(dest_x,dest_y)
clp.isYV12() ? ( exborder==0 ? tmp.mergeluma(last)
\ : maskedmerge(tmp,last,ex,Y=3,U=1,V=1) )
\ : ( exborder==0 ? tmp.mergeluma(last.converttoyuy2())
\ : tmp.mergeluma( maskedmerge(tmp.converttoyv12(),last,ex,Y=3,U=1,V=1)
\ .converttoyuy2()) )
return last
}
#
Copier/coller dans le bloc note, et enregistrer sous LimitedSharpen2.avs, puis à placer dans le répertoire plug'ins de Avisynth.
Vous inquiétez pas pour les deux smiles dans le script, le copie coller vers le bloc note remet la bonne écriture, j'ai vérifier.
Voila comme ça on est sur de bien repartir sur de bonnes bases.