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

90 lines
3.4 KiB
Markdown

# Documentation
- Class name: SaltMaskRegionSplit
- Category: SALT/Masking/Filter
- Output node: False
- Repo Ref: https://github.com/comfyanonymous/ComfyUI
SaltMaskRegionSplit节点旨在隔离和分割给定掩码集中的不同区域,基于连通性有效地将它们分割成不同的区域。这个节点在图像处理和计算机视觉任务中特别有用,可以帮助识别和分析复杂图像中的独立区域或对象。
# Input types
## Required
- masks
- masks参数是SaltMaskRegionSplit节点的核心输入,它代表要被分割成不同区域的输入掩码。这个参数对确定分割结果至关重要,因为它直接影响掩码中不同区域的隔离。通过处理这些输入掩码,节点能够识别和分离出独立的连通区域,从而实现有效的区域分割。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
# Output types
- region1
- 代表从输入掩码中分离出的第一个区域。这个输出可能对应于图像中最大或最显著的连通区域。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
- region2
- 代表从输入掩码中分离出的第二个区域。这个输出可能对应于图像中第二大或第二显著的连通区域。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
- region3
- 代表从输入掩码中分离出的第三个区域。这个输出继续按重要性或大小顺序提供下一个独立区域。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
- region4
- 代表从输入掩码中分离出的第四个区域。这个输出提供了另一个独立的连通区域,进一步细化了区域分割。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
- region5
- 代表从输入掩码中分离出的第五个区域。这个输出继续提供更多的独立区域,有助于全面分析复杂图像。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
- region6
- 代表从输入掩码中分离出的第六个区域。这是最后一个输出区域,完成了对输入掩码中主要连通区域的分割。
- Comfy dtype: MASK
- Python dtype: torch.Tensor
## Usage tips
- Infra type: `GPU`
- Common nodes: unknown
## Source code
```python
class SaltMaskRegionSplit:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"masks": ("MASK",),
}
}
CATEGORY = f"{NAME}/Masking/Filter"
RETURN_TYPES = ("MASK", "MASK", "MASK", "MASK", "MASK", "MASK")
RETURN_NAMES = ("region1", "region2", "region3", "region4", "region5", "region6")
FUNCTION = "isolate_regions"
def isolate_regions(self, masks):
region_outputs = []
for mask in masks:
pil_image = ImageOps.invert(mask2pil(mask.unsqueeze(0)))
mask_array = np.array(pil_image.convert('L'))
num_labels, labels_im = cv2.connectedComponents(mask_array)
outputs = [np.zeros_like(mask_array) for _ in range(6)]
for i in range(1, min(num_labels, 7)):
outputs[i-1][labels_im == i] = 255
for output in outputs:
output_pil = Image.fromarray(output)
region_tensor = pil2mask(output_pil)
region_outputs.append(region_tensor)
regions_tensor = torch.stack(region_outputs, dim=0).view(len(masks), 6, *mask.size())
return tuple(regions_tensor.unbind(dim=1))
```