Files
CavinHuang-comfyui-nodes-docs/docs/SaltMaskArbitaryRegion.md
2024-07-04 08:39:03 +08:00

2.5 KiB

Documentation

SaltMaskArbitaryRegion节点用于在给定的掩码中根据指定的大小和阈值参数过滤任意区域。此节点允许自定义掩码区域,适用于图像分割或物体隔离等多种应用场景。通过调整大小和阈值参数,用户可以精确控制过滤的区域范围和强度,从而实现对掩码的灵活处理和优化。

Input types

Required

  • masks
    • 作为输入的掩码,是任意区域过滤操作的对象。这个参数对于定义需要处理的区域至关重要。
    • Comfy dtype: MASK
    • Python dtype: torch.Tensor
  • size
    • 指定任意区域过滤的大小参数,直接影响掩码中被过滤区域的尺度。通过调整此参数,可以控制处理的精细程度。
    • Comfy dtype: INT
    • Python dtype: int
  • threshold
    • 决定任意区域过滤的阈值,影响掩码中哪些部分会被纳入处理范围。这个参数可以用来调整过滤的敏感度。
    • Comfy dtype: INT
    • Python dtype: int

Output types

  • MASKS
    • 输出是根据指定的大小和阈值参数过滤后的修改版掩码。这个处理后的掩码可以用于后续的图像处理或分析任务。
    • Comfy dtype: MASK
    • Python dtype: torch.Tensor

Usage tips

  • Infra type: GPU
  • Common nodes: unknown

Source code

class SaltMaskArbitaryRegion:
    @classmethod
    def INPUT_TYPES(cls):
        return {
                    "required": {
                        "masks": ("MASK",),
                        "size": ("INT", {"default":256, "min":1, "max":4096, "step":1}),
                        "threshold": ("INT", {"default":128, "min":0, "max":255, "step":1}),
                    }
                }

    CATEGORY = f"{NAME}/Masking/Filter"

    RETURN_TYPES = ("MASK",)
    RETURN_NAMES = ("MASKS",)

    FUNCTION = "arbitrary_region"

    def arbitrary_region(self, masks, size=256, threshold=128):
        if not isinstance(threshold, list):
            threshold = [threshold]
        regions = []
        for i, mask in enumerate(masks):
            pil_image = mask2pil(mask.unsqueeze(0))
            region_mask = MaskFilters.arbitrary_region(pil_image, size, int(threshold[i if i < len(threshold) else -1]))
            region_tensor = pil2mask(region_mask)
            regions.append(region_tensor)
        regions_tensor = torch.cat(regions, dim=0)
        return (regions_tensor,)