以编程方式更改肤色

时间:2010-07-27 16:15:01

标签: python image-processing image-manipulation skin

是否有人有任何关于调整图像的信息或建议,以使其中的肤色与其他图像的肤色相匹配?

这是一个有点模糊的问题,但我希望有人之前遇到过这个问题!我这样做的目的是,我可以使用Python(或任何语言,只要它是以编程方式)替换一个图像中的面部与另一个图像中的面部。

我找到了几篇与该主题相关的论文:

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

任何形式的建议都会受到高度赞赏,因为我目前无法做什么。

1 个答案:

答案 0 :(得分:4)

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

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

  1. 创建一个评分函数,可以告诉您一个结果有多好。数字越大越好。
  2. 创建一个获取输入和一些参数并生成可评分输出的函数
  3. 这很重要:根据#2的参数,评分函数应该有些连续。如果您有两个参数,并以3D(param1,param2,score)绘制它,它看起来就像一个有大山丘的凹凸不平的表面。
  4. 你现在的工作是找到表面的最大值。你可能有两个以上的参数 - 在这种情况下,你有一个N-D表面 - 但想法是相同的
  5. 查看爬山,遗传算法或优化问题。一本带有代码的好书是由Toby Segaran编写的“编程集体智慧”。

    一般来说,爬山就像:

    1. 好好猜测参数
    2. 创建输出和得分
    3. 稍微更改一个参数
    4. 对输出进行评分
    5. 如果最好继续朝着这个方向前进,如果情况更糟,就改变方向。
    6. 如果你被卡住了 - 去表面的其他地方试试。
    7. 如果你找到一个本地最大值,但它不够好 - 去其他地方并尝试
    8. 查看实际算法,但它们比这更复杂。

      许多研究归结为提出一个好的评分函数,以及了解哪些参数将起作用以及如何使用它们的好方法。

      使用此大致轮廓 - 只需尝试亮度/对比度作为输出生成功能(亮度和对比度输入)。对于评分,您需要一种比较两张照片的方法 - 开始,选择一些简单的东西(可能是硬编码区域来检查)。

      一旦你了解了,你将对如何做到这一点有更深入的了解,并可以回到论文中寻找想法。

相关问题