如何获得图像的一阶和二阶导数矩阵
How to get first and second derivative matrix of an image
我正在尝试计算图像的梯度方向,在第一部分中,我需要计算图像的一阶导数(水平和垂直方向),所以我在 scipy 模块为了得到它,但是我得到了一个错误 "AttributeError: 'int' object has no attribute '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 作为序列传递。
以上是用 sigma=(11,0)
在 x 方向拍摄的图像的一阶导数。下图是用 sigma=(0, 11)
在 y 方向上取的导数
您可以相应地选择 sigma 的值。为了计算二阶导数,可以使用拉普拉斯算子。
image_sec_derivative = laplace(image)
我正在尝试计算图像的梯度方向,在第一部分中,我需要计算图像的一阶导数(水平和垂直方向),所以我在 scipy 模块为了得到它,但是我得到了一个错误 "AttributeError: 'int' object has no attribute '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 作为序列传递。
以上是用 sigma=(11,0)
在 x 方向拍摄的图像的一阶导数。下图是用 sigma=(0, 11)
image_sec_derivative = laplace(image)