106 lines
3.2 KiB
Markdown
106 lines
3.2 KiB
Markdown
|
|
# Documentation
|
|
- Class name: `ImageNoiseBeta`
|
|
- Category: `image/noise`
|
|
- Output node: `False`
|
|
|
|
ImageNoiseBeta节点用于向图像引入基于贝塔分布的噪声,可以模拟各种噪声效果。该节点能够调整噪声强度,并根据颜色通道选择性地应用噪声,支持单色和彩色噪声应用。
|
|
|
|
# Input types
|
|
## Required
|
|
- **`images`**
|
|
- 需要应用贝塔噪声的输入图像。这个参数对于定义将要被修改的基础内容至关重要。
|
|
- Comfy dtype: `IMAGE`
|
|
- Python dtype: `torch.Tensor`
|
|
- **`a`**
|
|
- 指定贝塔分布的alpha参数,影响噪声分布曲线的形状。
|
|
- Comfy dtype: `INT`
|
|
- Python dtype: `int`
|
|
- **`b`**
|
|
- 指定贝塔分布的beta参数,同样影响噪声分布曲线的形状。
|
|
- Comfy dtype: `INT`
|
|
- Python dtype: `int`
|
|
- **`monochromatic`**
|
|
- 决定噪声是应该以单色方式应用于所有通道,还是单独应用于每个通道。
|
|
- Comfy dtype: `COMBO[STRING]`
|
|
- Python dtype: `bool`
|
|
- **`invert`**
|
|
- 控制是否应该反转噪声效果,提供不同的视觉效果。
|
|
- Comfy dtype: `COMBO[STRING]`
|
|
- Python dtype: `bool`
|
|
- **`channels`**
|
|
- 指定应该应用噪声的颜色通道,允许选择性地应用噪声。
|
|
- Comfy dtype: `COMBO[STRING]`
|
|
- Python dtype: `str`
|
|
|
|
# Output types
|
|
- **`image`**
|
|
- 应用了基于贝塔分布噪声的输出图像,反映了指定的强度和通道选择。
|
|
- Comfy dtype: `IMAGE`
|
|
- Python dtype: `torch.Tensor`
|
|
|
|
|
|
## Usage tips
|
|
- Infra type: `GPU`
|
|
- Common nodes: unknown
|
|
|
|
|
|
## Source code
|
|
```python
|
|
class ImageNoiseBeta:
|
|
def __init__(self):
|
|
pass
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"images": ("IMAGE",),
|
|
"a": ("INT", {
|
|
"default": 1,
|
|
"min": 1,
|
|
}),
|
|
"b": ("INT", {
|
|
"default": 1,
|
|
"min": 1,
|
|
}),
|
|
"monochromatic": (["false", "true"],),
|
|
"invert": (["false", "true"],),
|
|
"channels": (["rgb", "rgba", "rg", "rb", "ra", "gb", "ga", "ba", "r", "g", "b", "a"],),
|
|
},
|
|
}
|
|
|
|
RETURN_TYPES = ("IMAGE",)
|
|
FUNCTION = "node"
|
|
CATEGORY = "image/noise"
|
|
|
|
def noise(self, images, a, b, monochromatic, invert):
|
|
if monochromatic and images.shape[3] > 1:
|
|
noise = np.random.beta(a, b, images.shape[:3])
|
|
else:
|
|
noise = np.random.beta(a, b, images.shape)
|
|
|
|
if monochromatic and images.shape[3] > 1:
|
|
noise = noise[..., np.newaxis].repeat(images.shape[3], -1)
|
|
|
|
if invert:
|
|
noise = images - noise
|
|
else:
|
|
noise = images + noise
|
|
|
|
noise = noise.astype(images.dtype)
|
|
|
|
return noise
|
|
|
|
def node(self, images, a, b, monochromatic, invert, channels):
|
|
tensor = images.clone().detach()
|
|
|
|
monochromatic = True if monochromatic == "true" else False
|
|
invert = True if invert == "true" else False
|
|
|
|
return (channels_layer(tensor, channels, lambda x: self.noise(
|
|
x, a, b, monochromatic, invert
|
|
)),)
|
|
|
|
```
|