Interlace oder nicht?

  • Ich komme nicht weiter, habe hier eine sehr alte TV Serie, die ich gerne als XviD sichern möchte.
    Habe schon alles ausprobiert doch ich bekomme kein zufriedenstellendes Ergebnis. Nach jetzt fast 4 Tagen Kopfschmerzen und lesen in Doom9 Forum und auch hier gebe ich auf. Ich hoffe das ihr mir weiterhelfen könnt. Bin mir auch nicht sicher ob es Intelace ist oder nicht :( Habe da schon x Varianten aus dem "TDeint and TIVTC" Thread ausprobiert ohne Erfolg.

    Die Source ist nicht die beste aber dennoch möchte ich sie in einigermaßen ansehnlicher Qualität als XviD auf DVD sichern.

    - es ist viel Rauschen in der Source / wie sollte man da am besten vorgehen
    - DGIndex sagt zwar die Source wäre Progressive bin mir da aber nicht sicher :nein:

    Ein Script Vorschlag wie ich an die Sache rangehen sollte wäre super.


    Sampler: http://rapidshare.com/files/31967235/Sampler.m2v.html

    Ich danke euch :)

    -doc-

  • Zitat

    DGIndex sagt zwar die Source wäre Progressive


    Ne...ist es nicht,sieheScreen.

    Zitat

    Die Source ist nicht die beste aber dennoch möchte ich sie in einigermaßen ansehnlicher Qualität als XviD auf DVD sichern.


    Soo schlecht ist diese Source nun auch wieder nicht.

    Zu "als XviD auf DVD" kann ich nichts sagen,möchte erstmal ein XVid File ohne Verblockungen am Plasma sehen können.

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • O.K sie ist also Interlace, dass hatte ich mir schon gedacht und hatte da auch schon mit TDeint einiges ausprobiert aber wie schon geschrieben ohne richtigen Erfolg :nein: Denn Thread im Doom9 Forum kenne ich jetzt fast auswendig, aber weiter gebracht hat es mich nicht. Mir fehlt einfach die zündende Idee oder der Anstoß in die richtige Richtung.

    Wie sollte ich bei dieser Source vorgehen?

  • Ob ein MPEG2-Video interlaced ist, kann man nur auf eine Art sicher feststellen: Bewegte Szenen Bild für Bild mit einem Decoder anschauen, der nicht selber Deinterlacing durchführt (z.B. in DGIndex), ob da Streifen zu entdecken sind.

    (Sorry - Als SkyDSL-Nutzer habe ich im Moment keine Chance, irgend etwas von RapidShare zu laden. Alle Sky-DSL-Nutzer haben die gleiche IP - den Satelliten-Proxy.)

  • Zitat

    Ob ein MPEG2-Video interlaced ist, kann man nur auf eine Art sicher feststellen


    Setze immer noch VDubMod dafür ein.
    Schau mal die 3 Frames an 426 / 427 /428,dann weisst es.

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • Also das es Interlace ist weiß ich jetzt, habe auch schon so manchen weg ausprobiert aber die Ergebnisse waren alles andere als befriedigend :nein:

    Ich stehe hiebei einfach neben mir und weiß nicht wie ich es umsetzen soll. Die Seite von scharfis_brain besucht und dort auch gelesen nur richtig dahinter gestiegen bin ich noch nicht. Eventuell schaut es sich ja doch nochmal jemand an und verpasst mir den Stoß in die richtige Richtung.

  • Die Source zeigt zwar Combing, aber es handelt sich nicht um "echtes" Interlacing. Das sind progressive Frames, die durch Phase-Shifting interlaced kodiert wurden. Also sollte man das Deinterlacing mit einem Field-Matcher durchführen.

    ==> SeparateFields().Trim(1,0).Weave() (wenn das Pattern stabil ist) oder TFM() sollten es richten.

    Phase-Shifting müsste in Scharfi's Exotischem eigentlich erwähnt sein, oder?

  • Zitat

    SeparateFields().Trim(1,0).Weave()

    wenn ich das so anwende habe ich Längsstreifen in Bild Didée

    [Blockierte Grafik: http://srv2.onlinestuffs.com/pictureupload/thumbnail22/wvu2is4w36by8ggfn6ca.jpg]

    [Blockierte Grafik: http://srv2.onlinestuffs.com/pictureupload/thumbnail22/uuqmkfl1dm5w2no2hhda.jpg]

    Oder habe ich da was falsch verstanden?

    Mein Script:

    Code
    MPEG2Source("D:\D.F.A\1.d2v", info=3, cpu=4).Crop(18, 6, -16, -2)ConvertToYV12().lanczosresize(704, 528)SeparateFields().Trim(1,0).Weave() aSaWLimitedSharpen(Smode=3, strength=84, aSharpS=0.8)Removegrain(11)

    Korrektur:
    Wenn ich aber hergehe und es so umsetze sind die Streifen weg.

    Code
    AssumeFPS(25,true).SeparateFields().Trim(1,0).Weave().DoubleWeave().SelectOdd()

    War das so gedacht?

  • Alles falsch. ;)

    ConvertToYV12:
    1) überflüssig, weil Quelle schon in YV12 vorliegt
    2) ausserdem falsch, weil "interlaced=true" nicht angegeben wurde.

    LanczosResize(704,528):
    Auaaaah, ganz falsch. Das darfste natürlich nicht VOR dem Deinterlacen machen, damit wird die interlacte Feldstruktur ZERSTÖRT.

    Schmeiss' einfach die ganze Zeile mit Convert().Lanczos() komplett raus, und dann guck' nochmal. Keine Streifen.

  • Ich verbeuge mich und sage danke :) Du hast recht und ich wieder was dazu gelernt, vor dem Deinterlacen darf der -doc- nicht resize benutzen.

    Wäre das Script so richtig? Sieht soweit vom Bild her gut aus :)

    Code
    MPEG2Source("D:\D.F.A\1.d2v", info=3, cpu=4).Crop(18, 6, -16, -2)
    SeparateFields().Trim(1,0).Weave().lanczosresize(704, 528)
    MCNR_simple2(frames=3,thY=24,thC=20,thY2=-1,
                 \ thC2=-1,removdirt=true,LPrad=2.0,
                  \ LPlosens=1,LPhisens=5)
    aSaWLimitedSharpen(Smode=3, strength=120, aSharpS=0.8)
    Removegrain(11)
  • Soweit alles richtig. Mit der Separate-Trim-Weave - Methode musst Du halt die ganze Source kontrollieren, ob sich die Phase nicht irgendwann zwischendurch mal ändert.

    Am Ende sieht das Script etwas seltsam aus ... erst schärfen, und dann mit nem 3*3-Blur-Filter drübergehen? (Hose vor dem Wegwerfen nochmal waschen und Bügeln?) Na, jeder wie er will ...

  • O.K danke für die hilfreichen Tipps, werde das Script nochmal überdenken.
    Wie würdest du das Script den Aufbauen? Würde gerne mal sehen wie ein Profi das aufbauen würde.
    Eventuell kennt jemand noch eine andere Methode als MCNR_simple2 zur rausch Entfernung eine die etwas schneller ist?

  • Nochmal nach oben schupsen, wie schon geschrieben wollte ich das Script überdenken.

    Mein jetziges Scrip:

    Code
    SetMTMode(2)MPEG2Source("D:\D.F.A\Pilot\Pilot.d2v", info=3, cpu=4).Crop(14, 6, -10, -2)SeparateFields().Weave().Removegrain(11).lanczosresize(704, 528)a = lastb=a.STMedianFilter(3,3,1,1)SeeSaw(a,b, NRlimit=7, NRlimit2=9, Slimit=32,        \ Szp=16, Sstr=1.9, Spower=4)

    Vorschläge zur Verbesserung werden gerne angenommen :)

    Edit:// weiß nicht wie ich es beschreiben soll, aber wenn ich es so encode

    Code
    MPEG2Source("D:\D.F.A\Pilot\Pilot.d2v", info=3, cpu=4).Crop(14, 6, -10, -2)
    SeparateFields().Weave().Removegrain(11).lanczosresize(704, 528)

    Sieht das ganze doch recht komisch aus. Das Bild läuft nicht flüssig, es sieht immer so aus als ob es nachzieht, am anfang ist es i.O aber dann wird es unschön :nein:
    So ein Problem hatte ich bis jetzt noch nie :hm:

  • [leicht genervt]

    Edit:// weiß nicht wie ich es beschreiben soll, aber wenn ich es so encode

    Code
    MPEG2Source("D:\D.F.A\Pilot\Pilot.d2v", info=3, cpu=4).Crop(14, 6, -10, -2)
    SeparateFields().Weave().Removegrain(11).lanczosresize(704, 528)

    Sieht das ganze doch recht komisch aus. Das Bild läuft nicht flüssig, es sieht immer so aus als ob es nachzieht,


    Ja, natürlich. Du schreibst im Script "SeparateFields().Weave()". Das ist eine Null-Operation, die *gar nichts* tut - das Interlacing bleibt erhalten, und das anschließende RemoveGrain(11) vollzieht dann ein Field-Blending. Daher der "Nachzieh-Effekt".

    Was ich geschrieben hatte war: SeparateFields().Trim(1,0).Weave(). DAS tut etwas.


    Zitat von -doc-

    Im englischen Doom9 hat mir neuron2 jetzt eine variante genant: Telecide(post=0)

    Das hatte ich Dir bereits vor drei Tagen empfohlen: Einsatz eines Fieldmatchers. Ich hatte Dir den "moderneren" TFM() empfohlen - neuron2 empfiehlt natürlich seinen eigenen, älteren, Filter.

    [/leicht genervt]

  • Da muss man nicht genervt sein, nicht jeder hat das Wissen über welches du verfügst (welches sicherlich beneidenswert ist). Das ich zuvor mit so einen Material noch nichts zutun hatte habe ich angegeben, auch das ich nicht weiß wie man damit umzugehen hat.

    Das Script welches du bemängelst (zurecht) habe ich gepostet, darauf kam zuerst kein Einwand das es falsch sei, das ich da einen dicken Fehler eingebaut haben ohne es zu wissen da ich das was du geschrieben hast wohl nicht verstanden habe. Und somit deine Hilfe nicht richtig umsetzen konnte. Jetzt nachdem ich einen anderen Lösungsweg bekommen habe, (den ich umsetzen konnte) kommt der Einwand? Klar interessiert es mich wie ich deinen Lösungsweg richtig umsetzen kann! Um beim nächsten mal nicht wieder Fragen zu müssen. Bestimmt werde ich darin noch einiges an Zeit investieren müssen um es zu verstehen ohne frage. Nur um es zu verstehen muss man fragen, lesen, ausprobieren, wieder fragen u.s.w....

    Sicherlich ist es wichtig das der Fragende User mitarbeitet und sich bemüht. Nur ist es doch schwer wenn man etwas nicht weiß, es erstens richtig umzusetzen, zweitens sofort zu verstehen (deshalb habe ich das Script welches ich für richtig gehalten habe gepostet). Für dich war es höchstwahrscheinlich eine leichte Aufgabe, auch der Lösungsweg den du mir genant hast war wahrscheinlich leicht zu verstehen dennoch habe ich es nicht geschnallt. Ich habe nicht bezweifelt das der von dir angegebene Lösungsweg nicht richtig ist (oder habe ich geschrieben Didée es ist Falsch was du mir geschrieben hast?) ich habe geschrieben das es nicht gut aussieht, "weil ich halt einen Fehler gemacht habe" ohne es zu wissen.

    Zitat

    Mit der Separate-Trim-Weave - Methode musst Du halt die ganze Source kontrollieren, ob sich die Phase nicht irgendwann zwischendurch mal ändert.

    Woran erkennt man das sich die Phase ändert? Worauf muss man dabei achten?

    Zitat

    Was ich geschrieben hatte war: SeparateFields().Trim(1,0).Weave(). DAS tut etwas.

    Was genau tut es?
    Wofür steht Trim in dieser Reihenfolge?

    Zitat

    Also sollte man das Deinterlacing mit einem Field-Matcher durchführen.
    [...] oder TFM() sollten es richten.

    Wie würde TFM() in das Script eingebunden? Muss bei TFM in der "()" dann auch noch ein Befehl wie bei Telecide(post=0) angegeben werden oder nicht?

    Ein für mich sehr umfangreiches Thema welches wohl auch nicht in ein paar Tagen zu verstehen ist und ohne erklärende Hilfe wohl gar nicht.

    Wie du siehst habe ich es nicht verstanden, auch habe ich über die Suche nicht wirklich etwas gefunden welches mir beim verstehen geholfen hätte.

    Eventuell habe ich mich auch Dumm angestellt und es deshalb nicht verstanden was du gemeint hast, tut mir leid das ich zu Blöd dazu bin.

    LG
    -doc-

  • He, kein Grund sich persönlich angegriffen zu fühlen! Meine Antwort hatte nur (Script-)-Technisches als Inhalt, sonst nichts ...
    Ausserdem bin ich gerade grundsätzlich genervt, wegen einer hässlichen Putzaktion. (In der Küche - mit Steinfliesen als Boden - wurden heftige Stemmarbeiten durchgeführt --> viel Zementstaub. Dieser Staub ist dann beim Versetzen der Wasserleitungen NASS geworden. Ergebnis: ein hart-gefressener grauer Zementschleier, da kannste Putzen bis der Arzt kommt ...)

    Zitat


    Woran erkennt man das sich die Phase ändert? Worauf muss man dabei achten?


    Was genau tut es?
    Wofür steht Trim in dieser Reihenfolge?


    Grundsätzlich ist die Phase ja verschoben, deswegen ist ja das Interlacing da, obwohl der Inhalt eigentlich progressiv ist.
    Separate.Trim.Weave schiebt die Felder wieder in die richtige Phasenlage zurück, so dass das Ergebnis wieder "richtig" progressiv ist.
    Wenn sich die Phase zwischendurch an einer Stelle ändert / ändern würde, dann würde der Originalclip ab dieser Stelle "normal progressiv" erscheinen; das "blinde" Korrigieren der Phase würde dann für diese Stellen natürlich falsch sein, und konsequenterweise diese Stellen interlaced erscheinen lassen.

    Wenn sich die Phase zwischendurch ein- oder mehrfach ändert, dann spricht man von "dynamischem Phaseshift". Und damit man sich um diese Eventualität keine Sorgen machen (oder sie gar manuell verfolgen und korrigieren) muss, wurden die "Field-Matching"-Filter erfunden. Früher gab's nur Telecide(), heute wird überwiegend mit TFM() gearbeitet. Diese Filter setzen die versetzten Halbbilder wieder richtig zusammen wenn sie denn versetzt sind (falsche Phase), und machen gar nichts, wenn die Halbbilder nicht versetzt sind (richtige Phase).

    So gesehen sind die Fieldmatcher eine feine Sache. Einzige Nachteile: a) manchmal machen sie auch Fehler (kein Automatismus ist perfekt), und b) sie brauchen natürlich Zeit, um für jedes Bild zu berechnen *ob* etwas getan werden muss, oder ob nicht.
    Deswegen ist die Separate.Trim.Weave-Methode gar nicht so übel: WENN man einmal durch sein Quellmaterial durchscrollt, und dann (ziemlich) sicher ist, dass nur ein statischer Phaseshift vorliegt, dann kann man mit dieser manuellen Geschichte sowohl Rechenzeit sparen, als auch eventuelle Fehler des Fieldmatchers vermeiden.


    Zitat

    Wie würde TFM() in das Script eingebunden? Muss bei TFM in der "()" dann auch noch ein Befehl wie bei Telecide(post=0) angegeben werden oder nicht?


    Grundsätzlich ganz genauso wie Telecide. Natürlich hat TFM andere Parameter als Telecide (und, vor allem, viel viel mehr Parameter...).
    Was bei Telecide "post=0" ist, ist bei TFM "PP=0". Wobei es allerdings kein "richtig" oder "falsch" bei den PostProcessing-Optionen gibt ... das ist zum Teil Geschmackssache, und vor allem auch abhängig von der Quelle. (Wenn es z.B. viele "verwaiste" Felder - Felder ohne progressives Nachbarfeld - dann braucht man diese Optionen.)


    Zitat

    Ein für mich sehr umfangreiches Thema welches wohl auch nicht in ein paar Tagen zu verstehen ist und ohne erklärende Hilfe wohl gar nicht.


    Jo, das Thema ist nicht so ganz trivial, ich weiss ...
    Zuallererst, vor langer Zeit, hab ich ein paar Minuten gebraucht, um "Interlacing" zu verstehen ...
    Danach habe ich mehrere Jahre gebraucht, um Interlacing wirklich zu verstehen.
    ... Und wenn man scharfis_brain fragt, dann hab ich's wahrscheinlich immer noch nicht verstanden ... :D

  • Danke für deine Antwort werde es nochmal mit deinen Lösungsweg versuchen.

    Zitat

    [...]Dieser Staub ist dann beim Versetzen der Wasserleitungen NASS geworden. Ergebnis: ein hart-gefressener grauer Zementschleier, da kannste Putzen bis der Arzt kommt ...[...]

    Gehört nicht zum Thema aber eventuell hilft es dir. Scheiß Arbeit hast du da.... Spontan würde ich dir zu einen Zementschleier- Entferner raten wenn ein Baumarkt oder ein Fliesen Fachgeschäft in deiner nähe ist. Andere Möglichkeit die man probieren könnte, in dein Putzwasser mal etwas Essig bei mischen, die Säure sollte denn Putzvorgang beschleunigen.

    Wie ich vermutet habe ist das ein Thema welches Zeit zum verstehen benötigt, aber gut Zeit habe ich und verstehen / Dazulehrnen möchte ich auch!

    - wie findet man heraus ob es sich um eine Interlace Source handelt? (z.B. bei dieser hier)
    - wie findet man den Lösungsweg heraus um was für eine art Interlace es sich handelt?

    Edit:\\ noch eine Frage, Removegrain vor oder nach SeeSaw? Vor sieht etwas besser aus, ist das denn auch Script technisch richtig?

    Code
    MPEG2Source("D:\D.F.A\Pilot\Pilot.d2v", info=3, cpu=4).Crop(16, 6, -16, -2)
    Telecide(post=0)
    Removegrain(11)
    SeeSaw(NRlimit=7, NRlimit2=9, Slimit=36, 
                \ Szp=18, Sstr=1.6)
    lanczosresize(704, 528)
    #Removegrain(11)

    Noch eine Frage:
    So läuft das Script mit durchschnittlich 19 ~ 20 FPS ist das O.K oder ist es eher zu langsam und ich muss noch was an den XVID bzw. Script Einstellungen ändern?


  • Edit:\\ noch eine Frage, Removegrain vor oder nach SeeSaw? Vor sieht etwas besser aus, ist das denn auch Script technisch richtig?

    Code
    MPEG2Source("D:\D.F.A\Pilot\Pilot.d2v", info=3, cpu=4).Crop(16, 6, -16, -2)Telecide(post=0)Removegrain(11)SeeSaw(NRlimit=7, NRlimit2=9, Slimit=36,             \ Szp=18, Sstr=1.6)lanczosresize(704, 528)#Removegrain(11)


    Didée erwähnte schon das es sich bei dem RemoveGrain-mode 11 um einen Blurrer handelt (übrigens fast identisch zum Avisyinth-internen Befehl blur(1); nur schneller und genauer). Damit Denoist man nicht - zumindest nicht direkt.

    kassandro erwänte mal folgendes:

    Zitat von kassandro

    I only distinguish between cleaners, denoisers and blurrers. Blurrers don't remove noise, they just average. Denoisers actually remove noise, but the changes are very local, i.e. a pixel is only corrected if there are enough correct pixels in the immediate neighbourhood. Cleaners can remove bigger pieces of dirts, if you are lucky, but also have the highest artifact risk.

    Und in der der Dokumentation steht:

    Zitat von kassandro

    Which mode is the best for denoising? As far as compression is concerned, my benchmarks so far give the following mode ranking: 4,17,9,8,3,7,6,2,5,1, but modes 4 and 17 really stand out. As far as artifacts are concerned, we have unfortunately almost the reverse mode ranking: 1,5,2,18,6,7,8,17,3,4,9. Modes= 1,5,2 are the risk free modes, the modes 18,6,7,8,17 show low to moderate artifact risk (usually some softness) and modes 3,4,9 have severe problems with thin lines. Mode 9 has less artifacts than mode 4, but when they occur they look a lot more ugly. Mode 17 is my clear personal favorite. As far as compression is concerned it is fairly close to the leader, mode 4, and I have only seen some softness but hardly any visable artifacts.

    Den Mode 11 sehe ich da nicht.

    Das Könte dir bei der Auswahl ebenfals helfen:
    http://videoprocessing.11.forumer.com/viewtopic.php?t=44

    Auserdem wird SeeSaw nicht Falsch, aber in deinem eigenen Skript von hier richtiger geladen:

    Code
    a = last
    b=a.STMedianFilter(3,3,1,1)
    SeeSaw(a,b, NRlimit=7, NRlimit2=9, Slimit=32, 
           \ Szp=16, Sstr=1.9, Spower=4)

    den

    info=3

    kannst du ebenfals knicken, oder brauchst du wirklich:

    Zitat

    info: 0 to 3 (default: 0)

    Debug Information.
    - 0: Do not generate debug information
    - 1: Overlay debug information on the video
    - 2: Output debug information via OutputDebugString()
    - 3: Output hints in the video (as defined in http://utilities.cpp/utilities.h)

    ... ich glaube nicht.


    Noch eine Frage:
    So läuft das Script mit durchschnittlich 19 ~ 20 FPS ist das O.K oder ist es eher zu langsam und ich muss noch was an den XVID bzw. Script Einstellungen ändern?


    Das ist extrem schnell! :eek: Mit meinem Pentium I 166 Mhz MMX dauert es 20 Sekunden bis überhaubt mal ein Frame fertig ist! :heul:

Jetzt mitmachen!

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