deinterlace frage

  • Habe hier mehrere CSI Sendungen (TV Aufnahmen) die ich gerne deinterlace würde. Nur weiß ich einfach nicht wie, oder besser gesagt, sieht alles was ich bis jetzt versucht habe nicht gut aus :nein:

    Desweiteren möchte ich die TV Werbung auch gleich per avisynth raus schneiden. Was mir fehlt sind die richtigen deinterlace Einstellungen. Ich hoffe es kann mir hier bei jemand weiterhelfen?

    Script:

    Sampler: http://rapidshare.com/files/34813466/Sampler.mpg.html

    Danke für eure Hilfe :)

  • genauer? Was hast Du alles versucht?
    Mal yadif() oder TDeint() versucht?

    TDeint() in fast allen Variationen die mir bekannt sind
    TFM(pp=0) ohne erfolg

    Auch "SeparateFields().Trim(1,0).Weave()" aus einen anderen Thread hier aus dem Forum habe ich versucht, ist aber auch nichts.

    Muss dazusagen das ich das Thema deinterlacing nie wirklich verstanden habe :nein: Und es immer als Stiefkind behandelt habe, da ich sowas auch fast nie gebraucht habe. Doch das sind die Ami Folgen in O. Ton 29.970 FPS und jetzt brauche ich es und weiß nicht wie :nein:

    Edit: Die Frage ist ja auch noch ist es echtes interlace oder nur so ein zwischen ding? Habe mir die Seite von "scharfis_brain" ein paar mal durch gelesen, doch verstanden habe ich es nicht :(

    Mein Vorgehen ist hier eher stümperhaft und verspricht so auch nicht zum Erfolg zu führen. Deshalb bitte ich euch um Hilfe und eventuell lerne ich ja auch was dazu.

  • TFM(pp=0) ohne erfolg


    Echt nicht? Seltsam. Das wäre hier nämlich das Richtige ...

    Die Source ist FILM 23.976 fps, mit hartem Telecine auf 29.97 fps. Deswegen braucht's einen IVTC (Inverse Telecine) Filter. "Einfaches" Deinterlacing kann nicht zum Erfolg führen.

    Mpeg2Source("Sampler.d2v")
    TFM(pp=Geschmackssache)
    TDecimate()

    TFM baut die Felder wieder zu progressiven Frames zusammen. Dabei entstehen natürlich zwangsweise Duplicate Frames, weil für jeweils 30 Frames/Sekunde nur 24 "echte" Frames existieren. Dafür ist TDecimate da: nimmt das 30fps Video, wirft die Duplicates raus, und liefert saubere 24fps zurück.

  • Zitat

    TFM baut die Felder wieder zu progressiven Frames zusammen. Dabei entstehen natürlich zwangsweise Duplicate Frames, weil für jeweils 30 Frames/Sekunde nur 24 "echte" Frames existieren. Dafür ist TDeint da: nimmt das 30fps Video, wirft die Duplicates raus, und liefert saubere 24fps zurück.

    Wie meinst du das jetzt?
    Wenn ich z.B.

    Video = Video.TFM(pp=0)
    Video = Video.TDeint()

    Bleibt der Film doch auch 29.970 fps, wie bekomme ich ihn den mit TDeint auf saubere 24fps? Siehe Anhang

    Das wäre ja das was ich auf "scharfis_brain" Seite gelesen habe untre Punkt 2.3 wenn ich dich jetzt richtig verstanden habe? Nur das er da kein TDeint() verwendet richtig?

    Nur wenn ich es so in meinen Script aufrufe:

    Video = Video.Telecide(order=1,post=0)
    Video = Video.Decimate(5)

    Bekomme ich eine Fehlermeldung das "order" falsch sei?

    Rufe ich es so auf:

    Video = Video.TFM(pp=0)
    Video = Video.Decimate(5)

    Habe ich zwar 23.976 fps aber das Bild sieht nicht gut aus?

  • Sorry, Tippfehler. ("Freud'scher Vertipper")

    Habe TDeint geschrieben, aber natürlich TDecimate gemeint. ;)

    Obige Post ist korrigiert.

  • Ivtc

    Gut, nur was soll mir der Brocken den du mir hier vorwirfst sagen? Danke Selur wenn man es weiß kann man damit sicher ne menge anfangen, wenn man wie ich es aber nicht weiß rein gar nichts.

  • Sorry, Tippfehler.

    Habe TDeint geschrieben, aber natürlich TDecimate gemeint. ;)

    Ja das habe ich schon versucht Didée wie auf "scharfis_brain" Seite beschrieben doch es sieht nicht gut aus. Oder was sagst du zu den Bild? Das ich oben angehangen habe.

    Video = Video.TFM(pp=0)
    Video = Video.Decimate()

    edit: ok. gesehen du sagst TDecimate() und ich habe Decimate() genutzt, dass Ergebnis ist aber fast identisch.

    Siehe Bild

  • Das ist der allererste Frame des Samples. Vielleicht kriegt der Filter halt den ersten Frame nicht richtig gebacken. Wie sieht denn der Rest aus? (Bei mir hier sieht's nämlich recht gut aus...)

    Ausserdem:
    Bei "Decimate()" (aus DGraft's Decomb package) kannst Du nichts/nicht viel auf den Output geben, wenn Du zu einer Stelle des Videos "springst". Der Output ist nur dann verlässlich, wenn alles sequentiell vom Start bis zum Ende durchspielt. (Nach manuellen "Sprüngen" in der Timeline regelst sich das nach einer handvoll Frames auch wieder von selber ein.)

    Ausserdem: tendenziell entweder

    Telecide().Decimate()

    oder

    TFM().TDecimate()

    Sicher kann man die Filter von Don Graft und von Tritical auch "mischen" -- aber bei IVTC wäre es mir sympatischer, wenn beide Filter "vom gleichen Hersteller" sind ... :)

  • Der Rest sieht gut aus, es waren halt die ersten Bilder die mich zur Verzweiflung gebracht haben. Also hatte ich ja schon fast die richtige Lösung auf scharfis_brain's Seite gefunden. Diese dann aber wieder verworfen, wegen eben den ersten Bildern.

    O.K das Script sieht jetzt so aus, sind da grobe Fehler drin?

  • Sieht alles OK aus, kann keinen Fehler entdecken. :)

    Wollte noch einen Vorschlag machen, um etwas mehr Textur-Schärfe zu erhalten ... anstatt

    Code
    Video = Video.vinverse(3.0,amnt=12).fluxsmootht(7).Blur(0.45)Video = Video.RemoveGrain(3)

    Dieses hier:

    Code
    Video  = Video.vinverse(3.0,amnt=12).fluxsmootht(7)
    Video2 = Video.Blur(0.45).RemoveGrain(3)
    Video  = Video2.TemporalRepair(Video)

    Probier' das mal aus ... es macht eigentlich das, was es soll: die Texturen etwas mehr vor all dem Verunschärfen zu schützen.
    Allerdings steigt mir diese Filter-Combo nach ein paar dutzend Frames mit "Avisynth Read error" aus ... vielleicht funktioniert's bei Dir ohne Fehler. (Mein Celeron hier ist manchmal etwas komisch, mit SSE2-Sachen...:rolleyes:)

  • Didée Fehlermeldungen bekomme ich keine, aber das Bild sieht an einigen stellen jetzt doch arg komisch aus. Siehe Anhang 3 aufeinander folgende Bilder.

    Eventuell eine Idee dazu?

    Wenn ich anstelle von TemporalRepair nur Repair nehme habe ich diese Bildstörungen nicht. Aber so war das von dir wohl nicht gedacht, dass man es so einsetzt anstelle von TemporalRepair nur Repair:

    Code
    Video = Video.vinverse(3.0,amnt=12).fluxsmootht(7)
    Video2 = Video.Blur(0.45).RemoveGrain(3)
    
    
    Video  = Video2.[COLOR='Red']Repair[/COLOR](Video)
  • Nein, so war das tatsächlich nicht gedacht ... "Repair" macht ja etwas völlig anderes als "TemporalRepair".

    Ich hab die Lösung schon, diese Post wird in ein paar Minuten editiert. ;)


    [edit]


    Also, des Rätsel Lösung ist, dass der Filter "TemporalRepair" aus dem Paket "RemoveGrain v1.0" nicht richtig funktioniert ... ist wohl ein bisserl kaputt.

    Funktionieren tut aber die Vorgänger-Version aus "RemoveGrain v0.9". Also umschifft man das Problem:

    - Die DLLs "Repair[SSE2].dll" aus dem v1.0-Paket lässt man in seinem Plugin-Verzeichnis, und lädt sie auch weiterhin mit LoadPlugin (wenn man seine Plugins manuell lädt).

    - Man nimmt die "Repair.dll" aus dem RemoveGrain v0.9-Paket, benennt sie um nach "Repair_v09.dll", und packt diese auch in sein Plugin-Verzeichnis.

    Das Script wird dann folgendermaßen geändert:

    (ich mach' gleich eine etwas umständlichere Änderung, zum Vergleich des TemporalRepair-Effektes)


    Code
    LoadPlugin("E:\AviSynth 2.5\Repair_v09.dll")LoadPlugin("E:\AviSynth 2.5\RepairSSE2.dll")[...]vinverse(3.0,amnt=12).fluxsmootht(7)  not_blurred = lastblur(0.45).RemoveGrain(3)  blurred = lastrepair_v09_temporalrepair(not_blurred)  interleave(blurred,last) ##  nur zum VergleichLimitedSharpenFaster( ...[...]


    Hiermit wird explizit der Filter "TemporalRepair" aus der alten DLL geladen. Alles andere, das womöglich irgendwie, irgendwo, irgendwann aufgerufen wird, kommt aus den neuen DLLs.

    Die Zeile mit Interleave(blurred,last) dient zur Veranschaulichung des Effektes - man sieht, dass in nicht-bewegten Bereichen die Texturen viel besser erhalten werden.
    Zum enkodieren muss diese Zeile natürlich per "#" auskommentiert werden.

    Vorher:
    http://img517.imageshack.us/my.php?image=o…alrepairig3.jpg

    Nachher:
    http://img116.imageshack.us/my.php?image=m…alrepairnd2.jpg


    Die Kurz-Version der Änderung ist einfach

    Code
    [size=8]vinverse(3.0,amnt=12) .fluxsmootht(7)
    blur(0.45) .RemoveGrain(3) .repair_v09_temporalrepair(last)
    LimitedSharpenFaster( ...[/size]

Jetzt mitmachen!

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