方法实现

  1. 加噪声
import cv2
import numpy as np

img = cv2.imread('lena.png',cv2.IMREAD_GRAYSCALE)

# 椒盐噪声
noise_img = img.copy()
h, w = noise_img.shape[:2]
# 椒盐噪声概率
SNR = 0.99
number = int(SNR * h * w)
for i in range(number):
    rand_x = np.random.randint(0, h)
    rand_y = np.random.randint(0, w)
    if np.random.randint(0, 2) == 0:
        noise_img[rand_x, rand_y] = 0
    else:
        noise_img[rand_x, rand_y] = 255

# 高斯噪声
noise_img_gaussian = img.copy()
mean = 0
var = 0.01
sigma = var ** 0.5
gaussian = np.random.normal(mean, sigma, (h, w))
noise_img_gaussian = noise_img_gaussian.astype('float') / 255
noise_img_gaussian = noise_img_gaussian + gaussian
noise_img_gaussian = np.clip(noise_img_gaussian, 0, 1)
noise_img_gaussian = np.uint8(noise_img_gaussian * 255)
  1. 均值滤波
import cv2

img = cv2.imread('lena.png',cv2.IMREAD_GRAYSCALE)

# 均值滤波
blur3 = cv2.blur(img, (3, 3))
blur5 = cv2.blur(img, (5, 5))
blur7 = cv2.blur(img, (7, 7))
  1. 中值滤波
import cv2

img = cv2.imread('lena.png',cv2.IMREAD_GRAYSCALE)

# 中值滤波
median3 = cv2.medianBlur(img, 3)
median5 = cv2.medianBlur(img, 5)
median7 = cv2.medianBlur(img, 7)

完整代码

import cv2
import numpy as np

# 加载图像
img = cv2.imread('lena.png',cv2.IMREAD_GRAYSCALE)

# 椒盐噪声
noise_img = img.copy()
h, w = noise_img.shape[:2]
# 椒盐噪声概率
SNR = 0.99
number = int(SNR * h * w)
for i in range(number):
    rand_x = np.random.randint(0, h)
    rand_y = np.random.randint(0, w)
    if np.random.randint(0, 2) == 0:
        noise_img[rand_x, rand_y] = 0
    else:
        noise_img[rand_x, rand_y] = 255

# 高斯噪声
noise_img_gaussian = img.copy()
mean = 0
var = 0.01
sigma = var ** 0.5
gaussian = np.random.normal(mean, sigma, (h, w))
noise_img_gaussian = noise_img_gaussian.astype('float') / 255
noise_img_gaussian = noise_img_gaussian + gaussian
noise_img_gaussian = np.clip(noise_img_gaussian, 0, 1)
noise_img_gaussian = np.uint8(noise_img_gaussian * 255)

# 均值滤波
blur3 = cv2.blur(noise_img, (3, 3))
blur5 = cv2.blur(noise_img, (5, 5))
blur7 = cv2.blur(noise_img, (7, 7))

# 中值滤波
median3 = cv2.medianBlur(noise_img, 3)
median5 = cv2.medianBlur(noise_img, 5)
median7 = cv2.medianBlur(noise_img, 7)

cv2.imshow('origin', img)
cv2.imshow('noise_img', noise_img)
cv2.imshow('noise_img_gaussian', noise_img_gaussian)
cv2.imshow('blur3', blur3)
cv2.imshow('blur5', blur5)
cv2.imshow('blur7', blur7)
cv2.imshow('median3', median3)
cv2.imshow('median5', median5)
cv2.imshow('median7', median7)

cv2.waitKey(0)
cv2.destroyAllWindows()
``
python实现空域平滑滤波:将一幅灰度图像+不同强度噪声椒盐噪声和高斯噪声然后分别使用不同模板大小335577的均值滤波器、中值滤波器进行处理提示:1加噪声使用imnoise函数help看其函数使用说明2均值、中值滤波器可利用fspecial函数、filter函数、medfilt2函数等

原文地址: https://www.cveoy.top/t/topic/cd9k 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录