Welchen Algorithmus zur Größenänderung für Videos auswählen?

28814
Grumpy ol' Bear

Ich verwende VirtualDub zum Kodieren mit diesen Einstellungen . skalieren Algorithmen

Allerdings nehme ich mein Material in 1920x1080 auf und verkleinere es auf 1280x720. Nun die Frage: Welchen Algorithmus sollte ich wählen, wenn ich eine ausgewogene Qualität im Vergleich zur Dateigröße treffen möchte?

Ich habe mich immer für Lanczos entschieden, weil das vorkonfiguriert war. Diese Beschreibungen helfen mir in meiner Frage überhaupt nicht.

17

3 Antworten auf die Frage

21
slhck

Warum spielt es eine Rolle?

Es kann argumentiert werden, dass die Filter zur Größenänderung keine Rolle spielen, wenn Sie ein Video herunterskalieren. Noch wichtiger ist jedoch, dass sie sich beim Upscaling auf die Qualität auswirken, da Sie Daten generieren müssen, die vorher gar nicht vorhanden sind.

Diese Filter wirken sich nur geringfügig auf die Dateigröße aus. Sie sollten sich daher nicht um große Unterschiede kümmern.

Fakt ist, wie immer beim Kodieren von Videos, dass das Ergebnis stark vom Ausgangsmaterial abhängt. Sie können das Ergebnis nicht immer vorhersagen, sondern nur sehen, was für Sie am besten funktioniert.

Unterschiedliche Algorithmen

Als Beispiel sei hier die bikubische vs. bilineare Interpolation angegeben :

    

Sehen Sie, dass die bikubische Interpolation zu glatteren Kanten führt? Das ist eine sehr allgemeine Aussage… aber Sie können hier einen Überblick über Algorithmen für die Bildskalierung finden .

  • Die bilineare Interpolation verwendet eine 2x2-Umgebung eines Pixels und verwendet dann den Durchschnitt dieser Pixel, um den neuen Wert zu interpolieren. Es ist nicht der beste Algorithmus, aber eher schnell.

  • Die bikubische Interpolation verwendet eine 4x4-Umgebung eines Pixels, wobei die innersten Pixel höher gewogen werden, und der Durchschnittswert wird dann zum Interpolieren des neuen Werts verwendet. Es ist meiner Meinung nach das beliebteste.

  • Die Flächenmittelung verwendet eine Zuordnung von Quell- und Zielpixeln, wobei die Quellpixel in Bezug auf den Anteil der abgedeckten Zielpixel gemittelt werden. Laut dieser Seite sollte es beim Downsampling bessere Ergebnisse liefern.

  • Die Spline- und Sin- Interpolation verwenden Polynome höherer Ordnung und sind daher schwieriger zu berechnen als die bikubische Interpolation. Ich denke nicht, dass die insgesamt höhere Bearbeitungszeit es wert ist, sie zu nutzen.

  • Lanczos Resampling beinhaltet auch einen Sinc-Filter.

  • Für die Pixel-Art-Skalierung (z.B. Spielemulatoren) werden sowohl hqx- als auch 2xSaI- Filter verwendet. Ich glaube nicht, dass es einen guten Grund gibt, sie in Videos zu verwenden.

Jeff Atwoods Vergleich

Es stellt sich heraus, dass Jeff Atwood einen Vergleich der Algorithmen zur Bildinterpolation durchgeführt hat . Seine Faustregel war die Verwendung der bikubischen Interpolation zum Downsampling und der bilinearen Interpolation beim Upsampling. Er erwähnte jedoch auch, dass…

Das Reduzieren von Bildern ist eine absolut sichere und rationelle Operation. Sie reduzieren lediglich die Präzision und Auflösung, indem Sie Informationen verwerfen. Machen Sie das Bild so klein, wie Sie möchten, und Sie haben eine vollkommene Genauigkeit - innerhalb der Grenzen der zulässigen Pixel. Sie erhalten gute Ergebnisse, egal welchen Algorithmus Sie wählen. (Nun, es sei denn, Sie wählen den Algorithmus "Pixel Resize" oder "Nächster Nachbar") aus.

Hier sind einige weitere Beispiele für Bildinterpolationsalgorithmen, einschließlich der oben genannten.

Also, welche soll man wählen?

Ich fand schließlich ein Dokument aus der Videocodierungsszene, das explizit die bikubische Filterung verbietet . Stattdessen befürwortet es die Neusampling von Lanczos, Spline oder "Blackman". Diese Leute wissen wahrscheinlich, wovon sie sprechen, also möchten Sie vielleicht nur bei der Lanczos-Filterung bleiben.

I used to always use "precise bicubic A=100". On a re-install of the updated program it was Lanczos defaulted, many people liked it. I left it that way for a long time. Eventually I get around to watching the later encoded Lanczos things, and thought that wasnt as good, next set of encodes, I turned it back to bicubic. I was crunching the compression also, I think Lanczos might have seemed better if I wasnt trying to reduce the total data size so much. Psycogeek vor 12 Jahren 0
FWIW Ich würde Jeff Atwood nicht für einen Experten für Bildverarbeitung halten. In diesem Artikel untersucht er nichts anderes als bilinearen, nächsten Nachbarn oder (eine bestimmte Variante von) bikubisch. Die meisten Leute würden seiner Empfehlung, bilinear zu verwenden, zustimmen, wenn die Vergrößerung schlecht ist. thomasrutter vor 9 Jahren 1
@thomasrutter Danke. Ich stimme Ihnen zu - damals, als ich das geschrieben habe, wusste ich wahrscheinlich nicht so viel über Bildverarbeitung wie jetzt. Ich denke, ich werde den Verweis auf diesen Artikel entfernen und eine andere Quelle finden. slhck vor 9 Jahren 1
4
Jeff Atwood

Ich habe ein gutes Bild gefunden, das etwas davon dokumentiert.

Vollversion hier .

Im Allgemeinen möchten Sie einen milden Schärfeffekt, wenn Sie ein größeres Bild in ein kleineres Bild einfügen, und einen leichten Unschärfe-Effekt, wenn Sie ein kleineres Bild in ein größeres Bild verwandeln. Der MadVR-Filtersatz ist standardmäßig auf Lanczos für Upscaling und Bikubic für Downscaling eingestellt.

2
ZaB

Sie konvertieren 3x3 Originalpixel in 2x2 Zielpixel.

Wenn Sie scharfe Linien beibehalten möchten, wählen Sie Lanczos oder etwas, das mehr umgebende Pixel verwendet, um scharfe Linien (wie Fell oder Reflexe) nicht zu verwischen.

Andernfalls würde der Flächenmittelwert usw. (auch bilinear / trilinear) ausreichen.