I've been working on image segmentation and computing the directional derivatives of a grey-scaled image, with the objective of detecting contours and edges. I have realised that if I apply a gaussian filter before computing the directional derivatives, the edges get enhanced better. So my question is - why does that happen?
Here's the original image:
here's the derivatives after applying gaussian filtering to the image, with sigma = 6:
*******Python code to compute the derivatives
with rio.open("vein_template.tif", 'r') as ds: RGB_arr = ds.read(masked=True) # read all raster values rgb_1 = np.rot90(np.transpose(RGB_arr, [1, 2, 0])) #the rgb image contains 4 channels, so I'm changing their order, and making the image upright %matplotlib plt.imshow(rgb_1) # Transform to grey-level img gsi = 0.2989 * rgb_1[:, :, 0] + 0.5870 * rgb_1[:, :, 1] + 0.1140 * rgb_1[:, :, 2] plt.imshow(gsi, cmap = "gist_gray") #compute derivatives dx = np.diff(gsi, axis = 0) dy = np.diff(gsi, axis = 1) f = plt.figure() f.add_subplot(1, 2, 1) plt.imshow(dx, cmap = "Greys") plt.title("dx") f.add_subplot(1, 2, 2) plt.imshow(dy, cmap = "Greys") plt.title("dy")