3.3 KiB
3.3 KiB
Documentation
- Class name: EnhanceDetail
- Category: image/filters
- Output node: False
EnhanceDetail节点旨在通过应用一系列滤镜来提高图像的视觉质量,这些滤镜可以增强细节、调整锐度,并可能降低噪声。该节点通过相对于引导滤波器输出来操作图像的细节,从而对增强过程实现精细控制。
Input types
Required
- images
- 需要增强的输入图像。这个参数至关重要,因为它直接影响增强过程,作为所有后续操作的基础。
- Comfy dtype: IMAGE
- Python dtype: torch.Tensor
- filter_radius
- 指定增强过程中应用的滤镜半径。较大的半径可能会导致更明显的细节增强,但也可能增加处理时间。
- Comfy dtype: INT
- Python dtype: int
- sigma
- 控制引导滤波器的sigma参数,影响平滑程度和细节保留。
- Comfy dtype: FLOAT
- Python dtype: float
- denoise
- 决定降噪滤镜的强度。较高的值可以减少噪声,但也可能减弱细节。
- Comfy dtype: FLOAT
- Python dtype: float
- detail_mult
- 细节增强的乘数。调整这个值可以微调细节增强效果的强度。
- Comfy dtype: FLOAT
- Python dtype: float
Output types
- image
- 节点的输出,即经过增强处理后的图像。这些图像预期会有更好的细节表现,并可能降低了噪声。
- Comfy dtype: IMAGE
- Python dtype: torch.Tensor
Usage tips
- Infra type:
GPU - Common nodes: unknown
Source code
class EnhanceDetail:
def __init__(self):
pass
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"images": ("IMAGE",),
"filter_radius": ("INT", {
"default": 2,
"min": 1,
"max": 64,
"step": 1
}),
"sigma": ("FLOAT", {
"default": 0.1,
"min": 0.01,
"max": 100.0,
"step": 0.01
}),
"denoise": ("FLOAT", {
"default": 0.1,
"min": 0.0,
"max": 10.0,
"step": 0.01
}),
"detail_mult": ("FLOAT", {
"default": 2.0,
"min": 0.0,
"max": 100.0,
"step": 0.1
}),
},
}
RETURN_TYPES = ("IMAGE",)
FUNCTION = "enhance"
CATEGORY = "image/filters"
def enhance(self, images: torch.Tensor, filter_radius: int, sigma: float, denoise: float, detail_mult: float):
if filter_radius == 0:
return (images,)
d = filter_radius * 2 + 1
s = sigma / 10
n = denoise / 10
dup = copy.deepcopy(images.cpu().numpy())
for index, image in enumerate(dup):
imgB = image
if denoise>0.0:
imgB = cv2.bilateralFilter(image, d, n, d)
imgG = np.clip(guidedFilter(image, image, d, s), 0.001, 1)
details = (imgB/imgG - 1) * detail_mult + 1
dup[index] = np.clip(details*imgG - imgB + image, 0, 1)
return (torch.from_numpy(dup),)