I am trying to compute the gradient orientation of an image, in the first part, I need to compute the first-order derivative of an image (in both horizontal and vertical direction), so I applied Gaussian filter in scipy module in order to get it, but I got an error "AttributeError: 'int' object has no attribute 'shape'"
I am using python version 3.7.0 and the opencv version is 3.4.2.
The function documentation is here: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 )
Is this correct? or how to compute the first derivative(and second derivative) of an image.
To get the first derivative of the image, you can apply gaussian filter in scipy as follows.
from scipy.ndimage import gaussian_filter, laplace
image_first_derivative = gaussian_filer(image, sigma=3)
If sigma is a single number, then derrivative will calculated in all directions. To specify the direction pass the sigma as sequence.
Above is the first derivative of the image taken in x-direction with sigma=(11,0)
. The below image is derivative taken in y-direction with sigma=(0, 11)
you can choose the value of sigma accordingly. For calculating second derivative laplacian operator can be used.
image_sec_derivative = laplace(image)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With