Я пытаюсь найти первую производную гауссова для изображения (используя Matlab), и я пробовал два способа. Один с использованием градиента, а другой с вычислением производной, но результаты отличаются друг от друга.
Method 1
k=7,s=3% kernel,st.dev
f = fspecial('gaussian', [k k], s)
[Gx,Gy] = gradient(f)
Method 2
k=7,s=3% kernel,st.dev
[x,y] = meshgrid(-floor(k/2):floor(k/2), -floor(k/2):floor(k/2))
G = exp(-(x.^2+y.^2)/(2*s^2))/(2*pi*(s^2))
Gn=G/sum(G(:))
Gx = -x.*Gn/(s^2)
Gy = -y.*Gn/(s^2)
Gx и Gy должны быть одинаковыми для двух методов, но есть разница в значениях. Кто-нибудь знает, почему это так? Я ожидал, что они будут одинаковыми. Есть ли предпочтительный способ вычисления производной? Спасибо.
Изменить: изменено определение G по предложению Конрада, но проблема не устранена.