From 6209f15527cdc6c63677e78a4498ee37fd8158d1 Mon Sep 17 00:00:00 2001 From: catboxanon <122327233+catboxanon@users.noreply.github.com> Date: Fri, 11 Aug 2023 03:14:10 -0400 Subject: [PATCH 1/3] Fix mask blur --- scripts/controlnet.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/scripts/controlnet.py b/scripts/controlnet.py index 5adf3054b..9ee1ce995 100644 --- a/scripts/controlnet.py +++ b/scripts/controlnet.py @@ -163,8 +163,22 @@ def prepare_mask( mask = mask.convert("L") if getattr(p, "inpainting_mask_invert", False): mask = ImageOps.invert(mask) - if getattr(p, "mask_blur", 0) > 0: - mask = mask.filter(ImageFilter.GaussianBlur(p.mask_blur)) + + if hasattr(p, 'mask_blur'): + if getattr(p, "mask_blur", 0) > 0: + mask = mask.filter(ImageFilter.GaussianBlur(p.mask_blur)) + else: + if getattr(p, "mask_blur_x", 0) > 0: + np_mask = np.array(mask) + kernel_size = 2 * int(4 * p.mask_blur_x + 0.5) + 1 + np_mask = cv2.GaussianBlur(np_mask, (kernel_size, 1), p.mask_blur_x) + mask = Image.fromarray(np_mask) + if getattr(p, "mask_blur_y", 0) > 0: + np_mask = np.array(mask) + kernel_size = 2 * int(4 * p.mask_blur_y + 0.5) + 1 + np_mask = cv2.GaussianBlur(np_mask, (1, kernel_size), p.mask_blur_y) + mask = Image.fromarray(np_mask) + return mask From 162b624ab9acd1697de9176dbead2e93bf538701 Mon Sep 17 00:00:00 2001 From: catboxanon <122327233+catboxanon@users.noreply.github.com> Date: Fri, 11 Aug 2023 03:47:07 -0400 Subject: [PATCH 2/3] Prioritize mask_blur_x over mask_blur --- scripts/controlnet.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/controlnet.py b/scripts/controlnet.py index 9ee1ce995..fbc3c3899 100644 --- a/scripts/controlnet.py +++ b/scripts/controlnet.py @@ -164,10 +164,7 @@ def prepare_mask( if getattr(p, "inpainting_mask_invert", False): mask = ImageOps.invert(mask) - if hasattr(p, 'mask_blur'): - if getattr(p, "mask_blur", 0) > 0: - mask = mask.filter(ImageFilter.GaussianBlur(p.mask_blur)) - else: + if hasattr(p, 'mask_blur_x'): if getattr(p, "mask_blur_x", 0) > 0: np_mask = np.array(mask) kernel_size = 2 * int(4 * p.mask_blur_x + 0.5) + 1 @@ -178,6 +175,9 @@ def prepare_mask( kernel_size = 2 * int(4 * p.mask_blur_y + 0.5) + 1 np_mask = cv2.GaussianBlur(np_mask, (1, kernel_size), p.mask_blur_y) mask = Image.fromarray(np_mask) + else: + if getattr(p, "mask_blur", 0) > 0: + mask = mask.filter(ImageFilter.GaussianBlur(p.mask_blur)) return mask From d34ee9b979c1bdc5f09bfc8eae003935c0d14be1 Mon Sep 17 00:00:00 2001 From: catboxanon <122327233+catboxanon@users.noreply.github.com> Date: Fri, 11 Aug 2023 04:17:37 -0400 Subject: [PATCH 3/3] Update mask blur sigma values --- scripts/controlnet.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/controlnet.py b/scripts/controlnet.py index fbc3c3899..29d08e655 100644 --- a/scripts/controlnet.py +++ b/scripts/controlnet.py @@ -167,12 +167,12 @@ def prepare_mask( if hasattr(p, 'mask_blur_x'): if getattr(p, "mask_blur_x", 0) > 0: np_mask = np.array(mask) - kernel_size = 2 * int(4 * p.mask_blur_x + 0.5) + 1 + kernel_size = 2 * int(2.5 * p.mask_blur_x + 0.5) + 1 np_mask = cv2.GaussianBlur(np_mask, (kernel_size, 1), p.mask_blur_x) mask = Image.fromarray(np_mask) if getattr(p, "mask_blur_y", 0) > 0: np_mask = np.array(mask) - kernel_size = 2 * int(4 * p.mask_blur_y + 0.5) + 1 + kernel_size = 2 * int(2.5 * p.mask_blur_y + 0.5) + 1 np_mask = cv2.GaussianBlur(np_mask, (1, kernel_size), p.mask_blur_y) mask = Image.fromarray(np_mask) else: