LUMERIX guide
Match a shot to a reference frame with deterministic video frame analysis.
Make every shot look like it belongs to the same scene.
LUMERIX compares a reference frame with the current shot and calculates the correction that moves the shot toward the reference. It measures exposure, contrast, black level, white balance (temperature and tint), saturation, and the color balance of the shadows, midtones and highlights.
When you press Apply Match, the analysis happens once and the result is stored in the plug-in's parameters, so playback and rendering do not analyze anything. With Auto Match ticked, each shot solves its own correction the first time it is rendered, from a few frames of that shot, and remembers it. Everything runs on your computer.
The main path is two steps: on the shot to match TO press Analyze Reference, then on the shot to fix press Apply Match. MATCH holds only what you need: Apply Match, Auto Match, Match Strength, Show Original, Check Match and its short result lines. INPUT FORMAT (closed) is only for log or wide-gamut footage. ADVANCED (closed) holds Fine Tune (the five values that make two shots belong together: exposure, temperature, tint, contrast, saturation) and the finer refinements: black level, per-zone (shadow/midtone/highlight) colour balance, plus skin and highlight protection. Apply Match fills these in; most shots only need MATCH. Your own nodes are never touched: LUMERIX only adds its own node.
It is a deterministic algorithm built on robust statistics (medians and percentiles in linear light). It is not machine learning.
Analyze Reference captures the frame under the playhead and switches Auto Match on, so every copy of this node matches by itself; the reference shot itself is left alone (a shot already within a hair of its own reference is not changed). In hosts that expose a second input named Reference, and when something is connected to it, that image is analyzed instead.
A compact description of the reference is stored in the node and saved with your project: a few dozen statistics (luminance percentiles, saturation, chroma per tonal zone, skin) and, for a reference captured with this version, a very small colour map (a grid of 64 by 36 average colours, in effect a tiny blurry thumbnail, about 9 KB of text). The full image is never stored.
The reference is analyzed with the current Input Encoding. If you change the encoding afterwards, LUMERIX asks you to analyze the reference again, because the numbers would no longer be comparable.
Analyze Reference captures the image coming into the LUMERIX node, which is the result of every node before it. So you can grade the reference shot by hand in earlier nodes, place LUMERIX after them, and press Analyze Reference to capture that graded look.
LUMERIX's own sliders and any nodes after LUMERIX are not part of the capture. On the target shots, Apply Match then matches whatever difference is left after the earlier nodes.
When you copy to other shots, copy only the LUMERIX node (see Matching many shots below), never the whole grade. The target shot keeps all of its own nodes, and Apply Match (or Auto Match) matches whatever difference is left after them.
Auto Match is a tick box at the top of MATCH. When it is on, LUMERIX does not need Apply: it solves the correction for the shot it sits on, against the reference stored in the node.
How it works: the first time the shot is rendered, LUMERIX reads up to five frames spread across the shot (at 10%, 30%, 50%, 70% and 90% of the clip: the first, middle and last first, the other two only if those three disagree), solves a match for each, and takes the median of every control (a shot whose light changes over time is followed instead). That one correction is used for the whole shot, so it is steady and never flickers, and a single odd frame (a flash, a passing object) is ignored. The result is remembered until the reference, Input Encoding, Match Strength, the protection settings or the clip change.
Auto Match needs the clip's frame range from the host to choose its sample frames. If the host does not report one, LUMERIX uses the frame being rendered.
LUMERIX Batch Match matches as many shots as you like to one reference shot in one click, and never removes or changes the nodes you already have on those shots.
How it works: for the reference and for each target the script exports a few full-resolution frames. The LUMERIX engine (the same one as the plug-in, installed as lumerix-match.exe) measures them and solves one steady correction per shot, and the script attaches that correction to the shot as a 3D LUT on the last node that has no LUT of its own. Your nodes are not removed, replaced or edited. A shot whose nodes all carry a LUT of yours is skipped and reported. Remove Match from Selected takes the match off again.
Batch Match works on Rec.709 Gamma 2.4 / sRGB timelines and needs an active LUMERIX trial or license. A flat log clip (camera log seen without a conversion) is opened up to the reference's black and white before it is matched, and the result line says "flat footage opened up". For the exact curve and colors of a camera, use a camera LUT or the LUMERIX plug-in node with Input Encoding and Input Gamut. The result is one short line per shot (the score and what to know); the details are kept in a log file. The correction is one steady match per shot (from the middle of each shot, which matches a shot as well as three or six frames in our tests and is much faster), so a shot whose light changes a lot is matched on average. A frame with no picture in it (a fade, a flash) is skipped and the shot is read in other places.
Pressing Apply fills these controls with the measured difference. You can change them by hand at any time. These are the only five values most shots need.
| Control | Range | Meaning |
|---|---|---|
| Exposure | -6 to +6 stops | Brightens or darkens in linear light. Solved after Contrast so the two do not fight. |
| Contrast | -1 to +1 | Power curve on luminance around 18% grey. +1 doubles the slope, -1 halves it. Chroma ratios are preserved. |
| Temperature | -1 to +1 stops | Red versus blue balance. + is warmer. |
| Tint | -1 to +1 stops | Green versus magenta. + is magenta. |
| Saturation | -1 to +1 | Log2 chroma scale in a perceptual domain. 0 is unchanged. |
All color maths run in linear light. Input Encoding tells the plug-in how your pixels are encoded: Linear, Rec.709 Gamma 2.4, sRGB, DaVinci Intermediate, or a camera log curve (ARRI LogC3, Sony S-Log3, Canon C-Log3, Panasonic V-Log, RED Log3G10). Choose what matches what the node receives: with Resolve color management that is normally the timeline space; choose a camera log only when the footage still arrives in that camera's own log curve. Only the curve is converted, not the colour gamut. A wrong choice gives a wrong (but not damaging) result.
Black Level (-0.1 to +0.1, aligns the black levels), Shadow Bias, Midtone Bias and Highlight Bias live in the collapsed ADVANCED section, since Auto Match already solves most shots. Shadow Bias, Midtone Bias and Highlight Bias add color balance to one tonal zone only. Each is a two-value control: X is temperature (+ warm), Y is tint (+ magenta), both in stops.
Zones are defined in stops relative to 18% grey, so they follow exposure: shadows fade out between -4 and -0.5 stops, highlights fade in between +0.5 and +3 stops, and the midtones are the remainder. The weights always sum to one.
After Apply, LUMERIX tells you how far to trust the result, what changed, and what deserves a second look. Nothing here changes the match; it is information for you.
| Line (under MATCH) | What it shows |
|---|---|
| Match Confidence | A score from 0 to 100 with its band, for example "82 - GOOD (uncalibrated)". Nodes made with the original engine show a percentage and a level (HIGH, MEDIUM, LOW). |
| Review | Warnings, or Nothing to review. Hover for the full list. |
| Exposure / Contrast / Color / Saturation / Skin Difference | The difference between this shot and the reference before the match -> after the match, as you see it (Match Strength and Protection included). |
Match Confidence is worked out independently of the solver: it checks the corrected picture against the reference with measures the solver did not optimise (the distribution of brightness and of colour, neutral and skin colour, the size of the correction, clipping and crushing, how similar the two shots are, and stability across the sampled frames), combined so that one factor that really fails pulls the score down. Bands: 90 Excellent, 75 Good, 55 Moderate, 30 Difficult, below that Unsuitable. The thresholds are provisional until colorist-rated footage exists, which is why the number says "uncalibrated". It is a statement about how matchable the pair is, not about how good the grade looks: a low number for two unrelated scenes is expected. Nodes made with the original engine use the older product of residual, correction size and evidence, with HIGH at 75% and MEDIUM at 45%.
On the latest engine the Result and Review lines give the verdict ("I can match this", "I can partially match this" or "This reference is not suitable for this shot") with the measured reasons.
It does not depend on Match Strength: confidence is about what the match can achieve, while the Difference lines show what you currently get.
| Review message | What it means |
|---|---|
| Reference relationship uncertain - review recommended. | Confidence is LOW. Check the result by eye before you use it. |
| Large correction required - review recommended. | The two shots are far apart. LUMERIX still calculates the match, but a correction this large is rarely just a grade difference. |
| The correction reached a safety limit... | Exposure, white balance, contrast or saturation hit the limit built in to avoid violent colour shifts. The rest of the difference is left as it is. |
| ...lit by different light sources... | The global colour difference is large, for example daylight against tungsten. Part of that difference is the light itself and cannot be corrected away without damaging the shot. |
| Brightness differs by more than 2.5 stops... | Probably a different time of day or exposure, which a grade cannot fully reconcile. |
| ...possible mixed lighting... | The shadows and highlights of the two shots differ in colour by different amounts, so one global correction cannot fix both. Use the zone biases in ADVANCED. |
| Reference has insufficient neutral/tonal information. | The reference is flat, nearly uniform or has almost no colour. Analyze Reference says so as soon as you capture it; pick a frame with a wider tonal range and some neutral areas. |
Reference captured with an older version still works. Analyze the reference again to get the skin statistics used by Skin Difference. A reference captured with this version is stored in a newer format (CMP4, which includes a small colour map); an older plug-in version cannot read it.
A reference captured with this version also keeps a very small colour map of the frame. With it LUMERIX can find where a shot sits inside the reference (a zoom and a shift): a punch-in, a crop, a small camera move. It then compares only the part both shots show, instead of the statistics of the whole picture, which for a reframed shot are mostly content. It checks that corresponding areas really agree after the correction before it trusts the result, and it ignores what moved.
Limits: placing a shot covers zoom and shift only, not rotation, a different lens or a different camera position. This part of LUMERIX is new: it has been tested on video footage in our test host and against CUDA, and has not yet been widely used inside DaVinci Resolve. It never recreates lighting that was not captured.
You can use a reference from another place or another subject, for example a camping scene as the reference for a street shot. LUMERIX then moves your shot toward the reference's look: how bright and contrasty it is, how warm or cool, and how rich the colour is. Reference and shot do not need to show the same thing.
What to expect: your shot takes on the character of the reference (brightness, contrast, warmth and colour richness) but it does not become the reference. If the reference has a teal sky and your shot has no sky, you will not get a teal sky. Parts of the picture that a colourist would leave alone can take on a tint, so check the result by eye. This part of LUMERIX is new and has been tested on video frames outside DaVinci Resolve; it has not yet been widely used inside it.
Skin is detected by hue. Each pixel is converted to Rec.709 Y'CbCr (perceptual, gamma 1/2.4) and compared with the skin-tone line of the vectorscope, with a luma window (not near black or white) and a chroma window (not grey, not extremely saturated).
Where a pixel looks like skin, its original chroma is kept and only its brightness follows the match. Skin Protection sets how strongly (0 is off, 1 is full).
This is a heuristic. Wood, sand or a warm wall of the same hue can be treated like skin. Lower Skin Protection if a correction is being held back in such areas.
Skin Protection keeps skin from changing colour. Skin Match goes one step further: after the normal match it measures how far this shot's skin still is from the reference's skin, and nudges only the skin-like pixels toward it, keeping their brightness.
It is best for the same person in the same scene, where the global match cannot fix a difference that belongs to the skin only. Skin Match is 0 (off) by default so projects made before it existed do not change; ticking Auto Match sets it to 0.6, and Apply uses the value you set. The result is written to Skin Tone Shift (X = temperature, Y = tint, in stops), which you can fine-tune; Reset clears both.
Different people have different skin: do not use a full Skin Match to make two different people look the same. Like Skin Protection it is a heuristic, and it needs enough skin in both the reference and the shot.
Bright areas keep their original chroma (scaled to the corrected brightness), so highlights do not turn a different color when the match warms or cools the image. For display-referred encodings (Rec.709 Gamma 2.4 and sRGB) values pushed toward 1.0 are also rolled off softly instead of clipping.
For HDR, linear and log timelines, where values above 1.0 are valid, set Highlight Protection to 0 to switch the roll-off off.
Match Strength interpolates between the original (0) and the fully corrected image (1) in linear light. Show Original disables the effect while checked, for an instant before/after. Reset restores all analysis values, biases, protection values and strength to their defaults and keeps the captured reference.
Rendering is a per-pixel function of the parameters and never talks to the network. It supports tiles and different render resolutions, and it is multi-threaded across all CPU cores. The analysis on Apply works on a reduced copy of the frame and takes a small fraction of a second. Auto Match does the same kind of analysis once, on up to five frames of the shot, the first time the shot is rendered, and remembers it.
Benchmarks are measured with the benchmark tool in the source repository (see docs/BENCHMARKS.md) and are not quoted here as marketing numbers.
On NVIDIA GPUs the plug-in renders through CUDA when the host provides GPU images: in our benchmarks on an RTX 5060 test PC the GPU path was about 70 to 90 times faster than the CPU, and the picture matches the CPU in automated tests. A frame rendered with CUDA inside DaVinci Resolve matched the CPU frame. Everywhere else the CPU path is used.
No. Run the LUMERIX Batch Match script, click the reference shot, mark the target shots and press Match Selected Shots: every shot is matched to the reference in one click. Apply Match is for matching one shot by hand with the plug-in node. The nodes you already have on the shots are never touched.
No. Analysis and rendering happen on your computer.
No. It is a deterministic algorithm.
Yes. The value controls are animatable. The captured reference is a fixed set of numbers.