2.1 KiB
2.1 KiB
Documentation
- Class name: SaltMaskClipHardeningFilter
- Category: SALT/Masking/Filter
- Output node: False
该节点对遮罩区域应用剪裁硬化滤镜,通过锐化处理增强其边缘和细节。它允许调整强度以控制效果的强弱。
Input types
Required
- masks
- 要处理的遮罩,用于增强其清晰度和定义。
- Comfy dtype: MASK
- Python dtype: List[torch.Tensor]
Optional
- strength
- 控制应用于遮罩的锐化效果强度。值越高,效果越明显。
- Comfy dtype: FLOAT
- Python dtype: float
Output types
- MASKS
- 经过剪裁硬化滤镜处理后的遮罩,边缘和细节得到增强。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
Usage tips
- Infra type:
GPU - Common nodes: unknown
Source code
class SaltMaskClipHardeningFilter:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"masks": ("MASK",),
},
"optional": {
"strength": ("FLOAT", {"default": 1.5, "min": 0.1, "max": 6.0, "step": 0.01}),
}
}
CATEGORY = f"{NAME}/Masking/Filter"
RETURN_TYPES = ("MASK",)
RETURN_NAMES = ("MASKS",)
FUNCTION = "sharpening_filter"
def sharpening_filter(self, masks, strength=1.5):
if not isinstance(strength, list):
strength = [strength]
regions = []
for i, mask in enumerate(masks):
pil_image = ImageOps.invert(mask2pil(mask.unsqueeze(0)))
image_array = np.array(pil_image.convert('RGB'))
current_strength = strength[i if i < len(strength) else -1]
kernel = np.array([[-1, -1, -1],
[-1, 8 * current_strength, -1],
[-1, -1, -1]])
sharpened = cv2.filter2D(image_array, -1, kernel)
sharpened = np.clip(sharpened, 0, 255).astype(np.uint8)
sharpened_pil = Image.fromarray(sharpened)
region_tensor = pil2mask(sharpened_pil)
regions.append(region_tensor)
regions_tensor = torch.cat(regions, dim=0)
return (regions_tensor,)