Danke für den Exkurs.
Ich würde halt gerne hier und da auf GPU gestützte Filter zurückgreifen, damit die Scripte nicht ganz so langsam sind.
Cu Selur
Danke für den Exkurs.
Ich würde halt gerne hier und da auf GPU gestützte Filter zurückgreifen, damit die Scripte nicht ganz so langsam sind.
Cu Selur
Kannst ja trotzdem die GPU-Versionen verwenden, für die reine Berechnung der Medianfilterung. Das bisschen Lutxy sollte da, im Vergleich zum Aufwand der Berechnung des Medians, kaum ins Gewicht fallen.
Yup, bin gerade am Rumtesten.
Geht eigentlich ganz gut.
huhu, ich habe folgendes problem ich habe ein video indem zum teil cartoon und zum teil normale menschen rumlaufen. nu frag ich mich ob man das anime script so anwenden kann das z.b. von frame 0-10000 alle filter verwendet werden und von 10001-20000 dann keine filter oder nur gewisse filter die das bild nicht als cartoon wirken lassen. dann ab 20001 wieder im cartoon modus mit dem filter usw.
gibts eventuell nen befehl der alle plugins "killt" ? jemand ne idee ?
Du könntest mit dem trim befehl das File in xy viele teile aufteilen udn nur auf die Teile mit Anime das Animescript anwenden,...
hmm dann ist nur die frage wie ich die teile ohne das script einbaue, kannste vielleicht mal n beispiel schreiben ?
Hier mal ein kleines Beispiel:
#das ungekürzte orignal laden und etweilige Filter die auf das ganze Material angewedet werden darauf anwenden
a = mpeg2source("C:\test.d2v").TDeint(type=3).Tweak(Sat=1.2)
# jetzt den Clip aufteilen:
b = a.trim(0,100) #beinhaltet die ersten 100 Frames
c = a.trim(100,0) #beinhaltet die restlichen Frames
#globale Variablen setzen
# Werte für die Zielaufloesung & das Zuschneiden
Breite = 640 # mod 16 werte empfehlenswert aber nicht unbedingt
Hoehe = 480 # mod 16 werte empfehlenswert aber nicht unbedingt
Links = 10
Oben = 4
Rechts = 700 # - (minus) werte fuehren zum absturz!
Unten = 568 # - (minus) werte fuehren zum absturz!
#auf jeden Clip einzeln Filter anwengen
b.FastLineDarken(strength=75,thinning=0).LanczosResize(Breite,Hoehe,Links,Oben,Rechts,Unten)
c.BilinearResize(Breite,Hoehe,Links,Oben,Rechts,Unten)
#Zusammenfügen und wiedergeben der Teile
return a+b
Ist nur ein kleines Beispiel.
Cu Selur
hey thx scheint zu funktionieren
naja kleine korrektur es muss "return b+c" heißen da man ja sonst die source doppelt drin hat
werd dann mal ein wenig an den filtern rumtesten und mal sehn was bei rauskommt
Zitat von Selur# jetzt den Clip aufteilen:
b = a.trim(0,100) #beinhaltet die ersten 100 Frames
c = a.trim(100,0) #beinhaltet die restlichen Frames
Müsste es nicht eher so geschrieben werden?
b = a.trim(0,100) #beinhaltet die ersten 100 Frames
c = a.trim(10[B]1[/B],0) #beinhaltet die restlichen Frames
Sonst würde doch ein Frame zuviel bearbeitet werden, oder?
" Sonst würde doch ein Frame zuviel bearbeitet werden, oder?"
Trim(0,100) sollte die ersten 100 Frames ausgeben
Trim(100,0) sollte die ersten 100 Frames löschen
(notfalls einfach mal antesten, aber so hab ich die Syntax im Kopf )
"naja kleine korrektur es muss "return b+c" heißen da man ja sonst die source doppelt drin hat "
stimmt
Cu Selur
Aso, bei der Funktionsweise stimmts dann.
Trim( first_frame , last_frame )
oder
Trim( first_frame , -[nr_of_frames] )
also liefert "trim( 70, 80 )" einen clip zurück, der die Frames 70 bis 80 beinhaltet. "trim( 70, -10 )" liefert einen Clip zurück, der die Frames 70 bis 79 beinhaltet (10 Frames Länge, Start bei 70).
a.Trim( 0, 1000 ) + b.Trim( 1001, 2250 ) + a.Trim(2251,3333) + b.Trim( 3334, ... ) ...usw.
Übrigens: Wer mal wirklich brutalen Source für eigene Experimente sucht und die Möglichkeit dazu hat:
Dragonball GT (lost episodes 1-16) auf Cartoon Network Spanien (DVB-S, Astra 19.1). Das ist schlimmer als das schlimmste VHS-Tape, das ich besitze:
Interlaced, blended, Artefakte, Pumpen, Mosquitos, falsches AR - das volle Programm. Da könnte man glatt einen Wettbewerb draus machen.
Standbilder gut hinzubekommen, ist dabei nicht das Problem. Viel schwieriger ist es, die Bewegungen noch gut aussehen zu lassen.
manchen Schrott sollte man halt einfach nicht capturen
Das war so schrottig, das musste ich einfach capturen.
Lol :p
hmm, hab mal bischen rumprobiert, aber leider funktioniert das so nicht:
"c.FastLineDarken(strength=128,thinning=0)" bzw. wenn ich andere befehle wie z.b "c.Tweak(Sat=1.2)" eingebe.
versuch notfalls mal ein c = c.FastLineDarken(strength=128,thinning=0)
So, angespornt durch die schon erwähnte Dragonball GT-Folge, habe ich auch mal mein Glück versucht.
Aber eines gleich vorweg: Mit komplexeren Scripts fange ich gerade erst an, also nicht gleich meckern oder lachen, ja?
Allerdings hatte/habe ich ein Problem, das eine Lösung, wie sie mir vorschwebte, nicht ganz möglich machte: Ich kriege Repair.dll ums Verrecken nicht geladen, ganz egal, was ich auch tue - immer heißt es: Unable to load ... Und mit yv12lutxy... da kriege ich Kopfweh bei den Expressions.
Aber OK, zum Script ...
Der Source war wirklich Mist, also benötigte ich was "starkes". Median-Filter sind aber zu stark, Temporal-Filter verschmieren alles. Also habe ich versucht, das beste aus zwei Welten zu kombinieren und außerdem die Umrandungslinien, wie sie bei Trickfilmen üblich sind, zu stabilisieren. Das Ergebnis habe ich mal TemporalMedianMix() getauft:
function TemporalMedianMix(clip cli, "mr", "mt", "tr", "tt",float "mi", float "ti", "bicl") {
source=cli
mr= default(mr, 2) # MedianRadius
mt= default(mt, 3) # MedianThreshold
tr= default(tr, 2) # TemporalRadius
tt= default(tt, 32) # TemporalThreshold
mi= default(mi, 0.5) # MedianInfluence
ti= default(ti, 0.5) # TemporalInfluence
bicl=default(bicl, 128) # MaskClipping
median=source.medianblur(mr,mt,mt)
temporal=source.TemporalSoften(tr,tt,tt,40,2)
overlay(source,median,opacity=mi)
overlay(last,temporal,opacity=ti)
work=last
clean=temporal
blur(clean,1,0.8)
maske=last.dEdgeMask(0,255,0,255,"8 0 -8 16 0 -16 8 0 -8",divisor=4).binarize(bicl,upper=false).fity2uv()
maskedmerge(work,clean,maske,Y=3,U=3,V=3)
Convolution3d (preset="animeHQ")
}
Alles anzeigen
Den abschließenden Convolution3D kann man auch weglassen, ich habe ihn gebraucht. Ließe sich aber auch über einen zusätzlichen Parameter definieren, ob er angewendet werden soll oder nicht. An dem Kernel für die Maske muss ich noch arbeiten, auch am Divisor. Und die Parameter mi und ti haben nur einen geringen Einfluss, weniger als ich hoffte. Aber vielleicht greift ja einer der Profis die Idee auf und macht was vernünftiges draus.
Und wie gesagt: Das ist gedacht für wirklich üblen Source.
Moin, wollte nur mal schnell sagen das es so funktioniert wie selur es beschrieben hat. hier mal der Code, ist übrigens von der Simpsons Season 1 Disc 3 Kapitel 5
Für Ratschläge bezüglich der einstellungen wär ich dankbar, da ich im moment noch sehr am rumprobieren bin welcher befehl wofür ist
#Hier gibts die Plugins: http://www.avisynth.org/warpenterprises/
# PLUGINS natürlich durch eure pfade ersetzen # Diese Filterversionen habe ich benutzt
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\DeGrainMedian.dll") # DeGrainMedian 0.8 (http://bag.hotmail.ru/)
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\FFT3DFilter.dll") # FFT3DFilter 1.8.5 (http://bag.hotmail.ru/)
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\AWarpSharp.dll") # aWarpSharp Beta 1 (http://ziquash.chez-alice.fr/)
#LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\Deen.dll") # Deen Beta 2 (http://www.avisynth.org/warpenterprises/)
LoadPlugin("C:\PROGRA~1\GORDIA~1\DGMPGDec\DGDecode.dll") # DGMPGDec 1.2.1 oder 1.4.6 (http://www.neuron2.net/dgmpgdec/dgmpgdec.html)
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\Masktools.dll") # Masktools 1.5.8 (http://manao4.free.fr/)
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\mt_masktools.dll") # MaskTools 2.0 Alpha 27 (http://manao4.free.fr/)
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\Temporalcleaner.dll") # TemporalCleaner Beta 2 (http://www.avisynth.org/warpenterprises/)
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\RepairS.dll") # RemoveGrain 1.0 pre (http://home.arcor.de/kassandro/RemoveGrain/RemoveGrain.rar)
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\RemovegrainS.dll") # RemoveGrain 1.0 pre (http://home.arcor.de/kassandro/RemoveGrain/RemoveGrain.rar)
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\TDeint.dll") # TDeint 1.0 RC 2 (http://bengal.missouri.edu/~kes25c/)
#LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\TIvtc.dll") # TIvtc 1.0 RC 1 (http://bengal.missouri.edu/~kes25c/)
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\De.dll") # DeDot_YV12 v0.0.02 (http://nullinfo.s21.xrea.com/)
Import("LimitedSharpenFaster.avs")
Import("FastLineDarken.avs")
Import("BlindDeHalo3.avs")
Import("DeHalo_alpha.avs")
# Werte für die Zielaufloesung & das Zuschneiden
Links = 12
Oben = 2
Rechts = -4
Unten = -2
# SOURCE
a = mpeg2source("E:\Vb\s0103\VTS_05_1.d2v",idct=7).TDeint(type=3).Crop(Links,Oben,Rechts,Unten)
b = a.trim(0,676)
c = a.trim(677,1030)
d = a.trim(1031,1540)
e = a.trim(1541,2250)
f = a.trim(2251,2788)
g = a.trim(2789,3128)
h = a.trim(3129,3242)
i = a.trim(3243,3815)
j = a.trim(3816,4990)
k = a.trim(4991,5255)
l = a.trim(5256,6796)
m = a.trim(6797,7081)
### Farbkorrekturen ###
c = c.Tweak(1.2)
e = e.Tweak(1.2)
g = g.ColorYUV(gain_u=30,gain_v=30).Levels(0,0.7,255,0,255)
i = i.ColorYUV(gain_y=30,gain_u=40,gain_v=10).Levels(0,0.8,255,0,255)
k = k.Tweak(1.15)
m = m.ColorYUV(gain_u=40,gain_v=20)
### is gut gegen Kammartefakte (Dot crawl) ###
c = c.DeDot()
e = e.DeDot()
g = g.DeDot()
i = i.DeDot()
k = k.DeDot()
m = m.DeDot()
### Hot pixel entfernung ###
c = c.DeGrainMedian(limitY=5,limitUV=5,mode=3)
e = e.DeGrainMedian(limitY=5,limitUV=5,mode=3)
g = g.DeGrainMedian(limitY=5,limitUV=5,mode=3)
i = i.DeGrainMedian(limitY=5,limitUV=5,mode=3)
k = k.DeGrainMedian(limitY=5,limitUV=5,mode=3)
m = m.DeGrainMedian(limitY=5,limitUV=5,mode=3)
### hilft gegen rainbow's ###
#FFT3DFilter(Sigma=0,Sigma3=15,plane=3,wintype=1) # Achtung! sehr langsam (standardmäsig aus)
### Rauschentfernung ###
c = c.FFT3DFilter(Sigma=6,plane=4,wintype=1)
e = e.FFT3DFilter(Sigma=6,plane=4,wintype=1)
g = g.FFT3DFilter(Sigma=6,plane=4,wintype=1)
i = i.FFT3DFilter(Sigma=6,plane=4,wintype=1)
k = k.FFT3DFilter(Sigma=6,plane=4,wintype=1)
m = m.FFT3DFilter(Sigma=6,plane=4,wintype=1)
#FFT3DFilter(Sigma=6,plane=4,wintype=1)
#Temporalcleaner(3,6).Deen("a2d",3,5,7)
### DeHalo ###
c = c.DeHalo_alpha(2.5,2.5,0.5).BlindDehalo3(PPmode=-1,PPlimit=4)
e = e.DeHalo_alpha(2.5,2.5,0.5).BlindDehalo3(PPmode=-1,PPlimit=4)
g = g.DeHalo_alpha(2.5,2.5,0.5).BlindDehalo3(PPmode=-1,PPlimit=4)
i = i.DeHalo_alpha(2.5,2.5,0.5).BlindDehalo3(PPmode=-1,PPlimit=4)
k = k.DeHalo_alpha(1.0,1.0,0.5).BlindDehalo3(PPmode=-1,PPlimit=4)
m = m.DeHalo_alpha(1.5,1.5,0.5).BlindDehalo3(PPmode=-1,PPlimit=4)
### Sharpen ###
c = c.FastLineDarken(strength=256,thinning=0).aWarpSharp(depth=16,cm=1).LimitedSharpenFaster()
e = e.FastLineDarken(strength=256,thinning=0).aWarpSharp(depth=16,cm=1).LimitedSharpenFaster()
g = g.FastLineDarken(strength=128,thinning=0).aWarpSharp(depth=16,cm=1).LimitedSharpenFaster()
i = i.FastLineDarken(strength=128,thinning=0).aWarpSharp(depth=16,cm=1).LimitedSharpenFaster()
k = k.FastLineDarken(strength=128,thinning=0).aWarpSharp(depth=16,cm=1).LimitedSharpenFaster()
m = m.FastLineDarken(strength=128,thinning=0).aWarpSharp(depth=16,cm=1).LimitedSharpenFaster()
### Saubere Ränder ###
#LetterBox(2,2,2,2)
### RESIZE ###
#LanczosResize(Breite,Hoehe) # Scharfer Resizer für hohe bitrate
#BicubicResize(Breite,Hoehe,0,0.5) # Neutraler Resizer
#BilinearResize(Breite,Hoehe) # Weicher Resizer für niedrige bitrate
####Removegrain(1) # Bedarf keiner erklärung sollte man aktiviert lassen
return b+c+d+e+f+g+h+i+j+k+l+m
Alles anzeigen
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!