From 2bac24fdf45b26cf69447ea094fb7e3a0b653702 Mon Sep 17 00:00:00 2001 From: Juan Nunez-Iglesias Date: Wed, 27 Jul 2016 00:34:54 +1000 Subject: [PATCH] Ensure probability of flipping pixels is correct --- skimage/util/noise.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/skimage/util/noise.py b/skimage/util/noise.py index 9ee77061..5678e33a 100644 --- a/skimage/util/noise.py +++ b/skimage/util/noise.py @@ -169,16 +169,15 @@ def random_noise(image, mode='gaussian', seed=None, clip=True, **kwargs): out = image.copy() # Salt mode - p_salt = kwargs['amount'] * kwargs['salt_vs_pepper'] - mask = np.random.choice([True, False], size=image.shape, - p=[p_salt, 1 - p_salt]) - out[mask] = 1 - - # Pepper mode - p_pepper = kwargs['amount'] * (1 - kwargs['salt_vs_pepper']) - mask = np.random.choice([True, False], size=image.shape, - p=[p_pepper, 1 - p_pepper]) - out[mask] = low_clip + p = kwargs['amount'] + q = kwargs['salt_vs_pepper'] + flipped = np.random.choice([True, False], size=image.shape, + p=[p, 1 - p]) + salted = np.random.choice([True, False], size=image.shape, + p=[q, 1 - q]) + peppered = ~salted + out[flipped & salted] = 1 + out[flipped & peppered] = low_clip elif mode == 'speckle': noise = np.random.normal(kwargs['mean'], kwargs['var'] ** 0.5,