非线性滤波
如果噪声是散粒噪声而不是高斯噪声的时候,用高斯滤波对图像进行模糊,噪声像素不会被去除,只是转换为更为柔和但是仍然可见的散粒。
中值滤波
MedianFilter是一种典型的非线性滤波技术,基本思想是用像素领域的灰度值的中值代替像素点的灰度值,一些情况下对保留图像边缘细节有效果。
对于斑点噪声和椒盐噪声效果尤其好,不依赖于领域中与典型值差别大的值。
- 中值滤波vs均值滤波
- 优势:消除噪声,保留边缘的能力都略胜一筹,滤除脉冲干扰非常有效果
- 劣势:花费时间前者是后者五倍以上,中值滤波对于细节多的图像不太合适
双边滤波
Bilateral Filter是一种非线性滤波方法,姐和图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似值,达到去噪保边。
函数公式比较复杂,加权系数取决于定义域核和值域核的乘积。
非线性滤波相关核心API函数
中值滤波 medianBlur函数
该函数用中值滤波器平滑处理一张图像,三个参数。
- 参数1 inputarray src,要求1 3 4 通道的Mat, ksize为3or5时候,深度是CV_8U CV_16U CV_32F 较大孔径尺寸的图片,只能是CV_8U
- 参数2 outputArray dst;
- 参数3 int 类型ksize 孔径的线性尺寸,必须是大于一的奇数(3 5 7…)
双边滤波 bilateralFilter函数
- 参数1 src8位或者浮点型单通道、三通道图像
- 参数2 dst 目标图像
- 参数3 int类型d 过滤过程中每个像素领域的直径,<=0时候,opencv会从参数5来计算他
- 参数4 double sigmaColor 颜色空间滤波器的sigma值 越大,该像素领域有越宽广的颜色会混合一起
- 参数5 double sigmaSpace 坐标空间中滤波器的sigma值,坐标空间的标注方差,越大,表示越远的像素灰相互影响,是更大的区域中足够相似的颜色获取相同的颜色;d>0时,领域大小与sigmaSpac无关,否则,d正比于sigmaSpae;
- 参数6 int borderType 有默认值
运行例程后得到的效果图发现 中值滤波对原图颠覆很大,双边滤波与原图差别不大,要仔细看才能看出效果。