Deinterlacing vor Filteranwendung ?

  • Zitat

    btw. wenn man sich, wenn man interlaced resizen will, einen TMCbob aus 2x tomsmocomp bastelt, wird das ergebnis NOCH besser!


    Hör doch bitte mit den wagen andeutungen auf, und machs an nem Beispiel transparent :(

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • okay, gut:

    hier das script:

    anstatt des lanczos4resize(...) kann man natuerlich auch einen X-beliebigen denoiser verwenden!

  • Danke :)
    Muß ich gleich mal Testen und mit kernelbob() vergleichen.

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Hm, habe mal folgendes verglichen:

    Code
    Import("C:\kernelbob.avs")
    Import("C:\interlacedscale.avs")
    LoadPlugin("C:\DGDecode.dll")
    LoadPlugin("C:\kerneldeint140.dll")
    LoadPlugin("C:\TomsMoComp.dll")
    MPEG2source("C:\interlaced_NTSC_source.d2v",iPP=true).AssumeTFF().Crop(20,8,684,464)
    A=interlacedscale(624,464)
    B=kernelbob().Lanczos4Resize(624,464).SeparateFields().SelectEvery(4,1,2).Weave()
    Subtract(A,B)


    Das Differenzbild in VirtualDubMod ist selbst bei 800x600er Desktopauflösung und output color depth: Fastest (16-bit) komplett grau. Da kräuselt nicht mal was :huh:


    [Warum das Forum dort oben SeparateFields() so zerpflückt, ist mir ein Rätsel]

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Ja, hast recht. Mein Ergebnis lag an der gewählten Skalierung.
    Bei einem Test wie diesem, in einem so geringen Maße und auch nur horizontal zu skalieren, ist nicht sonderlich geschickt ;)

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Hab auch mal ein bißchen mit den Funktionen von restore24 rumgespielt:

    tmcbob.avs:

    Damit kann man nach tmcbob() seine Skalierer, Entrauscher und was weiß ich noch anwenden und dann gemütlich mit tmcreint() wieder reinterlacen, ohne sich um das Gefummel mit dem SelectEvery() kümmern zu müssen.
    Für faule Leute wie mich ganz praktisch :D

    ...und du bist sicher, das tmcbob() besser als kernelbob() ist? Die Unterschiede zwischen beiden, kann ich in meinem Testclip nur im Differenzbild sehen - hast Du vielleicht irgendein Vergleichsbild, bei welchem einem der Qualitätsgewinn direkt ins Auge springt?

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • nimm mal statt subtract einfach interleave, dann siehst Du den unterschied ganz deutlich. tmcbob macht sauberere kanten, waehrend kernelbob bessere statische bereiche macht.
    such' Dir also was aus.

    ahso, den tmcreint() solltest Du ueber einen Parameter steuerbar gestalten, ob er mit 4,0,3 (BFF) oder mit 4,1,2 (TFF) reinterlaced, denn wenn man bei TFF video mit BFF reinterlaced, ist die bildquali SOFORT im Eimer, denn man selektiert genau die Falschen Zeilen, wenn nicht resized (denoiser only) wird.
    nichtsdestotrotz kann man natuerlich (insofern reiszed wird) frei zw. 4,0,3 und 4,1,2 waehlen, wenn man eh vorhat die Fieldorder zu drehen, ohne 1/50 sec audioabweicheung zu bekommen....
    (diese 1/50 sec ist aber eh unmerklich)

    EDIT: huch hab ich erst jetzt gesehen: du schaltest ja global zw. den orders hin und her.
    loeblich, loeblich. ganzschoen clever, weare ich nicht drauf gekommen...

  • Ok, bei interlaced Material kommt's ja, wenn ich das richtig verstanden habe, eher auf die Bewegungsschärfe an, so das die statischen Bereiche nicht so wichtig sind….ergo: glaube ich Dir einfach, das tmcbob() besser ist :)


    Ich muß dich gleich mal weiter "ausquetschen". Angenommen meine Quelle hat BFF und ich will zu TFF wechseln ->

    Code
    Import("C:\tmcbob.avs")
    LoadPlugin("C:\DGDecode.dll")
    LoadPlugin("C:\TomsMoComp.dll")
    MPEG2source("C:\interlaced_BFF_NTSC_source.d2v",iPP=true)
    AssumeBFF()
    Crop(24,8,676,464)
    tmcbob()
    Convolution3D(preset="movieLQ")
    LanczosResize(384,288)


    wie komme ich von hier jetzt am saubersten von BFF->TFF?

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • aehm, wieso eigentlich 384x288 ?

    da hastDu dann doch schon jegliches Detail kaputtgemacht :(

    also einfach

    assumetff().weave()

    hinten an Dein script dranpappen, und schon hast Du TFF interlaced video.
    allerdings mit zwei spatial IDENTISCHEN Fields.
    d.h. das video hat einen ganz leichen verticalen jitter am TV.

    besser waere:

    MPEG2source("C:\interlaced_BFF_NTSC_source.d2v",iPP=true)
    AssumeBFF()
    Crop(24,8,676,464)
    tmcbob()
    Convolution3D(preset="movieLQ")
    lanczosresize(768,576)
    separatefields().selectevery(4,1,2).weave()

  • Zitat

    aehm, wieso eigentlich 384x288 ?
    da hastDu dann doch schon jegliches Detail kaputtgemacht :(


    Das ist nur ein Beispiel - Du kannst hier eigentlich zwei x beliebige durch 16 teilbare Zahlen einsetzen, wobei y natürlich > 240 Pixels sein sollte, weil ich mir bei der NTSC Quelle das interlaced resizing dann sparen könnte ;)


    Zitat

    lanczosresize(768,576)


    Das gehört aber nicht zur reinterlacing Prozedur, oder?


    Zitat

    separatefields().selectevery(4,1,2).weave()


    Achso, jetzt verstehe ich Deinen Beitrag von heute, 17:04 Uhr: "nichtsdestotrotz kann man natuerlich (insofern reiszed wird) frei zw. 4,0,3 und 4,1,2 waehlen, wenn man eh vorhat die Fieldorder zu drehen, ohne 1/50 sec audioabweicheung zu bekommen...." - bedeutet also, wenn ich nach tmcbob() noch resize, ist es völlig egal, ob ich unten mit a) ...selectevery(4,1,2)... oder b)...selectevery(4,0,3)... reinterlace - das Ergebnis wäre dann immer sauber a=tff bzw. b=bff, völlig unabhängig von der Fieldorder der Quelle?
    Und wenn dem so ist, wie würde ich denn dann vorgehen, wenn ich nur denoisen will? Gibt es für so nen Fieldorderwechsel keine gute Methode die man immer verwenden kann?

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • also:

    - wenn Du NUR denoisen willst, dann muss das selectevery haargenau zur quellefieldorder passen. sonst ist die BIldquali im eimer

    - wenn aber ein resizer hinzukommt, ist es wahlfrei, ob Du 4,1,2 oder 4,0,3 nimmst.

    - die immer funktionierende methode zum drehen der fieldorder ist: doubleweave().selectodd() sie bringt zwar einen 1/50 sec audioversatz ein, der stoert aber nicht weiter.

    auch ist es egal, ob dw().selodd() vor oder nach der prozedur aufgerufen wird.

  • Hallo Forum,

    hallo scharfis brain

    habe jetzt also wieder einige Zeit getestet, trotz herrlichem Wetter.

    Szene also deinterlaced mit TomsMoComp und dann dem Deshaker in VDub als prog. Video untergejublet. Hat funktioniert.

    Jetzt zum reinterlacen.

    Wenn ich jetzt Deinen Vorschlag

    Zitat

    # dies ist das reinterlacing:
    separatefields().selectevery(4,0,3).weave() #fuer TTF 4,1,2 nutzen

    zum Reinterlacen ins Skript schreibe, erhalte ich nur die Hälfte der Avi zurück.

    Schreibe ich

    Zitat

    separatefields().weave()

    dann erhalte ich die komplette Szene.

    Ist das so ok ?

    Gruß

    Herbie

    Gruß
    Herbie

  • Zitat von scharfis_brain

    also:

    - wenn Du NUR denoisen willst, dann muss das selectevery haargenau zur quellefieldorder passen. sonst ist die BIldquali im eimer

    - wenn aber ein resizer hinzukommt, ist es wahlfrei, ob Du 4,1,2 oder 4,0,3 nimmst.

    - die immer funktionierende methode zum drehen der fieldorder ist: doubleweave().selectodd() sie bringt zwar einen 1/50 sec audioversatz ein, der stoert aber nicht weiter.

    auch ist es egal, ob dw().selodd() vor oder nach der prozedur aufgerufen wird.

    Okay, hab mal folgendes getestet (da ich über keinen BFF Clip verfüge, habe ich versucht von TFF auf BFF zu wechseln)


    A)

    Code
    MPEG2source("C:\DGIndex.d2v",iPP=true)AssumeTFF()tmcbob()Crop(20,8,684,464)BicubicResize(624,464,0,0.5)separatefields()selectevery(4,1,2)weave()DoubleWeave()SelectOdd()


    Funktioniert


    B)

    Code
    MPEG2source("C:\DGIndex.d2v",iPP=true)AssumeTFF()tmcbob()Crop(20,8,684,464)BicubicResize(624,464,0,0.5)separatefields()selectevery(4,0,3)weave()


    Funktioniert, ist aber unscharf


    C)

    Code
    MPEG2source("C:\DGIndex.d2v",iPP=true)AssumeTFF()tmcbob()Crop(20,8,684,464)BicubicResize(624,464,0,0.5)separatefields()selectevery(4,1,2)DoubleWeave()SelectOdd()


    Identisch zu A


    D)

    Code
    MPEG2source("C:\DGIndex.d2v",iPP=true).DoubleWeave().SelectOdd()AssumeBFF()tmcbob()Crop(20,8,684,464)BicubicResize(624,464,0,0.5)separatefields()selectevery(4,0,3)weave()


    Gibt eigenartige Farbverschiebungen


    Also, benutze ich für BFF->TFF analog "separatefields().selectevery(4,0,3).doubleweave().selectodd()".
    ->
    tmcbob.avs

    Puh…hab ich irgendwas vergessen,oder falsch gemacht?
    Auf jeden fall schon mal ein fettes Danke für die ganzen Infos @ scharfis_brain

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • aehm, sagmal, wenn Du ausschlieszlich in der horizontalen resizen willst (und das machst Du ja). dann brauchst Du weder die fields zu separieren, noch irgendwelche deinterlacereien betreiben.

    es reicht absolut aus, einfach den resizer zu benutzen.
    (das geht aber wirklich nur, solange Du nicht in der vertikalen resizest)

  • Nur in diesem speziellen Fall - aber ich habe hier noch ein paar Konzert DVDs rumfliegen, welche ich in den nächsten Tagen zu XviD mit original AC-3 Spur weiterverarbeiten will. Dort werde ich ganz sicher beidseitig umskalieren.
    Will mich dann aber nicht wieder völlig neu reindenken und hier deshalb schon im Vorfeld alle für mich relevanten Fälle durchgekaut haben.
    Also, stimmt oben alles? :)

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Zusammenfassung BFF->TFF:

    • Wenn nach tmcbob() Filter angewendet werden, welche die Bilddimensionen gar nicht, oder nur in der Breite (x) verändern, wird das Reinterlacing samt Fieldorderwechsel mit: SeparateFields().SelectEvery(4,0,3).DoubleWeave().SelectOdd() durchgeführt.
    • Ansonsten (resizen in der Höhe, y) mit SeparateFields().SelectEvery(4,1,2).Weave().
    • Letzteres hat den Vorteil, daß _kein_ Audioversatz von 1/50 Sekunde entsteht (was aber eh immer unmerklich wäre)


    Jetzt hammers aber, oder :)?

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • Hallo Forum
    hallo scharfis brain


    1. Test

    wollte vor der Deshakeranwendung in Vdub die Avi mit TomsMoComb deinterlacen um ein besseres Deshaker- Ergebnis zu erhalten.

    Daher schrieb ich dieses Skript:

    Avisource ("D:\Avi Dateien\Film.avi")
    # ConvertToYUY2() #
    TomsMoComp()

    Anwendung des Deshakers von VdubMod (als Progressive Video)


    Avisource ("D:\Avi Dateien\Deshakte Film.avi")
    # ConvertToYUY2() #
    SeparateFields().Weave()

    Ergebnis: gut

    Selectevery(4,0,3) mußte ich weglassen, erhielt nur die halbe Avi zurück.

    Wäre das so in Ordnung ?

    2. Test

    Anwendung des DeInterlacers DeComb

    Avisource ("D:\Avi Dateien\Film.avi")
    # ConvertToYUY2() #
    Telecide(order=1,guide=2)

    Ergebnis: noch besser (Szene war beruhigt ohne Deshakeranwendung und mußte nicht reinterlaced werden).

    Bin zwar mit den Ergebnissen zufrieden, jedoch verstehe ich das alles nicht so recht, besonders der 2. Test hat mich sehr verwundert.

    Was meinen die Fachleute dazu ?

    Gruß Herbie

    Gruß
    Herbie

Jetzt mitmachen!

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