150 lines
5.4 KiB
Markdown
150 lines
5.4 KiB
Markdown
# ComfyUI-Image-Filters
|
|
|
|
Image and matte filtering nodes for ComfyUI
|
|
|
|
```
|
|
latent/filters/*
|
|
image/filters/*
|
|
mask/filters/*
|
|
```
|
|
|
|
Two install batch files are provided, `install.bat` which only installs requirements, and `import_error_install.bat`, which uninstalls all versions of opencv-python before reinstalling only the correct version, opencv-contrib-python (use this if you get import errors relating to opencv or cv2, which are caused by having multiple versions or the wrong version of opencv installed.)
|
|
|
|
## Nodes
|
|
|
|
### Alpha Clean
|
|
|
|
Clean up holes and near-solid areas in a matte.
|
|
|
|
### Alpha Matte
|
|
|
|
Takes an image and alpha or trimap, and refines the edges with closed-form matting. Optionally extracts the foreground and background colors as well. Good for cleaning up SAM segments or hand drawn masks.
|
|
|
|

|
|
|
|
### Blur Image (Fast)
|
|
|
|
Blurs images using opencv gaussian blur, which is >100x faster than comfy image blur. Supports larger blur radius, and separate x/y controls.
|
|
|
|
### Blur Mask (Fast)
|
|
|
|
Same as Blur Image (Fast) but for masks instead of images.
|
|
|
|
### Dilate/Erode Mask
|
|
|
|
Dilate or erode masks, with either a box or circle filter.
|
|
|
|
### Enhance Detail
|
|
|
|
Increase or decrease details in an image or batch of images using a guided filter (as opposed to the typical gaussian blur used by most sharpening filters.)
|
|
|
|

|
|
|
|
### Guided Filter Alpha
|
|
|
|
Use a guided filter to feather edges of a matte based on similar RGB colors. Works best with a strong color separation between FG and BG.
|
|
|
|

|
|
|
|
### Remap Range
|
|
|
|
Fits the color range of an image to a new blackpoint and whitepoint (clamped). Useful for clamping or thresholding soft mattes.
|
|
|
|
### Clamp Outliers
|
|
|
|
Clamps latents that are more than n standard deviations away from 0. Could help with fireflies or stray noise that disrupt the VAE decode.
|
|
|
|
### AdaIN Latent/Image
|
|
|
|
Normalizes latents/images to the mean and std dev of a reference input. Useful for getting rid of color shift from high denoise strength, or matching color to a reference in general.
|
|
|
|
### Batch Normalize Latent/Image
|
|
|
|
Normalizes each frame in a batch to the overall mean and std dev, good for removing overall brightness flickering.
|
|
|
|
### Difference Checker
|
|
|
|
Absolute value of the difference between inputs, with a multiplier to boost dark values for easier viewing. Alternative to the vanilla merge difference node, which is only a subtraction without the abs()
|
|
|
|
### Image Constant (RGB/HSV)
|
|
|
|
Create an empty image of any color, either RGB or HSV
|
|
|
|
### Offset Latent Image
|
|
|
|
Create an empty latent image with custom values, for offset noise but with per-channel control. Can be combined with Latent Stats to get channel values.
|
|
|
|
### Latent Stats
|
|
|
|
Prints some stats about the latents (dimensions, and per-channel mean, std dev, min, and max)
|
|
|
|
### Tonemap / UnTonemap
|
|
|
|
Apply or remove a log + contrast curve tonemap
|
|
|
|
Apply tonemap:
|
|
```
|
|
power = 1.7
|
|
SLog3R = clamp((log10((r + 0.01)/0.19) * 261.5 + 420) / 1023, 0, 1)
|
|
SLog3G = clamp((log10((g + 0.01)/0.19) * 261.5 + 420) / 1023, 0, 1)
|
|
SLog3B = clamp((log10((b + 0.01)/0.19) * 261.5 + 420) / 1023, 0, 1)
|
|
|
|
r = r > 0.06 ? pow(1 / (1 + (1 / pow(SLog3R / (1 - SLog3R), power))), power) : r
|
|
g = g > 0.06 ? pow(1 / (1 + (1 / pow(SLog3G / (1 - SLog3G), power))), power) : g
|
|
b = b > 0.06 ? pow(1 / (1 + (1 / pow(SLog3B / (1 - SLog3B), power))), power) : b
|
|
```
|
|
|
|
Remove tonemap:
|
|
```
|
|
power = 1.7
|
|
SR = 1 / (1 + pow((-1/pow(r, 1/power)) * (pow(r, 1/power) - 1), 1/power))
|
|
SG = 1 / (1 + pow((-1/pow(g, 1/power)) * (pow(g, 1/power) - 1), 1/power))
|
|
SB = 1 / (1 + pow((-1/pow(b, 1/power)) * (pow(b, 1/power) - 1), 1/power))
|
|
|
|
r = r > 0.06 ? pow(10, (SR * 1023 - 420)/261.5) * 0.19 - 0.01 : r
|
|
g = g > 0.06 ? pow(10, (SG * 1023 - 420)/261.5) * 0.19 - 0.01 : g
|
|
b = b > 0.06 ? pow(10, (SB * 1023 - 420)/261.5) * 0.19 - 0.01 : b
|
|
```
|
|
|
|
### Exposure Adjust
|
|
|
|
Linear exposure adjustment in f-stops, with optional tonemap.
|
|
|
|
### Convert Normals
|
|
|
|
Translate between different normal map color spaces, with optional normalization fix and black region fix.
|
|
|
|
### Batch Average Image
|
|
|
|
Returns the single average image of a batch.
|
|
|
|
### Normal Map (Simple)
|
|
|
|
Simple high-frequency normal map from Scharr operator
|
|
|
|
### Keyer
|
|
|
|
Image keyer with luma/sat/channel/greenscreen/etc options
|
|
|
|
### JitterImage, UnJitterImage, BatchAverageUnJittered
|
|
|
|
For supersampling/antialiasing workflows.
|
|
|
|
### Shuffle
|
|
|
|
Move channels around at will.
|
|
|
|
### ColorMatch
|
|
|
|
Match image color to reference image, using mean or blur. Similar to AdaIN.
|
|
|
|
### RestoreDetail
|
|
|
|
Transfers details from one image to another using frequency separation techniques. Useful for restoring the lost details from IC-Light or other img2img workflows. Has options for add/subtract method (fewer artifacts, but mostly ignores highlights) or divide/multiply (more natural but can create artifacts in areas that go from dark to bright), and either gaussian blur or guided filter (prevents oversharpened edges).
|
|
|
|

|
|
|
|
### BetterFilmGrain
|
|
|
|
Yet another film grain node, but this one looks better (realistic grain structure, no pixel-perfect RGB glitter, natural luminance/intensity response) and is 10x faster than the next best option (ProPostFilmGrain).
|