中值滤波
奇数尺寸
3x3,5x5,7x7,2n-1 x 2n-1
操作原理
- 卷积域内的像素值从小到大排序
- 取中间值作为卷积输出
作用
- 有效去除椒盐噪声
medianBlur()函数
参数介绍
- InputArray src:
输入图像,图像为1、3、4通道的图像,当模板尺寸为3或5时,图像深度只能为CV_8U、CV_16U、CV_32F中的一个,如而对于较大孔径尺寸的图片,图像深度只能是CV_8U。 - OutputArray dst: 输出图像,尺寸和类型与输入图像一致,可以使用Mat::Clone以原图像为模板来初始化输出图像dst
- int ksize: 滤波模板的尺寸大小,必须是大于1的奇数,如3、5、7……
完整代码如下
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('opencv.png',0) #直接读为灰度图像
for i in range(2000): #添加点噪声
temp_x = np.random.randint(0,img.shape[0])
temp_y = np.random.randint(0,img.shape[1])
img[temp_x][temp_y] = 255
blur_1 = cv2.GaussianBlur(img,(5,5),0)
blur_2 = cv2.medianBlur(img,5)
plt.subplot(1,3,1),plt.imshow(img,'gray')#默认彩色,另一种彩色bgr
plt.subplot(1,3,2),plt.imshow(blur_1,'gray')
plt.subplot(1,3,3),plt.imshow(blur_2,'gray')
plt.show()