Vectorscope
A real vectorscope inside ComfyUI — check skin tones like a colorist
- image
- mask
- image
- mask
- vectorscope_info
Every serious colorist works with scopes - the waveform and vectorscope are how you know what's actually in the image instead of what your eyes think is there. A vectorscope plots every pixel by hue and saturation on a circular target, and the single most useful fact it tells you: where your skin tones land. When a render's faces look green, or the whole image is tinted, the vectorscope shows it as a cloud shifted off the skin-tone line. Vectorscope puts that instrument inside ComfyUI, and it's the kind of node that changes how you grade - you stop guessing and start reading.
How it works
The node samples the image (sample_step skips pixels for speed), converts each to hue/saturation, and plots the points on a circular scope - hue is the angle, saturation is the radius. scope_gain is the input gain (how hot the signal is), trace_strength is the brightness of the plotted points (turn it down for a cleaner read on dense clouds), and graticule controls the target-ring overlay. scope_resolution sets the plot size. The two features that make it genuinely useful: show_skin_line draws the standard skin-tone reference line - if your cloud sits off it, your color is off - and show_targets draws the classic target markers for the primary colors, so you can see immediately if red is veering toward magenta. The optional mask limits the analysis to a region (skin-only reads are the killer feature for portrait work).
Outputs: image (the scope plot itself - wire it to a preview or save it), mask, and vectorscope_info with resolved settings.
The inputs that matter
scope_gain- input gain; bump it if the cloud hugs the center and you can't read itshow_skin_line- the skin-tone reference, keep it onshow_targets- the RGB target markersmask- analyze only a region, e.g. skin
Installing it
Ships in MKRShift Nodes from criskb. ComfyUI Manager → "MKRShift Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart ComfyUI; it's under MKRShift Nodes → Color → Analyze. No models or extra deps - numpy/Pillow/torch.
Common gotchas
New pack, no community lore, so trust the code. Standard MKRShift JSON traps: broken settings_json silently reverts to defaults, out-of-range values clamp. The actual grading gotcha is reading it wrong: a vectorscope shows saturation direction, not brightness - a "washed out" complaint is a waveform problem (luma), not a vectorscope problem. Also, this is a diagnostic node, so it belongs in a separate review workflow or after your grade, not inline in your main chain. And remember the scope samples pixels - at default sample_step 2 it skips every other pixel, which is fine for a read but means a very small region needs a mask (or step 1) to show up meaningfully.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| settings_json | STRING | {"scope_gain":1.0,"trace_strength":0.95,"graticule":0.42,"scope_resolution":440,"sample_step":2,"show_skin_line":true,"show_targets":true,"mask_feather":12.0,"invert_mask":false} | — |
| maskopt | MASK | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| vectorscope_info | STRING | — |