我们在做机器视觉项目的过程中,有的时候需要向图像中加入噪声。Pytorch本身不支持类似的功能,如果自己写的话,不但麻烦,而且容易出错。好在skimage支持这个功能。代码如下:
import skimage
import matplotlib.pyplot as plt
img_path="https://i.guim.co.uk/img/media/4ddba561156645952502f7241bd1a64abd0e48a3/0_1251_3712_2225/master/3712.jpg?width=1920&quality=85&auto=format&fit=max&s=1280341b186f8352416517fc997cd7da"
img = skimage.io.imread(img_path)/255.0
def plotnoise(img, mode, r, c, i):
plt.subplot(r,c,i)
if mode is not None:
gimg = skimage.util.random_noise(img, mode=mode)
plt.imshow(gimg)
else:
plt.imshow(img)
plt.title(mode)
plt.axis("off")
plt.figure(figsize=(18,24))
r=4
c=2
plotnoise(img, "gaussian", r,c,1)
plotnoise(img, "localvar", r,c,2)
plotnoise(img, "poisson", r,c,3)
plotnoise(img, "salt", r,c,4)
plotnoise(img, "pepper", r,c,5)
plotnoise(img, "s&p", r,c,6)
plotnoise(img, "speckle", r,c,7)
plotnoise(img, None, r,c,8)
plt.show()
关于random_noise的更多参数和调用方法可以查看官方文档https://scikit-image.org/docs/stable/api/skimage.util.html#skimage.util.random_noise