Technische Implementierungen von Upscaling


15

Ich habe also Bikubik und Fraktal als Methoden zum Hochskalieren von Fotos aufgelistet gesehen. Welche technischen Details stecken dahinter und warum / wann ist einer besser als der andere?


upsize: bilinear; Verkleinern: lanczos 3.

Antworten:


15

Zunächst müssen bei der Bildvergrößerung die Pixel um einen festen Betrag auseinander bewegt und der Raum zwischen zuvor benachbarten Pixeln mit ähnlichem Inhalt ausgefüllt werden. Dies kann durch grundlegende Pixelherstellung (bikubische Filterung) oder durch komplexere Mittel wie Konvertieren des Bildes in eine Vektordarstellung und Skalieren im Vektorraum erfolgen.

Die bikubische Filterung verwendet zusammen mit der bilinearen Filterung eine relativ einfache Funktionskurve, um die Farben benachbarter Pixel beim Vergrößern eines Bildes zu mischen. Bilinear verwendet eine lineare Funktionskurve, während Bicubic eine kubische Spline-Funktionskurve (cspline) verwendet. Die bikubische Filterung liefert im Allgemeinen glattere Ergebnisse, beide Algorithmen mischen jedoch letztendlich die Werte benachbarter Pixel über eine Funktionskurve zusammen, um "die Lücken zu füllen", wenn ein Bild vergrößert wird. Es ist zu beachten, dass die bikubische Skalierung im Allgemeinen verlustfrei ist, da nur der Raum zwischen den Originalpixeln wirklich erzeugt wird. Abhängig von den Nuancen bestimmter Implementierungen können sich die Originalpixel geringfügig ändern. Die Originaldaten bleiben jedoch größtenteils erhalten, und neue Daten werden so erstellt, dass sie ausgefüllt werden, wenn ein Bild vergrößert wird.

Der fraktale Ansatz zur Bildskalierung verfolgt einen völlig anderen Ansatz. Komplexere Algorithmen werden verwendet, um den Inhalt eines Bildes zu analysieren, Kanten und "Objekte" zu identifizieren und das Bild schließlich in ein fraktales Vektorformat umzuwandeln. Sobald das Bild vektorisiert ist, kann es im Vektorraum "verlustfrei" skaliert und dann in einer größeren Größe neu gerendert werden. Fraktale Algorithmen wie Genuine Fractals verwenden einen fraktalen Vektoralgorithmus, um ein Bild zu skalieren und dabei glatte, scharfe Kanten beizubehalten. Dieser Ansatz ist nützlich, wenn Ihr Bild anfangs scharfe und erkennbare Kanten als Schlüsselfaktor aufweist und die Beibehaltung einer klaren Schärfe an diesen Kanten wichtig ist.

Darüber hinaus versucht Genuine Fractals, über das Konzept der "Selbstähnlichkeit" nicht kantenbezogene Details beizubehalten, indem der Bildinhalt als fraktal betrachtet und nicht kantenbezogene Inhalte aus fraktalen Algorithmen neu gerendert werden. Dies hat den mutmaßlichen Vorteil, dass aus Mustern, die aus vielen Pixeln bestehen, neuer Inhalt erzeugt werden kann, anstatt lediglich Informationen aus benachbarten Pixeln herzustellen. Dieser Ansatz kann sehr gut funktionieren, wenn die Skalierung um etwa 200% erfolgt. Die grundlegende Vektornatur der Skalierung wird jedoch deutlicher, wenn auf größere Größen skaliert wird. Es sollte auch beachtet werden, dass dieses Skalierungsverfahren nicht verlustfrei ist und einige feine Pixeldetails verworfen werden können, wenn der Algorithmus versucht, Fraktale zu findenMuster, die repliziert werden können. Extreme Upscaling-Effekte können zu einer sichtbaren Musterreplikation führen, und feine Kantendetails können entfernt werden, um bei allen Bildgrößen glatte, scharfe Kanten zu erhalten.

BenVista bietet auch einen proprietären Algorithmus namens S-Spline. Über die Besonderheiten dieses Algorithmus liegen nur wenige Informationen vor, es scheint sich jedoch um einen anderen auf Funktionskurven basierenden Algorithmus zu handeln. Die S-Spline Max-Skalierung in PhotoZoom Pro leistet wie Genuine Fractals hervorragende Arbeit bei der Aufrechterhaltung der Kantendefinition. Dieser Algorithmus ist auch in der Lage, auf etwa 200% zu skalieren. Wenn Sie diesen Algorithmus jedoch weiter ausbauen, führt dies zu einer sichtbaren Verschlechterung und Glättung von Nicht-Kantendetails. Es scheint, dass der allgemeine Kompromiss bei Skalierungsalgorithmen entweder die maximale Kantendefinition oder die maximale Detailerhaltung ist. Es ist auch zu beachten, dass die meisten Skalierungsalgorithmen von Drittanbietern, einschließlich Genuine Fractals und BenVista PhotoZoom Pro, standardmäßig automatisch eine unscharfe Maske auf das endgültige Bild anwenden.

Es ist möglich, bikubisch iterativ zu verwenden. Die grundlegende Schwierigkeit bei der bikubischen Skalierung besteht darin, dass mit zunehmender Skalierung mehr Informationen erzeugt werden, und das zu den höchsten Kosten der Schärfe. Indem Sie eine bikubische Skalierung in Schritten von 3 bis 5% durchführen, erhalten Sie weitaus mehr originale oder nahezu originale Details und stellen bei jedem Schritt viel weniger Bildmaterial her. Das Endergebnis einer iterativen (oder gestuften) bikubischen Skalierung kann eine erheblich bessere Kantendefinition beibehalten, ohne dass feine Details verloren gehen. Die Kosten sind jedoch viel höher, da es derzeit keine vorgefertigten Anwendungen gibt, die dies für Sie erledigen. Sie müssen die neue Breite und Höhe des Bildes bei jedem Schritt manuell berechnen, indem Sie die vorherige Breite oder Höhe mit Ihrem Skalierungsprozentsatz multiplizieren und diese Zahl in Ihr Bildbearbeitungsprogramm einfügen. ' s bikubisches Skalierungswerkzeug. Die Endergebnisse können hervorragend und so scharf wie ein bikibisches Bild mit unscharfer Maskierung sein. Die Grenze, um wie viel größer Sie ein Bild ohne sichtbare Beeinträchtigung skalieren können, ist viel größer als bei anderen Algorithmen, mindestens 400%, möglicherweise mehr.


Hmm. Es wäre ziemlich einfach, diese iterative bikubische Skalierung als Gimp-Skript oder als Photoshop-Aktion zu
skripten

Ich habe es als Photoshop-Aktion ausprobiert, war jedoch nicht erfolgreich, da Computerinformationen erforderlich waren. Ich mache nicht viel mit Photoshop, deshalb bin ich mir nicht sicher, ob es mathematische Funktionen oder Skripte unterstützt.
jrista

2
+1 Wow, fantastische detaillierte Antwort. Ich dachte, das wäre eine langweilige Frage, bis ich deine Antwort gelesen habe.
Fmark

Ich habe gerade mehrere Größenänderungen in Paint.net getestet, aber die Ergebnisse entsprachen nicht den Angaben in dieser Antwort. Die mehrfache Größenänderung des Bilds führte zu so vielen Unschärfen, dass dasselbe Bild nur einmal neu abgetastet wurde. Ich habe versucht, die Größe des gleichen Bilds auf 200% und die iterativen 104% jedes Mal zu ändern, bis ungefähr die gleichen Pixelabmessungen erreicht wurden.
Jahaziel

1
Wenn Sie ein Beispiel für iteratives Bicubic für ein Bild wünschen, das von der Methode profitiert hat, sehen Sie sich meine Analyse hier an: Emprical Study: Extreme digitale Hochskalierung
jrista
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.