Downsampling bei Videos

  • Moin moin

    Was ist Downsampling?
    Die Grafikkarte errechnet einen höheren Frame als der Monitor darstellen kann.
    z.B. Grafikkarte: 3840x2160 Monitor: 1920x1080
    Damit der Monitor jetzt diesen Frame darstellen kann, müssen aus 4 Pixel einer gemacht werden.

    Jetzt ist für mich die Frage, wie macht man das bei einem Video ordentlich?
    Bisher hatten wir damit nicht so gute Ergebnisse.
    Entweder liegt es daran das wir nicht die passenden Resizer genutzt haben (glaube ich eher) oder das ich noch irgendwas im übersehe.
    Weil eigentlich müsste es ja egal sein, ob der Frame von der Grafikkarte kommt oder von einem Video, solange beides in RGB24 vorliegt, müsste der gleiche Effekt erzielt werden können, oder?

    Worum geht es genau?
    Es hängt mit Youtube zusammen, da immer ab einer bestimmten Auflösung die nächst höhere Encodingstufe freigeschaltet wird.
    Bei der Stufe 1440p, wird bei 16:9 ab einer Auflösung von 2048x1152 das bessere Encoding angewendet.
    Warum 2048x1152? Weniger Pixel = mehr Bitrate pro Pixel = bessere Qualität des Videos

    Vielleicht liegt es auch einfach daran das solch krumme Werte beim Downsampling nicht möglich sind, bei meiner Auflösung wäre es ein Faktor von 1,25 und das man wie beim PointSize immer mit ganzen Faktoren gerechnet werden müssen.

  • Na ja, was für ein Resizing Algorithmus benutzt wird hängt in erster Linie mal vom "Decoder" ab.
    Was dein Betriebssystem verwendet weiß ich nicht und auch nicht was Youtube beim Re-encoden verwendet.
    Da die aber vor allem auf Geschwindigkeit setzen wird es warscheinlich eher ein einfacher nicht sehr komplexer Algorithmus sein.
    Ich hätte da spontan auch erst mal auf Point-Resize getippt ... oder BilinearResize ...

  • YouTube verwendet zum Herunterskalieren auf kleinere Videoabmessungen jedenfalls kein PointResize. Wahrscheinlich Bicubic oder Bilinear.


    Die Frage, wie man das ordentlich macht, kann man schlecht pauschal beantworten, weil es an vielen Faktoren liegt – insbesondere daran, was jemand als optimal empfindet. Dazu kommen verschiedene Anzeigegeräte, erneute Skalierung bei der Wiedergabe usw.
    Aber um es zu relativieren, der Unterschied zwischen verschiedenen Skalierungsfiltern ist eher subtil und springt einem nicht direkt ins Auge (wenn man nicht gerade mit PointResize vergleicht).
    Mein Tipp: Allgemein macht man mit Spline16 oder Spline36 selten was verkehrt.


    Dazu kommt, dass man bei stärkeren Verkleinerungen und sehr detailreichen Videos das Skalieren in "linear light" in Betracht ziehen sollte. Normalerweise hat Video eine Gammakurve von 2,2. Linear light bedeutet, dass die Gammakurve entfernt wird (Gamma=1,0).

    Stell dir vor, das Video zeigt einen schwarzen Nachthimmel mit vielen kleinen Sternen. Wenn man dies nun stark verkleinert, ohne dabei das Gamma für die Skalierung auf 1,0 (linear light) zu korrigieren (also so, wie normalerweise fast immer skaliert wird), dann sind im herunterskalierten Video die Sterne viel dunkler geworden, vielleicht sogar so gut wie weg. Hätte man zuvor die Gammakurve entfernt, dann skaliert und am Ende die Gammakurve wieder angewendet, hätten die Sterne dieselbe Helligkeit wie zuvor.

    In AviSynth kann man mit den Dither Tools in linear light in 16 Bits skalieren.

    4 Mal editiert, zuletzt von Skiller (19. September 2016 um 13:06)

  • Was dein Betriebssystem verwendet weiß ich nicht und auch nicht was Youtube beim Re-encoden verwendet.


    Hier geht es ja nicht darum wie Youtube oder das Betriebssystem das macht, sondern wie ich per Avisynth von 2560x1440 auf 2048x1152 sauber runterskallieren kann.
    Ich hatte jetzt noch gelesen das Nvidia bei deren DSR System einen 13 Tap Gausfilter nutzen.


    Die Frage, wie man das ordentlich macht, kann man schlecht pauschal beantworten, weil es an vielen Faktoren liegt – insbesondere daran, was jemand als optimal empfindet.

    Was im nachhinein bei Youtube oder bei den verschiedenen Anzeigegeräte passiert kann ich nicht beeinflussen, dementsprechend ist das für mich auch eher unwichtig.
    Für mich ist es wichtig gerade auch feine Sachen wie Fadenkreutze usw beim runterskallieren zu behalten, das heißt der Optimalfall wäre das der Frame genau gleich bleiben würde, nur in einer geringeren Auflösung.
    Also das halt keine Details verloren gehen würden.

  • Für mich ist es wichtig gerade auch feine Sachen wie Fadenkreutze usw beim runterskallieren zu behalten

    OK, es geht also um Gameplay-Videos.
    In diesem Fall...

    das heißt der Optimalfall wäre das der Frame genau gleich bleiben würde, nur in einer geringeren Auflösung.
    Also das halt keine Details verloren gehen würden.

    ...geht das nicht.


    Denn computergerenderte Inhalte nutzen quasi jeden einzelnen Pixel des gerenderten Bildes voll aus. Ein Verkleinern bedeutet hier im Gegensatz zu vielen anderen Quellen immer einen Detailverlust.


    Aber probier es doch einfach mal mit Spline16Resize. Oder was hast du denn bisher verwendet, womit du offenbar nicht zufrieden bist?!

    Von 2560x1440 auf 2048x1152 braucht man sich um gammakorrigiertes Skalieren jedenfalls keine Gedanken machen, also ist das vom Tisch.

  • Zitat

    Wahrscheinlich Bicubic oder Bilinear

    Ich würde stark auf Bicubic tippen.

    Bilinear ist viel zu unscharf. Im Leben nicht benutzen die das. Dafür bleiben die Videos zu scharf. Bicubic könnte gut sein denk ich. Und Pointresize erstrecht nicht. Das wäre ja mega aliasing befallen und youtube will nun auch nicht das die Videos komplett scheiße aussehen. Seit VP9 sehen die sogar auf höheren Stufen als 1080p sogar schon verdammt gut aus.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!