Files
CavinHuang-comfyui-nodes-docs/docs/Sharpen.md
2024-05-26 20:35:16 +08:00

2.5 KiB

Documentation

锐化节点通过增强局部对比度来提高图像清晰度。它将锐化核应用于输入图像,放大边缘和细微细节,从而产生更明确和清晰的视觉效果。

Input types

Required

  • image
    • 图像参数是锐化节点的主要输入,对于节点来说至关重要。它决定了将要进行锐化处理的源材料,影响最终输出的质量和清晰度。
    • Comfy dtype: IMAGE
    • Python dtype: torch.Tensor
  • sharpen_radius
    • 锐化半径参数控制锐化效果的程度。较大的半径会导致更明显的锐化效果,更积极地增强边缘和细节,而较小的半径则产生更微妙的效果。
    • Comfy dtype: INT
    • Python dtype: int
  • alpha
    • alpha参数调整锐化效果的强度。较高的alpha值增加了对比度增强,导致更戏剧性的锐化,而较低的值则产生较轻微的效果。
    • Comfy dtype: FLOAT
    • Python dtype: float

Output types

  • result
    • 结果参数是锐化节点的输出,代表锐化后的图像。它反映了锐化效果的应用,展示了提高的清晰度和定义明确的边缘。
    • Comfy dtype: IMAGE
    • Python dtype: torch.Tensor

Usage tips

  • Infra type: CPU

Source code

class Sharpen:

    def __init__(self):
        pass

    @classmethod
    def INPUT_TYPES(s):
        return {'required': {'image': ('IMAGE',), 'sharpen_radius': ('INT', {'default': 1, 'min': 1, 'max': 15, 'step': 1}), 'alpha': ('FLOAT', {'default': 1.0, 'min': 0.1, 'max': 5.0, 'step': 0.1})}}
    RETURN_TYPES = ('IMAGE',)
    FUNCTION = 'sharpen'
    CATEGORY = 'postprocessing/Filters'

    def sharpen(self, image: torch.Tensor, blur_radius: int, alpha: float):
        if blur_radius == 0:
            return (image,)
        (batch_size, height, width, channels) = image.shape
        kernel_size = blur_radius * 2 + 1
        kernel = torch.ones((kernel_size, kernel_size), dtype=torch.float32) * -1
        center = kernel_size // 2
        kernel[center, center] = kernel_size ** 2
        kernel *= alpha
        kernel = kernel.repeat(channels, 1, 1).unsqueeze(1)
        tensor_image = image.permute(0, 3, 1, 2)
        sharpened = F.conv2d(tensor_image, kernel, padding=center, groups=channels)
        sharpened = sharpened.permute(0, 2, 3, 1)
        result = torch.clamp(sharpened, 0, 1)
        return (result,)