Эффективный расчет дисперсии изображения Python

Я работаю над проектом, в котором нужно получить дисперсию изображения. В настоящее время я использую 2 подхода (оба работают, но работают очень медленно):

Вычисление дисперсии для каждого пикселя индивидуально:

Это код, использующий NumPy, VarianceMatrix является выходной

varianceMatrix = np.zeros(im.shape,np.uint8)
w = 1              # the radius of pixels neighbors 
ny = len(im)
nx = len(im[0])


for i in range(w,nx-w):
    for j in range(w,ny-w):

        sampleframe = im[j-w:j+w, i-w:i+w]
        variance    = np.var(sampleframe)
        varianceMatrix[j][i] = int(variance)

return varianceMatrix   
Используя существующую функцию scipy:

Это функция scipy:

from scipy import ndimage

varianceMatrix = ndimage.generic_filter(im, np.var, size = 3)

Функция scipy работает быстрее, но не так сильно. Я ищу лучшую альтернативу для расчета дисперсии.

Есть идеи???

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

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