Чтобы сгенерировать тестовые данные для моего алгоритма подбора, мне нужно создать массив гауссовского шума с его сигмой, заданной поэлементно. Реализация на чистом Python выглядит следующим образом:
from numpy.random import normal
for i in range(100):
for j in range(100):
for k in range(100):
image[i, j, k] += normal(0, sigmas[i, j, k])
Это предназначено для имитации зашумленного изображения, где каждый пиксель является значением измерения с заданной дисперсией; для разумного теста мне нужно генерировать шум, согласованный с дисперсией (которую я дал).
Эта реализация слишком медленная (я работаю с большими 3D-массивами), поэтому я ищу способ ускорить ее (скорее всего, с помощью методов векторизованной библиотеки).
array-like
) 12.12.2016noisy_image = normal(image, sigmas)
12.12.2016