2010-07-27 2 views
2

Est-ce que quelqu'un a des informations ou des conseils sur le réglage d'une image afin que les tons chair correspondent à ceux d'une autre image?Modification de la couleur de la peau par programme

C'est un peu une question obscure mais j'espérais qu'il y aurait quelqu'un qui a déjà rencontré ce problème! Le but de moi est de faire en sorte que je puisse remplacer un visage dans une image avec un visage d'un autre en utilisant Python (ou n'importe quel langage, juste tant qu'il est programmé).

J'ai trouvé plusieurs articles liés au thème:

Cependant, le contenu est au-delà de moi et donc je ne peux pas savoir exactement ce qu'il faut faire en fonction de ce qu'ils disent.

Toute sorte de conseil serait grandement apprécié parce que je suis actuellement à court de quoi faire.

+0

+1 pour donner des liens aux articles. J'ai parcouru le premier et j'ai trouvé que c'était aussi sur ma tête. Je pense qu'une bonne approche pour vous serait d'essayer de parcourir les références et de voir quels documents ils citent, en particulier les deux dans la section 4.2. Si vous remontez assez loin, vous pourriez trouver quelque chose d'un peu plus compréhensible, ou du moins vous aider à comprendre les nouvelles approches. – misha

Répondre

2

Voici quelques conseils généraux de haut niveau sur la façon de commencer.

Fondamentalement, ce que vous faites est un problème d'optimisation. Ces algorithmes sont utilisés pour beaucoup de problèmes, et il existe plusieurs façons bien connues de le faire. Ils font bouillir jusqu'à ce

  1. Créer une fonction de notation qui peut vous dire un numéro unique de la façon dont bon résultat que vous avez. Plus le nombre est grand, mieux c'est.
  2. Créer une fonction qui prend l'entrée et certains paramètres et produit une sortie qui peut être notée
  3. Ceci est important: La fonction de notation doit être quelque peu continue en fonction des paramètres de # 2. Si vous aviez deux paramètres et que vous les traciez en 3D (param1, param2, score), cela ressemblerait à une surface bosselée avec de grandes collines.
  4. Votre travail consiste maintenant à trouver le maximum dans 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

Rechercher Ascension de colline, algorithmes génétiques ou problèmes d'optimisation. Un bon livre de python avec le code est "Programming Collective Intelligence" par Toby Segaran.

En général colline escalade est quelque chose comme:

  1. faire une bonne estimation des paramètres
  2. Créer la sortie et le score
  3. Modifier un paramètre légèrement
  4. Score la sortie
  5. Si il vaut mieux continuer dans cette direction, si c'est pire, changer de direction.
  6. Si vous êtes coincé - allez ailleurs dans la surface et essayez là.
  7. Si vous trouvez un maximum local, mais ce n'est pas assez bon - aller ailleurs et essayer il

Consulter les algorithmes réels cependant, ils sont un peu plus complexe que cela. Une grande partie de la recherche se résume à trouver une bonne fonction de notation et un bon moyen de savoir quels paramètres vont fonctionner et comment les utiliser. Utilisation de ce schéma général - essayez simplement la luminosité/le contraste en tant que fonction génératrice 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 un match - pour commencer, choisissez quelque chose de simple (peut-être coder en dur une zone à vérifier). Une fois que vous aurez commencé, vous aurez plus d'idées sur la façon de procéder, et vous pourrez revenir aux articles pour trouver des idées.

Questions connexes