File size: 2,836 Bytes
bb7f1f4 |
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 75 |
import gradio as gr
import numpy as np
import cv2
import modules.scripts as scripts
from modules import images
from modules.shared import opts
from cv2.ximgproc import guidedFilter
from modules.processing import process_images
class Script(scripts.Script):
def title(self):
return "AdverseCleaner"
def show(self, is_img2img):
return True
def ui(self, is_img2img):
info = gr.Markdown('''
### Bilateral Filter
''')
bilateral_steps = gr.Slider(minimum=1, maximum=128, step=1,
value=64, label="Bilateral Steps")
diameter = gr.Slider(minimum=1, maximum=30, step=1,
value=5, label="Diameter")
sigma_color = gr.Slider(minimum=1, maximum=30,
step=1, value=8, label="SigmaColor")
sigma_space = gr.Slider(minimum=1, maximum=30,
step=1, value=8, label="SigmaSpace")
info2 = gr.Markdown('''
### Guided Filter
''')
guided_steps = gr.Slider(minimum=1, maximum=64, step=1,
value=4, label="Guided Steps")
radius = gr.Slider(minimum=1, maximum=30, step=1,
value=4, label="Radius")
eps = gr.Slider(minimum=1, maximum=30, step=1,
value=16, label="Accuracy")
return [info, bilateral_steps, diameter, sigma_color, sigma_space, info2, guided_steps, radius, eps]
def run(self, p, _, bilateral_steps, diameter, sigma_color, sigma_space, __, guided_steps, radius, eps):
from PIL import Image
has_grid = False
proc = process_images(p)
unwanted_grid_because_of_img_count = len(
proc.images) < 2 and opts.grid_only_if_multiple
if (opts.return_grid or opts.grid_save) and not p.do_not_save_grid and not unwanted_grid_because_of_img_count:
has_grid = True
def process(im,i):
outpath = p.outpath_grids if has_grid and i == 0 else p.outpath_samples
img = cv2.cvtColor(
np.array(im), cv2.COLOR_RGB2BGR).astype(np.float32)
y = img.copy()
for _ in range(bilateral_steps):
y = cv2.bilateralFilter(y, diameter, sigma_color, sigma_space)
for _ in range(guided_steps):
y = guidedFilter(img, y, radius, eps)
out_image = Image.fromarray(cv2.cvtColor(
y.clip(0, 255).astype(np.uint8), cv2.COLOR_BGR2RGB))
images.save_image(out_image, outpath, "img_", proc.seed +
i, proc.prompt, "png", info=proc.info, p=p)
return out_image
for i in range(len(proc.images)):
proc.images.append(process(proc.images[i], i))
return proc
|