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.
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.
vielleicht mal Descratch versuchen:
http://bag.hotmail.ru/descratch/descratch.dhtml
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.
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éedie 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.
Heisst das: Den Ausschnitt festlegen und in VirtualDubMod in "Full Processing Mode" abspeichern?
Originalsource heißt mit Direct Streaming abspeichern.
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?
ZitatAlles anzeigen...
ConvertToYV12(interlaced=false)
# MCNR_simple2(frames=2, thY=16, thC=10, thY2=-1, thC2=-1,
# \ blocksize=16, chroME=true, repairME=true, removdirt=true,
# \ LPrad=2.0, LPlosens=2, LPhisens=4)
# BlindDehalo3(rx=3.0, ry=3.0, strength=150,
# \ lodamp=0.0, hidamp=0.0, sharpness=0.0, tweaker=0.0,
# \ PPmode=-1, PPlimit=4, interlaced=false)
# dull = last
# sharp = dull.LimitedSharpenFaster(ss_x=1.5, ss_y=1.5, smode=3, strength=150, overshoot=1)
# Soothe(sharp, dull, 50 )
ConvertTOYUY2(interlaced=false)
...
ich würde zum Testen den Filter ganz nach Vorne packen und den Rest auskommentiert lassen,...
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.
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:
[size=8]o = last
ox = o.width()
oy=o.height()
o2 = o.vinverse().separatefields().vinverse(amnt=2).weave()
o22 = o2.gaussresize(m4(ox/3.*2.),oy,p=75)
mt_luts(o22,o22,mode="median",pixels="-2 0 -1 0 0 0 1 0 2 0",U=2,V=2)
\ .gaussresize(ox,oy,p=75)
vedge=mt_lutxy(mt_expand().mt_expand().mt_expand(mode="vertical").mt_expand(mode="vertical"),
\ mt_inpand().mt_inpand().mt_inpand(mode="vertical").mt_inpand(mode="vertical"),
\ "x y - abs 7 - 255 7 - 15 / *").greyscale
last.mt_merge(o,vedge,U=2,V=2)[/size]
Alles anzeigen
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.
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 ...
Mal die Anleitung von AviSynth duchstöbern ...
"nur auf betroffene Abschnitte anwenden"
..trim(..)..
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?
* 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:
[size=8]AviSource("G:/unendliche geschichte.avi",pixel_type="YUY2")
Import("D:/AviSynth Scripte/MCNR_simple2.avs")
Import("D:/AviSynth Scripte/LimitedSharpenFaster.avs")
Import("D:/AviSynth Scripte/BlindDeHalo3.avs")
Import("D:/AviSynth Scripte/RemoveDirt.avs")
Import("D:/AviSynth Scripte/Soothe.avs")
Import("D:/AviSynth Scripte/vinverse.avs")
Trim(141,18977) ++ Trim(30384,68276) ++ Trim(80652,119348) ++ Trim(130900,160994) ++ Trim(173158,189135)
AssumeTFF()
Crop(16,80,-16,-80)
Levels(5,1.1,245,0,255)
Tweak(Sat=1.2)
ConvertToYV12(interlaced=false)
trim(44603,45100) ++ trim(47112,47951) ++ trim(48357,63482) ++ trim(90460,93277)
\ ++ trim(98416,101957) ++ trim(104325,105110) ++
\ trim(109752,120385).kratzer()
MCNR_simple2(frames=2, thY=16, thC=10, thY2=-1, thC2=-1,
\ blocksize=16, chroME=true, repairME=true, removdirt=false,
\ LPrad=2.0, LPlosens=2, LPhisens=4)
BlindDehalo3(rx=3.0, ry=3.0, strength=150,
\ lodamp=0.0, hidamp=0.0, sharpness=0.0, tweaker=0.0,
\ PPmode=-1, PPlimit=4, interlaced=false)
dull = last
sharp = dull.LimitedSharpenFaster(ss_x=1.5, ss_y=1.5, smode=3, strength=150, overshoot=1)
Soothe(sharp, dull, 50 )
ConvertTOYUY2(interlaced=false)
AddBorders(16,80,16,80)
function kratzer(clip o)
{
ox = o.width()
oy = o.height()
o2 = o.vinverse().separatefields().vinverse(amnt=2).weave()
o22 = o2.gaussresize(m4(ox/3.*2.),oy,p=75)
mt_luts(o22,o22,mode="median",pixels="-2 0 -1 0 0 0 1 0 2 0",U=2,V=2).gaussresize(ox,oy,p=75)
vedge = mt_lutxy(mt_expand().mt_expand().mt_expand(mode="vertical").mt_expand(mode="vertical"),
\ mt_inpand().mt_inpand().mt_inpand(mode="vertical").mt_inpand(mode="vertical"),
\ "x y - abs 7 - 255 7 - 15 / *").greyscale
last.mt_merge(o,vedge,U=2,V=2)
}[/SIZE]
Alles anzeigen
Doch die von mir kratzer() genannte Funktion tut jetzt gar nichts mehr. Wie muss diese Zeile
Zitattrim(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.
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 ++ ...
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!