基于OpenCV双边滤波器的人脸美化 .

人像美化类软件中通常会提供一个磨皮功能,可以使得皮肤变得柔和,去除痘痘和斑点。本文基于OpenCV中的双向滤波器实现了一个简单的人脸美化功能。

       双边滤波,Bilateral filter,是一种保持边缘的降噪平滑滤波器。注意两点,第一是保持边缘,这样对于人脸而言,可以在平滑皮肤区域的同时不破坏五官的边缘结构。第二,降噪平滑,这样就可以抑制皮肤上的斑点和痘痘,使得皮肤变得柔和。Bilateral filter同时利用了中心像素与周围像素在空间上和颜色强度上的差异,具体可参考这个链接:点击打开链接

       OpenCV中的cvSmooth功能支持双边滤波功能,调用格式为:

       cvSmooth(const CvArr* 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,滤波结果为:

         

          效果还是挺明显的。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值