Files
CavinHuang-comfyui-nodes-docs/docs/FeatherMask.md
2024-05-15 08:09:49 +08:00

72 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Documentation
- Class name: FeatherMask
- Category: mask
- Output node: False
- Repo Ref: https://github.com/comfyanonymous/ComfyUI
FeatherMask 节点旨在平滑地将给定掩码的边缘与其周围区域混合。它通过逐渐调整掩码的像素不透明度来实现这一点,从而在掩码的边界处创建一个柔和的过渡,这通常用于图像处理和编辑中。当在视觉上不希望掩码和背景之间有硬边时,此节点特别有用。
# Input types
## Required
- mask
- ‘mask’参数是一个定义图像中感兴趣区域的二进制张量。它对节点至关重要,因为它决定了图像的哪些部分将被羽化。掩码的维度及其二进制特性直接影响羽化过程和最终输出。
- Comfy dtype: torch.Tensor
- Python dtype: torch.Tensor
## Optional
- left
- ‘left’参数指定从掩码的左边开始羽化效果的像素数。它在确定掩码左侧羽化区域的宽度方面起着重要作用,因此影响整体视觉结果。
- Comfy dtype: int
- Python dtype: int
- top
- ‘top’参数规定了从掩码的顶部边缘开始羽化的像素数。它对于控制掩码顶部的羽化区域的高度至关重要,影响节点的输出。
- Comfy dtype: int
- Python dtype: int
- right
- ‘right’参数设置从掩码的右边开始羽化的像素数。它是建立掩码右侧羽化区域宽度的关键因素,影响节点的执行和最终外观。
- Comfy dtype: int
- Python dtype: int
- bottom
- ‘bottom’参数指示从掩码的底部边缘开始羽化的像素数。它对于确定掩码底部的羽化区域的高度至关重要,这显著影响节点的结果。
- Comfy dtype: int
- Python dtype: int
# Output types
- feathered_mask
- ‘feathered_mask’输出是一个表示原始掩码并带有羽化边缘的张量。它是节点操作的主要结果,为图像中掩码区域和未掩码区域之间提供了视觉上平滑的过渡。
- Comfy dtype: torch.Tensor
- Python dtype: torch.Tensor
# Usage tips
- Infra type: CPU
# Source code
```
class FeatherMask:
@classmethod
def INPUT_TYPES(cls):
return {'required': {'mask': ('MASK',), 'left': ('INT', {'default': 0, 'min': 0, 'max': MAX_RESOLUTION, 'step': 1}), 'top': ('INT', {'default': 0, 'min': 0, 'max': MAX_RESOLUTION, 'step': 1}), 'right': ('INT', {'default': 0, 'min': 0, 'max': MAX_RESOLUTION, 'step': 1}), 'bottom': ('INT', {'default': 0, 'min': 0, 'max': MAX_RESOLUTION, 'step': 1})}}
CATEGORY = 'mask'
RETURN_TYPES = ('MASK',)
FUNCTION = 'feather'
def feather(self, mask, left, top, right, bottom):
output = mask.reshape((-1, mask.shape[-2], mask.shape[-1])).clone()
left = min(left, output.shape[-1])
right = min(right, output.shape[-1])
top = min(top, output.shape[-2])
bottom = min(bottom, output.shape[-2])
for x in range(left):
feather_rate = (x + 1.0) / left
output[:, :, x] *= feather_rate
for x in range(right):
feather_rate = (x + 1) / right
output[:, :, -x] *= feather_rate
for y in range(top):
feather_rate = (y + 1) / top
output[:, y, :] *= feather_rate
for y in range(bottom):
feather_rate = (y + 1) / bottom
output[:, -y, :] *= feather_rate
return (output,)
```