目前,市面上有很多的人脸美妆软件,大多数也都有自动去除皮肤斑点痘痘的功能,网上对于手动祛斑的算法已有了相关实现,可是,自动祛斑的算法却少之又少,今天,在这里简单讲一下这方面的开发经验。图玩智能科技为企业提供更稳定更优质的美颜产品,欢迎随时咨询www.toivan.com.算法
对于自动祛斑,首先是创建在肤色基础之上的,这个咱们必须搞清楚,咱们的祛斑是去除的皮肤上的斑点和痘痘。spa
要实现自动祛斑,步骤以下:开发
1,斑点自动检测;产品
2,斑点去除;it
对于斑点自动检测算法,如今,来讲一下本人认为可行的两种方法:class
1.1 Sobel算子斑点检测基础
使用Sobel进行斑点检测,使用Sobel算子来检测斑点的,确实,Sobel能够检测到大部分的斑点。软件
首先,使用Sobel对皮肤区域的灰度图进行边缘检测,获得结果图中你会发现,包含了大部分的斑点图像;方法
而后,对斑点进行过滤,滤除一些误检测的区域,好比图像边缘,人脸五官信息等等,这里可使用连通域判断来排除这些假斑点;经验
最后,就能够获得咱们想去除的一些斑点了。
注意,祛斑是不可能把全部咱们理解中的斑点去掉的,这一点你能够看下目前市面上的软件,究其缘由,是由于皮肤中仍是有不少东西跟斑点特征是同样的。
1.2高反差保留算法进行斑点检测
使用高反差保留算法进行斑点检测,这个主要来源于PS实现过程,咱们对高反差以后的灰度图进行个二值化,选取合适的阈值,便可获得斑点区域。具体实现效果,你们可使用PS实验一下。
以上就是本人实验过的两种斑点检测算法。
对于斑点去除,这里也有两种算法:
2.1,图像融合
咱们对原图进行大半径的高斯模糊,获得斑点位置的模糊值(只要模糊半径够大,这个斑点就越不明显),而后把这个斑点模糊值做为融合区域,对原图进行斑点融合,具体融合算法推荐使用泊松融合。
2.2,图像填充
有了斑点区域以后,咱们可使用inpaint算法,对斑点区域进行智能填充,这个算法效果较好,可是速度比较慢,这也是有得必有失了呵呵。
以上就是本人对自动祛斑算法的一些总结,两种算法本人都已实现。