76 lines
2.6 KiB
Markdown
76 lines
2.6 KiB
Markdown
|
|
# Documentation
|
|
- Class name: SaltMaskThresholdRegion
|
|
- Category: SALT/Masking/Filter
|
|
- Output node: False
|
|
- Repo Ref: https://github.com/comfyanonymous/ComfyUI
|
|
|
|
该节点对掩码区域应用阈值过滤器,根据指定的黑白阈值对它们进行分割。它旨在隔离和增强掩码中的区域,使得根据不同区域的强度水平更容易区分它们。
|
|
|
|
# Input types
|
|
## Required
|
|
- masks
|
|
- 要处理的输入掩码。这些掩码基于提供的阈值进行分割,这些阈值决定了定义区域边界的强度水平。
|
|
- Comfy dtype: MASK
|
|
- Python dtype: List[torch.Tensor]
|
|
- black_threshold
|
|
- 像素强度的下限。强度低于该值的像素被设置为黑色,有助于分割掩码中较暗的区域。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
- white_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
|
|
```python
|
|
class SaltMaskThresholdRegion:
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"masks": ("MASK",),
|
|
"black_threshold": ("INT",{"default":75, "min":0, "max": 255, "step": 1}),
|
|
"white_threshold": ("INT",{"default":175, "min":0, "max": 255, "step": 1}),
|
|
}
|
|
}
|
|
|
|
CATEGORY = f"{NAME}/Masking/Filter"
|
|
|
|
RETURN_TYPES = ("MASK",)
|
|
RETURN_NAMES = ("MASKS",)
|
|
|
|
FUNCTION = "threshold_region"
|
|
|
|
def threshold_region(self, masks, black_threshold=75, white_threshold=255):
|
|
if not isinstance(black_threshold, list):
|
|
black_threshold = [black_threshold]
|
|
if not isinstance(white_threshold, list):
|
|
white_threshold = [white_threshold]
|
|
regions = []
|
|
for i, mask in enumerate(masks):
|
|
pil_image = mask2pil(mask.unsqueeze(0))
|
|
region_mask = MaskFilters.threshold_region(
|
|
pil_image,
|
|
int(black_threshold[i if i < len(black_threshold) else -1]),
|
|
int(white_threshold[i if i < len(white_threshold) else -1])
|
|
)
|
|
region_tensor = pil2mask(region_mask)
|
|
regions.append(region_tensor)
|
|
regions_tensor = torch.cat(regions, dim=0)
|
|
return (regions_tensor,)
|
|
|
|
```
|