基于双边滤波的人脸美化
2013-08-22 19:16
274 查看
人像美化类软件中通常会提供一个磨皮功能,可以使得皮肤变得柔和,去除痘痘和斑点。本文基于OpenCV中的双边滤波器实现了一个简单的人脸美化功能。
双边滤波,Bilateral filter,是一种保持边缘的降噪平滑滤波器。注意两点,第一是保持边缘,这样对于人脸而言,可以在平滑皮肤区域的同时不破坏五官的边缘结构。第二,降噪平滑,这样就可以抑制皮肤上的斑点和痘痘,使得皮肤变得柔和。Bilateral filter同时利用了中心像素与周围像素在空间上和颜色强度上的差异,具体可参考这个链接:点击打开链接。
OpenCV中的cvSmooth功能支持双边滤波功能,调用格式为:
cvSmooth(constCvArr* src, CvArr* dst, int smoothtype=CV_BILATERAL, int size1=3, int size2=0,double sigma1=0, double sigma2=0 )。其中要使用双边滤波功能,需指定size1,size3和size4三个参数,分别对应窗口大小size1*size1, color
sigma和spatical sigma.
需要特别提醒的是,OpenCV中的Bilateral filater不支持原址运算,也就是说src和dst必须指定为不同的图像,如果指定为同一副图像,会出现运行时崩溃。
下图为一副网络图片,使用OpenCV中的双边滤波器进行处理,注意需要用cvCreateImage创建一副size、depth和channel与源图像相同的图像,参数设置size1=7,size2=0(无效参数),size3=70,size4=10。
[align=left] 滤波结果如下,可见皮肤平滑了不少。
[/align]
双边滤波,Bilateral filter,是一种保持边缘的降噪平滑滤波器。注意两点,第一是保持边缘,这样对于人脸而言,可以在平滑皮肤区域的同时不破坏五官的边缘结构。第二,降噪平滑,这样就可以抑制皮肤上的斑点和痘痘,使得皮肤变得柔和。Bilateral filter同时利用了中心像素与周围像素在空间上和颜色强度上的差异,具体可参考这个链接:点击打开链接。
OpenCV中的cvSmooth功能支持双边滤波功能,调用格式为:
cvSmooth(constCvArr* src, CvArr* dst, int smoothtype=CV_BILATERAL, int size1=3, int size2=0,double sigma1=0, double sigma2=0 )。其中要使用双边滤波功能,需指定size1,size3和size4三个参数,分别对应窗口大小size1*size1, color
sigma和spatical sigma.
需要特别提醒的是,OpenCV中的Bilateral filater不支持原址运算,也就是说src和dst必须指定为不同的图像,如果指定为同一副图像,会出现运行时崩溃。
下图为一副网络图片,使用OpenCV中的双边滤波器进行处理,注意需要用cvCreateImage创建一副size、depth和channel与源图像相同的图像,参数设置size1=7,size2=0(无效参数),size3=70,size4=10。
[align=left] 滤波结果如下,可见皮肤平滑了不少。
[/align]
相关文章推荐
- 基于OpenCV双边滤波器的人脸美化 .
- 基于中值滤波或双边滤波方式的图像去雾效果的研讨
- 基于中值滤波或双边滤波方式的图像去雾效果的研讨。
- 基于中值滤波或双边滤波方式的图像去雾效果的研讨。
- 5基于opencv的非线性滤波(中值滤波_双边滤波)
- 基于中值滤波或双边滤波方式的图像去雾效果的研讨。
- 基于Caffe的人脸检测实现
- 基于python OpenCV实现动态人脸检测
- 云中双边滤波器——基于opencv图像结构
- 高斯、中值、均值、双边滤波的效果
- 【转】基于OpenCV的人脸识别设计方案
- 对图像进行中值滤波的几种写法以及基于排序阈值的开关中值滤波算法
- 基于PCA的人脸特征提取1
- 基于Python的开源人脸识别库:离线识别率高达99.38%
- 基于Python的开源人脸识别库:离线识别率高达99.38%
- 基于PCA和SVM的人脸识别系统-error修改
- 快速双边滤波 附完整C代码
- Objective-C基于CIDetector的人脸检测
- 基于Gabor滤波的纹理分割 Texture Segmentation Using Gabor Filters
- 基于PCA的人脸特征抽取