OpenCV 图像滤波

方盒滤波

import cv2
import numpy as np

img=cv2.imread('dog.jpg')

#不用手动创建卷积核,只需要告诉方和滤波,卷积核的大小是多少。
# cv2.boxFilter(src, ddepth, ksize[, dst[, anchor[, normalize[, borderType]]]])
dst=cv2.boxFilter(img,-1,(5,5),normalize=True)

cv2.imshow('img',np.hstack((img,dst)))
cv2.waitKey(0)
cv2.destroyAllWindows()

均值滤波

import cv2
import numpy as np

img=cv2.imread('dog.jpg')

#均值滤波没有位深这个参数ddepth
dst=cv2.blur(img,(5,5))

cv2.imshow('img',np.hstack((img,dst)))
cv2.waitKey(0)
cv2.destroyAllWindows()

高斯滤波

二维高斯函数:G\left ( x,y \right )= \frac{1}{2\pi \sigma ^{2}}e^{^{-\frac{x^{2}+y^{2}}{2\sigma ^{2}}}}

我们可以观察到越靠近中心,数值越大,越边缘数值越小。符合高斯分布的特点。通过高斯函数计算出来的是概率密度函数,所以我们还要确保这九个点加起来为1,这9个点的权重总和等于0.4787147,因此上面的9个值还要分别处以0.4787147,得到最终的高斯模板。
注:有些整数高斯模板是在归一化后的高斯模板的基础上每个数除上左上角的值然后取整。

import cv2
import numpy as np

img=cv2.imread('dog.jpg')

#cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]])
dst=cv2.GaussianBlur(img,(5,5),sigmaX=10)


cv2.imshow('img',np.hstack((img,dst)))
cv2.waitKey(0)
cv2.destroyAllWindows()

双边滤波

双边滤波对椒盐噪声几乎没效果

import cv2
import numpy as np

#导入图片
img=cv2.imread('./dog.jpg')

#cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]])
dst=cv2.bilateralFilter(img,21,sigmaColor=50,sigmaSpace=500)

cv2.imshow('img',np.vstack((img,dst)))
cv2.waitKey(0)
cv2.destroyAllWindows()

中值滤波

中值滤波对椒盐噪声效果明显

import cv2
import numpy as np

#导入图片
img=cv2.imread('./dog.jpg')

#注意这里的ksize就是一个数字
#dst=cv2.medianBlur(src, ksize[, dst]
dst=cv2.medianBlur(img , 5)


cv2.imshow('img',np.vstack((img,dst)))
cv2.waitKey(0)
cv2.destroyAllWindows()

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值