天天看点

opencv均值滤波_python+opencv图像处理(二十一)

上篇介绍了用 opencv中的函数blur()实现邻域平均,除了用此函数外,还有其他可实现均值滤波的方法,如下。 (1)根据数学公式,实现像素点的运算以实现领域平均。 数学公式在上篇有介绍。 (2)用opencv带的2D滤波器filter2D()可以实现滤波。此函数在滤波中会经常用到。 我把几种的代码放在一起,截图如下, 代码中的红色注释说明了使用的是哪种方法。

opencv均值滤波_python+opencv图像处理(二十一)

其运行结果截图如下:

opencv均值滤波_python+opencv图像处理(二十一)

上图中,第 1张是原图,后三张都是均值滤波后的图。从 图可以看出,不管用哪一种代码,实现的结果都是一模一样的。 对于均值滤波,主要是用于去噪,但是在去噪的过程中可能会产生模糊,如上图所示,当选用的模板越大时,图像可能越模糊。 以下图像分别是模板选择为(5,5)和(10,10)时的图像,可以看到图像噪声消除明显,但图像也越模糊。

opencv均值滤波_python+opencv图像处理(二十一)

模板的大小也不一定非要是 3*3这类的,也可以是2*10,5*2这样不规则的,如果这样做的话主要就是模糊图像了,一种是水平模糊,一种是垂直模糊,如下图所示:

opencv均值滤波_python+opencv图像处理(二十一)

上图分别是( 1,10)和(10,1)时的运行结果。