Bildskalierung - Image scaling

Ein mit Nearest-Neighbor-Skalierung (links) und 2×SaI-Skalierung (rechts) skaliertes Bild

In der Computergrafik und digitale Bildverarbeitung , Bildskalierung bezieht sich auf das Ändern der Größe eines digitalen Bildes. In der Videotechnik wird die Vergrößerung von digitalem Material als Upscaling oder Auflösungsverbesserung bezeichnet .

Beim Skalieren einer Vektorgrafik können die grafischen Grundelemente, aus denen das Bild besteht, mit geometrischen Transformationen ohne Verlust der Bildqualität skaliert werden . Beim Skalieren eines Rastergrafikbildes muss ein neues Bild mit einer höheren oder niedrigeren Pixelzahl erzeugt werden. Bei einer Verringerung der Pixelzahl (Verkleinerung) führt dies in der Regel zu einem sichtbaren Qualitätsverlust. Aus Sicht der digitalen Signalverarbeitung ist die Skalierung von Rastergrafiken ein zweidimensionales Beispiel für die Abtastratenumsetzung , die Umwandlung eines diskreten Signals von einer Abtastrate (hier die lokale Abtastrate) in eine andere.

Mathematik

Die Bildskalierung kann aus der Sicht des Nyquist-Abtasttheorems als eine Form der Bildneuabtastung oder Bildrekonstruktion interpretiert werden . Das Downsampling auf ein kleineres Bild von einem höher aufgelösten Original kann nach dem Theorem nur nach Anwendung eines geeigneten 2D- Anti-Aliasing-Filters zur Vermeidung von Aliasing-Artefakten durchgeführt werden. Das Bild wird auf die Informationen reduziert, die von dem kleineren Bild getragen werden können.

Beim Upsampling tritt an die Stelle des Anti-Aliasing-Filters ein Rekonstruktionsfilter .

Ein ausgeklügelterer Ansatz zum Hochskalieren behandelt das Problem als ein inverses Problem und löst die Frage der Erzeugung eines plausiblen Bildes, das, wenn es verkleinert wird, wie das Eingabebild aussehen würde. Dafür wurden verschiedene Techniken angewendet, darunter Optimierungstechniken mit Regularisierungstermen und der Einsatz von Machine Learning aus Beispielen.

Algorithmen

Eine Bildgröße kann auf verschiedene Weise geändert werden.

Nächster-Nachbar-Interpolation

Eine der einfacheren Möglichkeiten, die Bildgröße zu erhöhen, ist die Interpolation des nächsten Nachbarn , bei der jedes Pixel durch das nächste Pixel in der Ausgabe ersetzt wird; für die Hochskalierung bedeutet dies, dass mehrere Pixel derselben Farbe vorhanden sind. Dies kann scharfe Details in Pixelgrafiken bewahren, aber auch Zacken in zuvor glatten Bildern einführen . 'Nächster' in nächster Nachbar muss nicht der mathematisch nächste sein. Eine übliche Implementierung besteht darin, immer auf Null zu runden. Das Runden auf diese Weise erzeugt weniger Artefakte und ist schneller zu berechnen.

Bilineare und bikubische Algorithmen

Bei der bilinearen Interpolation werden Pixelfarbwerte interpoliert , wodurch ein kontinuierlicher Übergang in die Ausgabe eingeführt wird, selbst wenn das Originalmaterial diskrete Übergänge aufweist. Obwohl dies für Halbtonbilder wünschenswert ist, reduziert dieser Algorithmus den Kontrast (scharfe Kanten) in einer Weise, die für Strichzeichnungen unerwünscht sein kann. Die bikubische Interpolation liefert wesentlich bessere Ergebnisse mit einem erhöhten Rechenaufwand.

Sinc- und Lanczos-Resampling

Das Sinc-Resampling bietet theoretisch die bestmögliche Rekonstruktion für ein perfekt bandbegrenztes Signal. In der Praxis werden die Annahmen hinter dem Sinc-Resampling von realen digitalen Bildern nicht vollständig erfüllt. Lanczos Resampling , eine Annäherung an die Sinc-Methode, liefert bessere Ergebnisse. Die bikubische Interpolation kann als rechnerisch effiziente Annäherung an das Lanczos-Resampling angesehen werden.

Kartonbemusterung

Eine Schwäche bilinearer, bikubischer und verwandter Algorithmen besteht darin, dass sie eine bestimmte Anzahl von Pixeln abtasten. Beim Herunterskalieren unter einen bestimmten Schwellenwert, beispielsweise mehr als zweimal für alle Bi-Sampling-Algorithmen, tasten die Algorithmen nicht benachbarte Pixel ab, was sowohl zu Datenverlust als auch zu groben Ergebnissen führt.

Die triviale Lösung für dieses Problem ist das Box-Sampling, bei dem das Zielpixel als Box auf dem Originalbild betrachtet und alle Pixel innerhalb der Box abgetastet werden. Dadurch wird sichergestellt, dass alle Eingabepixel zur Ausgabe beitragen. Die größte Schwäche dieses Algorithmus besteht darin, dass er schwer zu optimieren ist.

Mipmap

Eine weitere Lösung für das Downscale-Problem der Bi-Sampling-Skalierung sind Mipmaps . Eine Mipmap ist ein vorskalierter Satz von herunterskalierten Kopien. Beim Herunterskalieren wird die nächstgrößere Mipmap als Ursprung verwendet, um sicherzustellen, dass keine Skalierung unter den nützlichen Schwellenwert der bilinearen Skalierung verwendet wird. Dieser Algorithmus ist schnell und einfach zu optimieren. Es ist in vielen Frameworks wie OpenGL Standard . Die Kosten entstehen durch die Verwendung von mehr Bildspeicher, genau ein Drittel mehr in der Standardimplementierung.

Fourier-Transformationsmethoden

Einfache Interpolation basierend auf Fourier-Transformation füllt den Frequenzbereich mit Nullkomponenten auf (ein glatter fensterbasierter Ansatz würde das Nachschwingen reduzieren ). Neben der guten Erhaltung (oder Wiederherstellung) von Details ist das Klingeln und das kreisförmige Ausbluten des Inhalts vom linken Rand zum rechten Rand (und umgekehrt) bemerkenswert.

Kantengerichtete Interpolation

Kantengerichtete Interpolationsalgorithmen zielen darauf ab, Kanten im Bild nach der Skalierung zu erhalten, im Gegensatz zu anderen Algorithmen, die Treppenartefakte einführen können.

Beispiele für Algorithmen für diese Aufgabe sind New Edge-Directed Interpolation (NEDI), Edge-Guided Image Interpolation (EGGI), Iterative Curvature-Based Interpolation (ICBI) und Directional Cubic Convolution Interpolation (DCCI). Eine Analyse aus dem Jahr 2013 ergab, dass DCCI bei einer Reihe von Testbildern die besten Werte in PSNR und SSIM aufwies .

hqx

Bei der Vergrößerung von Computergrafiken mit niedriger Auflösung und/oder wenigen Farben (normalerweise von 2 bis 256 Farben) können mit hqx oder anderen Pixelart -Skalierungsalgorithmen bessere Ergebnisse erzielt werden . Diese erzeugen scharfe Kanten und behalten einen hohen Detailgrad bei.

Vektorisierung

Vektorextraktion oder Vektorisierung bietet einen anderen Ansatz. Die Vektorisierung erzeugt zunächst eine auflösungsunabhängige Vektordarstellung der zu skalierenden Grafik. Anschließend wird die auflösungsunabhängige Version als Rasterbild in der gewünschten Auflösung gerendert. Diese Technik wird von Adobe Illustrator , Live Trace und Inkscape verwendet . Skalierbare Vektorgrafiken eignen sich gut für einfache geometrische Bilder, während Fotografien aufgrund ihrer Komplexität bei der Vektorisierung nicht gut abschneiden.

Deep Convolutional Neural Networks

Diese Methode verwendet maschinelles Lernen für detailliertere Bilder wie Fotos und komplexe Kunstwerke. Zu den Programmen, die diese Methode verwenden, gehören waifu2x , Imglarger und Neural Enhance.

Demonstration von konventionellem Upscaling im Vergleich zu Waifu2x-Upscaling mit Rauschunterdrückung, unter Verwendung eines Details von Phosphorus und Hesperus von Evelyn De Morgan . Klicken Sie für volle Größen.
Original Bild
Bild um 200 % hochskaliert mit PaintShop Pro
Bild um 200 % hochskaliert mit waifu2x im Fotomodus mit mittlerer Rauschunterdrückung
Bild um 400 % hochskaliert mit Topaz AI Gigapixel mit geringer Rauschunterdrückung
Bild um 400 % hochskaliert mit RealSR DF2K-JPEG

Anwendungen

Allgemeines

Die Bildskalierung wird unter anderem in Webbrowsern , Bildbearbeitungsprogrammen , Bild- und Dateibetrachtern, Softwarelupen, digitalem Zoom, dem Verfahren zur Erzeugung von Miniaturbildern und bei der Ausgabe von Bildern über Bildschirme oder Drucker verwendet.

Video

Diese Anwendung dient der Vergrößerung von Bildern für Heimkinos für HDTV-fähige Ausgabegeräte aus PAL-Resolution-Inhalten, beispielsweise von einem DVD-Player. Die Hochskalierung erfolgt in Echtzeit und das Ausgangssignal wird nicht gespeichert.

Pixelart-Skalierung

Da Pixel-Art- Grafiken normalerweise eine niedrige Auflösung haben, sind sie auf eine sorgfältige Platzierung einzelner Pixel angewiesen, oft mit einer begrenzten Farbpalette. Dies führt zu Grafiken, die auf stilisierten visuellen Hinweisen beruhen, um komplexe Formen mit geringer Auflösung bis hin zu einzelnen Pixeln zu definieren. Dies macht das Skalieren von Pixelkunst zu einem besonders schwierigen Problem.

Spezielle Algorithmen wurden entwickelt, um Pixel-Art-Grafiken zu verarbeiten, da die traditionellen Skalierungsalgorithmen keine Wahrnehmungshinweise berücksichtigen.

Da eine typische Anwendung darin besteht, das Erscheinungsbild von Videospielen der vierten Generation und früher auf Arcade- und Konsolenemulatoren zu verbessern , sind viele so konzipiert, dass sie in Echtzeit für kleine Eingabebilder mit 60 Bildern pro Sekunde laufen.

Auf schneller Hardware eignen sich diese Algorithmen für Spiele und andere Echtzeit-Bildverarbeitungen. Diese Algorithmen sorgen für scharfe, gestochen scharfe Grafiken und minimieren gleichzeitig die Unschärfe. Scaling-Art-Algorithmen wurden in einer Vielzahl von Emulatoren wie HqMAME und DOSBox sowie in 2D- Game-Engines und Game-Engine-Nachbildungen wie ScummVM implementiert . Sie erlangten Anerkennung bei Spielern, für die diese Technologien eine Wiederbelebung der Spielerlebnisse der 1980er und 1990er Jahre förderten.

Solche Filter werden derzeit in kommerziellen Emulatoren auf Xbox Live , Virtual Console und PSN verwendet , um klassische Spiele mit niedriger Auflösung auf modernen HD- Displays optisch ansprechender zu gestalten . Zu den kürzlich veröffentlichten Spielen, die diese Filter verwenden, gehören Sonics Ultimate Genesis Collection , Castlevania: The Dracula X Chronicles , Castlevania: Symphony of the Night und Akumajō Dracula X Chi no Rondo .

Siehe auch

Verweise