-
Notifications
You must be signed in to change notification settings - Fork 0
/
robert.py
36 lines (27 loc) · 1.09 KB
/
robert.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
from scipy.signal import convolve2d
image= Image.open("./images/coins.png")
# Roberts Cross operator for edge detection
roberts_cross_h = np.array([[1, 0], [0, -1]])
roberts_cross_v = np.array([[0, 1], [-1, 0]])
# Filter the image with the Roberts Cross operator using 2D convolution
edges_h = convolve2d(image, roberts_cross_h, mode='same', boundary='wrap')
edges_v = convolve2d(image, roberts_cross_v, mode='same', boundary='wrap')
# Calculate the magnitude of edges from horizontal and vertical gradients
edges_mag = np.sqrt(edges_h**2 + edges_v**2)
# Convert the edges to black and white using a threshold
threshold = 100
edges_bw = (edges_mag > threshold) * 255
##########################################################################################3
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis('off')
plt.subplot(1, 2, 2)
plt.imshow(edges_bw, cmap='gray')
plt.title('Edges Roberts Cross')
plt.axis('off')
plt.show()