美颜之祛斑算法

▼魔方 西西 提交于 2020-08-10 05:50:33

目前,市面上有不少的人脸美妆软件,大多数也都有自动去除皮肤斑点痘痘的功能,网上对于手动祛斑的算法已有了相关实现,但是,自动祛斑的算法却少之又少,今天,在这里简单讲一下这方面的开发经验。图玩智能科技为企业提供更稳定更优质的美颜产品,欢迎随时咨询www.toivan.com.

对于自动祛斑,首先是建立在肤色基础之上的,这个我们必须搞清楚,我们的祛斑是去除的皮肤上的斑点和痘痘。

要实现自动祛斑,步骤如下:

1,斑点自动检测;

2,斑点去除;

对于斑点自动检测算法,现在,来说一下本人认为可行的两种方法:

1.1 Sobel算子斑点检测

使用Sobel进行斑点检测,使用Sobel算子来检测斑点的,确实,Sobel可以检测到大部分的斑点。

首先,使用Sobel对皮肤区域的灰度图进行边缘检测,得到结果图中你会发现,包含了大部分的斑点图像;

然后,对斑点进行过滤,滤除一些误检测的区域,比如图像边缘,人脸五官信息等等,这里可以使用连通域判断来排除这些假斑点;

最后,就可以得到我们想去除的一些斑点了。

注意,祛斑是不可能把所有我们理解中的斑点去掉的,这一点你可以看下目前市面上的软件,究其原因,是因为皮肤中还是有很多东西跟斑点特征是一样的。

1.2高反差保留算法进行斑点检测

使用高反差保留算法进行斑点检测,这个主要来源于PS实现过程,我们对高反差之后的灰度图进行个二值化,选取合适的阈值,即可得到斑点区域。具体实现效果,大家可以使用PS实验一下。

以上就是本人实验过的两种斑点检测算法。

对于斑点去除,这里也有两种算法:

2.1,图像融合

我们对原图进行大半径的高斯模糊,得到斑点位置的模糊值(只要模糊半径够大,这个斑点就越不明显),然后把这个斑点模糊值作为融合区域,对原图进行斑点融合,具体融合算法推荐使用泊松融合。

2.2,图像填充

有了斑点区域之后,我们可以使用inpaint算法,对斑点区域进行智能填充,这个算法效果较好,但是速度比较慢,这也是有得必有失了呵呵。

以上就是本人对自动祛斑算法的一些总结,两种算法本人都已实现。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!