Дискретный лапласиан (эквивалент del2) в Python

Мне нужен Python / Numpy эквивалент дискретного лапласовского оператора (функции) del2 () в Matlab (Octave). Я попробовал пару решений Python, ни одно из которых, похоже, не соответствует выводу del2. В Octave у меня есть

image = [3 4 6 7; 8 9 10 11; 12 13 14 15;16 17 18 19]
del2(image)

это дает результат

   0.25000  -0.25000  -0.25000  -0.75000
  -0.25000  -0.25000   0.00000   0.00000
   0.00000   0.00000   0.00000   0.00000
   0.25000   0.25000   0.00000   0.00000

На Python я пробовал

import numpy as np
from scipy import ndimage
import scipy.ndimage.filters

image =  np.array([[3, 4, 6, 7],[8, 9, 10, 11],[12, 13, 14, 15],[16, 17, 18, 19]])
stencil = np.array([[0, 1, 0],[1, -4, 1], [0, 1, 0]])
print ndimage.convolve(image, stencil, mode='wrap')

, который дает результат

[[ 23  19  15  11]
 [  3  -1   0  -4]
 [  4   0   0  -4]
 [-13 -17 -16 -20]]

Я тоже пробовал

scipy.ndimage.filters.laplace(image)

Это дает результат

[[ 6  6  3  3]
 [ 0 -1  0 -1]
 [ 1  0  0 -1]
 [-3 -4 -4 -5]]

Таким образом, ни один из выходов не соответствует друг другу . Октавный код del2.m предполагает, что это лапласовский оператор. Я что-то упустил?

5
задан BBDynSys 14 January 2011 в 23:55
поделиться