2010-07-27 86 views
2

有没有人有任何关于调整一个图像的信息或建议,使其中的肤色与其他图像的肤色相匹配?以编程方式更改肤色

这是一个晦涩的问题,但我希望会有人遇到过这个问题!我这样做的目的是,我可以使用Python(或任何语言,只要以编程方式)替换另一张图像中的人脸。

我发现与主题相关的几篇文章:

但是,内容超出了我的意思,因此我无法根据他们所说的来确定究竟要做什么。

任何形式的建议,将不胜感激,因为我目前正在亏损做什么。

+0

+1为论文链接。我撇去第一个,发现它也超过了我的头。我认为对你而言,一个好的方法是试着通过参考文献来看看他们引用的过去的论文,特别是4.2节中的两篇论文。如果你回溯得足够远,你可能会发现一些更容易理解的东西,或者至少可以帮助你理解新的方法。 – misha 2011-01-28 12:35:57

回答

2

以下是关于如何入门的一些通用高级建议。

基本上,你在做什么是一个优化问题。这些算法被用于很多问题,并且有几种众所周知的方法可以做到这一点。他们归结为这

  1. 创建一个评分函数,可以告诉你一个单一数目的结果有多好。数字越大越好。
  2. 创建一个函数,它接受输入和一些参数并产生可以计分的输出
  3. 这很重要:根据参数#2,计分函数应该有点连续。如果您有两个参数,并将其绘制为3D(参数1,参数2,分数),则它看起来像是一个崎岖不平的大山丘。
  4. 你现在的工作是找到表面的最大值。你可能有两个以上的参数 - 在这种情况下,你有一个N-D曲面 - 但这个想法是一样的

查找爬山,遗传算法或优化问题。带有代码的好的Python书是Toby Segaran编写的“Programming Collective Intelligence”。

一般爬山是一样的东西:

  1. 制作的参数的很好的猜测
  2. 创造的产值和得分
  3. 改变一个参数略有
  4. 分数输出
  5. 如果最好继续朝这个方向前进,如果情况更糟,改变方向。
  6. 如果你被卡住 - 去表面的其他地方,并尝试在那里。
  7. 如果你找到一个当地最大,但它不够好 - 别处的尝试有

查找实际的算法虽然,他们比这个稍微复杂一些。

很多研究归结为提出一个好的评分函数和一个很好的方法来知道什么参数将工作以及如何使用它们。

使用此总体轮廓 - 只需尝试亮度/对比度作为您的输出生成功能(亮度和对比度是输入)。对于得分,你需要一种比较两张照片进行比赛的方式 - 首先选择一些简单的东西(也许硬编码一个区域来检查)。

一旦你开始行动了,你将会对如何做到这一点有更多的见解,并且可以回到论文的想法。

相关问题