Spaces:
Runtime error
Runtime error
| import numpy as np | |
| import cv2 | |
| from PIL import Image | |
| from cv2.ximgproc import guidedFilter | |
| import gradio as gr | |
| def clean_image( | |
| input_image: Image, | |
| diameter: float = 5, | |
| sigma_color: float = 8, | |
| sigma_space: float = 8, | |
| radius: float = 4, | |
| eps: float = 16, | |
| ) -> Image: | |
| img = np.array(input_image).astype(np.float32) | |
| y = img.copy() | |
| for _ in range(64): | |
| y = cv2.bilateralFilter(y, diameter, sigma_color, sigma_space) | |
| for _ in range(4): | |
| y = guidedFilter(img, y, radius, eps) | |
| output_image = Image.fromarray(y.clip(0, 255).astype(np.uint8)) | |
| return output_image | |
| def example(_image): | |
| pass | |
| def send_to_input(output): | |
| return output | |
| def ui(): | |
| with gr.Blocks() as app: | |
| with gr.Row(): | |
| with gr.Column(): | |
| input_image = gr.Image(type="pil", label="Input Image") | |
| start_btn = gr.Button(value="Start", variant="primary") | |
| with gr.Accordion("Advanced Config", open=False): | |
| # ref: https://github.com/gogodr/AdverseCleanerExtension | |
| gr.Markdown("#### Bilateral Filter") | |
| diameter_slider = gr.Slider( | |
| minimum=1, | |
| maximum=30, | |
| step=1, | |
| value=5, | |
| label="Diameter (default = 5)", | |
| interactive=True, | |
| ) | |
| sigma_color_slider = gr.Slider( | |
| minimum=1, | |
| maximum=30, | |
| step=1, | |
| value=8, | |
| label="SigmaColor (default = 8)", | |
| interactive=True, | |
| ) | |
| sigma_space_slider = gr.Slider( | |
| minimum=1, | |
| maximum=30, | |
| step=1, | |
| value=8, | |
| label="SigmaSpace (default = 8)", | |
| interactive=True, | |
| ) | |
| gr.Markdown("#### Guided Filter") | |
| radius_slider = gr.Slider( | |
| minimum=1, | |
| maximum=30, | |
| step=1, | |
| value=4, | |
| label="Radius (default = 4)", | |
| interactive=True, | |
| ) | |
| eps_slider = gr.Slider( | |
| minimum=1, | |
| maximum=30, | |
| step=1, | |
| value=16, | |
| label="Accuracy (default = 16)", | |
| interactive=True, | |
| ) | |
| gr.Examples( | |
| examples=[ | |
| ["./examples/sample1.jpg"], | |
| ["./examples/sample2.jpg"], | |
| ["./examples/sample3.jpg"], | |
| ], | |
| inputs=[ | |
| input_image, | |
| ], | |
| outputs=[], | |
| fn=example, | |
| cache_examples=True, | |
| ) | |
| with gr.Column(): | |
| output_image = gr.Image( | |
| type="pil", label="Output Image", interactive=False | |
| ) | |
| send_to_input_btn = gr.Button(value="Use as input", variant="secondary") | |
| gr.Markdown( | |
| "The lllyasviel's original repo is [here](https://github.com/lllyasviel/AdverseCleaner/tree/main)." | |
| ) | |
| start_btn.click( | |
| fn=clean_image, | |
| inputs=[ | |
| input_image, | |
| diameter_slider, | |
| sigma_color_slider, | |
| sigma_space_slider, | |
| radius_slider, | |
| eps_slider, | |
| ], | |
| outputs=[output_image], | |
| ) | |
| send_to_input_btn.click( | |
| fn=send_to_input, inputs=[output_image], outputs=[input_image] | |
| ) | |
| app.launch() | |
| if __name__ == "__main__": | |
| ui() | |