此文记录自己在做图像数据增强给图像加噪时遇到的一些情况。
椒盐噪音:简单点说就是在图像中随机加一些白点或者黑点。
from skimage import io
import random
import numpy as np
def salt_and_pepper_noise(img, proportion=0.05):
noise_img =img
height,width =noise_img.shape[0],noise_img.shape[1]
num = int(height*width*proportion)#多少个像素点添加椒盐噪声
for i in range(num):
w = random.randint(0,width-1)
h = random.randint(0,height-1)
if random.randint(0,1) ==0:
noise_img[h,w] =0
else:
noise_img[h,w] = 255
return noise_img
if __name__ == '__main__':
img =io.imread(r"C:\work\data\he\guangtou\0000709.jpg")
noise_img = salt_and_pepper_noise(img)
io.imshow(noise_img)
io.show()
效果图:
高斯噪音:给每一个像素点加一个随机的符合高斯分布的值。
from skimage import io
import random
import numpy as np
def gauss_noise(image):
img = image.astype(np.int16)#此步是为了避免像素点小于0,大于255的情况
mu =0
sigma = 10
for i in range(img.shape[0]):
for j in range(img.shape[1]):
for k in range(img.shape[2]):
img[i,j,k] = img[i,j,k] +random.gauss(mu=mu,sigma=sigma)
img[img>255] = 255
img[img<0] = 0
img = img.astype(np.uint8)
return img
if __name__ == '__main__':
img =io.imread(r"C:\work\data\he\guangtou\0000709.jpg")
# noise_img = salt_and_pepper_noise(img)
gauss_img = gauss_noise(img)
io.imshow(gauss_img)
io.show()