【OpenCV学习】第6课:图像模糊(中值滤波,高斯双边滤波)

仅自学做笔记用,后续有错误会更改

理论
中值滤波:对核内数值先进行排序,再取中间那个值
在这里插入图片描述
注1:中值滤波属于统计学的排序滤波器
注2:中值滤波对椒盐噪声有很好的抑制作用

高斯双边滤波(美颜磨皮效果一般都是用的这个):
1.均值滤波:无法克服边缘像素信息丢失缺陷,因为它是基于平均权重的
2.高斯滤波:克服了该缺陷,但是无法完全避免,因为没有考虑到像素值的不同
3.高斯双边滤波:是一种边缘保留的滤波方法,避免了边缘数据的丢失,保留了图像轮廓不变
4.高斯双边滤波有两个核, 一个空域核(上边图那个绿色的格子),一个值域核(用来保留像素值的差异,将像素值的差距限定在一定范围内,差距太大的就不用去模糊)
5.高斯双边滤波 一般配合 锐化卷积操作,可以达到美颜的效果

相关API
中值滤波:medianBlur(Mat src, Mat dst, ksize);
高斯双边模糊: bilateralFilter(Mat src, Mat dst,1 d = 15,150,3)
-15 计算的半径,半径之内的像素都会被纳入计算,如果提供-1则根据sigma space参数取值
-150 sigma color决定了多少差值之内的像素会被计算
-3 sigma space 如果d的值大于0,则这个3就无效,否则就是根据这个值来推算d的值

代码示例

Mat srcImageMat,dstImageMat;
srcImageMat = imread(...);

// 中值滤波
// mediaBlur(srcImageMat, dstImageMat, 3);
// 高斯双边滤波
// bilateralFilter(srcImageMat, dstImageMat, 15, 100, 5);
// 高斯双边滤波 + 锐化卷积(也就是磨皮效果演示)
bilateralFilter(srcImageMat, dstImageMat, 15, 100, 5);
Mat resultImg;
Mat kernel = (MAT_<int>(3, 3) << 0,-1 ,0, -1, 5, -1, 0, -1, 0);
filter2D(dstImageMat, resultImg, -1, kernel , Point(-1, -1), 0);
imshow("Final Result", resultImg);

效果截图:
中值滤波效果截图:
在这里插入图片描述

高斯双边滤波效果截图:
在这里插入图片描述
高斯双边滤波 + 锐化 效果截图(效果就是磨皮):
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值