3.6 KiB
3.6 KiB
Documentation
- Class name: SaltMaskCropRegion
- Category: SALT/Masking/Process
- Output node: False
SaltMaskCropRegion节点专注于根据指定标准(如主导或少数区域)裁剪掩码内的区域,并在这些区域周围应用填充。它旨在通过隔离和调整特定区域的大小来优化掩码数据,从而便于对基于掩码的数据进行有针对性的分析或操作。
Input types
Required
- masks
- 'masks'参数表示要裁剪的输入掩码。它对于确定每个掩码中符合指定裁剪标准的区域至关重要,直接影响输出的裁剪掩码。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
- padding
- 'padding'参数指定在裁剪区域周围添加的填充量。它通过扩展裁剪区域来影响输出裁剪掩码的大小,从而使掩码的使用更加灵活。
- Comfy dtype: INT
- Python dtype: int
- region_type
- 'region_type'参数决定裁剪标准,在掩码中选择"主导"或"少数"区域。这个选择引导裁剪过程,使输出针对特定的感兴趣区域。
- Comfy dtype: COMBO[STRING]
- Python dtype: str
Output types
- cropped_masks
- 应用指定裁剪和填充后的裁剪掩码,可用于进一步处理或分析。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
- crop_data_batch
- 详细说明所执行裁剪操作的数据批次,包括裁剪区域的尺寸和位置。
- Comfy dtype: CROP_DATA_BATCH
- Python dtype: List[Dict]
- top_int
- 裁剪区域的顶部边界整数值。
- Comfy dtype: INT
- Python dtype: int
- left_int
- 裁剪区域的左侧边界整数值。
- Comfy dtype: INT
- Python dtype: int
- right_int
- 裁剪区域的右侧边界整数值。
- Comfy dtype: INT
- Python dtype: int
- bottom_int
- 裁剪区域的底部边界整数值。
- Comfy dtype: INT
- Python dtype: int
- width_int
- 根据裁剪数据计算得出的裁剪区域宽度整数值。
- Comfy dtype: INT
- Python dtype: int
- height_int
- 根据裁剪数据计算得出的裁剪区域高度整数值。
- Comfy dtype: INT
- Python dtype: int
Usage tips
- Infra type:
GPU - Common nodes: unknown
Source code
class SaltMaskCropRegion:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"masks": ("MASK",),
"padding": ("INT",{"default": 24, "min": 0, "max": 4096, "step": 1}),
"region_type": (["dominant", "minority"],),
}
}
RETURN_TYPES = ("MASK", "CROP_DATA_BATCH", "INT", "INT", "INT", "INT", "INT", "INT")
RETURN_NAMES = ("cropped_masks", "crop_data_batch", "top_int", "left_int", "right_int", "bottom_int", "width_int", "height_int")
FUNCTION = "mask_crop_region"
CATEGORY = f"{NAME}/Masking/Process"
def mask_crop_region(self, masks, padding=24, region_type="dominant"):
N = len(masks)
cropped_masks = []
crop_data_list = []
master_size = None
for n in range(N):
mask = masks[n]
mask_pil = mask2pil(mask.unsqueeze(0))
if not master_size:
master_size = mask_pil.size
region_mask, crop_data = MaskFilters.crop_region(mask_pil, region_type, padding)
region_mask = region_mask.resize(master_size)
region_tensor = pil2mask(region_mask)
cropped_masks.append(region_tensor)
crop_data_list.append(crop_data)
cropped_masks_batch = torch.cat(cropped_masks, dim=0)
return (cropped_masks_batch, crop_data_list)