python+opencv滤波操作

1、均值滤波

直接用元素全为1的核与图像卷积求均值得到中心像素的修改值。

#blur平均值去噪,均值滤波
#简单的平均卷积操作
img=cv2.imread("noise.jpg")
blur
= cv2.blur(img,(3,3)) cv2.imshow("original",img) cv2.imshow("changed",blur) cv2.waitKey(0) cv2.destroyAllWindows()

将核大小改为(1,50)和(50,1)的到下图

2、方框滤波(比均值滤波多一个参数)

#方框滤波
#normalize为True时与blur相同
#normalize为Flase是可能发生越界
box=cv2.boxFilter(img,-1,(3,3),normalize=True)
cv2.imshow("original",img)
cv2.imshow("changed",box)
cv2.waitKey(0)
cv2.destroyAllWindows()

3、高斯滤波

#高斯滤波
#构造权重矩阵
aussian = cv2.GaussianBlur(img,(21,21),1)

cv2.imshow("original",img)
cv2.imshow("aussian",aussian)
cv2.waitKey(0)
cv2.destroyAllWindows()

越靠近中心点的权重越大,核的大小必须是奇数,否则会报错。

将方框滤波和高斯滤波放一起对比,将核大小调大一点(21,21)

 4、中值滤波

#中值滤波
median = cv2.medianBlur(img,5)

cv2.imshow("original",img)
cv2.imshow("median",median)
cv2.waitKey(0)
cv2.destroyAllWindows()

输入参数为图片,及核大小,行和列相等,且为奇数。

 

猜你喜欢

转载自www.cnblogs.com/oldhuang/p/12121319.html