Senkrechte Striche mit AviSynth entfernen - wie?

  • Hallo,

    bei einem Analog-Capture treten vereinzelt senkrechte Striche auf, die m.E. eindeutig auf schlechtes Material zurückzuführen sind (s. Anhang). Kann man diese mit AviSynth entfernen und wenn ja wie.

    Bin für Vorschläge dankbar.

    Dateien

    Quapla'
    Gothmog

    Gegen jeden, der es unternimmt, diese Ordnung zu beseitigen, haben alle Deutschen das Recht zum Widerstand, wenn andere Abhilfe nicht möglich ist. (Art. 20(4) GG)[SIZE=-1]
    [/SIZE]

  • Hm, scheint nicht zu funktionieren. Ich habe mal ein (fast) unbearbeitetes Sample hochgeladen. Außer "level" (und ein wenig "tweak"), "crop" und "addborders" ist hier noch nichts gemacht.

    Im Script habe ich dann weiter die üblichen Verdächtigen benutzt: MCNR_simple2; BlindDeHalo3 und LimitedSharpenFaster (mit Soothe)

    Die Streifen/Kratzer tauchen übrigens nur vereinzelt im Film auf.

    Quapla'
    Gothmog

    Gegen jeden, der es unternimmt, diese Ordnung zu beseitigen, haben alle Deutschen das Recht zum Widerstand, wenn andere Abhilfe nicht möglich ist. (Art. 20(4) GG)[SIZE=-1]
    [/SIZE]

  • Was heißt hier "fast" unbearbeitet? Schon allein die Re-Komprimierung mit nem anderen Codec kann die Artefakte so weit verfälschen (nämlich: die Hochfrequenz der "Striche" erzeugt ein niederfrequentes "Echo" in der DCT), dass ein eigentlich "einfach" zu lösendes Problem beinahe unlösbar wird, oder erscheint. (Genau diesen Fall hatte ich erst unlängst bei einem Problem mit VHS-Dropouts).

    Originale Source, oder bleiben lassen. :)

    Selber mal testen: Gehen diese Artefakte mit "Clense()" bereits weg? Mal ungeachtet anderer Artefakte, die durch Clense() entstehen ... wenn die Charakteristik der Strich-Artefakte so ist, dass sie von Clense() entfernt werden können, dann lässt sich vrmtl. relativ einfach etwas brauchbares basteln.

    (Falls unklar: Clense() ist in Repair.dll aus dem RemoveGrain Paket enthalten.)

  • Harrr ... gerade erst gesehen, dass es sich ja um ein analog-Capture handelt, wollte dann also doch zum Download schreiten, und ...

    "Datei vom Uploader gelöscht".

    Tja, nun ...

  • Was? Vom Uploader gelöscht? Oh Mann, was habe ich denn da verbockt. Egal, dann werde ich das nochmal probieren.
    http://rapidshare.com/files/40491780/sample.avi.html

    So, jetzt müsste es gehen.
    Sample entspricht nicht dem Screenshot, da ich kurz nach letzterem die Werbung rausgeschnitten habe und daher "Artefakte" in Form von aufblendenden bunten Strichen zu sehen gewesen wäre.

    Zitat von Didée

    die Hochfrequenz der "Striche" erzeugt ein niederfrequentes "Echo" in der DCT


    Ich verstehe zwar kein Wort, aber ich werde mir das mit der Original-Source merken. :)
    Heisst das: Den Ausschnitt festlegen und in VirtualDubMod in "Full Processing Mode" abspeichern?

    Clense() hatte übrigens keine Wirkung.

    Quapla'
    Gothmog

    Gegen jeden, der es unternimmt, diese Ordnung zu beseitigen, haben alle Deutschen das Recht zum Widerstand, wenn andere Abhilfe nicht möglich ist. (Art. 20(4) GG)[SIZE=-1]
    [/SIZE]

  • Ja, nee, ist ja schon alles OK so, so wie's ist. Ich bin ungerechtfertigterweise auf dem Holzpfad gewandelt, das Sample wäre womöglich mit einem verlustbehaftete Codec komprimiert worden. Schnellschuss meinerseits, und es war 'ne 'Fahrkarte'. Sorry. :)

    So. Zum Problem: das ist ein Problem. Die Linien sind ziemlich stabil auf der Zeitachse (Temporalfilter sind damit aus dem Rennen), sind von Rauschen überlagert, und haben ihre eigenen Halos von irgend'ner Schärfung, irgendwo in der langen Kette zwischen damals und heute...
    Sprich: für jeden dummen Automaten sind diese Dinger kaum von echtem Detail zu unterscheiden.

    Habe mir mal überlegt, wie ich das angehen würde ...

    ... dann hab ich mir [zum ersten] mal die Doku zu Descratch angesehen ...

    ... und Descratch macht zu 99% das, was ich auch machen würde. Wenn also zwei Leute den gleichen Schlachtplan aushecken, kann's nicht völlig verkehrt sein.

    Gothmog, da musst Du fleissig mit Descratch's Parametern spielen ... der Filter "muss" das können.

  • Gut, dann werde ich mal rumfummeln, bis das klappt. Danke.

    Wo sollte ich Descratch im Script einfügen (s. Ausschnitt aus Script)? Vor MCNR, ganz am Ende oder spielt das keine Rolle?

    Quapla'
    Gothmog

    Gegen jeden, der es unternimmt, diese Ordnung zu beseitigen, haben alle Deutschen das Recht zum Widerstand, wenn andere Abhilfe nicht möglich ist. (Art. 20(4) GG)[SIZE=-1]
    [/SIZE]

  • Also entweder bin ich unfähig oder Descratch packt das nicht, vermutlich ist ersteres der Fall. Ich fummele seit Stunden an den Parametern von Descratch rum und es tritt keine sichtbare Verbesserung ein. Dafür kann ich bei bestimmten Einstellungen ein paar Äste kurzfristig verschwinden lassen, doch das soll es ja nicht sein.:)

    Allerdings muss ich zugeben, dass ich die meisten Parameter nicht wirklich verstehe. :ichdoof:

    Ich werde mich heute abend noch einmal ransetzen und wenn es nicht klappt, dann bleiben die Kratzer eben.

    Quapla'
    Gothmog

    Gegen jeden, der es unternimmt, diese Ordnung zu beseitigen, haben alle Deutschen das Recht zum Widerstand, wenn andere Abhilfe nicht möglich ist. (Art. 20(4) GG)[SIZE=-1]
    [/SIZE]

  • Herrjemineh, ist das eine Schschschschsch.....wierige Sache.

    Descratch nimmt die Kratzer schon weg (mindif=1,minlen=20,asym=100[?]), aber das reißt alles andere auch mit. Ist hier unbrauchbar.

    Das beste was ich jetzt so auf die schnelle hingekriegt habe ist:

    Die sich spontan anbietende Idee mit dem vertikalen Geblurre hab ich komplett weggelassen: ist nicht sicher genug. Hab nen anderen Weg eingeschlagen: Alles was ~vielleicht~ ein Scratch sein könnte, wird nur dort entfernt, wo es am meisten ins Auge fällt, nämlich in den detailarmen Bereichen. Bereiche mit Detail werden ganz einfach in Ruhe gelassen.

    Kannste mal probieren, vielleicht ist's ja akzeptabel, wenn es NUR auf die betroffenen Abschnitte angewendet wird. Richtig "Gut" isses aber wirklich nicht ... keine Geniestreiche heute, sorry. :)

  • Danke für die Mühe!
    Aber: Wie krieg ich diese Funktion jetzt eingebunden? Brauche ich da noch einige spezielle Plug-Ins oder andere Funktionen?
    Sorry, aber alles, was über meine Standardscript hinausgeht ist für mich ein Buch mit 7 Siegeln.

    Fehlermeldung: There's no function named vinverse.

    Quapla'
    Gothmog

    Gegen jeden, der es unternimmt, diese Ordnung zu beseitigen, haben alle Deutschen das Recht zum Widerstand, wenn andere Abhilfe nicht möglich ist. (Art. 20(4) GG)[SIZE=-1]
    [/SIZE]

  • Yo danke, hab sie eben selbst gefunden.:)

    Merke: Erst suchen, dann fragen! :)

    @ Didèe
    Woohoo, das sieht doch schon einmal gut aus. Muss ich jetzt noch etwas rumtüfteln, wie ich das "nur auf betroffene Abschnitte anwenden" im Script formuliere ... :rolleyes:
    Mal die Anleitung von AviSynth duchstöbern ...

    Quapla'
    Gothmog

    Gegen jeden, der es unternimmt, diese Ordnung zu beseitigen, haben alle Deutschen das Recht zum Widerstand, wenn andere Abhilfe nicht möglich ist. (Art. 20(4) GG)[SIZE=-1]
    [/SIZE]

  • Mit Trim ist mir das schon klar und wie ich das mit einem einzelnen Befhel machen würde auch, aber wie füge ich die lange Didéeische Funktion zwischen die einzelnen Trims ein?

    Quapla'
    Gothmog

    Gegen jeden, der es unternimmt, diese Ordnung zu beseitigen, haben alle Deutschen das Recht zum Widerstand, wenn andere Abhilfe nicht möglich ist. (Art. 20(4) GG)[SIZE=-1]
    [/SIZE]

  • Man ersetze die Zeile

    Code
    o = last

    mit

    Code
    function Tralala(clip o) {

    und setze ganz am Ende, als allerletztes Zeichen, noch ein

    Code
    }

    ... und schwupps, fertig ist die Funktion. MAGIE. ;)

    Der Aufruf im Script erfolgt dann einfach mit "source.Tralala()", so wie bei anderen Filtern/Funktionen auch.

  • * leise und weinerlich stimme aus dem hintergrund *

    Der Aufruf im Script erfolgt dann einfach mit "source.Tralala()", so wie bei anderen Filtern/Funktionen auch.


    Ab...aber dann kommt eine Meldung "I don't know what source means".
    *schluchz*

    Aha, ohne "source" gehts. *kratz*

    EDIT: Ich krieg ne Krise!:mad:
    Mein Script schaut jetzt so aus:

    Doch die von mir kratzer() genannte Funktion tut jetzt gar nichts mehr. Wie muss diese Zeile

    Zitat

    trim(44603,45100) ++ trim(47112,47951) ++ trim(48357,63482) ++ trim(90460,93277)
    \ ++ trim(98416,101957) ++ trim(104325,105110) ++
    \ trim(109752,120385).kratzer()

    denn jetzt aussehen, dass die Funktion auf die genannten Bereiche angewendet wird, der Rest des Films aber auch bearbeitet wird?

    Und ich dachte, die Syntax wäre mir klar. Typischer Fall von haste gedacht.

    Quapla'
    Gothmog

    Gegen jeden, der es unternimmt, diese Ordnung zu beseitigen, haben alle Deutschen das Recht zum Widerstand, wenn andere Abhilfe nicht möglich ist. (Art. 20(4) GG)[SIZE=-1]
    [/SIZE]

  • Beachte, dass die Zeilen, die mit Backslash beginnen, um einen Zeilenumbruch zu vertuschen, den Backslash auch wirklich ganz links am Anfang haben.

    Trim(a,b) ++ Trim(b+1,c).Kratzer() ++ Trim(c+1,d) ++ Trim(d+1,e).Kratzer ++ ...

Jetzt mitmachen!

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