2.9 KiB
2.9 KiB
Documentation
- Class name: WAS_Mask_Arbitrary_Region
- Category: WAS Suite/Image/Masking
- Output node: False
- Repo Ref: https://github.com/WASasquatch/was-node-suite-comfyui
WAS_Mask_Arbitrary_Region节点的arbitrary_region方法旨在处理输入掩码,并根据提供的大小和阈值参数生成表示感兴趣区域的张量。该方法特别适用于需要识别和提取图像中特定区域的应用,例如图像编辑、分析或涉及区域焦点的机器学习任务。
Input types
Required
- masks
- 输入掩码参数对于arbitrary_region方法至关重要,因为它定义了将从中提取感兴趣区域的来源。输入掩码的质量和特性直接影响区域识别过程的结果。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
Optional
- size
- 大小参数决定了将被视为感兴趣区域的区域的尺寸。它是该方法中的一个关键因素,因为它直接影响提取区域的规模。
- Comfy dtype: INT
- Python dtype: int
- threshold
- 阈值参数用于设置在输入掩码内识别感兴趣区域的灵敏度级别。它在区域提取的准确性中扮演着重要角色。
- Comfy dtype: INT
- Python dtype: int
Output types
- MASKS
- MASKS输出参数代表包含从输入掩码中提取的感兴趣区域的张量。它是一个重要的输出,因为它提供了arbitrary_region方法的最终结果,可供进一步处理或分析。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
Usage tips
- Infra type: CPU
Source code
class WAS_Mask_Arbitrary_Region:
def __init__(self):
self.WT = WAS_Tools_Class()
@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 = 'WAS Suite/Image/Masking'
RETURN_TYPES = ('MASK',)
RETURN_NAMES = ('MASKS',)
FUNCTION = 'arbitrary_region'
def arbitrary_region(self, masks, size=256, threshold=128):
if masks.ndim > 3:
regions = []
for mask in masks:
mask_np = np.clip(255.0 * mask.cpu().numpy().squeeze(), 0, 255).astype(np.uint8)
pil_image = Image.fromarray(mask_np, mode='L')
region_mask = self.WT.Masking.arbitrary_region(pil_image, size, threshold)
region_tensor = pil2mask(region_mask).unsqueeze(0).unsqueeze(1)
regions.append(region_tensor)
regions_tensor = torch.cat(regions, dim=0)
return (regions_tensor,)
else:
mask_np = np.clip(255.0 * masks.cpu().numpy().squeeze(), 0, 255).astype(np.uint8)
pil_image = Image.fromarray(mask_np, mode='L')
region_mask = self.WT.Masking.arbitrary_region(pil_image, size, threshold)
region_tensor = pil2mask(region_mask).unsqueeze(0).unsqueeze(1)
return (region_tensor,)