app
Image Match
Image Match transfers tone and color statistics from one reference image to one or more source images while preserving each source image's geometry.
Requirements And Launch
The app performs appearance matching only; it does not geometrically register images.
labkit_ImageMatch_app
Inputs
Choose one reference image and add source images or a source folder. The reference supplies appearance statistics and is not exported as a matched source. All images are normalized to RGB double data in [0,1]; output retains the source height and width.
Basic Workflow
- Choose the reference and source images.
- Select a matching method.
- Set overall, tone, and color strength.
- Apply the match to history.
- Inspect Matched, Original, and Before | After views.
- Undo/reset history or add another step.
- Export matched images.
Changing method or strength previews the pending match; Apply match saves the settings as the next step in the image's processing history.
Matching Methods
| Method | Behavior |
|---|---|
| Balanced | robust white-point match followed by Lab-style tone/color transfer |
| White balance | match robust bright-neutral RGB white points |
| Tone only | quantile-match Lab lightness only |
| Protected tone | constrained luminance/background adjustment with shadow, highlight, and saturation guards |
| Lab style | quantile-match lightness and covariance-match Lab chroma |
| Histogram | independently quantile-match all three Lab channels |
Overall strength blends the matched result with the original. Tone and color strength separately blend lightness and chroma behavior where the selected method supports them. All three default to 100%.
Robust statistics and covariance regularization handle flat or nearly single-color images, but a visually dissimilar reference can still produce an unhelpful result. Matching reproduces distributions, not semantic lighting or camera calibration.
History And Outputs
Each source is recomputed from its original plus the ordered match history. Undo removes the latest step and reset removes all steps. Export supports PNG, TIFF, and JPEG and writes an image manifest containing reference/source identity, method, strengths, history, format, and output filenames. Source and reference files are never overwritten.
Use Without The GUI
source = imread("source.png");
reference = imread("reference.png");
step = image_match.analysisRun.makeStep("Balanced", 100, 100, 100);
matched = image_match.analysisRun.applyMatch(source, reference, step);
% Apply a stored sequence:
outputs = image_match.analysisRun.applyPipeline({source}, step, reference);
output = outputs{1};
Function Reference
The generated pages for applyMatch and applyPipeline document supported step fields and defaults, normalization and output geometry, empty-input behavior, failures, examples, and related APIs.
Errors And Limitations
- An empty reference returns normalized source data in the calculation API, but the app requires a reference before enabling match actions.
- Reopening a project with an existing unreadable reference or source image aborts restore and preserves the current document.
- Matching never corrects position, scale, rotation, perspective, or parallax.
- Histogram and Lab matching can shift scientifically meaningful pixel values; retain original images for quantitative analysis.
- JPEG export is lossy.
Related Topics
Functions And API
Open a function for exact MATLAB syntax, arguments, outputs, behavior, and source.
| Function | Purpose |
|---|---|
image_match.analysisRun.applyMatch | Transfer reference appearance statistics to one image. |
image_match.analysisRun.applyPipeline | Replay ordered reference-match steps over source images. |
Change history
- 2026-07-20 - App actions require explanatory hover helpfeat | compatible
- 2026-07-19 - App SDK explicit contract replaces the retired UI runtimerefactor | breaking
- 2026-07-17 - Public API help is complete, discoverable, and behavior checkeddocs | compatible
- 2026-07-17 - Project restore distinguishes missing sources from damaged sourcesfix | compatible
- 2026-07-17 - Explicit layout action contractrefactor | compatible
- 2026-07-16 - Image App project validation ownershiprefactor | compatible
- 2026-07-16 - Runtime-owned session defaults across App familiesrefactor | compatible
- 2026-07-16 - Image Match adopts capability-owned structurerefactor | compatible
- 2026-07-16 - Image Apps stop creating invalid placeholder outputsfix | compatible
- 2026-07-16 - UI 7 public runtime boundaryrefactor | breaking
- 2026-07-15 - Runtime V2 lifecycle ownership across the app fleetrefactor | breaking
- 2026-07-13 - MATLAB-compatible image conversion APIrefactor | breaking
- 2026-07-13 - Base-MATLAB image compatibilityfeat | compatible
- 2026-07-09 - Default LabKit close protectionfix | compatible
- 2026-07-06 - UI 5 facade redesign, app migration, and plot refreshrefactor | breaking
- 2026-07-03 - CSC export and viewport policyfeat | compatible
- 2026-07-03 - UI groups migrationrefactor | compatible
- 2026-07-03 - App file-selection and electrochem control fixesfix | compatible
- 2026-07-03 - Declarative app runtimerefactor | compatible
- 2026-07-01 - Debug sample packsfeat | compatible
- 2026-07-01 - Image app workflow improvementsfeat | compatible
- 2026-06-30 - Shared image facadefeat | compatible
- 2026-06-30 - App alerts through UI facadefeat | compatible
- 2026-06-30 - Close guards and caught-exception diagnosticsfeat | compatible
- 2026-06-30 - Output folder promptsfeat | compatible
- 2026-06-29 - Tool-panel hosts and image app fixesfix | compatible
- 2026-06-29 - Protected image enhancement workflowsfeat | compatible
- 2026-06-28 - App diagnostics and hardened UI workflowsfeat | compatible
- 2026-06-24 - File-panel migrationrefactor | breaking
- 2026-06-23 - Version metadata baselinefeat | compatible