线性滤波
方框滤波——boxFilter
模糊图片
void boxFilter(
InputArray src, //输入图像
OutputArray dst, //输出图像
int ddepth, //图像深度,-1指原图深度
Size ksize, //卷积核大小 如Size(3,3)
Point anchor=Point(-1,-1), //瞄点(被平滑的那个点)
boolnormalize=true, //内核是否进行归一化
int borderType=BORDER_DEFAULT //边界模式,一般不管
)
均值滤波——blur
图像去噪,同时破坏了图像的细节部分
void blur(
InputArray src, //输入图像
OutputArraydst, //输出图像
Size ksize, //卷积核
Point anchor=Point(-1,-1), //瞄点
int borderType=BORDER_DEFAULT //边界类型
)
高斯滤波——GaussianBlur
消除高斯噪声,减噪
void GaussianBlur(
InputArray src, //输入图像
OutputArray dst, //输出图像
Size ksize, //卷积核大小
double sigmaX, //高斯核函数在X方向的的标准偏差 (建议给值)
double sigmaY=0, //高斯核函数在Y方向的的标准偏差 (建议给值)
intborderType=BORDER_DEFAULT //边界类型
)
代码示例
boxFilter(img, outBox, -1,Size(5, 5));
blur(img, outBlur, Size(7, 7));
GaussianBlur( img, outGaussian, Size( 5, 5 ), 0, 0 );
非线性滤波
中值滤波——medianBlur
去除脉冲噪声、椒盐噪声的同时能保留图像边缘细节
void medianBlur(
InputArray src, //输入
OutputArray dst, //输出
int ksize //核大小
)
双边滤波——
保持边缘、降噪平滑
void bilateralFilter(
InputArray src, //输入
OutputArray dst, //输出
int d, //每个像素邻域直径
double sigmaColor, //颜色空间滤波器的sigma值。这个参数的值越大,就表明该像素邻域内有更宽广的颜色会被混合到一起,产生较大的半相等颜色区域
double sigmaSpace, //Space坐标空间中滤波器的sigma值,坐标空间的标注方差。他的数值越大,意味着越远的像素会相互影响,从而使更大的区域足够相似的颜色获取相同的颜色。当d>0,d指定了邻域大小且与sigmaSpace无关。否则,d正比于sigmaSpace。
int borderType=BORDER_DEFAULT //边界模式
)
代码示例
medianBlur( img, outMedian, 7);
bilateralFilter( img, outBilateral, 25, 25*2, 25/2 );