有人知道scipy.ndimage.gaussian_gradient_magnitude
[1]和scipy.ndimage.gaussian_filter
[2]函数有什么区别吗?
我想gaussian_gradient_magnitude(img, 1)
和gaussian_filter(img, sigma= 1, order = 1)
应该返回相同的结果,但事实并非如此。
谢谢。
scipy.ndimage.gaussian_gradient_magnitude
计算梯度的大小,梯度是包含沿每个轴的偏导数的向量。scipy.ndimage.gaussian_filter
可以计算这些偏导数。
对于 2D 图像(img
是 2D NumPy 数组(,
gm = scipy.ndimage.gaussian_gradient_magnitude(img, 1)
与
dx = scipy.ndimage.gaussian_filter(img, sigma= 1, order = (0,1))
dy = scipy.ndimage.gaussian_filter(img, sigma= 1, order = (1,0))
gm = numpy.sqrt(dx**2 + dy**2)
但请注意,上述两种备选方案仅在数组是浮点类型时才产生正确的结果(ndimage 无法正确提升输出数组的类型以包含它计算的值;特别是,导数可以具有负值,因此偏导数图像必须是有符号类型才有意义(。