29 高斯双边模糊
opencv
知识点:
- 高斯双边模糊 -
bilateralFilter
本课所解决的问题:
- 如何理解高斯双边模糊?
- 如何实现高斯双边模糊?
1.高斯双边模糊
前面我们介绍的图像卷积处理无论是均值还是高斯都是属于模糊卷积,它们都有一个共同的特点就是模糊之后图像的边缘信息不复存在,受到了破坏。
边缘保留滤波算法(EPF)有能力通过卷积处理实现图像模糊的同时对图像边缘不会造成破坏,滤波之后的输出完整的保存了图像整体边缘(轮廓)信息。
最常见的边缘保留滤波算法有以下几种:
- 高斯双边模糊
- Meanshift均值迁移模糊
- 局部均方差模糊
opencv
中对边缘保留滤波还有一个专门的API
高斯模糊是考虑图像空间位置对权重的影响,但是它没有考虑图像像素分布对图像卷积输出的影响。
双边模糊考虑了像素值分布的影响,对像素值空间分布差异较大的进行保留从而完整的保留了图像的边缘信息。双边模糊可以去除无关噪声,同时保持较好的边缘信息。
但是,其速度比绝大多数滤波器都慢。
2.高斯双边模糊演示
在opencv
中,如果我们想要实现高斯双边模糊,就要用到这样一个API
bilateralFilter
具体介绍如下
bilateralFilter
将双边过滤器应用于图像
共6个参数
第1个参数 输入
第2个参数 输出
第3个参数 过滤期间使用的每个像素邻域的直径(如为非正数,则根据sigmaSpac计算)
第4个参数 sigmaColor(在颜色空间中的过滤标准差)
sigmaColor一般取值大一点,
大一点的话根据二维高斯函数计算所得的值越小,越趋近于0,影响越低
第5个参数 sigmaSpace(在坐标空间中的过滤标准差)
第6个参数 图像边缘处理方式
(超出初学者范围,暂不学习)
演示如下
//函数实现
void bifilter_demo(Mat& image);
//函数定义
void QuickDemo::bifilter_demo(Mat& image) {
imshow("原图", image);
Mat dst;
bilateralFilter(image, dst, 0, 100, 10);
imshow("高斯双边模糊", dst);
}