Spaces:
Build error
Build error
| import numpy as np | |
| import skimage as sk | |
| from PIL import Image | |
| ''' | |
| PIL resize (W,H) | |
| ''' | |
| class GaussianNoise: | |
| def __init__(self): | |
| pass | |
| def __call__(self, img, mag=-1, prob=1.): | |
| if np.random.uniform(0,1) > prob: | |
| return img | |
| W, H = img.size | |
| #c = np.random.uniform(.08, .38) | |
| b = [.08, 0.1, 0.12] | |
| if mag<0 or mag>=len(b): | |
| index = 0 | |
| else: | |
| index = mag | |
| a = b[index] | |
| c = np.random.uniform(a, a+0.03) | |
| img = np.array(img) / 255. | |
| img = np.clip(img + np.random.normal(size=img.shape, scale=c), 0, 1) * 255 | |
| return Image.fromarray(img.astype(np.uint8)) | |
| class ShotNoise: | |
| def __init__(self): | |
| pass | |
| def __call__(self, img, mag=-1, prob=1.): | |
| if np.random.uniform(0,1) > prob: | |
| return img | |
| W, H = img.size | |
| #c = np.random.uniform(3, 60) | |
| b = [13, 8, 3] | |
| if mag<0 or mag>=len(b): | |
| index = 2 | |
| else: | |
| index = mag | |
| a = b[index] | |
| c = np.random.uniform(a, a+7) | |
| img = np.array(img) / 255. | |
| img = np.clip(np.random.poisson(img * c) / float(c), 0, 1) * 255 | |
| return Image.fromarray(img.astype(np.uint8)) | |
| class ImpulseNoise: | |
| def __init__(self): | |
| pass | |
| def __call__(self, img, mag=-1, prob=1.): | |
| if np.random.uniform(0,1) > prob: | |
| return img | |
| W, H = img.size | |
| #c = np.random.uniform(.03, .27) | |
| b = [.03, .07, .11] | |
| if mag<0 or mag>=len(b): | |
| index = 0 | |
| else: | |
| index = mag | |
| a = b[index] | |
| c = np.random.uniform(a, a+.04) | |
| img = sk.util.random_noise(np.array(img) / 255., mode='s&p', amount=c) * 255 | |
| return Image.fromarray(img.astype(np.uint8)) | |
| class SpeckleNoise: | |
| def __init__(self): | |
| pass | |
| def __call__(self, img, mag=-1, prob=1.): | |
| if np.random.uniform(0,1) > prob: | |
| return img | |
| W, H = img.size | |
| # c = np.random.uniform(.15, .6) | |
| b = [.15, .2, .25] | |
| if mag<0 or mag>=len(b): | |
| index = 0 | |
| else: | |
| index = mag | |
| a = b[index] | |
| c = np.random.uniform(a, a+.05) | |
| img = np.array(img) / 255. | |
| img = np.clip(img + img * np.random.normal(size=img.shape, scale=c), 0, 1) * 255 | |
| return Image.fromarray(img.astype(np.uint8)) | |