[Opencv初探之六]:图像滤波
图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。消除图像中的噪声成分叫作图像的平滑化或滤波操作。信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没。因此一个能降低高频成分幅度的滤波器就能够减弱噪声的影响。
图像滤波的目的有两个:一是抽出对象的特征作为图像识别的特征模式;另一个是为适应图像处理的要求,消除图像数字化时所混入的噪声。
而对滤波处理的要求也有两条:一是不能损坏图像的轮廓及边缘等重要信息;二是使图像清晰视觉效果好。
滤波处理分为两大类:线性滤波和非线性滤波。OpenCV里有这些滤波的函数,使用起来非常方便,现在简单介绍其使用方法。
1.线性滤波:方框滤波、均值滤波、高斯滤波

1.1 方框滤波
void boxFilter(InputArray src,OutputArray dst, int ddepth, Size ksize, Point anchor=Point(-1,-1), boolnormalize=true, int borderType=BORDER_DEFAULT )
参数列表如下:
- InputArray src:输入图像,待处理的图片深度应为CV_8U,CV_16U, CV_16S, CV_32F 以及 CV_64F之一。
- OutputArray dst:目标图像,需要和源图片有一样的尺寸和类型
- int ddepth:输出图像的深度,-1代表使用原图深度,即src.depth()
- Size ksize: 内核的大小,一般这样写Size( w,h )来表示内核的大小。
- Point anchor:表示锚点(即被平滑的那个点),注意他有默认值Point(-1,-1)。如果这个点坐标是负值的话,就表示取核的中心为锚点,所以默认值Point(-1,-1)表示这个锚点在核的中心。
- bool normalize:默认值为true,一个标识符,表示内核是否被其区域归一化(normalized)了。
- int borderType,用于推断图像外部像素的某种边界模式。有默认值BORDER_DEFAULT,我们一般不去管它。
boxFilter()函数方框滤波所用的核为:

其中:

当normalize=true时,方框滤波即为均值滤波。

最低0.47元/天 解锁文章
1894





