scipy.ndimage.gaussian_gradient_magnitude和gaussian_filter功能的区别



有人知道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 无法正确提升输出数组的类型以包含它计算的值;特别是,导数可以具有负值,因此偏导数图像必须是有符号类型才有意义(。

最新更新