美顏之祛斑算法

目前,市面上有不少的人臉美妝軟件,大多數也都有自動去除皮膚斑點痘痘的功能,網上對於手動祛斑的算法已有了相關實現,但是,自動祛斑的算法卻少之又少,今天,在這裏簡單講一下這方面的開發經驗。圖玩智能科技爲企業提供更穩定更優質的美顏產品,歡迎隨時諮詢www.toivan.com.

對於自動祛斑,首先是建立在膚色基礎之上的,這個我們必須搞清楚,我們的祛斑是去除的皮膚上的斑點和痘痘。

要實現自動祛斑,步驟如下:

1,斑點自動檢測;

2,斑點去除;

對於斑點自動檢測算法,現在,來說一下本人認爲可行的兩種方法:

1.1 Sobel算子斑點檢測

使用Sobel進行斑點檢測,使用Sobel算子來檢測斑點的,確實,Sobel可以檢測到大部分的斑點。

首先,使用Sobel對皮膚區域的灰度圖進行邊緣檢測,得到結果圖中你會發現,包含了大部分的斑點圖像;

然後,對斑點進行過濾,濾除一些誤檢測的區域,比如圖像邊緣,人臉五官信息等等,這裏可以使用連通域判斷來排除這些假斑點;

最後,就可以得到我們想去除的一些斑點了。

注意,祛斑是不可能把所有我們理解中的斑點去掉的,這一點你可以看下目前市面上的軟件,究其原因,是因爲皮膚中還是有很多東西跟斑點特徵是一樣的。

1.2高反差保留算法進行斑點檢測

使用高反差保留算法進行斑點檢測,這個主要來源於PS實現過程,我們對高反差之後的灰度圖進行個二值化,選取合適的閾值,即可得到斑點區域。具體實現效果,大家可以使用PS實驗一下。

以上就是本人實驗過的兩種斑點檢測算法。

對於斑點去除,這裏也有兩種算法:

2.1,圖像融合

我們對原圖進行大半徑的高斯模糊,得到斑點位置的模糊值(只要模糊半徑夠大,這個斑點就越不明顯),然後把這個斑點模糊值作爲融合區域,對原圖進行斑點融合,具體融合算法推薦使用泊松融合。

2.2,圖像填充

有了斑點區域之後,我們可以使用inpaint算法,對斑點區域進行智能填充,這個算法效果較好,但是速度比較慢,這也是有得必有失了呵呵。

以上就是本人對自動祛斑算法的一些總結,兩種算法本人都已實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章