Verbesserungsvorschläge zur Linienentfernung

  • Hallo!

    Ich habe ein gecapturetes Vhs vorliegen, welches ich mit folgendem Script bearbeite:

    Dabei entstehen folgende Bilder (links das Original interlacete AVI, rechts das Bild nach Behandlung mit dem Script). Den Chromashift habe ich halbwegs in den Griff bekommen (am Wappen auf dem Ärmel war es ganz extrem zu erkennen). Jetzt wüßte ich, ob ich gegen die erkennbaren Linien (mal auf das Bild auf der Plane achten) die sich leicht zitternd bemerkbar machen noch Möglichkeiten zur Entfernung habe, oder ob generell noch Verbesserungen am Script machbar sind?

    http://home.arcor.de/zygi/Test.jpg

    Mit freundlichen Grüßen,

    Vagabond

  • Sind diese Linien in all deinen Captures vorhanden? Wenn ja, dann hast du bestimmt eine Karte mit BT878a Chipsatz am Start, denn genau diese Probleme hatte ich auch als ich mal eine 878a getestet habe. Im Doom9.org hat mir VCDhelp dazu einiges geschrieben nachdem ich das gleiche Problem dort geposted hatte. Man sagte mir, das läge an dem schlechteren Anti-Alaising und Filtern der bt878a - und es gäbe so Stories bzgl. BT Karten in Verbindung mit bestimmten Mobos und auch PCI Steckplätzen.

  • VHS-capturing und Deinterlacing sind zwar nicht so ganz meine Domäne, aber trotzdem:

    Zum Deinterlacing selber sag' ich mal besser nix, da lass ich den Spezi's den Vortritt. Selber bin ich kein allzu großer Freund von KernelDeint-basierten Deinterlacern ... aber das ist reine Geschmackssache: viele Schwören darauf.

    Der Farbversatz ist wohl deutlich besser als vorher, aber so >richtig< gut isses noch nicht. Schwierig aus der Ferne zu beurteilen ... müsstest mal checken, ob der Versatz für U und V eventuell unterschiedlich ist. Die interlacte-Farbraumkonvertierung könnte auch noch mitspielen. Womöglich könnte man auch mit heftigem Chroma-Warping noch eine Verbesserung erreichen (aWarpSharp mit relativ große Tiefe und "cm=1" auf die *mächtig* geschärfte Quelle anwenden, und von diesem Ergebnis dann die Chroma-Ebenen mit dem Original-Luma kombinieren: Fingerübungen ;) )

    Wie auch immer: *Sehr* ungünstig ist der ColorYUV-Befehl *vor* LimitedSharpen. Warum? Probier' mal folgendes:

    PC = last
    TV = PC.ColorYUV(levels="PC->TV")
    interleave(PC,TV).histogram(mode="levels")

    und springe dann zwischen den Frames hin und her. Man sieht: Durch die Range-Komprimierung entstehen kleine "Spitzen" im Histogramm (das muss leider so sein (ausser man würde einen komplizierten Dither-Algorithmus einsetzen (*Hallo Entwickler!*))). Nun, diese "Spitzen" sind künstlich erzeugtes "Detail"... und anschließend kommt LimitedSharpen und macht seinen Job - es schärft ...

    Da ich eh' das Gefühl habe, dass Chroma und auch Luma noch ein wenig "beruhigt" werden könnten, würde ich mal sagen:


    Das sollte dann auch noch bessere Ränder geben: erst schärfen, dann Ränder hinzufügen, und nicht andersrum - das gleiche gilt für die PC->TV Anpassung, sonst kriegste nämlich Ränder mit Luma=~30 statt 16 ...

  • Also ich sehe, dass bei dir das Chroma "übersuppt", demnach hast du durch deinen Chroma Versatz das Problem "verlagert". Das Wappen auf seinem von mir aus gesehen rechten Oberarm hat an der linken roten Kante nun eine Verbesserung erfahren. Aber wenn du nun genau oben auf seine rechte Schulter siehst, dann ist dort das Gelb noch weiter nach rechts gerückt. Was allerdings unlogisch ist, da UV ja nicht ein reine rot/gelb Trennung ist. Demnach müsstest du bei Chromashiftigs immer diverse Bereiche des Filmes durchkontrollieren, damit nicht nachher was an anderen Stellen -wo sich das Shifting mehr bemerkbar macht- dies ins andere Übel abdriftet.

    Ich habe zuhause eine kleine Routine von MF (@ Didée: Weisst du was er jetzt eigentlich macht nach dem Dilemma im Doom9? ), diese behandelt U und V separat via Befehlen aus Masktools.dll. Diese nehme ich grundsätzlich bei all meinen TV/VHS Spielfilm-captures da das Chroma bei denen generell immer Murx ist und das liegt nicht an der Karte o.ä. sondern der Sender schmeisst da olles Zeugs durch die Leitung ;) Ich frage mich manchmal woher die ihre Footages her bekommen, welche die da senden, denn in den Werbeblöcken ists astrein. *lol

  • Hallo!

    Vielen Dank für die schnelle Hilfe! Tja, das mit der Capturekarte ist nicht ganz korrekt, es ist eine mit einem 879er Chipsatz. Zu dem Chromaproblem: Auf dem Monitor und mit diesen Screeshots ist es ganz schwer zu beurteilen, wie sich die Chromafiltereinstellungen genau auswirken. Auch ist der Chroma nicht einheitlich: Ich habe den Schnipsel (ohne Chromakorrektur) mal auf DVD gebrannt und im Player angeschaut (auf dem Monitor fällt das gar nicht mal so auf), da verläuft die Farbe (rot und gelb) rundherum in einm Dicken Kranz um das Wappen herum in die Jacke, während ich beim Mikrofonkabel einen Versatz des Oranges nach links habe. Ich habe gestern den ganzen Abend rumprobiert, aber "die Lösung" habe ich noch nicht gefunden.
    @ Incredible: Was für eine Routine meinst du? Bzw. wo kann man sich die mal anschauen?

    Werd jetzt erstmal Didees Verbesserungen austesten, mal schauen, was dabei herumkommt.

    Mit freundlichen Grüßen,

    Vagabond

  • Da isser ja wieder, der Meister des Zeilensprungs! Willkommen in der Vorweihnachtszeit! ;)

    Jo, die Routinchen von mf würde ich auch gerne mal sehen :) - Einerseits hat er's als Animee-Fan ja oftmals ganz besonders mit den Farben ... andererseits baut er auch schon mal so Sachen wie "SharpResize", das mit aktivierter Chroma-Option die Farben ganz schön unschön verbiegt ...
    Aber kochen tut er auch nur mit Wasser. Und (so ziemlich) die einzige Möglichkeit, auslaufende Farben zu reparieren, ist, sie an den Verläufen der Luma-Ebene auszurichten. Und das macht der kleine aWarpSharp-Trick, der da oben auskommentiert im Script steht. Man muss da natürlich mit all' den verschiedenen Warp-Parametern rumspielen, und u.U. auch mit dem Vorschärfen der Luma-Ebene ... aber im Prinzip funzt das ziemlich gut. (Da gibt's auch ein Japanisches Plugin ... DeBlot, glaub' ich ... aber dem Helpfile ist selbst nach Übersetzung wenig Hilfreiches zu entnehmen ...)

    BTW, mf (<-- in Kleinbuchstaben, so korrekt wollen wir schon sein) betreibt inzwischen sein eigenes kleines Forum, und wir diskutieren da manchmal ein wenig 'rum ... "where a strange blend of a/v is brewed" ;)


    Aber nochmal zu der Linien-Bildung:

    Noch ein Problem ist (natürlich), dass bei den meisten Deinterlacing-Methoden ein wenig "residual combing", also Rest-Interlacing, zurückbleibt. Üblicherweise setzt man ja die typischen Combing-Thresholds irgendwo zwischen "3" und "11" an, so in diesem Bereich ... Für einfaches Deinterlacing ist das ja OK, weil das zurückbleibende Combing sehr schwach ist, so dass es normalerweise nicht auffällt. Dafür bleibt im Gegensatz mehr Detail erhalten, usw.
    Aaaaber ... wenn man nach dem Deinterlacen wieder anfängt zu Schärfen, dann ist Rest-Combing natürlich sehr hinderlich, weil es wieder verstärkt wird...

    Optionen:

    1. Thresholds niedriger ansetzen
    2. *Vor* dem Deinterlacen feld-basiert schärfen (Separate.sharp.weave)
    3. Gar nicht Schärfen
    4. Rat bei Scharfi einholen
    5. LimitedSharpen mit VHS-Optionen und dem unglaublichen "Smart"-Parameter abwarten (es wird, es wird ... /*hände-reib'*/)

  • 4) den gibts garantiert. aber erst nach nem Sample. (die Briefmarken*, aehm Clipsammlung muss doch wachsen!)
    prinzipiell wuerde sich Fizicks plugin Equlines.dll hier anbieten.
    Vorzugsweise mehrfach aufgerufen.
    auf jede 8. Zeile (also 2x separatefields. equlines. 2x weave)
    dann auf jede 4. Zeile (also sepfield equlines weave)
    und dann auf jede 2. Zeile (equfields)

    ist aber nur ne mutmaszung. mehr nach dazu dem sample.

    5) extremgespanntbin! ich habe limitedsharpen bisher einmal fuer eine VHS mit geringem ssx und sehr hohem ssy verwendet. auch fuers chroma, um die Chroma-Flanken aufzusteilen. Sah sehr sehr gut aus. ich war total aus dem Haeusschen!

  • <OT>

    Zitat von scharfis_brain

    auch fuers chroma

    Also Chroma-processing auch noch einbauen? Menno ... na mal sehen, is' ja eh' bald Bescherung ;)

    </OT>

  • @Sharfis_brain:

    Ich habe die letzten 90 Minuten mein Modem zum Glühen gebracht (56k-Modems geben halt nicht mehr her) um dir 100 (in Worten einhundert) unbearbeiteter Frames zur Verfügung zu stellen :D . Ich hoffe dir damit helfen und deine Sammlung vergrößern zu können.

    Testvideo

    Didée

    Ich hab dein Script mal in allen Varianten durchgetestet, kann aber bei mir am Monitor keinen Unterschied zwischen den Varianten erkennen (vll. auf DVD, aber ich hab erst Freitag wieder die Möglichkeit am Fernseher zu testen). Dabei sind noch zwei Fehler dringewesen:
    der erste ist meiner: das selecteven() ist überflüssig (führt bei CCE zu Fehlermeldung über unpassende zu hohe Fps)
    der zweite ist , dass der aWarpSharp nur im YV12-Bereich funktioniert, also ConvertToYV12 und ConvertToYUY2 noch ergänzt werden müssen.

    Naja, wenn man so ein Script abarbeiten läßt, wird man zwangsweise zu einem ruhigen Menschen (mehr als 0.18 war im CCE nicht drin und das bei einem AMD 1700+ @ 1866MHz mit 1GB RAM). Das zieht sich dann bei 4 Stunden Quellmaterial :zz: (Egal, wie heißt das noch: Wer schön sein will muß leiden? ;) )

    Mit freundlichen Grüßen,

    Vagabond

  • @ Vagabond

    Dies hier sind 2 Funktionen basierend auf einen Tip von mf um V und U getrennt zu bearbeiten. Es bedeutet NICHT das dies der Trick für deine Source ist, es ist lediglich bei sehr vielen meiner Captures mit drin, da wie gesagt z.B. bei mir für meinen Geschmack bei vielen Übertragungen das rot überproportional zu den anderen Farben zu satt ist.

    Code
    function vmask (clip c, int low, int high ) {
     vmask = c.VToY().Levels(low, 1.0, high, 0, 255).LanczosResize(c.width, c.height)
     grey = c.Greyscale()
     Overlay(c, grey, mask=vmask)
     }
     
     function umask (clip c, int low, int high ) {
     umask = c.UToY().Levels(low, 1.0, high, 0, 255).LanczosResize(c.width, c.height)
     grey = c.Greyscale()
     Overlay(c, grey, mask=umask)
  • Habe gestern ein wenig mit dem Sample rumgespielt. (Leider nicht viel Zeit dafür gehabt.)

    Das folgende ist nix Definitives, nur so "Sachen-ausprobieren". Das Deinterlacing ist simple und geht wahrscheinlich viel besser. Das Denoising ist ebenfalls sehr einfach, und sollte mit etwas besserem ersetzt werden - allerdings ist ziemlich >starkes< Denoising >nötig<, weil das nämlich großteils mitverantwortlich für die "Linienbildung" ist.
    Die Farben sind m.E. deutlich besser, größtenteils. Schaut man sich die originalen Chroma-Ebenen an, sieht man, dass sowas wie "Farbseperation" gar nicht mehr vorhanden ist - das sind alles nur noch "Farb-Wolken" ...
    Der Schlag hat mich beinahe getroffen, als ich den "Wobble"-Effekt gesehen habe. Der VCR hat ordentliche Timing-Probleme ... dagegen hab' ich auch etwas versucht. Ist 'ne Holzhammer-Methode - arbeitet erstaunlich gut bei >diesem< Sample mit >wenig< Bewegung. Für Clips mit mehr Bewegung müsste da wahrscheinlich noch heftig gefeilt werden.
    Und am Ende ist "nur" die Standard-Version von LimitedSharpen 'drübergelaufen ... für die "große" müssen erst noch die vielen, vielen Puzzle-Steinchen zusammengesetzt werden ...

    Vorher:
    [Blockierte Grafik: http://img84.exs.cx/img84/3131/vorherfurchtbar5ub.jpg]

    Nachher:
    [Blockierte Grafik: http://img84.exs.cx/img84/4778/nachherschlimm6py.jpg]


    Das Skript mag ich fast gar nicht posten ... schnell hin-gehackt, für ein paar Sachen das Rad zum 2ten Mal erfunden, usw. Deswegen ist's auch *lächerlich* langsam, so ca. 1 fps ...

    Aber was soll's. Hosen 'runter! - so sieht's aus, wenn ich auf die Schnelle was zusammentippe (bitte Brechtüten bereithalten) ;)

    Ich erklär' jetzt lieber nichts zu diesem Spaghetti-Code ... falls irgendwas von den produzierten Effekten gefallen sollte, frag(t) einfach - ich extrahier's dann ...

    EDIT: Warum wird das Script nach dem Posten von zusätzlichen Leerzeichen *zerstört*, die beim Bearbeiten der Post *nicht* da sind ???

    edit2: Ah, jetzt, ja ... (k)eine In-sel ... aber anhängen kann man's ja, falls den Kram tatsächlich jemand ausprobieren will.

  • Edit: [zu Eriman, unten]

    Ah, Danke. Da war ich noch nicht "drübergestolpert".

    Aber SOO viel künstlich umbrechen kann ich in meinen Scripten manchmal gar nicht ... da ist ja mitunter schon mal ein einziger String in yv12LUT/yv12LUTxy länger, als das die Software hier zulässt! Was soll das?

    Tja, dann bleib' ich zumindest mit meinen Scripten eben doch ans englische Forum gebunden :(

    edit: Anhänge? Anhänge! :) :)

  • Zitat von Didée


    EDIT: Warum wird das Script nach dem Posten von zusätzlichen Leerzeichen *zerstört*, die beim Bearbeiten der Post *nicht* da sind ???


    Das hat Ligh schon öfters erklärt.

  • Didée:

    :daumen: Sieht absolut super aus, was du aus dem Clip hervorgezaubert hast. Auf eine solche Qualität hab ich es bisher noch nie geschafft. Leider kann ich erst Sonntag mit deinem Script herumexperimentieren, vorher habe ich leider keine Zeit dazu. Zu dem VCR: zum einen ist auf dem Quellmaterial auch schon ein leicht streifiges Erscheinungsbild vorhanden, aber beim Überspielen auf den Rechner wirds noch verstärkt (hab nen Panasonic VCR und es alternativ auch schon mal mit dem Phillips von meinen Eltern probiert, aber der hatte ein noch schlechteres Ausgangssignal und meine Dropped Frames stiegen erheblich an; hab ja so noch etwa 600 in 4 Stunden Material gehabt, trotz wegschneidens des flimmernden Unterrandes).
    Einziges Problem wäre die Geschwindigkeit deines Scripts: Also bei 1 fps würde ein einziger Durchgang 100 Stunden oder etwas über 4 Tage ununterbrochenen berechnens benötigen. Das wird dann doch etwas übertrieben, daher werde ich eventuell dann mal schauen, ob sich einige Kompromisse eingehen lassen (hab schließlich noch 7 weitere solcher Filme hier zur digitalisierung liegen, alle 4 Stunden lang und ich wollte meinen Rechner eigentlich noch zu etwas anderem gebrauchen, als nur zum Umrechenen ;))

    Trotzdem vielen Dank Didée, und @Sharfis Brain: Ja, soll auf eine DVD.

    Mit freundlichen Grüßen,

    Vagabond

  • Hallo!


    Ich bin gerademal am austesten des Scriptes, aber habe da noch so meine Probleme: um es für CCE 2.66 genießbar zu machen muß ich unten noch ein doppeltes selectodd() anhängen um von 100fps auf 25 zu kommen (er meldet: kann mit 100/1 -Material nichts anfangen, bei einfachem selectodd() habe ich 50fps, die CCE auch verarbeiten kann, aber auch da meldet er: kann mit 100/2-Material nichts anfangen) und außerdem noch ein converttoYUY2, da der CCE nicht mit YV12 umgehen kann, zumindest meldet er mir das. Wenn ich ihm das Script dann verdaulich gemacht habe, kann ich mir zwar in der Vorschau das erste Standbild anschauen, aber beim Berechnen erhalte ich entweder streifigen Mist (der liegt dann allerdings innerhalb von 3 Sekunden vor) auf dem man nichts erkennen kann, oder die Berechnung bleibt hängen. Woran kann das ganze hapern?

    Mit freundlichen Grüßen,

    Vagabond

  • Sorry für Telegrammstil ... große Eile ...

    - "interleave(indouble,calm)" auskommentieren
    - selectodd() anhängen
    ==> 25 fps

    - SetMemoryMax() am Anfang verwenden -- 50%~~66% vom RAM als Argument

    Mögliche Beschleunigung(en):

    - von den beiden Zeilen "warp=" die 2. Zeile auskommentieren (verschlechtert aber die Farben-Reparatur)

    - in der 3er-Serie "calm= // calm= // calm=" die ersten beiden Zeilen auskommentieren (die sind für den "Anti-Wobbel" zuständig)

    - zuallererst mal probieren, ein Stückchen als Hufyuv oder so zu speichern: der CCE wird oftmals SEHR KOMISCH, wenn er mit komplexen Scripts direkt gefüttert wird!

  • Ich habe jetzt auch mal ein wenig gebastelt,
    aber ich werde den Teufel tun, das Video so zu vergewaltigen, wie es Didée macht (nicht boese sein...)

    mir war das ganze masking einfach zu viel. es scheint einfach die details zu stark zu plaetten...

    hier mein Weg:

    [Blockierte Grafik: http://home.arcor.de/scharfis_brain/samples/vagabond.jpg]

    http://home.arcor.de/scharfis_brain/samples/vagabond.avs

    http://home.arcor.de/scharfis_brain/samples/vagabond.m2v (3.4 MB)

    das interlacing, also 50 bewegungszustaende pro Sekunde, wird BEIBEHALTEN.

  • Ich bin nicht beleidigt, keine Angst.
    /*schmoll, schmoll ... ihrkriegtnochmaleinscriptvonmirVONWEGENhahaha selberschuldihrwerdetschonsehenPAH!*/ ;)

    Das viele Masking hab ich halt für den "Anti-Wobble" gebraucht ... und funktioniert ja im Prinzip recht gut, wenn's am Ende auf 25p 'rausläuft. (Allerdings ist, hier, der Wobble gleich viel weniger schlimm, wenn man *nicht* die modEDI-Variante vom TDeint zum deinterlacen nimmt *hust,hust*...)
    Und die Rahmen-Edgemask zum Korrigieren des aWarpSharp-Chroma-Fehlers an den Rändern, die war halt "von hinten durch die Brust ins Herz" ... wenn ihr wüsstet, was ich mir "vor lauter Eile" schon für Stiefel zusammen-gescriptet habe, huhuuuuh ... :)


    >> das ganze masking [...] scheint einfach die details zu stark zu plaetten

    Häh bitte??? Also, von den -zig-tausenden von Masken, die ich bisher gemacht habe, hat noch keine einzige auch nur ein einziges Pixel irgendwie verändert. (Das Lesen der Speisekarte macht nämlich nicht dick.)

    Was geplättet hat war der temporalsoften (der letzte von den dreien), den ich da ganz schnell zum entrauschen und stabilisieren genommen habe ... hab ja gesagt, dass der Part viel besser gemacht werden kann - daran hatte ich eben *gar nicht* gearbeitet.
    Aber Da Scharfi zumindest die Chroma-Reparatur per aWarpSharp beibehalten hat, scheine ich ja zumindest ETWAS richtig gemacht zu haben ;)


    Oh, und weil ich gerade sehe, dass Scharfi da DeGrainmedian+RemoveDirt verwendet hat:

    Hat eigentlich schon jemand gemerkt, dass Kassandro's "RemoveDust" (Clense+RemoveDirt+Repair Combo, Link) für einen "ohne ME"-Denoiser *wahnsinniges* Potenzial hat? Da fehlt nur noch Didée's Nachbrenner zum Einzähmen ... aber der Knabe vergewaltigt ja immer alles so hoffnungslos übertrieben, is' also nix ... :zunge:


    Und a propos "Vergewaltigen" (und weil LS in Scharfis Script immerhin vorgeschlagen wird):

    Vorgestern hat LimitedSharpenEX() [ex = extreme] folgende *bösen* Vergewaltigungen produziert:

    Bleistiftsweise (1) Das zu dem, (2) das zu dem, (3) das zu dem, und (4) das zu dem ...
    (Orig: encoded@712*424(original) / screenshot lanczos-resized. LS-EX: encoded@720*544 / screenshot lanczos-resized.)

    Gestern waren dann die paar Restartefakte auch noch verschwunden, und der Output noch etwas graziler ...

    Aber solche "Vergewaltigungen" sollte man ja keinesfalls und niemals-nicht machen, nein-nein... - das Beste wird sein, ich lösche diesen elenden Script-Kram wieder von meiner Platte ... :D

    Zitat

    Weihnachten?

Jetzt mitmachen!

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