(一)知识点
①高斯模糊(锚点默认卷积核中心像素点)
②盒子模糊(又称均值模糊)
③两者的差异
(二)API
① Gaussinblur()
C++:
void GaussianBlur(InputArray src, OutputArray dst,
Size ksize, double sigmaX, double sigmaY=0,
int borderType=BORDER_DEFAULT )
参数解释(来源于(55条消息) opencv学习(二十)之高斯滤波GaussianBlur()_烟雨博客-CSDN博客_gaussianblur
. Size ksize: 高斯内核大小,这个尺寸与前面两个滤波kernel尺寸不同,ksize.width和ksize.height可以不相同但是这两个值必须为正奇数,如果这两个值为0,他们的值将由sigma计算。
. double sigmaX: 高斯核函数在X方向上的标准偏差
. double sigmaY: 高斯核函数在Y方向上的标准偏差,如果sigmaY是0,则函数会自动将sigmaY的值设置为与sigmaX相同的值,如果sigmaX和sigmaY都是0,这两个值将由ksize.width和ksize.height计算而来。具体可以参考getGaussianKernel()函数查看具体细节。建议将size、sigmaX和sigmaY都指定出来。
. int borderType=BORDER_DEFAULT: 推断图像外部像素的某种便捷模式,有默认值BORDER_DEFAULT,如果没有特殊需要不用更改,具体可以参考borderInterpolate()函数。
②boxFilter()
void boxFilter(InputArray src, OutputArray dst, int ddepth,
Size ksize, Point anchor=Point(-1, -1),
boolnormalize=true, int borderType=BORDER_DEPAULT);
int类型的ddepth,输出图像的深度。-1表示使用原图深度,即src.depth。
Size类型的lsize,内核的大小。一般用Size(w,h)的写法表示,例如Size(3,3),Size(5,5)。
Point类型anchor,表示锚点,即被平滑的那个点,默认值是Point(-1,-1)。如果这个点的坐标是负值的话,就表示取核的中心为锚点。其中anchor必须小于ksize。
bool类型的normalize,默认值是true,表示内核是否其区域归一化。
int类型的borderType,用于推断图像外部像素的某种边界模式,默认值 BORDER_DEFAULT,我们一般不管它。
(三)代码演示
(四)效果展示