Расчет дисперсии изображения питона
Есть ли простой способ вычислить работающий фильтр дисперсии на изображении, используя 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?