Gx = real(ifft2(kernel1 * fim)).astype(float) Gy = real(ifft2(kernel2 * fim)).astype(float) G = sqrt(Gx**2 + Gy**2) Theta = arctan2(Gy, Gx) * 180 / pi return G, Theta if __name__ == '__main__': # from sys import argv # if len(argv) < 2: # print("Usage: python %s <image>" % argv[0]) # exit() im_path = '/tfshare/PycharmProjects/canny/valve.png' im = array(Image.open(im_path)) im = im[:, :, 0] gim = gaussian(im) grim, gphase = gradient(gim) gray() subplot(2, 2, 1) imshow(im) axis('off') title('Original') subplot(2, 2, 2) imshow(gim) axis('off') title('Gaussian') subplot(2, 2, 3)
if det[i][j] >= det[i - 1][j] and det[i][j] >= det[i + 1][j]: gmax[i][j] = det[i][j] # 135 degrees if (phase[i][j] >= 112.5 and phase[i][j] < 157.5) or (phase[i][j] >= 292.5 and phase[i][j] < 337.5): if det[i][j] >= det[i - 1][j - 1] and det[i][j] >= det[i + 1][j + 1]: gmax[i][j] = det[i][j] return gmax if __name__ == '__main__': from sys import argv if len(argv) < 2: print "Usage: python %s <image>" % argv[0] exit() im = array(Image.open(argv[1])) im = im[:, :, 0] gim = gaussian(im) grim, gphase = gradient(gim) gmax = maximum(grim, gphase) gray() subplot(2, 2, 1) imshow(im) axis('off') title('Original') subplot(2, 2, 2) imshow(gim) axis('off') title('Gaussian')