Как определить количество шума, которое вы добавляете к изображению - PullRequest
0 голосов
/ 31 октября 2018

Я смотрю данные в градациях серого, которые существуют в трехмерном томе, который можно импортировать в виде трехмерного массива со значениями от -1 до 1. Данные были получены в системе обработки изображений и изображают трехмерный том с более высокими значениями и фоном. шум как случайные значения.

Чтобы проверить программу выравнивания, я сейчас пытаюсь добавить шум разных уровней к этому массиву. Мой текущий метод для этого заключается в следующем:

def RandomNoise():
    """Function to make a numpy array of 100x100x100 of random noise"""
    NoiseArray = np.random.normal(-0.5,0.5,size=(100,100,100))

    return NoiseArray

Затем я просто изменяю значения -0,5 или 0,5, чтобы изменить количество создаваемого мной шума.

Затем я добавляю шум, выполняя:

Noise = RandomNoise()

Volumewithnoise = (np.clip((Volume + Noise) * (1 - Volume), -1, 1))

Хотя это действительно делает мое изображение шумным, я не знаю, как каким-либо образом определить количество шума, которое я добавляю относительно исходного изображения. Кто-нибудь знает лучший способ сделать это?

1 Ответ

0 голосов
/ 31 октября 2018

В вашей функции есть ошибка, фактически random.normal - это функция гауссовского шума, а не равномерное распределение, поэтому [-0,5, 0,5] не означает, что шум находится в диапазоне от 0,5 до -0,5

Вы должны сделать свою функцию такой:

def RandomNoise( magnitude ):
    """Function to make a numpy array of 100x100x100 of random noise"""
    NoiseArray = np.random.normal(0, magnitude ,size=(100,100,100))

    return NoiseArray

Как вы можете прочитать в документах , случайная норма имеет среднее значение и стандартное отклонение. Если вы хотите смоделировать шум, среднее значение должно быть равно нулю, а стандартное отклонение эквивалентно величине шума.

Таким образом, у вас есть один параметр для контроля количества шума

...