Ich habe in den letzten Tagen noch ein bisschen experimentiert. Dabei bin ich auf ein altes Skript von Didée gestoßen, welches ich versucht habe, in mein Projekt einzubauen:
SetMTMode(3, 4)
AviSource("Siebenstein1.avi")
# Farbraum umwandeln (Quelle ist TFF)
AssumeTFF()
ConvertToYV12(interlaced=true)
SetMemoryMax(3000)
SetMTmode(2)
# Bobben
QTGMC(Preset="Slow")
# Didee-Magic!?
oo = last
mt_edge("0 0 0 0 0 0 0 2 0 2",0,255,0,255,Y=2,U=3,V=3)
mt_edge("0 0 0 0 0 0 0 2 0 2",0,255,0,255,Y=2,U=3,V=3)
o = last
nnedi3(field=-2,nsize=2)
merge(selecteven,selectodd)
bb0 = last
d1 = mt_makediff(o,last,U=3,V=3)
d2 = mt_makediff(last,last.removegrain(20),U=3,V=3).mt_lut("x 128 - 2.51 * 128 +",U=3,V=3)
dd = d2.repair(d1,13)
recon = last.mt_adddiff(dd,U=3,V=3)
recon
#deblock(quant=36).mt_lutxy(last,"x y < x 1 + x y > x 1 - x ? ?",U=3,V=3)
bb1 = last
mt_lutxy(bicubicresize(64*4,48*4).bicubicresize(width,height,1,0),"x 2 + y < x 1 - x 2 - y > x 1 + x ? ?",U=2,V=2)
mt_lutxy(bicubicresize(64*2,48*2).bicubicresize(width,height,1,0),"x 1 + y < x 1 - x 1 - y > x 1 + x ? ?",U=2,V=2)
mt_lutxy(bicubicresize(64*1,48*1).bicubicresize(width,height,1,0),"x y < x 1 - x y > x 1 + x ? ?",U=2,V=2)
mergeluma(bb1,0.49)
awarpsharp2(type=1,depth=4,thresh=144,blur=2)
x = removegrain(11)
xD = mt_lutxy(x,x.removegrain(4),"x y - abs 1 1.6 / ^ 4.51 * x y - x y - abs 1.9 + / * 128 +")
last.mt_adddiff(xD,U=2,V=2).mt_lutxy(x,"x y < x 1 + x y > x 1 - x ? ?",U=3,V=3)
grain = mt_lut(Y=-128,U=-128,V=-128).pointresize(512,400).addgrain(7).bicubicresize(width,height,-.4,.7)
last.mt_adddiff(grain,U=2,V=2)
sup1 = bb0.sbr().MSuper()
sup2 = last.MSuper(levels=1,sharp=1)
bv2 = sup1.manalyse(isb=true, delta=2,truemotion=false,global=true,blksize=16,overlap=8,search=5,searchparam=4,DCT=5)
bv1 = sup1.manalyse(isb=true, delta=1,truemotion=false,global=true,blksize=16,overlap=8,search=5,searchparam=4,DCT=5)
fv1 = sup1.manalyse(isb=false,delta=1,truemotion=false,global=true,blksize=16,overlap=8,search=5,searchparam=4,DCT=5)
fv2 = sup1.manalyse(isb=false,delta=2,truemotion=false,global=true,blksize=16,overlap=8,search=5,searchparam=4,DCT=5)
last.mdegrain2(sup2,bv1,fv1,bv2,fv2)
# Ränder schwarz überdecken
Letterbox(2, 10, 10, 16)
# Rauschen verringern
TemporalDegrain(gpu=false, degrain=2)
# Reinterlace
#SeparateFields().SelectEvery(4, 0, 3).Weave()
Alles anzeigen
Ich bin mir nicht sicher, was der Didée-Teil genau macht, aber durch bestimmte Analysen mit den masktools werden im Vergleich zu meinem ersten Versuch (siehe Thread-Seite 1) deutlich mehr Details sichtbar. Des Weiteren werden sogar Farbverschiebungen z.T. korrigiert:
Natürlich fällt auch auf, dass Einiges an Rauschen dazugekommen ist (vermutlich beabsichtigt durch addgrain()?), obwohl ich abschließend ja wie gehabt TemporalDegrain anwende. Ich bin mir leider auch nicht sicher, ob das Skript für Interlaced- oder Progressive-Quellen geeignet/gedacht ist. Im Moment wird ja erst gebobbt und dann Didées Teil ausgeführt. Die Deblock-Zeile habe ich auskommentiert, da Didée das Ganze damals wohl für eine MPEG2-Datei entworfen hatte. Vielleicht kannst du dich ja sogar persönlich zu Wort melden, Didée, und mir ein wenig helfen.