Archiv verlassen und diese Seite im Standarddesign anzeigen : alte VCDs auf DVD-interlaced aufpusten...
scharfis_brain
25. May 2005, 20:12
tja, da habe ich doch einige alte Aufnahmen
(Jugendsünden! Oh graus, was sieht das SCH... aus. War ICH das etwa?!?)
mal auf DVD retten wollen, von wegen: Rohlinge fangen an zu oxidieren, und :
"OMG, wat sieht das doch sch... aus"
und mir kam da spontan dieser CIF nach Full-D1 - Upscaler in den Sinn:
function CIF2FullD1(clip i)
{# 2x2-upscaling
x=i.tdeint(mode=-1,type=3).turnleft(). tdeint(mode=-1,type=3).turnright()
# Bewegungsinterpolation
vf=x.mvanalyse(isb=false, sx=4,sy=4,lambda=2000)
vb=x.mvanalyse(isb=true, sx=4,sy=4,lambda=2000)
y=x.mvinterpolate(vb,vf, bl=0.45,el=.55)
interleave(y,x)
#reinterlacing
duplicateframe(0)
converttoyuy2()
assumetff().separatefields(). selectevery(4,0,3).weave()
}
Input: progressives 352x240@29.97 fps (NTSC) oder 352x288@25fps (PAL)
Input muss YV12 sein!
Output: TFF-Interlaced 704x480@29.97 fps (NTSC) oder 704x576@25fps (PAL)
Output ist YUY2
benötigt: MVTools0962 http://jourdan.madism.org/~manao/MVTools-v0.9.6.2.zip
und TDeint http://bengal.missouri.edu/~kes25c/TDeintv1b3.zip
Hab ich das richtig verstanden:
CIF progressiv => 4CIF interlaced durch Interpolation einer der Fields beim Upscaling?
:eek: :daumen:
katjarella
25. May 2005, 20:21
@scharfi
Ich möchte Dir für diesen Beitrag danken und hoffe, Du hast das Abokonto, für die in Zukunft "Brauche Hilfe zum Verbessern meiner alten VCD/SVCD..." kommenden Beiträge, schön freigemacht hast. Auf jeden Fall jetzt schon mal ein VIEL Spaß.
scharfis_brain
25. May 2005, 20:22
Ja genau!
Es wird sowohl spatial als auch temporal interpoliert! (Wau, nen Satz ohne Nomen!)
Sieht sowas den besser aus, als wenn man einfach von 352x240 auf 704x480 resized und eventuell nen Sharpener+blinddehalo darauf wirft oder einfach resized?
Cu Selur
Ps.: vorher nachher screenshots würden mich mal interessieren :)
scharfis_brain
25. May 2005, 21:02
Tüllich kann man noch Blinddehalo und Co. reinwerfen.
Aber ich habe mich für 2x TDeint entschieden, weils schmerzfreier zu implementieren ist.
(TDeint hat einen spezialmode für Edge-Direccted vertical height doubling)
und beispielbilder.. hmmm.
bei bewegeung sähe man sofort die Kämme -> schlecht vergleichbar
und bei statischen szenen sieht man ausschließlich die spatiale Interpolation.
und die ist, wie schon gesagt, simples 2x TDeint()
Obscura
26. May 2005, 09:05
Aus rein technischem Interesse habe ich mal anhand einer alten VCD (DVB-S > TMPGEnc > VCD) einen kurzen Test durchgeführt. Gegenüber einem schlichten Resize sieht das Ergebnis schon besser aus - allerdings auch wesentlich softer. Obwohl es mit den Beispielbildern wirklich nicht besonders aussagekräftig ist, habe ich mal beide angehängt.
Damit ist es IMHO Geschmackssache. Weniger Geschmackssache ist der Geschwindigkeitsfaktor:
Test auf AMD XP1800 mit QuEnc 0.61
LanczosResize : ca. 30 fps <> CIF2FullD1 : 1,42 fps
Was ich damit ausdrücken möchte : Wer großen Wert auf Qualität setzt, sollte sich durchaus mit "CIF2FullD1" befassen. Die Fans von verhunzten EselVCDs hingegen haben ohnehin nicht die Zeit ....... (diese Sorte "Spezialisten" sucht natürlich auch die avisynth.exe vergeblich :ani_lol: )
Dies nur zum Thema "Brauche Hilfe zum Verbessern meiner alten VCD/SVCD..."
@scharfis_brain
Mal so nebenbei gefragt: Warum denn in beide Richtungen skalieren? Auf 352x480 hätte doch auch völlig ausgereicht.
Oder hast Du das jetzt nur wegen der speziellen Funktionen so gemacht?
scharfis_brain
26. May 2005, 12:30
stimmt, hätte man auch auf half-D1 lassen können
Wegen der Geschwindigkeit:
Ein bisschen besser sollte es werden, wenn man in den Vektorsuchen "sx=8,sy=8" angibt. (Lambda sollte dann eventuell halbiert oder geviertelt werden - aber Lambda ist immer so ne Sache ...)
Da der Frame ja eh' schon auf doppelte Größe aufgeblasen wurde, sollte Vektorsuche mit 8x8-Blöcken eigentlich ausreichen.
Ansonsten aber: :ja:
Eastermeyer
24. May 2006, 09:13
Kann das sein , das das Ding nen Fehler hat ?
Mir sind lauter PixelFehler aufgefallen , da hab ich mal SeparateFields() gemacht.
In jedem ungraden Frame sind Fehler.
edit: Hab mal die Pic's entfernt , die Jungs wissen ja auch so sofort , was ich meine.
tach auch !
Ich bin entsetzt!
Man kann aus Sch**e wirklich Gold machen ?
Und warum soll das besser sein , als am TV aufgezoomtes CIF sprich VCD ?
Da wird BergH am Vatertach aber mal was zu testen.
scharfis_brain
24. May 2006, 14:37
1) die plugins sind mittlerweile veraltet.
es müsste nun vielmehr so aussehen:
function CIF2FullD1(clip i)
{# 2x2-upscaling
x=i.eedi2().turnleft(). eedi2().turnright()
# Bewegungsinterpolation
motionprotectedfps(last.framrate*2, iterate=4)
#reinterlacing
duplicateframe(0)
converttoyuy2()
assumetff().separatefields(). selectevery(4,0,3).weave()
}
wenn das output zu verwaschen ist, einfach das duplicateframe(0) rausnehmen
2) bewegungsinterpolation ist niemals perfect. D.h. alles was blitzt und kracht geht in die Hose, deswefgen ist jedes 2. Filed manchmal mit diesen verrückten artefakten durchzogen
bewegungsinterpolation ist niemals perfect. D.h. alles was blitzt und kracht geht in die Hose, deswefgen ist jedes 2. Filed manchmal mit diesen verrückten artefakten durchzogen
Genau so isses, Amen. Aber vielleicht geht da doch was ...
Mal angenommen, man hätte eine Maske, die genügend verlässlich diejenigen Bereiche abbildet, in denen die Bewegungssuche [Frame_X]<-->[Frame_Y] ein "unbrauchbares" Ergebnis geliefert hat. ;)
Dann könnte man doch einfach diese Fehlermaske anhand der gefundenen Vektoren auf den errechneten Kompensationsframe drauflegen, und dann die übliche Fallback-Lösung (Blending) per maskedmerge reinkopieren.
Odä nich?
Eastermeyer
24. May 2006, 15:22
Ich habe dazu einige Fragen , scharfi :
1) Die eedi2-Interpolation gefällt mir nicht ganz , das wird zu unscharf , was hälst du davon ?
function CIF2FullD1_LS(clip i)
{# 2x2-upscaling
x=i.LimitedSharpen(dest_x=width*2,dest_y=height*2)
# Bewegungsinterpolation
motionprotectedfps(last.framerate*2, iterate=4)
#reinterlacing
duplicateframe(0)
converttoyuy2()
assumetff().separatefields(). selectevery(4,0,3).weave()
}
2) Welche Plugins brauche ich für die neue Version ?
3) Ich habe die Funktion des Scripts eigendlich gut nachvollziehen können , aber was macht DuplicateFrame ? Klar , ein Frame verdoppeln , aber was bringt das bzw. was hat das in diesem Zusammenhang für Auswirkungen ?
DANKESCHÖN !
scharfis_brain
24. May 2006, 16:26
1) mir egal. Tu was immer Du magst. Das fuehrt aber dazu dass das originalbild nicht mehr unangetastet zur Ausgabe gelangt.
2) EEDI2.dll von tritical und motion.dll von mg262 (nebst motionprotectedfps.avs vom Dezember 2005)
3) es stellt sicher, dass das das Eingangsbild ohne vertikales rescaling auf das Even oder Odd field abgebildet wird.
Eastermeyer
25. May 2006, 22:36
Mal angenommen, man hätte eine Maske, die genügend verlässlich diejenigen Bereiche abbildet, in denen die Bewegungssuche [Frame_X]<-->[Frame_Y] ein "unbrauchbares" Ergebnis geliefert hat.
Dann könnte man doch einfach diese Fehlermaske anhand der gefundenen Vektoren auf den errechneten Kompensationsframe drauflegen, und dann die übliche Fallback-Lösung (Blending) per maskedmerge reinkopieren.
Ehm.... scharfi mein König aller AVS-Scripte , würdest du...
scharfis_brain
25. May 2006, 22:40
Already tried that unsuccessfully.....
... ich warte ja nur auf den Thread in ein paar Jahre ...
"alte VCDs auf HDDVD-interlaced aufpusten..."
scharfis_brain
25. May 2006, 23:06
da brauchst Du keine paar Jahre zu warten für.
xxxsource("blah.xxx")
eedi2().turnright().eedi2().turnleft()
eedi2().turnright().eedi2().turnleft() # LOL
motioncompensatedfps(last.framerate*2)
bicubicresize(1440,1080)
addborders(240,0,240,0)
das gibt schöööönes 1080p50 oder 1080p60 Dir
Mal angenommen, man hätte ...
Dann könnte man doch einfach...
Oh. Heheh. Tja. Man könnte tatsächlich ... wenn man denn nur könnte: die MVTools lassen einen ja gar nicht ...
Die produzierte Fehlermaske sitzt ja quasi am *Endpunkt* der Vektoren. Um aber die Maske wie beschrieben einzusetzen, müsste sie "rückwarts" entlang der Vektoren bewegt werden, vom Endpunkt in Richtung Ursprung. Technisch ist das keine große Sache ... nur haben die MVTools dafür leider keinen Befehl ... :hm:
Fizick isch ja inzwischa s'Herrgöttle von dr MVTools, un wenn i d'Gosch bloß aufmach um ebbes zu soge, no schreit'r glei "we must not do that", weil ja i eh koin Blasse hab, gell ...
Also sorry für das Geschrei. Bretter und Nägel sind da; allein was fehlt, ist der Hammer.
@Didée und scharfi
Kann es sein, dass Ihr ein ganz klein wenig ironisch, sarkastisch oder einfach nur frustriert seid?
Bei den MVTools kann ich leider nicht mitreden, die sind echt schwierig zu begreifen.
vBulletin® v3.7.3, Copyright ©2000-2009, Jelsoft Enterprises Ltd.