File size: 1,802 Bytes
773e9ba
75f3697
01831da
330ebbf
01831da
d0c6198
330ebbf
 
 
 
 
 
 
 
d0c6198
330ebbf
 
 
 
 
 
 
 
d0c6198
330ebbf
 
 
 
 
d0c6198
330ebbf
 
 
 
 
 
 
d0c6198
330ebbf
d0c6198
 
aad3cf7
330ebbf
79d4fe3
330ebbf
 
 
 
 
 
 
 
 
 
 
 
79d4fe3
b967e7e
79d4fe3
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
import gradio as gr
import numpy as np
import cv2
from PIL import Image
import os

def enhance_image(
    input_img,
    contrast=1.2,
    brightness=10,
    sharpness=2.0,
    denoise_strength=10
):
    """Enhance image using OpenCV operations"""
    try:
        # Convert to OpenCV format
        img = np.array(input_img)
        
        # Contrast and brightness adjustment
        img = cv2.convertScaleAbs(img, alpha=contrast, beta=brightness)
        
        # Denoising
        img = cv2.fastNlMeansDenoisingColored(img, None, denoise_strength, denoise_strength, 7, 21)
        
        # Sharpening
        kernel = np.array([[-1,-1,-1], 
                          [-1,9,-1],
                          [-1,-1,-1]])
        img = cv2.filter2D(img, -1, kernel)
        
        # Color correction
        img = cv2.cvtColor(img, cv2.COLOR_RGB2LAB)
        l, a, b = cv2.split(img)
        clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8,8))
        l = clahe.apply(l)
        img = cv2.merge((l,a,b))
        img = cv2.cvtColor(img, cv2.COLOR_LAB2RGB)
        
        return Image.fromarray(img)
    except Exception as e:
        raise gr.Error(f"Enhancement failed: {str(e)}")

# Create interface with adjustable parameters
demo = gr.Interface(
    fn=enhance_image,
    inputs=[
        gr.Image(type="pil", label="Input Image"),
        gr.Slider(0.5, 2.0, value=1.2, label="Contrast"),
        gr.Slider(0, 30, value=10, label="Brightness"),
        gr.Slider(0.5, 3.0, value=2.0, label="Sharpness"),
        gr.Slider(0, 20, value=10, label="Denoise Strength")
    ],
    outputs=gr.Image(type="pil", label="Enhanced Image"),
    title="Image Enhancement Tool",
    allow_flagging="never",
    examples=["example.jpg"] if os.path.exists("example.jpg") else None
)

demo.launch()