|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
关于中值滤波的疑问
就是我用中值滤波处理后图像变成全黑了
使用的图片
结果
代码
- import cv2
- import numpy as np
- import matplotlib.pyplot as plt
- import os
- from skimage import util # 添加噪声
- mg = cv2.imread("./233.jpg", 0) # 读入灰度图
- # 添加噪声
- noise_gaussian = util.random_noise(img, mode='gaussian') # 高斯
- noise_salt = util.random_noise(img, mode='salt') # 椒盐
- # # 均值滤波
- dst1_gaussian = cv2.blur(noise_gaussian, (5, 5))
- dst1_salt = cv2.blur(noise_salt, (5, 5))
- # # 中值滤波
- # print(noise_gaussian.dtype)
- noise_gaussian = noise_gaussian.astype(np.uint8) # 不用就会报错
- noise_salt = noise_salt.astype(np.uint8)
- dst2_gaussian = cv2.medianBlur(noise_gaussian, 3)
- dst2_salt = cv2.medianBlur(noise_salt, 3)
- # 显示图像
- plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示汉字
- plt.subplot(221), plt.imshow(dst1_gaussian, "gray"), plt.title("均值滤波处理高斯")
- plt.subplot(222), plt.imshow(dst1_salt, "gray"), plt.title("均值滤波处理椒盐")
- plt.subplot(223), plt.imshow(dst2_gaussian, "gray"), plt.title("中值滤波处理高斯")
- plt.subplot(224), plt.imshow(dst2_salt, "gray"), plt.title("中值滤波处理椒盐")
- plt.show()
复制代码
中值滤波处理得是数值型吧,可能你加了噪声之后破坏了数据类型,
然后全黑可能是你转换的数值类型不对,用 float32
- import cv2
- import numpy as np
- import matplotlib.pyplot as plt
- import os
- from skimage import util # 添加噪声
- img = cv2.imread("./233.jpg", 0) # 读入灰度图
- # 添加噪声
- noise_gaussian = util.random_noise(img, mode='gaussian') # 高斯
- noise_salt = util.random_noise(img, mode='salt') # 椒盐
- # # 均值滤波
- dst1_gaussian = cv2.blur(noise_gaussian, (5, 5))
- dst1_salt = cv2.blur(noise_salt, (5, 5))
- # # 中值滤波
- # print(noise_gaussian.dtype)
- noise_gaussian = noise_gaussian.astype(np.float32) # 也可以用下面那种写法
- noise_salt = np.float32(noise_salt)
- dst2_gaussian = cv2.medianBlur(noise_gaussian, 3)
- dst2_salt = cv2.medianBlur(noise_salt, 3)
- # 显示图像
- plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示汉字
- plt.subplot(221), plt.imshow(dst1_gaussian, "gray"), plt.title("均值滤波处理高斯")
- plt.subplot(222), plt.imshow(dst1_salt, "gray"), plt.title("均值滤波处理椒盐")
- plt.subplot(223), plt.imshow(dst2_gaussian, "gray"), plt.title("中值滤波处理高斯")
- plt.subplot(224), plt.imshow(dst2_salt, "gray"), plt.title("中值滤波处理椒盐")
- plt.show()
复制代码
|
|