PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Skalieren - wie funktionierts?


Lurtz
2008-03-27, 00:14:44
Ich habe ein paar allgemeine Fragen zum Thema Skalierung, da ich immer wieder über das Thema stolpere aber keiner wirklich zu wissen scheint wie das funktioniert.

Erst mal grundsätzlich: Gibt es Unterschiede zwischen Scalern in Spielekonsolen, die Spiele hochskalieren (z.B. von 720p oder gar krummen Auflösungen darunter) und Scalern in DVD-Playern und HDTVs?

Falls es keine Unterschiede gibt: Wie arbeiten die Scaler genau? Einen echten Informationsgewinn kann es ja nicht geben.

Warum skalieren die Eingabegeräte (Konsolen, Player) meistens besser als die Ausgabegeräte (HDTVs)?

Ist wahrscheinlich ziemlich schwammig formuliert, aber die Unterschiede sind mir da wirklich nicht ganz klar.

Gast
2008-03-27, 04:41:03
Erst mal grundsätzlich: Gibt es Unterschiede zwischen Scalern in Spielekonsolen, die Spiele hochskalieren (z.B. von 720p oder gar krummen Auflösungen darunter) und Scalern in DVD-Playern und HDTVs?

Das hängt davon ab wo ab welchem Punkt die Skalierung stattfindet.

Im Framebuffer liegen die einzelnen Bilder als fertiges Bild vor
und da hängt es dann nur noch davon ab, ob man linear Zeile für Zeile skaliert oder die Daten in Blöcke faßt und dann hochrechnet.
Letzteres dürfte ein besseres Bild versprechen.

Sollte die Skalierung aber vor dem Framebuffer stattfinden, was z.b. bei den Konsolen der Fall sein könnte, dann hat man deutlich mehr Möglichkeiten.

Die typische Skalierung von fertigen Bildern (Bitmaps) dürfte aber überall ob Konsole oder TV mit digitalem Anschluß gleich sein, es hängt dann nur noch von dem technischen Ansatz ab, den der TV oder die Konsole dann wählt.
Siehe oben.




Falls es keine Unterschiede gibt: Wie arbeiten die Scaler genau? Einen echten Informationsgewinn kann es ja nicht geben.

Bei Pixelgrafik wie sie im Framebuffer vorliegt gibt es auch keinen Informationsgewinn mehr.
Anders sieht es aus, wenn man vor dem Framebuffer skalieren kann.
Hier könnte man z.b. noch Zugriff auf die 3d Vektoren haben die das Pixelbild erst generieren und hier hat man dann schon einen Informationsgewinn.


Warum skalieren die Eingabegeräte (Konsolen, Player) meistens besser als die Ausgabegeräte (HDTVs)?

Ich schätze mal, daß die Konsolen noch vor dem Framebuffer ansetzen oder das die Konsolen besonders hochwertige Techniken nach dem Framebuffer verwenden bei denen ein Billig TV nicht mehr mithalten kann.

Gast
2008-03-27, 10:42:45
Ich habe ein paar allgemeine Fragen zum Thema Skalierung, da ich immer wieder über das Thema stolpere aber keiner wirklich zu wissen scheint wie das funktioniert.


beim hochskalieren reicht mal ein simpler bilinearer filter für ganz brauchbare ergebnisse. fortschrittlichere filter wie beispielsweise bikubische bringen natürlich bessere ergebnisse. es gibt auch spezielle filter beispielsweise für cartoongrafiken, die darauf ausgelegt sind die harten kanten zu erhalten. für normale bilder sind die aber ungeeignet.


Erst mal grundsätzlich: Gibt es Unterschiede zwischen Scalern in Spielekonsolen, die Spiele hochskalieren (z.B. von 720p oder gar krummen Auflösungen darunter) und Scalern in DVD-Playern und HDTVs?

natürlich kann es unterschiede geben, welche nun besser sind ist die frage. grundsätzlich kann aber kein scaler in allen fällen das optimiale ergebnis erzeugen und was als optimales ergebnis empfunden wird ist auch stark subjektiv.
konsolen haben zumindest den vorteil ziemlich viel frei programmierbare rechenleistung zu haben, wodurch man unterschiedlichste skaliertechniken einsetzen könnte.
bei playern und fernsehern sind normalerweise fixverdrahtete chips verbaut die lediglich begrenzt programmierbar sind und deren rechenleistung genau auf das vorgesehene einsatzgebiet ausgelegt sind.


Falls es keine Unterschiede gibt: Wie arbeiten die Scaler genau? Einen echten Informationsgewinn kann es ja nicht geben.

einen informationsgewinn gibt es nicht, es geht beim skalieren nur darum wie man die vorhandenen informationen bestmöglich darstellt. wobei diese darstellung natürlich stark subjektiv ist. man könnte beispielsweise nach dem skalieren noch einen schärfefilter auf das bild anwenden, der natürlich nicht mehr informationen herzaubert (genau genommen sogar welche vernichten kann) aber den subjektiven schärfeeindruck verbessert.
dieser kann natürlich artefakte erzeugen und auch das unschöne bildrauschen verstärken. deshalb ist es immer eine frage des contents wie stark man nachschärfen sollte, und natürlich auch dem subjektiven empfinden. mancher mag es richtig knackig scharf und nimmt dafür auch ein paar artefakte in kauf, andere stören sich bereits an den kleinsten artefakten und lassen den schärfefilter lieber niedrig oder ganz ausgeschaltet.


Warum skalieren die Eingabegeräte (Konsolen, Player) meistens besser als die Ausgabegeräte (HDTVs)?


ist es wirklich so? bei konsolen wäre das aus oben genannten gründen noch denkbar, aber ich denke dass die player ganz ähnliche chips zur skalierung benutzen wie die TVs. klar wird es auch dort unterschiede geben, aber ich glaube kaum dass die TVs generell schlechter sind.

Spasstiger
2008-03-27, 11:36:47
Falls es keine Unterschiede gibt: Wie arbeiten die Scaler genau?
In Displays wird meist ein bilinearer Filter eingesetzt.
Dieser betrachtet einfach, welche Pixel vom Bild mit niedriger Auflösung auf das hochauflösende Zielbild fallen und lässt diese Pixel gewichtet nach ihrer relativen Position zur neuen Pixelmitte ins Zielpixel einfließen: http://de.wikipedia.org/wiki/Bilineare_Filterung.
Das mit einem bilinearen Filter skalierte Bild enthält also genau dieselbe Information wie das ursprüngliche Bild. Man kann aus dem bilinear gefilterten Bild das ursprüngliche Bild auch verlustfrei wiederherstellen, sofern die neuen Farbwerte mit ausreichender Präzision gespeichert werden (so dass keine schwerwiegenden Rundungsfehler auftreten).

Eine simple Implementierung des Features ist eine Matrixmultiplikation Matrixtransformation. Es wird dabei jeweils ein Pixelblock bestimmter Größe (z.B. 16x16) mit zwei Matrizen multipliziert. Die Matrizen, mit denen multipliziert wird, hängt dabei vom Verhältnis Quellauflösung zu Zielauflösung ab. Der Nachteil bei dieser Methode ist, dass nur bestimmte Auflösungen bildschirmfüllend skaliert werden.

Mr. Lolman
2008-03-27, 12:01:40
Man kann aus dem bilinear gefilterten Bild das ursprüngliche Bild auch verlustfrei wiederherstellen

Probier das mal mit irgendeinem Bildbearbeitungstool.

Spasstiger
2008-03-27, 12:10:08
Probier das mal mit irgendeinem Bildbearbeitungstool.
Sofern das Ursprungsbild mit 8 Bit Präzision vorlag und das skalierte Bild mit 32 Bit Präzision gespeichert wird (vermutlich reichen auch 16 Bit), ist das mithilfe eines selbstgeschriebenen Plugins kein Problem. Man muss halt die ursprüngliche Auflösung kennen.
Betrachtet man das Ganze theoretisch ohne Quantisierung, dann ist eine verlustfreie Wiederherstellung des ursprünglichen Bildes immer möglich. An der Uni muss man bei Fragen zu Themen der Verlustfreiheit bei Transformationen in der Bildverarbeitung immer höllisch aufpassen, denn Quantisierung ist nicht selbstverständlich. ;)

P.S.: Wenn man von 720p auf 1080p mit einem bilinearen Filter skalieren möchte, ist das denkbar einfach. Das Verhältnis beider Auflösungen zueinander ist 1:1,5. Somit fallen auf ein Zielpixel immer vier umliegende Quellpixel zu je gleichen Anteilen. An den Kanten und Ecken fallen jeweils nur zwei bzw. ein umliegendes Quellpixel auf ein Zielpixel (aber auch jeweils zu gleichen Anteilen). Bezeichnet man die umliegenden Pixel mit x11, x12, x21 und x22 und das Zielpixel mit y ergibt sich als Rechnung für den Skalierer für innenliegende Pixel: y = 1/4*(x11+x12+x21+x22). Für das linke obere Eckpixel gilt y = x11, für die obere Kante gilt y = x11 + x12 (andere Ecken und Kanten analog).

Mr.Magic
2008-03-27, 12:35:07
Sofern das Ursprungsbild mit 8 Bit Präzision vorlag und das skalierte Bild mit 32 Bit Präzision gespeichert wird (vermutlich reichen auch 16 Bit), ist das mithilfe eines selbstgeschriebenen Plugins kein Problem.

Wo werden den bitte bei einem Scaler 16 oder gar 32 bit pro Farbkanal verwendet (und welches gängige Computerformat speichert sowas)? Oder ist ein Ursprungsbild mit 256 Farben gemeint?
Klingt für mich alles nach reinem Fantasiegeplänkel (aka Theorie).

Spasstiger
2008-03-27, 12:43:14
Klingt für mich alles nach reinem Fantasiegeplänkel (aka Theorie).
Das ist natürlich Theorie, aber ich kann und will nicht behaupten, dass eine Matrixtransformation verlustbehaftet ist. Die Quantisierung ist verlustbehaftet, nicht die Transformation.
Wenn ich was andere behaupte, bekomm ich Haue von den Experten und würde mich selbst belügen.

Btw. Photoshop kann mit 16 Bit und 32 Bit Präzision pro Farbkanal umgehen. PNG unterstützt z.B. 16 Bit Präzision. Ein im professionellen Bereich wichtiger Standard ist OpenEXR (kann z.B. für HDR-Texturen verwendet werden, neuere GeForces und Quadros unterstützen es nativ), welches sogar bis zu 32 Bit Präzision pro Farbkanal erlaubt. Das Microsoft-HD-Photo-Format (von Photoshop und vom IE unterstützt) kann ebenfalls mit 32 Bit pro Kanal speichern.

Lurtz
2008-03-27, 13:12:18
Das hängt davon ab wo ab welchem Punkt die Skalierung stattfindet.

Im Framebuffer liegen die einzelnen Bilder als fertiges Bild vor
und da hängt es dann nur noch davon ab, ob man linear Zeile für Zeile skaliert oder die Daten in Blöcke faßt und dann hochrechnet.
Letzteres dürfte ein besseres Bild versprechen.

Sollte die Skalierung aber vor dem Framebuffer stattfinden, was z.b. bei den Konsolen der Fall sein könnte, dann hat man deutlich mehr Möglichkeiten.

Die typische Skalierung von fertigen Bildern (Bitmaps) dürfte aber überall ob Konsole oder TV mit digitalem Anschluß gleich sein, es hängt dann nur noch von dem technischen Ansatz ab, den der TV oder die Konsole dann wählt.
Siehe oben.

Bei Pixelgrafik wie sie im Framebuffer vorliegt gibt es auch keinen Informationsgewinn mehr.
Anders sieht es aus, wenn man vor dem Framebuffer skalieren kann.
Hier könnte man z.b. noch Zugriff auf die 3d Vektoren haben die das Pixelbild erst generieren und hier hat man dann schon einen Informationsgewinn.
OK, dann wäre das geklärt.

Ich schätze mal, daß die Konsolen noch vor dem Framebuffer ansetzen oder das die Konsolen besonders hochwertige Techniken nach dem Framebuffer verwenden bei denen ein Billig TV nicht mehr mithalten kann.
Sprich bei einem sehr guten HDTV bräuchte man gar keinen DVD-Player mit Upscaling, der TV macht das sowieso besser?

Ich habe eben bis jetzt immer gehört dass selbst gute HDTVs z.B. mit Faroudja-Chip schlechter skalieren als die Konsolen und Player. Das kann sich mittlerweile natürlich geändert haben.

Sailor Moon
2008-03-27, 13:29:33
Sprich bei einem sehr guten HDTV bräuchte man gar keinen DVD-Player mit Upscaling, der TV macht das sowieso besser?

Ich habe eben bis jetzt immer gehört dass selbst gute HDTVs z.B. mit Faroudja-Chip schlechter skalieren als die Konsolen und Player. Das kann sich mittlerweile natürlich geändert haben.
Ich würde mich nicht am Chip "aufhängen". Der ist weniger entscheidend, als man oft glaubt. Wichtig ist, wie sorgfältig die Implementierung erfolgte. Da gibt es, auch bei gleicher Basis, riesige Unterschiede. Auch ist die Skalierung bei weitem nicht der einzige Faktor, der sich in der Qualität dann bemerkbar macht. Ich denke hier besonders an das Deinterlacing (auch auf DVD liegt das Material immer halbbildbasiert vor, selbst wenn es von progressiver Quelle stammte).
Die Lösungen der TVs sind insgesamt eher als mäßig zu bezeichnen, auch wenn mit tausend tollen Namen geworben wird. Bei den DVD Playern sieht es letztlich ähnlich aus. Immer gemessen an dem, was machbar ist. Insofern hilft da am ehesten eigenes Austesten.

Wenn du wirklich gutes Processing willst, würde ich mich im HTPC-/ Videoprozessorbereich umsehen und ein Display kaufen, das sich vernünftig pixelgenau ansteuern läßt. Letzteres wird, Gott sei Dank, immer weniger ein Problem. Die derzeit wohl interessanteste Alternative im Standalonebereich dürfte der 983 von OPPO mit Chipset von ABT sein. Der wird allerdings nicht in Europa angeboten.

Gruß

Denis

Liszca
2008-03-29, 01:02:50
Ich habe ein paar allgemeine Fragen zum Thema Skalierung, da ich immer wieder über das Thema stolpere aber keiner wirklich zu wissen scheint wie das funktioniert.

Erst mal grundsätzlich: Gibt es Unterschiede zwischen Scalern in Spielekonsolen, die Spiele hochskalieren (z.B. von 720p oder gar krummen Auflösungen darunter) und Scalern in DVD-Playern und HDTVs?

Falls es keine Unterschiede gibt: Wie arbeiten die Scaler genau? Einen echten Informationsgewinn kann es ja nicht geben.

Warum skalieren die Eingabegeräte (Konsolen, Player) meistens besser als die Ausgabegeräte (HDTVs)?

Ist wahrscheinlich ziemlich schwammig formuliert, aber die Unterschiede sind mir da wirklich nicht ganz klar.

Anhängend wollte ich mal fragen oder sagen?

supersampling Antialiasing ist doch auch eine form des skalieren, wenn auch eine besondere!

um missverständinisse vorzubeugen: multisampling zähle ich nicht zum skalen der besonderen art!

Spasstiger
2008-03-29, 01:13:31
Anhängend wollte ich mal fragen oder sagen?

supersampling Antialiasing ist doch auch eine form des skalieren, wenn auch eine besondere!
Nur bei einem Ordered Grid.
Downsampling ist der passendere und immer gültige Begriff (egal ob bei OGSSAA, RGSSAA oder MSAA).