记录一下如何向图像中添加高斯白噪声。0均值高斯分布。
通过skimage.util.random_noise添加噪声_aiyaheart的博客-CSDN博客_skimage.util.random_noise
详解向图像加入高斯白噪声_墨晓白的博客-CSDN博客_图片添加高斯白噪声
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
from skimage import util
img = Image.open('img/example.jpg')
img = np.array(img)
noise_gs_img = util.random_noise(img,mode='gaussian')
noise_salt_img = util.random_noise(img,mode='salt')
noise_pepper_img = util.random_noise(img,mode='pepper')
noise_sp_img = util.random_noise(img,mode='s&p')
noise_speckle_img = util.random_noise(img,mode='speckle')
plt.subplot(2,3,1), plt.title('original')
plt.imshow(img)
plt.subplot(2,3,2),plt.title('gaussian')
plt.imshow(noise_gs_img)
plt.subplot(2,3,3), plt.title('salt')
plt.imshow(noise_salt_img)
plt.subplot(2,3,4), plt.title('pepper')
plt.imshow(noise_pepper_img)
plt.subplot(2,3,5),plt.title('s&p')
plt.imshow(noise_sp_img)
plt.subplot(2,3,6), plt.title('speckle')
plt.imshow(noise_speckle_img)
plt.show()
运行结果图:
高斯白噪音:
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
from skimage import util
img = Image.open('img/example.jpg')
img = np.array(img)
noise_gs_img = util.random_noise(img,mode='gaussian')
plt.subplot(1,2,1), plt.title('original')
plt.imshow(img)
plt.subplot(1,2,2),plt.title('gaussian')
plt.imshow(noise_gs_img)
plt.show()
添加噪音并保存
利用Image打开图片,(打开图片也可以使用cv2.imread()),
img的类型是<class 'PIL.JpegImagePlugin.JpegImageFile'>,不是ndarray类型,使用np.array()将img装换为ndarray类型,添加高斯白噪音。
保存的时候使用matplotlib.image.imsave('test1.jpg', noise_gs_img)进行保存。
我使用了cv.imwrite()不行,
plt.savefig(filename)可以但是把画布也保存了,不是我想要的结果。
import numpy as np
import cv2
import matplotlib
import matplotlib.pyplot as plt
from PIL import Image
from skimage import util
img = Image.open('test.jpg')
img = np.array(img)
#添加高斯白噪音
noise_gs_img=util.random_noise(img, mode='gaussian', seed=None,var=(30/255.0)**2)
#保存添加过噪音的图片
matplotlib.image.imsave('test1.jpg', noise_gs_img)
如何将Numpy数组保存为图像_追随梦想,实现梦想-CSDN博客_numpy保存图片
这个链接解决了我的问题。还是对numpy操作不行啊