Files
BVH 4c13885fcd Fixed Sigmoid Correction
Gain is now float instead of int
2023-05-25 16:19:24 +05:30

162 lines
5.3 KiB
Python

import torch
from kornia.filters import bilateral_blur, unsharp_mask
from kornia.enhance import adjust_saturation, adjust_hue, adjust_brightness, adjust_gamma, adjust_sigmoid
class BilateralFilter:
@classmethod
def INPUT_TYPES(s):
return {"required": {"images": ("IMAGE", ),
"kernel_size": ("INT", {"default": 3, "min": 1, "max": 20, "step": 1}),
"sigma_color": ("FLOAT", {"default": 0.25, "min": 0.0, "max": 10.0, "step": 0.01}),
"sigma_space": ("FLOAT", {"default": 1.25, "min": 0.0, "max": 10.0, "step": 0.01}),
}}
RETURN_TYPES = ("IMAGE",)
FUNCTION = "bilateral_filter"
CATEGORY = "ImageProcessing"
def bilateral_filter(self, images, kernel_size, sigma_color, sigma_space):
images = images.movedim(-1, 1).cpu()
images_transformed = bilateral_blur(images, (kernel_size, kernel_size), sigma_color, (sigma_space, sigma_space), color_distance_type="l2")
images_transformed = images_transformed.movedim(1, -1)
return (images_transformed,)
class UnsharpMask:
@classmethod
def INPUT_TYPES(s):
return {"required": {"images": ("IMAGE", ),
"kernel_size": ("INT", {"default": 3, "min": 1, "max": 20, "step": 1}),
"sigma": ("FLOAT", {"default": 1.25, "min": 0.0, "max": 10.0, "step": 0.01}),
}}
RETURN_TYPES = ("IMAGE",)
FUNCTION = "sharpen"
CATEGORY = "ImageProcessing"
def sharpen(self, images, kernel_size, sigma):
images = images.movedim(-1, 1).cpu()
images_transformed = unsharp_mask(images, (kernel_size, kernel_size), (sigma, sigma))
images_transformed = images_transformed.movedim(1, -1)
return (images_transformed,)
class Hue:
@classmethod
def INPUT_TYPES(s):
return {"required": {"images": ("IMAGE", ),
"factor": ("FLOAT", {"default": 0.0, "min": -3.141516, "max": 3.141516, "step": 0.001}),
}}
RETURN_TYPES = ("IMAGE",)
FUNCTION = "hue"
CATEGORY = "ImageProcessing"
def hue(self, images, factor):
images = images.movedim(-1, 1).cpu()
images_transformed = adjust_hue(images, factor)
images_transformed = images_transformed.movedim(1, -1)
return (images_transformed,)
class Saturation:
@classmethod
def INPUT_TYPES(s):
return {"required": {"images": ("IMAGE", ),
"factor": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 2.0, "step": 0.01}),
}}
RETURN_TYPES = ("IMAGE",)
FUNCTION = "saturation"
CATEGORY = "ImageProcessing"
def saturation(self, images, factor):
images = images.movedim(-1, 1).cpu()
images_transformed = adjust_saturation(images, factor)
images_transformed = images_transformed.movedim(1, -1)
return (images_transformed,)
class Brightness:
@classmethod
def INPUT_TYPES(s):
return {"required": {"images": ("IMAGE", ),
"factor": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}),
}}
RETURN_TYPES = ("IMAGE",)
FUNCTION = "brightness"
CATEGORY = "ImageProcessing"
def brightness(self, images, factor):
images = images.movedim(-1, 1).cpu()
images_transformed = adjust_brightness(images, factor)
images_transformed = images_transformed.movedim(1, -1)
return (images_transformed,)
class Gamma:
@classmethod
def INPUT_TYPES(s):
return {"required": {"images": ("IMAGE", ),
"gamma_value": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}),
}}
RETURN_TYPES = ("IMAGE",)
FUNCTION = "gamma"
CATEGORY = "ImageProcessing"
def gamma(self, images, gamma_value):
images = images.movedim(-1, 1).cpu()
images_transformed = adjust_gamma(images, gamma_value)
images_transformed = images_transformed.movedim(1, -1)
return (images_transformed,)
class SigmoidCorrection:
@classmethod
def INPUT_TYPES(s):
return {"required": {"images": ("IMAGE", ),
"cutoff": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}),
"gain": ("FLOAT", {"default": 5.0, "min": 1.0, "max": 10.0, "step": 0.01}),
}}
RETURN_TYPES = ("IMAGE",)
FUNCTION = "sigmoid"
CATEGORY = "ImageProcessing"
def sigmoid(self, images, cutoff, gain):
images = images.movedim(-1, 1).cpu()
images_transformed = adjust_sigmoid(images, cutoff, gain)
images_transformed = images_transformed.movedim(1, -1)
return (images_transformed,)
NODE_CLASS_MAPPINGS = {
"BilateralFilter": BilateralFilter,
"UnsharpMask": UnsharpMask,
"Hue": Hue,
"Saturation": Saturation,
"Brightness": Brightness,
"Gamma": Gamma,
"SigmoidCorrection": SigmoidCorrection,
}
NODE_DISPLAY_NAME_MAPPINGS = {
"BilateralFilter": "Bilateral Filter",
"UnsharpMask": "Unsharp Mask",
"Hue": "Hue",
"Saturation": "Saturation",
"Brightness": "Brightness",
"Gamma": "Gamma",
"SigmoidCorrection": "Sigmoid Correction",
}