python生成(周期、非周期、高斯分布)的(灰度)条纹噪声

import numpy as np

import matplotlib.pyplot as plt def add_periodic_noise(img, mean, amplitude, frequency):

"""添加周期性噪声"""

rows, cols = img.shape noise = np.zeros((rows, cols)) for i in range(rows):

for j in range(cols):

noise[i, j] = mean + amplitude * np.sin(2 * np.pi * frequency * i)

return img + noise def add_non_periodic_noise(img, mean, std):

"""添加非周期性噪声"""

rows, cols = img.shape noise = np.random.normal(mean, std, (rows, cols)) return img + noise def add_gaussian_noise(img, mean, std):

"""添加高斯分布的噪声"""

rows, cols = img.shape noise = np.random.normal(mean, std, (rows, cols)) return img + noise # 加载图片并转换为灰度图

img = plt.imread('input.jpg')img = np.mean(img, axis=-1) # 添加周期性噪声

img_periodic = add_periodic_noise(img, 0, 128, 20) # 添加非周期性噪声

img_non_periodic = add_non_periodic_noise(img, 0, 64) # 添加高斯分布的噪声

img_gaussian = add_gaussian_noise(img, 0, 64) # 显示结果

plt.figure(figsize=(12, 12))

plt.subplot(221)

plt.imshow(img, cmap='gray')

plt.title('原图')

plt.subplot(222)

plt.imshow(img_periodic, cmap='gray')

plt.title('周期性噪声')

plt.subplot(223)

plt.imshow(img_non_periodic, cmap='gray')

plt.title('非周期性噪声')

plt.subplot(224)

plt.imshow(img_gaussian, cmap='gray')

plt.title('高斯分布噪声')

plt.tight_layout()plt.show()

你可能感兴趣的:(其他,学习)