Nodes/Jovimetrix/LEVELS (JOV) πŸ›—
ComfyUI Node

LEVELS (JOV) πŸ›—

Clip your blacks and whites like a photo editor

By AmoranoΒ·Created 3 years agoΒ·Updated 12 months agoΒ· 397
LEVELS (JOV) πŸ›—
  • πŸ‘Ύ
  • LMH
  • πŸ–ΌοΈ
  • 😷
β—„πŸ”†1.00β–Ί
β—„πŸ”³0.00β–Ί

LEVELS (JOV) πŸ›— is the node that fixes "my image is all gray mush." It remaps an image's tonal range by clipping it against low, mid, and high points - the same levels adjustment you know from Photoshop or GIMP, as a ComfyUI node. You set where black starts, where white starts, and where the midpoint sits, and the node stretches everything in between. It's the fastest way to make a washed-out render pop without touching a KSampler.

The name you're looking at is the legacy one. In current Jovimetrix (2.x) the functionality lives on as ADJUST: LEVELS (JOV) - same core idea, plus two genuinely useful extras the old node didn't have: an AUTO mode that stretches levels automatically, and a HISTOGRAM mode that does it using histogram bin values per channel (new in 2.1.25, per the README). If your workflow references LEVELS (JOV) πŸ›— and it's missing after an update, that's why.

How it works

Under the hood it's a tone remap: pixels below the low point get crushed toward black, pixels above the high point toward white, and the mid value pivots the curve so you can brighten or darken the middle without moving the endpoints. The main input is the LMH vector - three numbers for LOW / MID / HIGH, all 0–1, defaulting to (0, 0.5, 1) which is a no-op. Bring LOW up to crush shadows; bring HIGH down to recover highlights; move MID to adjust midtones.

Other inputs: πŸ‘Ύ takes the image or mask, and the remaining float/πŸ”³ control handles the fine detail of the remap. Outputs are πŸ–ΌοΈ IMAGE and 😷 MASK, so the adjusted luminance is available as a mask too - handy when you want the corrected tones to drive compositing.

Where people get burned: setting MID exactly at 0.5 with LOW=0 and HIGH=1 is the neutral setting, and anything else is a deliberate look. It's easy to drag LOW and HIGH to the extremes and wonder why the image lost all its subtlety - that's just what aggressive clipping does.

Installing it

It's part of the Jovimetrix pack:

# ComfyUI Manager: search "Jovimetrix" and install
cd ComfyUI/custom_nodes
git clone https://github.com/Amorano/Jovimetrix.git
cd Jovimetrix
pip install -r requirements.txt

Restart ComfyUI. No models, no downloads beyond the pack dependencies - this is pure pixel math.

Troubleshooting

  • Image looks posterized / crushed - your LOW/HIGH are too aggressive. Nudge them back toward 0 and 1.
  • Node missing after updating the pack - you're on the pre-2.0 name. Use ADJUST: LEVELS (JOV), which does the same thing and has the auto/histogram modes to boot.
  • Auto mode surprises you - AUTO normalizes the full range, so a deliberately low-contrast image gets "fixed" whether you wanted it or not. That's the feature.

If you only remember one thing: neutral is (0, 0.5, 1), and the current ADJUST: LEVELS is strictly more capable than the node on this page.

CategoryJOVIMETRIX πŸ”ΊπŸŸ©πŸ”΅/ADJUST

Inputs (4)

NameTypeDefaultDescription
πŸ‘Ύopt*β€”
LMHoptVEC30,0.5,10–1β€”
πŸ”†optFLOAT1.000.00001–1β€”
πŸ”³optFLOAT0.000–1β€”

Outputs (2)

NameTypeDescription
πŸ–ΌοΈIMAGEβ€”
😷MASKβ€”