Nodes/ComfyUI-RndNanthu/🎨 AutoGradePro 2.0
ComfyUI Node

🎨 AutoGradePro 2.0

One node to fix AI color casts, exposure, and contrast — automatically

By rndnanthu·Created about a year ago·Updated 9 months ago· 28
🎨 AutoGradePro 2.0
  • image
  • corrected_image
enable_white_balancetrue
enable_exposuretrue
enable_contrasttrue
enable_skintone_preservetrue
enable_hdr_enhancefalse
wb_strength0.50
exposure_strength0.50
contrast_strength0.50
skintone_strength0.50
hdr_strength0.20

AutoGradePro is the "stop faffing, just fix it" node in the RndNanthu color pack. You drop an image in, it balances the white, sorts out the exposure, adds contrast, and tries not to wreck skin tones - all automatically, one node, no prompt, no model. If you've ever generated a perfectly good image that came out greenish or washed-out and just wanted it fixed, this is the node you reach for instead of building a four-node correction chain.

The pitch is honest in one important way: this isn't a creative grade. It's a rescue pass. The name "AutoGrade" is doing a lot of work - this is closer to what a phone camera does to a photo before you see it, not what a colorist does in Resolve.

How it works

Everything runs as straight-up numpy/OpenCV math on the decoded image - no AI model, no VRAM hit, no weights to download. The pipeline, in order:

  • White balance uses a gray-world assumption: it averages each channel, computes gains that push the means to equal gray, and blends by wb_strength.
  • Auto exposure goes through HSV and stretches the V channel between the 2nd and 98th percentiles - classic histogram stretch, so the darkest 2% and brightest 2% define your black and white points.
  • Auto contrast works on luma in YUV and applies a tanh S-curve around the mean.
  • Skin tone preservation is the interesting bit: it builds a soft HSV mask for typical skin hues (warm reds and oranges), blurs it so the edge is gentle, then blends the original image back in over the skin. That's why faces don't get that weird clinical green cast even when the overall white balance shifts.
  • HDR enhance is off by default, and I'd leave it off. It uses OpenCV's detailEnhance, which is slow on big frames and has a habit of making textures look like HDR-tone-mapped sludge. Turn it on if you want that look, not because you think the image "needs HDR."

The inputs that matter

You've got five enable toggles and five matching strength sliders, all 0–1. The ones you'll actually touch:

  • enable_white_balance, enable_exposure, enable_contrast - leave these on. They're the whole point.
  • enable_skintone_preserve - on by default. If your subject is a car or a landscape, turn it off and you'll get a slightly stronger overall correction.
  • enable_hdr_enhance - off by default. See above.

Each *_strength slider is a mix factor: 0 does nothing, 1 is the full correction. Default 0.5 is a reasonable starting point; I usually end up at 0.6–0.8 for exposure and back the contrast off to 0.4 if the image is already punchy.

Output

One output: corrected_image (IMAGE). Wire it straight into a SaveImage or PreviewImage at the end of your graph. It also makes a nice upstream to the pack's ColorAnalysisPlotNode - auto-correct, then check the scopes to see if you've clipped anything.

Install

Same story for the whole RndNanthu pack - Manager first, or clone it:

cd ComfyUI/custom_nodes
git clone https://github.com/rndnanthu/ComfyUI-RndNanthu
pip install -r requirements.txt

Then restart ComfyUI. In Manager, search "ComfyUI-RndNanthu". The requirements are just torch, numpy, opencv-python, Pillow, matplotlib, imageio - opencv-python is the chunky one but it's a standard install. No model files, no checkpoints, nothing to download beyond the repo.

Where people get burned

  • It only processes the first frame of a batch. image[0] is what gets graded - feed it a 4-frame batch and three frames come back untouched. Run it per-frame or on single images.
  • Console spam. Every run prints a [DEBUG] rgb_uint8 shape line. Harmless, just noisy. You'll see it and wonder if something's wrong. It isn't.
  • It's not a color-managed pipeline. The curves are approximations, and the auto-exposure re-centers to your image's percentiles, which can shift brightness more than you expect. If a result looks over-processed, back the strength sliders down rather than fighting the toggles.

One thing worth knowing before you build a workflow around this pack: it's released under CC BY-NC 4.0, so non-commercial use only. Fine for personal and learning work; if you're doing paid client jobs, check the license before baking it in. The pack is also a first-time author's project (the July 2025 release thread openly says so), so the README marketing is more enthusiastic than the code is refined - judge it by output, not prose. As a one-node auto-rescue before SaveImage, though, it's genuinely handy.

Categoryrndnanthu/🎨Color Tools

Inputs (11)

NameTypeDefaultDescription
imageIMAGE
enable_white_balanceBOOLEANtrue
enable_exposureBOOLEANtrue
enable_contrastBOOLEANtrue
enable_skintone_preserveBOOLEANtrue
enable_hdr_enhanceBOOLEANfalse
wb_strengthFLOAT0.500–1
exposure_strengthFLOAT0.500–1
contrast_strengthFLOAT0.500–1
skintone_strengthFLOAT0.500–1
hdr_strengthFLOAT0.200–1

Outputs (1)

NameTypeDescription
corrected_imageIMAGE