使用 tf.data.dataset 时向图像添加各种噪声类型
Add various noise types to image when using tf.data.dataset
我一直在使用提到的功能 here 为图像添加不同类型的噪声(高斯噪声、椒盐噪声等)。
但是,我正在尝试使用 tf.data.Dataset 构建输入管道。
我想我已经知道如何添加高斯和泊松噪声了:
@tf.function
def load_images(imagePath):
label = tf.io.read_file(base_path + "/clean/" + imagePath)
label = tf.image.decode_jpeg(label, channels=3)
label = tf.image.convert_image_dtype(label, dtype=tf.float32)
image=label+tf.random.normal(shape=tf.shape(label),mean=0,stddev=0.1**0.5) #Add Gauss noise
#image=label+tf.random.poisson(shape=tf.shape(label),lam=0.3) #Add Poisson noise
return (image, label)
我怎样才能同时添加椒盐和斑点噪声?
这是一种随机添加盐和胡椒的方法:
from sklearn.datasets import load_sample_image
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
china = load_sample_image('china.jpg')[None, ...].astype(np.float32) / 255
def salt_and_pepper(image, prob_salt=0.1, prob_pepper=0.1):
random_values = tf.random.uniform(shape=image[0, ..., -1:].shape)
image = tf.where(random_values < prob_salt, 1., image)
image = tf.where(1 - random_values < prob_pepper, 0., image)
return image
ds = tf.data.Dataset.from_tensor_slices(china).batch(1).map(salt_and_pepper)
result_image = next(iter(ds))
plt.imshow(result_image[0])
plt.show()
我一直在使用提到的功能 here 为图像添加不同类型的噪声(高斯噪声、椒盐噪声等)。
但是,我正在尝试使用 tf.data.Dataset 构建输入管道。 我想我已经知道如何添加高斯和泊松噪声了:
@tf.function
def load_images(imagePath):
label = tf.io.read_file(base_path + "/clean/" + imagePath)
label = tf.image.decode_jpeg(label, channels=3)
label = tf.image.convert_image_dtype(label, dtype=tf.float32)
image=label+tf.random.normal(shape=tf.shape(label),mean=0,stddev=0.1**0.5) #Add Gauss noise
#image=label+tf.random.poisson(shape=tf.shape(label),lam=0.3) #Add Poisson noise
return (image, label)
我怎样才能同时添加椒盐和斑点噪声?
这是一种随机添加盐和胡椒的方法:
from sklearn.datasets import load_sample_image
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
china = load_sample_image('china.jpg')[None, ...].astype(np.float32) / 255
def salt_and_pepper(image, prob_salt=0.1, prob_pepper=0.1):
random_values = tf.random.uniform(shape=image[0, ..., -1:].shape)
image = tf.where(random_values < prob_salt, 1., image)
image = tf.where(1 - random_values < prob_pepper, 0., image)
return image
ds = tf.data.Dataset.from_tensor_slices(china).batch(1).map(salt_and_pepper)
result_image = next(iter(ds))
plt.imshow(result_image[0])
plt.show()