2010-07-27 260 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. 如果你找到一個當地最大,但它不夠好 - 別處的嘗試有

查找實際的算法雖然,他們比這個稍微複雜一些。

很多研究歸結爲提出一個好的評分函數和一個很好的方法來知道什麼參數將工作以及如何使用它們。

使用此總體輪廓 - 只需嘗試亮度/對比度作爲您的輸出生成功能(亮度和對比度是輸入)。對於得分,你需要一種比較兩張照片進行比賽的方式 - 首先選擇一些簡單的東西(也許硬編碼一個區域來檢查)。

一旦你開始行動了,你將會對如何做到這一點有更多的見解,並且可以回到論文的想法。

相關問題