美颜图像保边MeanShift滤波算法与实现

喜夏-厌秋 提交于 2020-08-16 18:05:50

本文将尝试使用MeanShift滤波来做磨皮算法;图玩智能科技为企业提供更稳定更优质的美颜产品及服务,欢迎随时咨询www.toivan.com

 

MeanShift即均值漂移,最早由Fukunage在1975年提出。

MeanShift一般是指一个迭代的步骤,即先算出当前点的偏移均值,然后以此为新的起始点,继续移动,直到满足一定的结束条件;MeanShift广泛应用于图像聚类、平滑、分割和跟踪方面,本文主要讲的是图像的平滑滤波,尝试应用于人像的磨皮算法中;

 

我们使用一张图来讲解MeanShift的算法原理

Fig.1基本MeanShift算法示意图

 

 

我们假设起始位置的滤波半径为Radius,也就是图a中的蓝色圆形区域半径,图a为起始位置,假设红色点为目标像素,每个目标像素包含位置特征和像素RGB特征;

 

1,计算图a起始位置处,半径Radius内目标像素的位置特征和像素RGB特征的均值M,如图c所示;

 

2,将起始位置的初始特征(位置特征和RGB特征)更新为特征M;

 

3,计算M处半径Radius区域内,目标像素的均值特征M;

 

4,按照1-3的过程进行迭代,直到满足一定的迭代次数和限制条件;

 

5,图a中起始位置的RGB特征值即为迭代完成时M的RGB特征值,如图f所示;

 

整个过程也叫均值漂移,实际上不是位置从图a起始值漂移到了f图中的位置,而是图a和图f处的特征值归为了一类,当然这里指的是RGB像素值;

 

这里我们只讲最基本的MeanShift平滑滤波算法,对于改进的MeanShift算法不做讲解;

 

算法流程如下:

 

1,假设当前像素点P(i,j),滤波半径为R,迭代次数阈值为maxIter,像素差值阈值为threshold;

 

2,计算以P为中心,R为半径的圆形区域S内目标像素的均值特征,包含像素rgb的均值特征和位置的均值特征(质心),计算公式如下:

 

                           

 

 

其中K为核函数,这里取得是|x-y|;

 

1,将P的特征值M更新为2中计算的新特征值;

 

2,按照2-3的步骤进行迭代,直到满足迭代次数阈值maxIter停止,P处的像素值即迭代终结时的rgb特征值;

 

上述即为MeanShift平滑滤波算法的流程,该算法最大缺点为速度慢,本文用它来尝试磨皮效果,采用YCbCr颜色空间,仅对Y通道处理,以此加速;

 

效果图如下所示:

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