Heim  >  Artikel  >  Web-Frontend  >  Bildverformungsalgorithmus: Implementierung des Vorwärtsverformungswerkzeugs in der Photoshop Liquify-Toolbox

Bildverformungsalgorithmus: Implementierung des Vorwärtsverformungswerkzeugs in der Photoshop Liquify-Toolbox

高洛峰
高洛峰Original
2017-03-21 17:15:523662Durchsuche

Oft müssen wir Teile eines Bildes anpassen, und diese Anpassung muss reibungslos und interaktiv erfolgen. Das Vorwärtskrümmungswerkzeug im Verflüssigungsfilter von Photoshop ist ein solches Werkzeug und sehr nützlich. Zu den ähnlichen Tools gehört die Gesichtsschlankungsfunktion von Meitu Xiu Xius. Dieser Artikel beschreibt die Prinzipien und Algorithmen hinter solchen Tools.

Nehmen Sie zunächst Meitu Xiuxiu als Beispiel, um die Vorwärtstransformationsfunktion kurz zu beschreiben.

Zunächst steuern Sie mit der Maus eine kreisförmige Auswahl.

Bildverformungsalgorithmus: Implementierung des Vorwärtsverformungswerkzeugs in der Photoshop Liquify-Toolbox

Klicken Sie dann mit der linken Maustaste und ziehen Sie in eine bestimmte Richtung, um ein Bild mit sanfter Vorwärtsverformung zu erzeugen:

Bildverformungsalgorithmus: Implementierung des Vorwärtsverformungswerkzeugs in der Photoshop Liquify-Toolbox

Mit diesem Tool können Sie Teile des Bildes anpassen. Der Freiheitsgrad ist relativ groß und daher praktischer.

Im Folgenden werden die Prinzipien dieser Art von Algorithmus erläutert.

Bildverformungsalgorithmus: Implementierung des Vorwärtsverformungswerkzeugs in der Photoshop Liquify-Toolbox

Im obigen Bild stellt der schattierte Ring eine kreisförmige Auswahl mit einem Radius von rmax dar. Unter diesen ist Punkt C der Punkt, an dem mit der Maus geklickt wird und der die Mitte der kreisförmigen Auswahl darstellt. Ziehen Sie die Maus von C nach M, wodurch Punkt U im Bild in Punkt X umgewandelt wird. Daher besteht das Hauptproblem darin, die umgekehrte Transformation der obigen Transformation zu finden – wenn ein Punkt vorliegt, ermitteln Sie den Pixelwert von U. Durch die Auswertung jedes Pixels in der kreisförmigen Auswahl kann das transformierte Bild erhalten werden.

Andreas Gustafssons Artikel „Interaktive Bildverzerrung“ enthält diese inverse Transformationsformel:

Bildverformungsalgorithmus: Implementierung des Vorwärtsverformungswerkzeugs in der Photoshop Liquify-Toolbox

Die Eigenschaften dieses Verzerrungsalgorithmus sind:

1 Nur die Das Bild innerhalb der kreisförmigen Auswahl ist deformiert

2 Je näher am Mittelpunkt des Kreises, desto größer die Verformung, je näher am Rand, desto geringer die Verformung, und an der Grenze gibt es keine Verformung

3 Die Verformung ist glatt

Die spezifischen Implementierungsschritte sind wie folgt:

1 Nehmen Sie für jedes Pixel in der kreisförmigen Auswahl seine R-, G- und B-Komponenten heraus und speichern Sie sie darin 3 Buffs (rBuff, gBuff, bBuff) (Das heißt, die drei Buffs speichern jeweils die Werte der R-, G- und B-Kanäle des Originalbilds in der Auswahl)

2 Für jedes Pixel X in der kreisförmigen Auswahl,

2.1 Berechnen Sie gemäß der obigen Formel den genauen Positionskoordinatenwert U

vor seiner Verformung. 2.2 Verwenden Sie die Interpolationsmethode, um R an der Position von U basierend auf zu berechnen die Position von U und die Werte in rBuff, gBuff und bBuff G, B und anderen Komponenten

2.3 Synthetisieren Sie R, G, B und andere Komponenten als Pixelwert bei , Es kann leicht auf der Grundlage des obigen Textes geschrieben werden. Um diese Art von Problem zu lösen, ist nicht der Code wichtig, sondern die Ideen und Algorithmen.

Das Folgende ist meine Implementierungsdemonstration:

Bildverformungsalgorithmus: Implementierung des Vorwärtsverformungswerkzeugs in der Photoshop Liquify-ToolboxIm obigen Bild ist die obere linke Ecke das Originalbild und die untere rechte Ecke das verformte Bild Bild. Der rote Kreis umgibt den Verformungsbereich. Wie Sie sehen können, ist die Verformung sehr gleichmäßig. Ich habe die Verformungsstärke s (Stärke) in den obigen Algorithmus eingeführt, Stärke = 20 im obigen Bild.

Bei der Einführung von Stärke muss die Formel geändert werden:

Bildverformungsalgorithmus: Implementierung des Vorwärtsverformungswerkzeugs in der Photoshop Liquify-ToolboxSehen Sie sich das Ergebnis an——

Originalbild:

Bildverformungsalgorithmus: Implementierung des Vorwärtsverformungswerkzeugs in der Photoshop Liquify-Toolbox Transformation, Stärke=20:

Transformation, Stärke=120:

Bildverformungsalgorithmus: Implementierung des Vorwärtsverformungswerkzeugs in der Photoshop Liquify-Toolbox

Diese Funktion in Photoshop und Meitu Xiuxiu kann kontinuierlich transformieren. Ich vermute, dass diese kontinuierliche Verformung durch eine Reihe grundlegender Verformungen in Reihe verbunden ist. Das heißt, das Ziehen der Maus von der M0- zur Mn-Position berechnet nicht nur die M0->Mn-Transformation, sondern führt auch eine Reihe dazwischenliegender Verformungen auf der Mausbahn ein . Punkte, M1, M2...Mn-1, und führen Sie dann eine Reihe von Transformationen am Bild durch, z. B. M0->M1, M1->M2,..., Mn-1->Mn.

Weitere Bildverformungsalgorithmen: Implementierung des Vorwärtsverformungstools in der Photoshop-Verflüssigungs-Toolbox. Bitte beachten Sie die PHP-Chinese-Website für verwandte Artikel!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn