以编程方式更改肤色

问题描述 投票:0回答:2

有人有关于调整一张图像以使其中的肤色与另一张图像的肤色相匹配的信息或建议吗?

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

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

但是,内容超出了我的范围,因此我无法根据他们所说的来弄清楚到底该怎么做。

任何形式的建议将不胜感激,因为我目前不知道该怎么做。

python image-processing image-manipulation skin
2个回答
4
投票

这里有一些关于如何开始的一般性高级建议。

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

  1. 创建一个评分函数,可以通过一个数字告诉您结果的好坏。 数字越大越好。
  2. 创建一个函数,接受输入和一些参数并产生可评分的输出
  3. 这很重要:基于#2 的参数,评分函数应该在某种程度上是连续的。 如果您有两个参数,并以 3D 形式绘制它(参数 1、参数 2、分数),它看起来就像一个带有大山丘的凹凸不平的表面。
  4. 你现在的工作是找到表面的最大值。 你可能有两个以上的参数——在这种情况下,你有一个 N 维表面——但想法是一样的

查找爬山、遗传算法或优化问题。 Toby Segaran 的《Programming Collective Intelligence》是一本很好的带有代码的 Python 书籍。

一般爬山是这样的:

  1. 充分猜测参数
  2. 创建输出和分数
  3. 稍微改变一个参数
  4. 对输出进行评分
  5. 如果更好,就继续朝这个方向前进,如果更糟,就改变方向。
  6. 如果你被困住了——去地表的其他地方尝试一下。
  7. 如果你找到了局部最大值,但还不够好——去其他地方尝试一下

查看实际的算法,它们比这更复杂。

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

使用这个总体轮廓——只需尝试将亮度/对比度作为输出生成函数(亮度和对比度是输入)。 为了评分,您需要一种比较两张照片进行匹配的方法——首先,选择一些简单的东西(也许硬编码一个区域来检查)。

一旦开始,您将对如何做到这一点有更多的见解,并且可以返回论文寻求想法。


0
投票

您找到解决这个问题的方法了吗?我面临着同样的问题。请分享您的进展。

© www.soinside.com 2019 - 2024. All rights reserved.