线性滤波
方框滤波
1. void boxFilter(InputArray src, OutputArray, dst, int ddepth, Size ksize, Point Anchor = Point(-1, -1), bool normalize = true, int borderType = BORDER_DEFAULT)
第一个参数 输入
第二个参数 输出
第三个参数 输出图像深度,为负时(-1)时表示和源图像一致
第四个参数 内核大小
后面的参数用默认即可
第五个参数 锚点坐标,如果都为负(Point(-1,-1)),即取内核中点为锚点
第六个参数 归一化
第七个参数 边界类型,取BORDER_DEFAULT即可
均值滤波
1. void blur(InputArray src, OutputArray, Size ksize, Point Anchor = Point(-1, -1), int borderType = BORDER_DEFAULT)
第一个参数 输入
第二个参数 输出
第三个参数 内核大小
后面的参数用默认即可
第四个参数 锚点坐标,如果都为负(Point(-1,-1)),即取内核中点为锚点
第五个参数 边界类型,取BORDER_DEFAULT即可
blur是特殊的boxFilter, ddepth取-1, normalize取true
高斯滤波
1. void GaussianBlurr(InputArray src, OutputArray, Size ksize, double sigmaX, double sigmaY = 0, int borderType = BORDER_DEFAULT)
第一个参数 输入
第二个参数 输出
第三个参数 内核大小
第四个参数 核函数X方向上的偏差(???),
第五个参数 核函数Y方向上的偏差(???),默认为0,
当这个值为0,前一个参数sigmaX不为0时,自动把这个值设为和sigmaX一样的值,
如果sigmaX和sigmaY均为0时,会自动通过ksize.width和ksize.height计算sigmaX和sigmaY
后面的参数用默认即可
第六个参数 边界类型,取BORDER_DEFAULT即可
非线性滤波
中值滤波
1. medianBlur(InputArray src, OutputArray dst, int ksize)
第一个参数 输入
第二个参数 输出
第三个参数 孔径大小
中值滤波就是将每一个点的灰度值设为在它周围一个区域内的所有点灰度值的中间值
首先是排序它和它周围点的灰度值,然后找到中间值,最后修改,所以一般孔径大小取奇数,方便取值,为偶数时区中间两个的平均值
双边滤波
1. void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, int borderType = BORDER_DEFAULT)
第一个参数 输入
第二个参数 输出
第三个参数 孔径大小 当d<=0时,会自动通过第五个参数sigmaSpace来计算d值,此时与sigmaSpace成正比
第四个参数 不同颜色混合程度,这个值越大,越宽广的颜色会被混到一起
第五个参数 像素之间的影响程度,这个值越大,距离越远的像素的会相互影响