Spaces:
Running
Running
Update filters.py
Browse files- filters.py +24 -0
filters.py
CHANGED
@@ -48,3 +48,27 @@ def canny_edge(image, lower_threshold: int=100, upper_threshold: int=200, conver
|
|
48 |
gray = image
|
49 |
edges = cv2.Canny(gray, lower_threshold, upper_threshold)
|
50 |
return edges
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
gray = image
|
49 |
edges = cv2.Canny(gray, lower_threshold, upper_threshold)
|
50 |
return edges
|
51 |
+
|
52 |
+
@registry.register("Sobel Edge", defaults={'dx': 1, 'dy': 0, 'kernel_size': 3, 'convert_to_gray': True}, min_vals={'dx': -1, 'dy': -1, 'kernel_size': 3}, max_vals={'dx': 1, 'dy': 1, 'kernel_size': 7}, step_vals={'dx': 1, 'dy': 1, 'kernel_size': 2})
|
53 |
+
def sobel_edge(image, dx: int=1, dy: int=0, kernel_size: int=3, convert_to_gray: bool=True):
|
54 |
+
"""
|
55 |
+
Applies the Sobel edge detector to detect horizontal or vertical edges.
|
56 |
+
|
57 |
+
Args:
|
58 |
+
img (numpy.ndarray): Input image (BGR or grayscale)
|
59 |
+
dx (int): Order of derivative in x-direction (0 = no x-edge detection)
|
60 |
+
dy (int): Order of derivative in y-direction (0 = no y-edge detection)
|
61 |
+
kernel_size (int): Size of Sobel kernel (1, 3, 5, or 7)
|
62 |
+
convert_to_gray (bool): Convert to grayscale first
|
63 |
+
|
64 |
+
Returns:
|
65 |
+
numpy.ndarray: Edge magnitude image
|
66 |
+
"""
|
67 |
+
if convert_to_gray and len(image.shape) == 3:
|
68 |
+
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
|
69 |
+
else:
|
70 |
+
gray = image
|
71 |
+
sobel = cv2.Sobel(gray, cv2.CV_64F, dx, dy, ksize=kernel_size)
|
72 |
+
abs_sobel = cv2.convertScaleAbs(sobel)
|
73 |
+
|
74 |
+
return abs_sobel
|