FOCUS: Technical Overview
Flatbed Optical Capture & Utility Suite
A custom Windows application for driving an Epson Expression 13000XL flatbed scanner (with Transparency Unit) for bulk archival and scientific digitization — old photographs and photo albums, dendrochronology specimens, and film (35mm slides/negatives, medium and 4x5 large format). Built for archival color fidelity, quantitatively reliable pixel values for downstream measurement, and consistency across scanning sessions months or years apart.
Notice · In Development
FOCUS is under active development. Every core feature area — capture, calibration, metadata, hierarchical auto-split, and archival/derived output — has a first working implementation wired into the real application UI, but none of it has yet been verified end-to-end against the physical scanner in a production session.
Known blocker: the generic Windows WIA capture path currently fails against this scanner/driver combination (ERROR_LOCK_VIOLATION), even though the vendor's own scanning application works fine on the same machine at the same time. A fix — switching to TWAIN via an out-of-process Win32 worker — is implemented but not yet confirmed against reconnected hardware.
System Requirements: Windows, .NET 10 runtime, an Epson Expression 13000XL with the manufacturer's WIA/TWAIN driver installed. Runs portably from a removable SSD/minidock — only the scanner driver needs pre-installing on the host.
Capabilities
Dual Light Path
Drives both the flatbed (reflective) and Transparency Unit (film) sources on the 13000XL, each with its own archival DPI and bit-depth defaults.
IT8 Color Calibration
Builds ICC profiles per light path from batch-matched IT8 spectral reference targets via a bundled Argyll CMS pipeline, not a factory-assumed response curve.
Drift Tracking
Every calibration session is logged (date, operator, light path, profile) so color drift across a multi-year project is visible, not silently assumed away.
Hierarchical Auto-Split
Splits a bulk bed scan into pages, then items within pages — each level independently toggleable, with detected labels linked to their nearest item.
Correctable Review Step
Proposed regions are drawn on the bed preview and listed in an editable table before anything is saved — a correction there changes what actually gets written.
Archival + Derived Output
Writes a lossless archival TIFF with embedded ICC profile (relative colorimetric) plus an optional derived viewing copy via a real ICC-aware transform.
Core Architecture: Capture Pipeline
- Dual Light Path: Drives both the flatbed (reflective) and Transparency Unit (film) sources on the 13000XL, each carrying its own archival DPI and bit-depth defaults (2400 DPI optical ceiling, highest available bit depth).
- TWAIN via Out-of-Process Worker: Capture is routed through a bundled 32-bit worker process rather than calling the driver directly — TWAIN's driver manager requires a native Win32 message pump on the calling thread, which a plain application process doesn't provide on its own.
- Single Supported Trigger: Physical scan-button triggering was investigated exhaustively (COM event callbacks, launch-on-event registration, and direct registry mirroring of the vendor driver's own entries) and found unreliable on modern Windows. The in-app "scan next" action is the sole supported capture trigger.
Color Calibration & Drift Tracking
FOCUS builds ICC color profiles from IT8 reference targets rather than trusting factory or assumed color response, so pixel values stay quantitatively meaningful for scientific measurement:
- Per-Light-Path Profiling: Reflective and Transparency Unit paths are calibrated independently, each against its own batch-matched spectral reference file (CxF3 XML format).
- Argyll CMS Pipeline: Reference conversion, scanned-target patch recognition, and profile building are orchestrated through Argyll's
cxf2ti3,scanin, andcolprof, bundled portably so no separate install is required on the host machine. - Drift Log: Every calibration session (date, operator, light path, profile used) is appended to a persistent log, visible in-app, so drift across a multi-year project is tracked rather than silently assumed away.
Workflow
- Calibrate. Scan each light path's IT8 target and run the Argyll pipeline to build (or refresh) its ICC profile; drift is logged automatically.
- Set up the batch. Load a metadata CSV, or plan to enter item IDs manually / via barcode scanner during capture.
- Preview & split. Take a low-DPI preview, toggle page/item auto-split as needed, and review the proposed regions and label links before committing.
- Scan. Capture at archival DPI/bit depth; each region is saved as its own archival TIFF with embedded ICC profile, metadata sidecar, and optional derived viewing copy.
- Finish session. Close out the session to write a manifest summarizing every item captured, its metadata, and the calibration profile in effect.
Bulk Scanning & Hierarchical Auto-Split
- Independently Toggleable Levels: Page-level and item-level splitting can each be switched on or off, so a single large item or an album page meant to stay whole is never force-split.
- Label-to-Item Linkage: Detected handwritten labels/captions are associated with their nearest item and carried through to the saved metadata, rather than discarded or silently merged.
- Operator Review Step: Proposed regions are drawn as an overlay on the bed preview and listed in an editable table (position, size, label association) before a scan is saved.
Reproducibility
Archival masters embed the ICC profile active at capture time, and every calibration session is logged with its date, operator, and light path — so the color state behind any given scan is traceable rather than assumed. As with any scanning workflow, users are responsible for documenting their computational environment and calibration state alongside derived work.
Technology Stack
How to Cite
When FOCUS is used to produce archival or derived imagery, cite the tool separately in addition to any dataset citations.
@software{focus2026,
title = {FOCUS: Flatbed Optical Capture and Utility Suite},
author = {{Iowa Forestry Media Library}},
year = {2026},
version = {In Development},
url = {https://iowaforestrymedialibrary.org/focus.html}
}
Questions about FOCUS? Contact the library maintainer at contact@iowaforestrymedialibrary.org.