2.3 KiB
2.3 KiB
Documentation
- Class name: GrowMask
- Category: mask
- Output node: False
- Repo Ref: https://github.com/comfyanonymous/ComfyUI
GrowMask节点旨在通过扩展或侵蚀其边界来操作二进制掩码。它为掩码修改提供了高级功能,这对于需要精确控制掩蔽区域形状和大小的应用程序至关重要。
Input types
Required
- mask
- ‘mask’参数是要被扩展或侵蚀的二进制掩码。它在节点的操作中扮演中心角色,因为它直接影响掩码的输出形状和质量。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
- expand
- ‘expand’参数确定应用于掩码的扩展或侵蚀量。正值会导致膨胀,而负值则导致侵蚀。它显著影响最终掩码的尺寸和细节。
- Comfy dtype: INT
- Python dtype: int
Optional
- tapered_corners
- 当设置为True时,‘tapered_corners’参数将特定的侵蚀模式应用于掩码的角落。这对于实现具有圆角的视觉吸引力掩码形状很重要。
- Comfy dtype: BOOLEAN
- Python dtype: bool
Output types
- expanded_mask
- ‘expanded_mask’输出是掩码扩展或侵蚀过程的结果。它很重要,因为它代表了节点操作后掩码的最终状态。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
Usage tips
- Infra type: CPU
Source code
class GrowMask:
@classmethod
def INPUT_TYPES(cls):
return {'required': {'mask': ('MASK',), 'expand': ('INT', {'default': 0, 'min': -MAX_RESOLUTION, 'max': MAX_RESOLUTION, 'step': 1}), 'tapered_corners': ('BOOLEAN', {'default': True})}}
CATEGORY = 'mask'
RETURN_TYPES = ('MASK',)
FUNCTION = 'expand_mask'
def expand_mask(self, mask, expand, tapered_corners):
c = 0 if tapered_corners else 1
kernel = np.array([[c, 1, c], [1, 1, 1], [c, 1, c]])
mask = mask.reshape((-1, mask.shape[-2], mask.shape[-1]))
out = []
for m in mask:
output = m.numpy()
for _ in range(abs(expand)):
if expand < 0:
output = scipy.ndimage.grey_erosion(output, footprint=kernel)
else:
output = scipy.ndimage.grey_dilation(output, footprint=kernel)
output = torch.from_numpy(output)
out.append(output)
return (torch.stack(out, dim=0),)