Ich habe kürzlich ein paar Entrausch-Versuche mit einem interlaced Video gemacht. Es gibt ja mehrere Möglichkeiten (Filter, Parameter etc.), wie ich ein Video entrauschen kann und wie eine Vorfilterung in AviSynth aussieht.
Ich kann das Video so, wie es ist, entrauschen (also interlaced), ich kann es nach einem SeparateFields() entrauschen oder ich kann es nach einem „Bobber“ wie z. B. Yadif(mode=1) entrauschen, um nur ein paar Möglichkeiten aufzuzählen. Dies hängt mit Sicherheit auch mit der verwendeten Entrauschmethode zusammen, also ob es sich um einen spatialen oder temporalen Filter handelt.
Ich habe jetzt nur einen Schnellversuch mit FrFun7 unternommen. In dem mir vorliegenden Video („Autoverfolgungsschwenk“) – welches ja eigentlich nicht entrauscht werden muss - konnte ich jedenfalls nicht immer eindeutig sagen, welche Methode die bessere sei. Es gab Stellen, wo mal die eine und mal die andere Methode Vorteile brachte. Die besten Resultate schien mir aber die Methode mit Yadif(mode = 1) zu bringen.
Das Script sah dabei in etwa wie folgt aus:
LoadPlugin("plugins\FrFun7\frfun7.dll")
LoadCPlugin("plugins\Yadif\yadif.dll")
AviSource("video.avi")
Yadif(mode = 1)
ConvertToYUY2()
PointResize(last.Width, last.Height * 2)
ConvertToYV12()
ff7(1.1, 6.0, 0.0)
ConvertToYUY2()
PointResize(last.Width, last.Height / 2)
AssumeBFF()
SeparateFields().SelectEvery(4, 0, 3).Weave()
function ff7(clip input, float Lambda, float T, float Tuv) {
T == 0 ? input : input.PointResize(input.Width, input.Height / 2).\
frfun7(
\ Lambda = Lambda,
\ T = T,
\ Tuv = 0.0
\ ).\
PointResize(input.Width, input.Height).MergeChroma(input, 1)
Tuv == 0 ? last : last.\
frfun7(
\ Lambda = Lambda,
\ T = 0.0,
\ Tuv = Tuv
\ )
}
Alles anzeigen
Wobei ich, um besser vergleichen zu können, gleich nach dem Laden des Videos ein ConvertToYV12(interlaced=true) angewendet habe (die Klimmzüge mit dem Umwandeln des YUY2-Farbraumes habe ich mir bei dem Test erspart), was mit dem Verlust von Chrominanzinformationen einhergeht (FrFun7 benötigt den YV12-Farbraum). Mit obigen Script verliert man aber keine Chrominanzinformationen.
Gibt es irgendwelche Kriterien, Empfehlungen, mit welcher Methode ein Entrauschfilter vorgefiltert werden soll? Die Board-Suche ergab eher widersprüchliche Aussagen. Vermutlich liegt’s aber auch daran, dass man generelle Empfehlungen nicht aussprechen kann.
Im Anhang habe ich mal ein paar Bildschirmausdrucke von einem Frame hinzugefügt. An den Dateinamen kann man erkennen, welche Methode verwendet wurde. Das erste Bild ist das Original, das zweite Bild stellt die Interlaced-Variante dar, das dritte Bild wurde mit SeparateFields() erstellt und das letzte Bild mit der Yadif-Methode.