File size: 2,820 Bytes
9730689
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8e31541
02021c1
328e188
9730689
 
 
 
 
 
 
 
 
 
 
 
 
 
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import gradio as gr

import kornia as K
from kornia.core import Tensor

def edge_detection(filepath, detector): 

    img: Tensor = K.io.load_image(filepath, K.io.ImageLoadType.RGB32)    
    img = img[None]

    x_gray = K.color.rgb_to_grayscale(img)
    

    if detector == '1st order derivates in x':
        grads: Tensor = K.filters.spatial_gradient(x_gray, order=1) 
        grads_x = grads[:, :, 0]
        grads_y = grads[:, :, 1]
        
        output = K.utils.tensor_to_image(1. - grads_x.clamp(0., 1.))
    
    elif detector == '1st order derivates in y':
        grads: Tensor = K.filters.spatial_gradient(x_gray, order=1)
        grads_x = grads[:, :, 0]
        grads_y = grads[:, :, 1]
        
        output = K.utils.tensor_to_image(1. - grads_y.clamp(0., 1.))
        
    elif detector == '2nd order derivatives in x':
        grads: Tensor = K.filters.spatial_gradient(x_gray, order=2) 
        grads_x = grads[:, :, 0]
        grads_y = grads[:, :, 1]
        
        output = K.utils.tensor_to_image(1. - grads_x.clamp(0., 1.))
        
    elif detector == '2nd order derivatives in y':
        grads: Tensor = K.filters.spatial_gradient(x_gray, order=2)
        grads_x = grads[:, :, 0]
        grads_y = grads[:, :, 1]
        
        output = K.utils.tensor_to_image(1. - grads_y.clamp(0., 1.))
        
    elif detector == 'Sobel':
        x_sobel: Tensor = K.filters.sobel(x_gray)
        output = K.utils.tensor_to_image(1. - x_sobel)

    elif detector == 'Laplacian':
        x_laplacian: Tensor = K.filters.laplacian(x_gray, kernel_size=5)
        output = K.utils.tensor_to_image(1. - x_laplacian.clamp(0., 1.))

    else:
        x_canny: Tensor = K.filters.canny(x_gray)[0]
        output = K.utils.tensor_to_image(1. - x_canny.clamp(0., 1.0))

    return output
    
    

title = "Basic Image Processing for Medical Imaging"
description = "<p style='text-align: center'>Ini adalah contoh Image Processing dasar yang dapat diterapkan pada citra medis.</p><p style='text-align: center'>Untuk menggunakannya, cukup upload citra yang akan diolah atau pilih citra contoh di bawah, kemudian tentukan metode pengolahan citra yang ingin diterapkan.</p>"
article = "<p style='text-align: center'>Created by <a href='http://mahasin.tech/' target='_blank'> Muhammad Masdar Mahasin</a> | <a href='http://mahaseenlab.com/' target='_blank'>MahaseenLab</a>"

iface = gr.Interface(edge_detection, 
            [
            	gr.Image(type="filepath"),
	            gr.Dropdown(choices=["1st order derivates in x", "1st order derivates in y", "2nd order derivatives in x", "2nd order derivatives in y", "Sobel", "Laplacian", "Canny"])
            ],
            "image",
            title=title,
            description=description,
            article=article
            
)

iface.launch()