【python + opencv图像处理二】图像滤波(去噪 平滑 模糊等)

平滑 也称 模糊, 是一项简单且使用频率很高的图像处理方法。平滑处理的用途有很多, 但是在本教程中我们仅仅关注它减少噪声的功用。从滤波角度来讲,一般主要的目的都是为了实现对图像噪声的消除,增强图像的效果。

均值滤波

最简单的滤波器, 输出像素值是核窗口内像素值的均值

均值模糊函数blur()
blur(src, ksize, dst=None, anchor=None, borderType=None)。
定义是有5个参数,但最后三个均为none
src:要处理的原图像,ksize: 周围关联的像素的范围。

代码:

def blur_demo(image):   # 均值模糊
    dst = cv.blur(image,(3,3))  # ksize是卷积核大小3行3列,列数越大模糊越大
    cv.imshow("blur_demo",dst)

中值滤波

中值滤波模板就是用卷积框中像素的中值代替中心值,达到去噪声的目的。这个模板一般用于去除椒盐噪声。中值滤波对于这些白点噪声的去除是非常的好的。

前面的滤波器都是用计算得到的一个新值来取代中心像素的值,而中值滤波是用中心像素周围(也可以使他本身)的值来取代他,卷积核的大小也是个奇数。

中值模糊函数medianBlur():
medianBlur(src, ksize, dst=None)。
ksize与blur()函数不同,不是矩阵,而是一个数字,例如为5,就表示了5*5方阵

代码:

def median_blur_demo(image):   # 中值模糊,对于椒盐噪声的去噪效果好,去掉图片中的一些黑点等
    dst = cv.medianBlur(image,5)  # ksize是卷积核大小1行3列,列数越大模糊越大
    cv.imshow("median_blur_demo",dst)

高斯滤波

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
代码:

def Gaussian_demo(image):
    dst = cv.GaussianBlur(image, (5, 5), 15)
    cv.imshow("GaussianBlur", dst)

方框滤波

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

def box_demo(image):
    dst = cv.boxFilter(image,-1,(5,5),normalize=1)
    cv.imshow("box",dst)

双边滤波

定义:bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)
d:邻域直径
sigmaColor:颜色标准差
sigmaSpace:空间标准差

def shuangbian(image):
    src2 = cv.bilateralFilter(image, 25, 50, 25 / 2)
    cv.imshow("shuangbian", src2)

椒盐噪声结果1:

原图(加了椒盐噪声之后)
(加噪可参考https://blog.csdn.net/poppyty/article/details/118410338?spm=1001.2014.3001.5501
在这里插入图片描述
均值滤波后:
在这里插入图片描述
中值滤波后:
在这里插入图片描述
高斯滤波后:
在这里插入图片描述

方框滤波后:
在这里插入图片描述
双边滤波:
在这里插入图片描述

高斯噪声结果2:

原图(加了高斯噪声后):
(加噪可参考https://blog.csdn.net/poppyty/article/details/118410338?spm=1001.2014.3001.5501
在这里插入图片描述

均值滤波后:
在这里插入图片描述

中值滤波后:
在这里插入图片描述

高斯滤波后:
在这里插入图片描述

方框滤波后:
在这里插入图片描述

双边滤波后:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/poppyty/article/details/118414503