cv2.blur图像滤波(Filter)处理学习笔记

一、cv2.blur(img,ksize) 均值滤波

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()

效果图:

二、cv2.boxFilter(img,-1,ksize,normalize=True) 方框滤波

说明:当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()

效果图:

cv2.blur图像滤波(Filter)处理学习笔记_第1张图片

三、cv2.GuassianBlur(img, ksize,sigmaX,sigmaY) 高斯滤波

说明: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()

效果图:

四、 cv2.medianBlur(img, k) 中值滤波

说明: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()

五、cv2.bilateralFilter(img,d, sigmaColor, sigmaSpace)双边滤波

说明: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()

效果图:

cv2.blur图像滤波(Filter)处理学习笔记_第2张图片

六、cv2.filter2D(img,-1,kernel) 2D卷积

说明: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()

效果图:

cv2.blur图像滤波(Filter)处理学习笔记_第3张图片

你可能感兴趣的:(Python_opencv)