◎ Radiance Vectorscope
The vectorscope that shows you hue and saturation instead of guessing at them
- image
- vectorscope_image
The waveform tells you how bright things are. The vectorscope tells you how colorful - and in which direction. If you've ever wondered "is this image actually oversaturated, or does it just look punchy on my monitor," a vectorscope settles it: it plots every pixel's chroma on a circle where the angle is hue and the distance from the center is saturation. ◎ Radiance Vectorscope is that instrument, as a node.
It's the natural sibling to Radiance Waveform (the README ships them as a pair in the Analysis zone, and the Radiance viewer has a V shortcut for it). A colorist reads a vectorscope constantly - skin tones cluster along a known line, saturated reds reach toward a specific point, and if your "skin" trace is pointing somewhere it shouldn't, you have a cast even if the preview looks fine.
How it works
The image is converted from RGB to the YCbCr/YUV family of color spaces (via OpenCV's RGB2YCrCb conversion), which separates luma from chroma. The two chroma components - Cb (the blue-yellow axis) and Cr (the red-cyan axis) - become the X and Y of the plot, with neutral grey at the center and saturated color radiating outward. A 2D histogram of (Cr, Cb) pairs is drawn as a brightness map, so dense clusters of pixels light up. That's why a blue sky renders as a blob pointing toward blue, and a low-saturation image stays huddled near the middle.
skin_tone_line (on by default) draws the reference line that colorists use for skin: real human skin sits along a fairly narrow band of the chroma circle, so you can instantly spot a face that's drifted too green or too magenta. It's the same trick the README's "phase-accurate hue/sat monitoring with Skin Tone line" describes.
The inputs that matter
image- your frame or batch.size(256–1024) - scope resolution. The plot is a 2D histogram, so larger isn't always better; 512 is the sweet spot for readability without noise.opacity- blend level if you're overlaying it on a preview.skin_tone_line- the reference line; keep it on for people shots, it's the whole point.
The single output, vectorscope_image, is an IMAGE you route to a preview or save node.
How to install it
Part of the radiance pack. ComfyUI Manager → "Radiance", or:
cd ComfyUI/custom_nodes
git clone https://github.com/fxtdstudios/radiance.git
cd radiance
pip install -r requirements_windows.txt
Restart, and it's under FXTD Studios/Radiance/Analyze.
Common issues
Two things to keep straight. First, the vectorscope only shows chroma - it won't tell you anything about exposure, so you still want the waveform alongside it. Second, like every scope in this pack, it plots the image in the color space you feed it: an HDR or scene-linear input will show a huge, oddly-shaped blob because the chroma encoding assumes a normalized range. Feed it through the color pipeline (or the Radiance tonemap) for a readable read. And on very large images the node downscales to 256px before plotting, which is fine for hue distribution but means fine chroma detail gets averaged out - don't go hunting for sub-percent casts in a 4K frame on this scope.
For "is the skin right" and "did I oversaturate," it's the one that actually answers instead of vibes.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| size | INT | 512256–1024 | — |
| opacity | FLOAT | 1.00.1–1 | — |
| skin_tone_line | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| vectorscope_image | IMAGE | — |