Welchen Größenänderungsalgorithmus soll ich für Videos wählen?

21

Ich verwende VirtualDub zum Codieren mit diesen Einstellungen . Resize-Algorithmen

Allerdings nehme ich meine Sachen in 1920x1080 auf und verkleinere sie auf 1280x720. Nun die Frage: Welchen Algorithmus soll ich wählen, wenn ich eine ausgewogene Entscheidung zwischen Qualität und Dateigröße treffen möchte?

Ich bin immer mit Lanczos gefahren, weil das vorkonfiguriert war. Diese Beschreibungen helfen mir überhaupt nicht bei meiner Frage.

Mürrischer alter Bär
quelle

Antworten:

25

TL; DR

Bei der Abtastung nach unten: Verwenden Sie die Lanczos- oder Spline-Filterung.

Bei der Probenahme: Verwenden Sie die Bikubik- oder Lanczos-Filterung.

Diese basieren auf Material, das ich im Laufe der Jahre gelesen habe und von dem, was ich in der Industrie gesehen habe. Die Empfehlungen können je nach Inhaltstyp und Anwendungsbereich variieren.

Warum spielt es eine Rolle?

Man könnte argumentieren, dass die Größenänderungsfilter nicht so wichtig sind, wenn Sie ein Video verkleinern. Noch wichtiger ist, dass sie sich auf die Qualität beim Upscaling auswirken, da Sie Daten generieren müssen, bei denen dies gar nicht erst der Fall ist.

Diese Filter haben nur einen geringen Einfluss auf die Dateigröße. Sie sollten sich daher keine Sorgen über große Unterschiede machen.

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

Unterschiedliche Algorithmen

Als Beispiel ist hier bikubische vs. bilineare Interpolation :

     Bildbeschreibung hier eingeben

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

  • 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, sondern eher schnell.

  • Die bikubische Interpolation verwendet eine 4x4-Umgebung eines Pixels, wobei die innersten Pixel höher gewichtet werden , und verwendet dann den Durchschnitt, um den neuen Wert zu interpolieren. Für mich ist es das beliebteste.

  • Die Flächenmittelung verwendet eine Abbildung von Quell- und Zielpixeln, wobei die Quellpixel im Hinblick auf den Bruchteil der abgedeckten Zielpixel gemittelt werden. Laut dieser Seite sollten beim Downsampling bessere Ergebnisse erzielt werden.

  • Spline- und Sinc- Interpolation verwenden Polynome höherer Ordnung und sind daher schwerer zu berechnen als bikubische Interpolation. Ich denke nicht, dass die Gesamtverkürzung der Bearbeitungszeit es wert ist, sie zu nutzen.

  • Bei der Lanczos- Neuabtastung wird ebenfalls ein Zinkfilter verwendet. Es ist rechenintensiver, wird aber normalerweise als sehr hochwertig beschrieben und kann für Up- und Downsampling verwendet werden.

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

Jeff Atwoods Vergleich

Es stellte sich heraus, dass Jeff Atwood einen Vergleich der Bildinterpolationsalgorithmen durchgeführt hat . Seine Faustregel war, beim Upsampling bikubische Interpolation für Downsampling und bilineare Interpolation zu verwenden. Dies wird jedoch normalerweise nicht für die Videokodierung empfohlen - und einige Kommentatoren haben Zweifel an der Fachkompetenz von Atwood auf diesem Gebiet geäußert.

Er erwähnte jedoch auch, dass ...

Das Verkleinern von Bildern ist eine absolut sichere und rationelle Operation. Sie reduzieren lediglich die Präzision und Auflösung, indem Sie Informationen verwerfen. Stellen Sie das Bild so klein ein, wie Sie möchten, und Sie haben vollständige Wiedergabetreue - innerhalb der Grenzen der zulässigen Pixelanzahl. Sie erhalten gute Ergebnisse, egal welchen Algorithmus Sie wählen. (Nun, es sei denn, Sie wählen den Algorithmus "Nave Pixel Resize" oder "Nearest Neighbor".)

Andere Beispiele

Hier einige weitere Beispiele für Bildinterpolationsalgorithmen , einschließlich der oben erwähnten.

Ich habe auch Dokumente (Szenenregeln) aus der Videocodierungsszene gefunden, die die bikubische Filterung für das Downsampling explizit verbieten . Stattdessen unterstützen sie das Resampling von Lanczos, Spline oder "Blackman".

slhck
quelle
Früher habe ich immer "genaues bikubisches A = 100" verwendet. Bei einer Neuinstallation des aktualisierten Programms war Lanczos in Verzug, viele Leute mochten es. Ich habe es lange so gelassen. Irgendwann schaue ich mir die später verschlüsselten Lanczos-Sachen an und denke, dass das nicht so gut ist. Als nächstes habe ich die Verschlüsselung wieder auf bikubisch gestellt. Ich habe auch die Komprimierung zerkleinert. Ich denke, Lanczos hätte vielleicht besser ausgesehen, wenn ich nicht versucht hätte, die Gesamtdatengröße so stark zu reduzieren.
Psycogeek
2
FWIW Ich würde Jeff Atwood nicht als Experten für Bildverarbeitung bezeichnen, und in diesem Artikel untersucht er nichts anderes als bilinear, den nächsten Nachbarn oder (eine bestimmte Variante von) bikubisch. Die meisten Leute würden seiner Empfehlung zustimmen, bilinear zu verwenden, wenn das Vergrößern schlecht ist.
Thomasrutter
1
@ thomasrutter Danke. Ich stimme Ihnen zu - als ich das schrieb, wusste ich wahrscheinlich nicht so viel über die Bildverarbeitung wie jetzt. Ich werde den Verweis auf diesen Artikel entfernen und eine andere Quelle finden.
Slhck
8

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

Bildbeschreibung hier eingeben

Vollversion hier .

Im Allgemeinen möchten Sie einen leichten Schärfeeffekt, wenn Sie ein größeres Bild in ein kleineres verwandeln, und einen leichten Unschärfeeffekt, wenn Sie ein kleineres Bild in ein größeres verwandeln. Der MadVR-Filter setzt standardmäßig Lanczos für das Upscaling und Bicubic für das Downscaling.

Jeff Atwood
quelle
2

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 Reflexionen) nicht zu verwischen.

Andernfalls würde ein Flächendurchschnitt usw. (auch bilinear / trilinear) ausreichen.

ZaB
quelle