LabKit MATLAB Workbench

history

Shared image facade

id: LK-20260630-shared-image-facade
date: 2026-06-30
sequence: 24
type: feat
compatibility: compatible
component: `labkit.image` | `new -> 1.0.0`
component: `labkit_BatchImageCrop_app` | `1.3.9 -> 1.4.0`
component: `labkit_CurvatureMeasurement_app` | `1.2.3 -> 1.2.4`
component: `labkit_FocusStack_app` | `1.2.5 -> 1.3.0`
component: `labkit_ImageEnhance_app` | `1.3.5 -> 1.4.0`
component: `labkit_ImageMatch_app` | `1.3.5 -> 1.4.0`
scope: historical project evolution

Context

Batch Crop, Focus Stack, Image Enhance, and Image Match each carried similar code for supported extensions, path normalization, image reads, preview sizing, and basic enhancement. Small differences between those copies produced inconsistent file and display behavior.

Decision and rationale

Introduce labkit.image for GUI-free operations with neutral meaning, then move the image apps to that shared API. Keep crop geometry, focus fusion, matching, protected enhancement, and export schemas in their respective apps.

Changes

User and data impact

Supported image selection, display-name handling, preview normalization, and common enhancement primitives became consistent across the migrated apps. Scientific app outputs and source files did not change format.

Compatibility and migration

Image apps kept their entry points and exports while adopting the shared operations. App code that called the retired local helpers needed to use the image facade or the owning app operation.

Validation

Commit 7023e87e added a dedicated LabKitImageFacadeTest suite and updated app compatibility, package-boundary, public-surface, and focused image-app tests.

Evidence

Known limitations and follow-up

The first facade release covered common MATLAB image formats and basic processing only. Thermal decoding and workflow-specific algorithms remained outside labkit.image.