Calcular a variação de um python de imagem com eficiência
Estou trabalhando em um projeto no qual precisamos obter a variação de uma imagem. Atualmente, estou adotando duas abordagens (ambas funcionam, mas são muito lentas):
Calculando a variação para cada pixel individualmente:Este é o código usando numpy, varianceMatrix é a saída
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
Usando uma função scipy existente:Esta é a função scipy:
from scipy import ndimage
varianceMatrix = ndimage.generic_filter(im, np.var, size = 3)
A função scipy é mais rápida, mas não tanto. Estou procurando uma alternativa melhor para calcular a variação.
Alguma ideia???