Maison > interface Web > Tutoriel PS > le corps du texte

Algorithme de déformation d'image : implémentation de l'outil de déformation avant dans la boîte à outils Photoshop Liquify

高洛峰
Libérer: 2017-03-21 17:15:52
original
3744 Les gens l'ont consulté

Souvent, nous devons ajuster des parties d'une image, et cet ajustement doit être fluide et interactif. L’outil Forward Warp du filtre Liquify de Photoshop est un tel outil et il est très utile. Un outil similaire a la fonction amincissante du visage de Meitu Xiuxiu. Cet article décrit les principes et les algorithmes derrière ces outils.

Tout d'abord, prenons Meitu Xiuxiu comme exemple pour décrire brièvement la fonction de transformation directe.

Tout d'abord, utilisez la souris pour contrôler une sélection circulaire.

Algorithme de déformation dimage : implémentation de loutil de déformation avant dans la boîte à outils Photoshop Liquify

Ensuite, cliquez sur le bouton gauche de la souris et faites glisser dans une certaine direction pour produire une image de déformation vers l'avant en douceur :

Algorithme de déformation dimage : implémentation de loutil de déformation avant dans la boîte à outils Photoshop Liquify

Avec cet outil, vous pouvez ajuster des parties de l'image. Le degré de liberté est relativement grand, donc plus pratique.

Ce qui suit explique les principes de ce type d'algorithme.

Algorithme de déformation dimage : implémentation de loutil de déformation avant dans la boîte à outils Photoshop Liquify

Dans l'image ci-dessus, l'anneau ombré représente une sélection circulaire avec un rayon de rmax. Parmi eux, le point C est le point où l'on clique avec la souris, qui est le centre de la sélection circulaire. Faites glisser la souris de C à M, transformant le point U de l'image en point X. Par conséquent, le problème clé est de trouver la transformation inverse de la transformation ci-dessus - lorsqu'un point, trouvez la valeur de pixel de U. De cette manière, chaque pixel de la sélection circulaire est évalué pour obtenir l'image transformée.

L'article Interactive Image Warping d'Andreas Gustafsson donne cette formule de transformation inverse :

Algorithme de déformation dimage : implémentation de loutil de déformation avant dans la boîte à outils Photoshop Liquify

Les caractéristiques de cet algorithme de warping sont :

1 Seul le l'image dans la sélection circulaire est déformée

2 Plus le centre du cercle est proche, plus la déformation est grande, plus le bord est proche, plus la déformation est petite, et il n'y a pas de déformation à la limite

3 La déformation est douce

Les étapes spécifiques de mise en œuvre sont les suivantes :

1 Pour chaque pixel de la sélection circulaire, retirez ses composants R, V et B et stockez-les dans 3 Buffs (rBuff, gBuff, bBuff) (C'est-à-dire que les trois Buffs stockent respectivement les valeurs des canaux R, V et B de l'image originale dans la sélection)

2 Pour chaque pixel X dans la sélection circulaire,

2.1 Selon la formule ci-dessus, calculez la valeur exacte de la coordonnée de position U

avant sa déformation 2.2 Utilisez la méthode d'interpolation pour calculer R à la position de U en fonction de. la position de U et les valeurs​​dans rBuff, gBuff et bBuff et autres composants

2.3 Synthétiser R, G, B et d'autres composants en nouveaux pixels comme valeur de pixel à , il peut être facilement écrit sur la base du texte ci-dessus - pour résoudre ce genre de problème, ce qui est important n'est pas le code, mais les idées et les algorithmes.

Ce qui suit est ma démonstration de mise en œuvre :

Algorithme de déformation dimage : implémentation de loutil de déformation avant dans la boîte à outils Photoshop LiquifyDans l'image ci-dessus, le coin supérieur gauche est l'image originale et le coin inférieur droit est l'image déformée. image. Le cercle rouge entoure la zone de déformation. Comme vous pouvez le constater, la déformation est très douce. J'ai introduit la force de déformation s(force) dans l'algorithme ci-dessus, force=20 dans l'image ci-dessus.

Présentant la force, la formule doit être modifiée. Voici ma version modifiée de la formule :

Algorithme de déformation dimage : implémentation de loutil de déformation avant dans la boîte à outils Photoshop LiquifyRegardez le résultat——

Photo originale :

Algorithme de déformation dimage : implémentation de loutil de déformation avant dans la boîte à outils Photoshop Liquify Transformation, force=20 :

Transformation, force=120 :

Algorithme de déformation dimage : implémentation de loutil de déformation avant dans la boîte à outils Photoshop Liquify

Cette fonction dans Photoshop et Meitu Xiuxiu peut se transformer en continu. Je suppose que cette déformation continue est reliée en série par une série de déformations de base. Autrement dit, faire glisser la souris de la position M0 à Mn ne calcule pas seulement la transformation M0->Mn, mais introduit une série de déformations intermédiaires sur la trajectoire de la souris. . Points, M1, M2...Mn-1, puis effectuez une série de transformations sur l'image, telles que M0->M1, M1->M2,..., Mn-1->Mn.

Pour plus d'algorithmes de déformation d'image : implémentation de l'outil de déformation directe dans la boîte à outils de liquéfaction de Photoshop, veuillez faire attention au site Web PHP chinois pour les articles connexes !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal