Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -9,9 +9,49 @@ def greet(image, in_contrast, in_brightness):
|
|
9 |
# https://docs.opencv.org/4.x/d3/dc1/tutorial_basic_linear_transform.html
|
10 |
new_image = cv2.convertScaleAbs(image, alpha=in_contrast, beta=in_brightness)
|
11 |
|
|
|
|
|
|
|
|
|
12 |
return new_image
|
13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
demo = gradio.Interface(
|
16 |
fn=greet,
|
17 |
inputs=['image', gradio.Slider(1,3), gradio.Slider(0, 100)],
|
|
|
9 |
# https://docs.opencv.org/4.x/d3/dc1/tutorial_basic_linear_transform.html
|
10 |
new_image = cv2.convertScaleAbs(image, alpha=in_contrast, beta=in_brightness)
|
11 |
|
12 |
+
# We create our gabor filters, and then apply them to our image
|
13 |
+
gfilters = create_gaborfilter()
|
14 |
+
new_image = apply_filter(new_image, gfilters)
|
15 |
+
|
16 |
return new_image
|
17 |
|
18 |
+
def create_gaborfilter():
|
19 |
+
# This function is designed to produce a set of GaborFilters
|
20 |
+
# an even distribution of theta values equally distributed amongst pi rad / 180 degree
|
21 |
+
|
22 |
+
filters = []
|
23 |
+
num_filters = 16
|
24 |
+
ksize = 35 # The local area to evaluate
|
25 |
+
sigma = 3.0 # Larger Values produce more edges
|
26 |
+
lambd = 10.0
|
27 |
+
gamma = 0.5
|
28 |
+
psi = 0 # Offset value - lower generates cleaner results
|
29 |
+
for theta in np.arange(0, np.pi, np.pi / num_filters): # Theta is the orientation for edge detection
|
30 |
+
kern = cv2.getGaborKernel((ksize, ksize), sigma, theta, lambd, gamma, psi, ktype=cv2.CV_64F)
|
31 |
+
kern /= 1.0 * kern.sum() # Brightness normalization
|
32 |
+
filters.append(kern)
|
33 |
+
return filters
|
34 |
|
35 |
+
def apply_filter(img, filters):
|
36 |
+
# This general function is designed to apply filters to our image
|
37 |
+
|
38 |
+
# First create a numpy array the same size as our input image
|
39 |
+
newimage = np.zeros_like(img)
|
40 |
+
|
41 |
+
# Starting with a blank image, we loop through the images and apply our Gabor Filter
|
42 |
+
# On each iteration, we take the highest value (super impose), until we have the max value across all filters
|
43 |
+
# The final image is returned
|
44 |
+
depth = -1 # remain depth same as original image
|
45 |
+
|
46 |
+
for kern in filters: # Loop through the kernels in our GaborFilter
|
47 |
+
image_filter = cv2.filter2D(img, depth, kern) #Apply filter to image
|
48 |
+
|
49 |
+
# Using Numpy.maximum to compare our filter and cumulative image, taking the higher value (max)
|
50 |
+
np.maximum(newimage, image_filter, newimage)
|
51 |
+
return newimage
|
52 |
+
|
53 |
+
|
54 |
+
|
55 |
demo = gradio.Interface(
|
56 |
fn=greet,
|
57 |
inputs=['image', gradio.Slider(1,3), gradio.Slider(0, 100)],
|