RH Hue Compressor

dctls

RH Hue Compressor

🎚️ Proportional Hue Normalisation Engine
Pull drifting hues back without hard edges.

When your camera's greens lean teal or your yellows drift orange across a scene, a standard hue rotation shifts everything equally — which is exactly wrong. RH Hue Compressor uses proportional attraction: the further a hue sits from your target, the harder it gets pulled. Hues already sitting on the target don't move at all.

Key Features

  • Distance-Proportional Compression

  • Independent Centre Offset Per Vector

  • Adjustable Range Per Vector


Overview

RH Hue Compressor is a targeted hue normalisation tool that pulls stray hues toward a user-definable target point across all six standard hue vectors: Red, Yellow, Green, Cyan, Blue, and Magenta.

Unlike a conventional hue rotation, which shifts every hue in a zone by the same fixed amount, compression attracts hues proportionally to their distance from the target centre. A hue sitting exactly on the centre point is not moved at all. A hue 30° away is pulled 30% × Compression toward the target.

This creates a naturally smooth, artefact-free normalisation that tightens a hue family without creating hard edges or unnatural colour boundaries. Common uses include pulling yellows that have drifted slightly green back toward a truer yellow, tightening skin tones that have shifted slightly toward orange, or normalising sky blues that vary across a scene.


1. Core Concept 💡

For each active hue vector, the tool applies the following logic per pixel:

Convert the pixel to the IQ Polar chromaticity space (hue angle, saturation, intensity).

  • At Compression = 0.0: No change — the pixel passes through untouched.
  • At Compression = 1.0: Hues within the active range are fully pulled to the centre point in a single pass.
  • Between 0.0 and 1.0: The pull is proportional — pixels far from the centre move more, pixels near the centre move less.

This creates a natural convergence without any hard step at the edge of the zone.


2. Per-Vector Controls 🎛️

Six identical control groups — Red, Yellow, Green, Cyan, Blue, Magenta — each with three parameters:

ParameterDescription
CompressionStrength of the pull toward the target centre. 0.0 = off, 1.0 = full compression.
CenterOffset to shift the target point away from the nominal hue angle.
RangeWidth of the hue neighbourhood that is affected by this vector.

Compression

  • Default: 0.0 (no effect)
  • Range: 0.01.0
  • The primary control. Raise it to begin pulling that colour family toward its centre. The compression is distance-weighted: pixels far from the centre are pulled more than pixels already close to it.

Center

  • Default: 0.0
  • Range: −0.1+0.1 (normalised hue units; full circle = 1.0)
  • Fine-tunes the target point slightly away from the default vector angle. Use this when your camera or LUT has a systematic hue bias.

Default vector positions (normalised 0–1 hue space):

VectorNominal Position
Red0.000 (wraps from 1.0)
Yellow0.167
Green0.333
Cyan0.500
Blue0.667
Magenta0.833

Range

  • Default: 0.5
  • Range: 0.01.0
  • Controls the width of the influence plateau around the vector centre. Lower values narrow the selection; higher values broaden the zone (adjacent vectors may overlap).

Important: A Range of 0.0 effectively disables that vector regardless of the Compression value — no pixels fall within an infinitely narrow window.


3. Under the Hood — IQ Polar Chromaticity Model 🔬

All hue operations are performed in the IQ Polar Chromaticity model — a max-normalised polar representation of the RGB chromaticity.

Hue compression operates on the hue angle only — saturation and intensity are not modified. This means the tool does not change the brightness or chroma density of any pixel; it is a purely angular hue operation.

The IQ model has C-infinity-smooth transitions at the sector boundaries, ensuring no visual seams at edge hue positions.


4. Node Placement 🗂️

Expected pipeline:

  • Scene-referred input
  • DaVinci Wide Gamut / Intermediate (DWG/DI), or linear sRGB

Recommended placement:

  • After primary balance/exposure corrections.
  • As a normalisation pass directly after the input transform, before any creative colour work.
  • Can also be placed after creative grading, to tighten hues that drifted during the look development process.

Note: Operating in display-referred (Rec.709) space may produce different vector positions than expected, since the IQ model's primary angles are calibrated for linear RGB. Results will still be artefact-free but may require different Center offsets.


5. Usage Tips 💬

  • Start with Compression at 0.1–0.3: A value of 0.2 is enough for subtle correction. Values above 0.7 produce obvious, visually apparent normalisation.
  • Use Center to match your camera: If your camera consistently produces slightly cool reds, shift Red Center slightly negative to target the corrected angle rather than the mathematical nominal.
  • Narrow Range for surgical work: To correct only highly saturated reds without touching skin tones or transitional hues, bring Range down to 0.2–0.3.
  • Global Blend as a safety valve: Once all vectors are dialled in, reduce Global Blend to ease the total effect — this avoids over-processing while still benefiting from the correction.
  • Combine adjacent vectors intentionally: Simultaneously compressing Yellow and Green at moderate Range with slightly overlapping coverage is effective for normalising foliage that contains both green and yellow hues across a scene.
  • This tool does not change saturation or luminance: To also reduce chroma density of a particular hue family, combine this with RH Chroma Gate in a downstream node.