TempGaussMC & Progressivmaterial

  • TGMC sollte ja nur bei interlace-Videos angewendet werden. Ich möchte jedoch von 25p nach 50p konvertieren und habe zunächst mit:

    source=Mpeg2Source("D:\Video\Video.d2v")
    backward_vec = source.MVAnalyse(isb = true, truemotion=true, pel=2, idx=1)
    forward_vec = source.MVAnalyse(isb = false, truemotion=true, pel=2, idx=1)
    return source.MVFlowFps(backward_vec, forward_vec, num=50, den=1, ml=100, idx=1)

    nach 50p mit huffyuv umgewandelt und anschließend reinterlaced mit:

    assumetff().separatefields().selectevery(4,0,3).weave()

    und dann weiterverarbeitet mit TGMC und LSF wie reine interlaced Videos.
    Kann ich mir den Zwischenschritt über huffyuv ersparen? Bewegungsfluß und Rauscharmut sind wirklich hervorragend.

  • Versteh' ich jetzt nicht so ganz ... wenn Du 25p nach 50p wandeln willst, dann ist die Sache mit 25p--MFlowFPS-->50p doch bereits erledigt. Warum dann nochmal re-interlacen (also die Hälfte des erstellten 50p wieder wegwerfen) und TGMC anwenden (damit er versucht, das wieder herzustellen, was Du vorher sowieso schon hattest) ??

  • Im Prinzip hast du recht. Im Vergleich habe ich festgestellt, daß nach Wandlung nach 50p die Bildqualität ohne TGMC sichtbar schlechter ist als dieser Umweg. Der Beweis, daß TGMC mehr macht als nur Deinterlacing.

  • Jajaaa, das schon.;) - Aber trotzdem hilft es nicht gerade, dass zuerst "gute" Information weggeworfen wird, um sie danach wieder neu erraten zu müssen.

    Wenn 50p bereits vorliegt, und Du die "TGMC-Methode" daran mal probieren willst (wollte ich auch schon, hab's bloß nicht nicht wirklich gemacht), dann würde ich folgende Änderung im Script machen:

    Diese Sektion im Script anpassen wie rot markiert:

    Code
    # Create spatially interpolated bob-clips
    [COLOR='red']# [/COLOR]dbob = clp.bob(0,0.5)
    [COLOR='red']# [/COLOR]edi  = (EdiMode=="nnedi2") ? clp.nnedi2(field=-2,qual=qual)
    [COLOR='red']# [/COLOR] \   : (EdiMode=="NNEDI")  ? clp.nnedi(field=-2)
    [COLOR='red']# [/COLOR] \   : (EdiMode=="EEDI2")  ? clp.SeparateFields().EEDI2(field=-2, maxd=EEDI2maxd) 
    [COLOR='red']# [/COLOR] \   : (EdiMode=="Yadif")  ? clp.Yadif(mode=1)
    [COLOR='red']# [/COLOR] \                         : dbob
    [COLOR='red']dbob = clp
    edi = clp[/COLOR]


    Das deaktiviert ganz einfach das "provisorische Bobbing", das der TGMC zuallererst einmal durchführt -- weil, das beste provisorische Bobbing ist in diesem Fall der bereits vorliegende 50p Input.

  • Danke Didée. Habe das Skript entsprechend modifizert, es geht sogar mit MeGUI! Werde das Ergebnis mitteilen.

    PS: Bin sehr zufrieden. hervorragende Bildschärfe, nahezu rauschfrei und bester Bewegungsfluß. Schluß mit dem 25p-Geruckel.

    Zur Perfektion fehlt nur noch die Einbindung des Framedoublers in TGMC.

    Einmal editiert, zuletzt von hdst (3. März 2010 um 13:46) aus folgendem Grund: Ergebnis

  • Bei der Errechnung der Zwischenbilder (von 25 auf 50) gibt es immer am Schluß (letztes Bild) der Kodierung mit x264.exe die Meldung 'x264.exe funktioniert nicht mehr'. Das liegt wohl daran, daß noch ein weiteres Bild erwartet wird, was jedoch nicht vorhanden ist. Ein autom. Shutdown ist deshalb nicht möglich. Bei 25p/50i-Kodierung ist alles ok. Der kleine Fehler läßt sich wohl nicht beheben?

  • Selur

    Mit Windows 7 64bit und der Intel i7CPU 2,67GHz erreiche ich 6-7 fps, die CPU-Auslastung liegt bei 60-70 %. Erhöht man den SetMemoryMax-Wert, geht's noch etwas schneller. Allerdings besteht dann die Gefahr eines Abbruchs während der Konvertierung.
    Lohnt sich derzeit also nur für ausgewählte Aufzeichnungen.

  • Jetzt gibt es eine modifizierte Version, die sich QTGMC nennt. Neu sind u.a. 3 Input-Einstellungen für progressives Material. Die ersten Testergebnisse sind (abgesehen von der Geschwindigkeit bei hohen Qualitätseinstellungen) durchaus gut. Wünschenswert wäre jetzt noch ein integrierter Framedoubler, denn 25p ergeben bei den 3 Input's immer 25p. Ich möchte aber die Ausgabe von 50p. Welchen dieser 3 Einstellungen man bevorzugen soll, ist mir noch nicht recht klar.

  • Passt die Script Änderung oben wirklich, denn nach

    Code
    dbob = clpedi = clp

    kommt bei mir gleich

    Code
    edi = defined(edeint) ? edeint.pointresize(ox,oy, 0,(edeint.height()-oy)/2,-0,oy+.001 ) : edi

    Geht damit das das vorher gesetzte clp nicht verloren? Oder wird das durch ": edi" übernommen. Sorry bin mit der Syntax nicht so recht vertraut.

  • edi = defined(edeint) ? edeint.pointresize(ox,oy, 0,(edeint.height()-oy)/2,-0,oy+.001 ) : edi
    bedeutet:
    Falls (edeint) existiert
    setze edi = edeint.pointresize(ox,oy, 0,(edeint.height()-oy)/2,-0,oy+.001 )
    ansonsten setze edi = edi

    clp ist also auf jeden Fall in der Variable dbob noch vorhanden und wenn edeint nicht existiert ist es auch noch in edi gespeichert.

    Cu Selur

  • Ah, ok. Danke für deine Erklärung.

    Braucht man eigentlich ein Informatikstudium um solche komplexen Algorithmen schreiben zu können, oder kann man sich sowas tatsächlich selbst erarbeiten?

  • Wenn du die mit AviSynth mitinstallierte Dokumentation verstehst, reicht das.

    Aber es hilft eventuell, wenn man vorher schon mal etwas Interesse an Programmierung mit der C-Sprachfamilie hatte (inkl. Java, JavaScript, PHP, Perl u.ä.). Gerade der "dreiteilige Operator" (wenn ? dann : sonst) ist ein Fall von "effizientem Quelltext", den man verstanden haben muss.

    Englische Wikipedia: ?: (auch: "Ternärer Operator", "Bedingungsoperator" in anderen Lexika)

    Das Verständnis von Computerlogik (insbesondere "boolsche Logik), Mengenlehre und abstrakten Begriffen wie "eine Algebra" sehen viele sicher schon als "höhere Mathematik" an; aber bereits eine ansatzweise Vorstellung davon hilft auch beim Hobby-Programmieren schon ungemein.

  • Äh, die Frage hatte sich jetzt nicht auf die Syntax bezogen. Die war dann klar nachdem Selur es erklärt hatte. Der "dreiteilige Operator" ist mir geläufig, nur die Syntax dazu war mir neu.

    Mit komplexen Algorithmen hatte ich eher das TGMC Script an sich gemeint ;)

  • Nö, Informatikstudium braucht man wirklich nicht. (Abgebrochenes Studium reicht, das kann ich definitiv bestätigen.) :D

    Man sollte die vier Grundrechenarten beherrschen, und ein gewisses Maß an abstraktem Denkvermögen besitzen. In einem PC sitzen keine kleinen Kobolde drin, die in den Videodaten irgend etwas "erkennen" würden. Die Algorithmen "sehen" nur einen großen Wald aus Zahlen zwischen 0 und 255. Ob die vorhandenen Kombinationen von Zahlen und ihren Nachbarn "sinnvoll" sind oder nicht, das ist der Maschine unbekannt. Wenn da irgendwo ein, zwei Pixel sind, die sich deutlich von ihren Nachbarpixeln unterscheiden, dann ... kann ein Mensch problemlos unterscheiden, ob das Störungen sind, oder z.B. Bartstoppeln im Gesicht eines Mannes. Die Maschine kann das nicht.

    Die Kunst ist, trotz dieser "Betriebsblindheit" aus dem Zahlensalat etwas einigermaßen sinnvolles herauszurechnen. ;)

  • Waaaaaaas? Keine Kobolde? Jetzt bricht für mich aber ne Welt zusammen ;)

    Reicht da irgendein abgebrochenes Studium auch? :D

    Und dieses sinnvolle herausrechnen ist ja auch das was ich irgendwie faszinierend finde. Ich mein, da mussmer ja erstmal drauf kommen. Is da viel Codereuse?

  • Abschreiben kann jeder ... nein, stimmt nicht. Ohne zu verstehen, was welche Funktion eigentlich tut und warum, erzeugen selbst abgeschriebene Sachen Unsinn.

    Also meiner Meinung nach hilft definitiv, sowohl die vorhandenen Funktionen von AviSynth-Kern und evtl. nützlichen AviSynth-Plugins zu kennen, als auch gewissen Grundlagen der Bildverarbeitung. Beispielsweise sind so Filter wie "Sobel" und "Unscharfmaske" (und vor allem die Grundgedanken dahinter) Grundlagenmaterial für jemanden, der "bessere" Schärfefilter schreiben möchte. Beispielsweise. Und bei guten Rauschfiltern geht es sogar schon in die dritte Dimension, wenn er temporal arbeiten soll. Von Bewegungsschätzungen ganz zu schweigen...

    Mit ausreichend Gewalt kriegt man eine TORX-Schraube auch mit einem Schlitz-Schraubendreher raus. Aber es ist nicht Sinn der Sache, und macht die Schraube kaputt. Dann ist schon besser, wenn man weiß, dass dieser sternförmige Kopf da einen Schraubendreher benötigt, dessen Form man TORX nennt, damit man im Baumarkt das richtige Bit dazu kauft.

  • Was würde passieren wenn man das TGMC_beta2 auf progressives Material loslassen würde? Ich frage das u.a. auch deswegen, weil ich ein MPEG2 Video habe, welches eigentlich progressiv ist, aber an manchen Stellen Interlacing Streifen zeigt. Würden die damit möglicherweise verschwinden?

    EDIT: Also ich habe an manchen Stellen Blöcke. So als wäre da die Auflösung zu niedrig oder als wenn schlecht aus einem Halbbild ein Vollbild gemacht wurde. Würde ich ja gern zeigen, aber ich komme nicht mit der Funktion zum Hochladen zurecht. Könnte es möglicherweise an meiner Einstellung für TGMC liegen:

    (2,2,3,4,0,4,"NNEDI2",truemotion=true,sharpness=1.75,Sbb=2,SLrad=1,SVthin=0.75,Sovs=2)

    EDIT2:
    Hier die gibts die Screens: http://www.mediafire.com/?77j28gnhqu3veye

    EDIT3:
    Keiner eine Idee? :(

    3 Mal editiert, zuletzt von Menedas (9. Januar 2011 um 11:34)

  • Hm, hier hat sich ja immer noch nichts getan :(

    Ich habe inzwischen noch ein Problem. Ich habe Videos die zwischen interlaced und progressiv wechseln. Und dort kommt es zu unschönen Effekten z.B. bei progressiven horizontalen Kameraschwenks. Lässt sich da was machen?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!