Я пытаюсь реализовать добавление пуассоновского шума к полутоновому изображению, используя numpy
в качестве Pytorch
трансформатора, но пока мои результаты были очень разочаровывающими.Вот мои различные реализации, результаты которых варьируются от видимых изменений до просмотра шума без изображения.Как правильно это сделать?
class Noise(object):
def __init__(self, noise_type):
self.noise_type = noise_type
def __call__(self, sample):
noise = np.random.poisson(1, sample.shape)
return sample + noise
, но, насколько я понимаю, пуассоновский шум нельзя просто добавить к изображению, поэтому все, что я вижу здесь, это шум (вроде телевизионной статики).) без исходного изображения в оттенках серого.
Следующая версия кода не дает видимых изменений в изображении, что наводит меня на мысль, что это своего рода проблема масштабирования, поскольку в пуассоновском шуме шум добавляется относительно значения пикселя.
vals = len(np.unique(sample))
vals = 2 ** np.ceil(np.log2(vals))
noisy = np.random.poisson(sample * vals) / float(vals)
return noisy
Буду признателен за любую помощь или понимание.