图像滤波的作用: 在尽可能保留图像细节特征的条件下,对目标图像的噪声进行抑制。
常见的图像滤波器:
线性滤波: 均值滤波 高斯滤波
非线性滤波:中值滤波 双边滤波
*均值滤波
均值滤波,其实就是邻域平均法,即用一片图像区域的各个像素的均值来代替原图像中的各个像素值。滤波器的内核:
这个内核一看就是在求平均值
内核的系数,其实就是加权值,不同的加权值代表某些像素的重要性更大。上述内核的加权值都是1,表示邻域的每个像素的一样重要。
不同加权值的内核表示:
一幅M*N的图像f(x,y)经过一个大小m*n的加权均值滤波器滤波的过程可以用下式表达(分母为模板各个系数之和):
*高斯滤波
高斯滤波器是一类根据高斯函数的形状来选择权值得线性平滑滤波器。高斯滤波器对于抑制服从正态分布的噪声非常有效。一位零均值高斯函数如下:
以下是C语言的一维高斯内核:
const double eps=1e-6; // 高斯函数 double guassian(double x,double sigma) { return exp(-(x*x)/(2*sigma*sigma+eps)); } // 计算高斯核 void guassiankernel(double* kernel,int size, double sigma) { double sum=0; double* data=kernel; int i; for(i=0;i<size;++i) { double index=(size>>1)-i; if(size&1) // size为奇数 { *(data+i)=guassian(index,sigma); } else // size为偶数 { index-=0.5; *(data+i)=guassian(index,sigma); } sum+=*(data+i); } // 归一化 for(i=0;i<size;++i) { *(data+i)/=sum; } } |
*中值滤波
过滤脉冲噪声,椒盐噪声很有效果
顾名思义,中值滤波就是选择每个像素的邻域像素中的中值作为输出。