我正在尝试计算图像的梯度方向,在第一部分中,我需要计算图像的一阶导数(水平和垂直方向),因此我在scipy模块中应用了高斯滤波器以获得它,但出现错误“ AttributeError:'int'对象没有属性'shape'”
我正在使用python版本3.7.0,而opencv版本是3.4.2。
功能文档在这里:scipy.ndimage.filters.gaussian_filter
g_x = np.zeros(image_new.shape)
ndimage.filters.gaussian_filter(image_new, 2*np.sqrt(2), (0,1), 1 ,g_x )
这个对吗?或如何计算图像的一阶导数(和二阶导数)。
要获得图像的一阶导数,您可以按以下方式在scipy中应用高斯滤波器。
from scipy.ndimage import gaussian_filter, laplace
image_first_derivative = gaussian_filer(image, sigma=3)
如果sigma是一个整数,则将在所有方向上计算导数。要指定方向,请将sigma作为序列。
上面是x方向上使用拍摄的图像的一阶导数sigma=(11,0)
。下图是在y方向上使用的导数sigma=(0, 11)
您可以相应地选择sigma的值。为了计算二阶导数,可以使用拉普拉斯算子。
image_sec_derivative = laplace(image)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句