Расчет дисперсии изображения питона

Есть ли простой способ вычислить работающий фильтр дисперсии на изображении, используя Python / NumPy / Scipy? Под запуском дисперсионного изображения я подразумеваю результат вычисления суммы ((I - среднее (I)) ^ 2) / nПикселей для каждого подокна I в изображении.

Поскольку изображения довольно большие (12000x12000 пикселей), я хочу избежать дополнительных затрат на преобразование массивов между форматами, чтобы иметь возможность использовать другую библиотеку, а затем преобразовывать обратно.

Я думаю, что я мог бы сделать это вручную, найдя среднее значение, используя что-то вроде

kernel = np.ones((winSize, winSize))/winSize**2
image_mean = scipy.ndimage.convolve(image, kernel)
diff = (image - image_mean)**2
# Calculate sum over winSize*winSize sub-images
# Subsample result

но было бы гораздо приятнее иметь что-то вроде функции stdfilt от Matlab.

Может кто-нибудь указать мне в направлении библиотеки, которая имеет эту функцию и поддерживает NumPy массивов, или намекнуть / предоставить способ сделать это в NumPy / SciPy?

Ответы на вопрос(4)

Ваш ответ на вопрос