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()
输入参数为图片,及核大小,行和列相等,且为奇数。