img:原图像
ksize:核大小
原理:它只取内核区域下所有像素的平均值并替换中心元素。3x3标准化的盒式过滤器如下所示:
特征:核中区域贡献率相同。
作用:对于椒盐噪声的滤除效果比较好。
import cv2
img = cv2.imread("image\\lenaNoise.png")
result = cv2.blur(img,(5,5))
cv2.imshow("img",img)
cv2.imshow("result",result)
cv2.waitKey()
cv2.destroyAllWindows()
效果图:
说明:当normalize=True时,与均值滤波结果相同, normalize=False,表示对加和后的结果不进行平均操作,大于255的使用255表示。
import cv2
img=cv2.imread("image\\lenaNoise.png")
result=cv2.boxFilter(img,-1,(2,2),normalize=False)
cv2.imshow("img",img)
cv2.imshow("result",result)
cv2.waitKey()
cv2.destroyAllWindows()
效果图:
说明:sigmaX,sigmaY分别表示X,Y方向的标准偏差。如果仅指定了sigmaX,则sigmaY与sigmaX相同.如果两者都为零,则根据内核大小计算它们。
特征:核中区域贡献率与距离区域中心成正比,权重与高斯分布相关。
作用:高斯模糊在从图像中去除高斯噪声方面非常有。
import cv2
img=cv2.imread("image\\lenaNoise.png")
result=cv2.GaussianBlur(img,(5,5),0,0)
cv2.imshow("img",img)
cv2.imshow("result",result)
cv2.waitKey()
cv2.destroyAllWindows()
效果图:
说明:imgs为原图像,k为方框的尺寸,相当于将方框内的个值进行排序,取中值作为当前值。
特征:中心点的像素被核中中位数的像素值代替。
作用:对于椒盐噪声有效。
import cv2
img=cv2.imread("image\\lenaNoise.png")
result=cv2.medianBlur(img,3)
cv2.imshow("img",img)
cv2.imshow("result",result)
cv2.waitKey()
cv2.destroyAllWindows()
说明:d为邻域直径,sigmaColor为空间高斯函数标准差,参数越大,临近像素将会在越远的地方越小。
sigmaSpace灰度值相似性高斯函数标准差,参数越大,那些颜色足够相近的的颜色的影响越大。
双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部处理的特点。之所以能够达到保边去噪的滤波效果是因为滤波器由两个函数构成:一个函数是由几何空间距离决定滤波器系数,另一个是由像素差值决定滤波器系数。
特征:处理耗时。
作用:在滤波的同时能保证一定的边缘信息。
import cv2
img=cv2.imread("image\\lenaNoise.png")
result=cv2.bilateralFilter(img,25,100,100)
cv2.imshow("img",img)
cv2.imshow("result",result)
cv2.waitKey()
cv2.destroyAllWindows()
效果图:
说明:kernel为内核。
import cv2
import numpy as np
img=cv2.imread("image\\lena.bmp")
kernel = np.ones((9,9),np.float32)/81
result = cv2.filter2D(img,-1,kernel)
cv2.imshow("img",img)
cv2.imshow("result",result)
cv2.waitKey()
cv2.destroyAllWindows()
效果图: