eienmojiki commited on
Commit
b5d34b8
·
verified ·
1 Parent(s): b3bac6f

Update filters.py

Browse files
Files changed (1) hide show
  1. 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