4 votes

Changer la couleur de la peau de manière programmatique

Quelqu'un a-t-il des informations ou des conseils sur l'ajustement d'une image pour que les tons de la peau correspondent à ceux d'une autre image ?

C'est une question un peu obscure mais j'espérais que quelqu'un avait déjà rencontré ce problème auparavant ! Le but est de pouvoir remplacer un visage d'une image par un visage d'une autre image en utilisant Python (ou n'importe quel langage, du moment que c'est programmé).

J'ai trouvé plusieurs documents relatifs à ce sujet :

Cependant, le contenu m'échappe et je ne peux donc pas savoir ce qu'il faut faire exactement sur la base de ce qu'ils disent.

Tout conseil serait le bienvenu, car je ne sais pas quoi faire.

4voto

Lou Franco Points 48823

Voici quelques conseils généraux de haut niveau pour vous aider à démarrer.

Fondamentalement, ce que vous faites est un problème d'optimisation. Ces algorithmes sont utilisés pour un grand nombre de problèmes, et il existe plusieurs façons bien connues de procéder. Elles se résument à ceci

  1. Créez une fonction de notation qui puisse vous indiquer en un seul chiffre la qualité de votre résultat. Plus le chiffre est élevé, mieux c'est.
  2. Créez une fonction qui prend l'entrée et certains paramètres et produit une sortie qui peut être évaluée.
  3. Ceci est important : la fonction de notation doit être quelque peu continue en fonction des paramètres à #2. Si vous aviez deux paramètres et que vous traciez la fonction en 3D (param1, param2, score), cela ressemblerait à une surface bosselée avec de grandes collines.
  4. Votre travail consiste maintenant à trouver le maximum de la surface. Vous pouvez avoir plus de deux paramètres - dans ce cas, vous avez une surface N-D - mais l'idée est la même.

Recherchez les termes "Hill-climbing", "algorithmes génétiques" ou "problèmes d'optimisation". Un bon livre en python avec du code est "Programming Collective Intelligence" par Toby Segaran.

En général, l'escalade de colline est quelque chose comme :

  1. Faites une bonne estimation des paramètres
  2. Créer la sortie et le score
  3. Modifier légèrement un paramètre
  4. Noter le résultat
  5. Si c'est mieux, continuez dans cette direction, si c'est pire, changez de direction.
  6. Si vous êtes bloqué, allez ailleurs dans la surface et essayez là.
  7. Si vous trouvez un maximum local, mais qu'il n'est pas assez bon, allez ailleurs et essayez là-bas.

Consultez les algorithmes réels, ils sont un peu plus complexes que cela.

Une grande partie de la recherche se résume à l'élaboration d'une bonne fonction de notation et d'un bon moyen de savoir quels paramètres fonctionneront et comment les utiliser.

En utilisant ce schéma général, essayez simplement la luminosité/contraste comme fonction de génération de sortie (la luminosité et le contraste sont des entrées). Pour la notation, vous aurez besoin d'un moyen de comparer deux photos pour trouver une correspondance. Pour commencer, choisissez quelque chose de simple (peut-être en codant en dur une zone à vérifier).

Une fois que vous l'aurez mis en place, vous aurez une meilleure idée de la manière de procéder et vous pourrez vous reporter aux documents pour trouver des idées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X