目录
一、均值滤波(使用模板内所有像素的平均值代替模板中心像素灰度值)
二、中值滤波(计算模板内所有像素中的中值,并用所计算出来的中值体改模板中心像素的灰度值)
三、高斯滤波(对图像邻域内像素进行平滑时,邻域内不同位置的像素被赋予不同的权值)
四、双边滤波(比高斯滤波多了一个高斯方差sigma-d,它是基于空间分布的高斯滤波函数,以达到保边去噪目的)
以下是四种平滑处理滤波算法
一、均值滤波(使用模板内所有像素的平均值代替模板中心像素灰度值)
void blur(InputArray src, OutputArray dst, Size ksize, Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT )
参数含义:
InputArray src:源图像
OutputArray dst:目标图像
Size ksize:内核大小 Size(w,h),w为像素宽度,h为像素高度
Point anchor:锚点---默认值(-1,-1),表示取核的中心作为被平滑的点
int boarderType:用于推断图像外部像素的某种边界模式。----默认值BORDER_DEFAULT,一般不去管它。
例子:
blur(src,dst,Size(8,8));
二、中值滤波(计算模板内所有像素中的中值,并用所计算出来的中值体改模板中心像素的灰度值)
void medianBlur(InputArray src, OutputArray dst, int ksize)
参数含义:
InputArray src: 输入图像
OutputArray dst: 输出图像
int ksize: 滤波模板的尺寸大小
例子:
medianBlur(img,dst,(3,3));
三、高斯滤波(对图像邻域内像素进行平滑时,邻域内不同位置的像素被赋予不同的权值)
void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT )
参数含义:
InputArray src: 输入图像
OutputArray dst: 输出图像
Size ksize: 高斯内核大小
double sigmaX: 高斯核函数在X方向上的标准偏差
double sigmaY: 高斯核函数在Y方向上的标准偏差
int borderType=BORDER_DEFAULT: 推断图像外部像素的某种便捷模式,有默认值BORDER_DEFAULT,如果没有特殊需要不用更改
例子:
GaussianBlur(src, dst, Size(5, 5), 0, 0);
四、双边滤波(比高斯滤波多了一个高斯方差sigma-d,它是基于空间分布的高斯滤波函数,以达到保边去噪目的)
void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, int borderType=BORDER_DEFAULT )
参数含义:
InputArray src: 输入图像
OutputArray dst: 输出图像
int d: 表示在过滤过程中每个像素邻域的直径范围
double sigmaColor: 颜色空间过滤器的sigma值,这个参数的值越大,表明该像素邻域内有越宽广的颜色会被混合到一起,产生较大的半相等颜色区域
double sigmaSpace: 坐标空间中滤波器的sigma值,如果该值较大,则意味着颜色相近的较远的像素将相互影响,从而使更大的区域中足够相似的颜色获取相同的颜色。
int borderType=BORDER_DEFAULT: 用于推断图像外部像素的某种边界模式,有默认值BORDER_DEFAULT
例子:
bilateralFilter ( src, dst, 3,6, 3 );