StepWedgeDensitone · documents version 2.0.0

Measuring a Wedge

Loading a scan

Drag a file onto the canvas or use Open Wedge. Supported: PNG, JPEG, TIFF, GIF, BMP, HEIC/HEIF, and Apple-supported RAW — DNG, NEF, CR2/CR3, ARW, ORF, RAF, RW2. RAW files are decoded with sharpening off, so what you measure is the sensor’s tonality rather than an interpretation of it. Very large scans are capped in resolution for processing; the measurement geometry is expressed in that capped pixel space throughout.

Dropping a .wdge file restores that whole session instead.

Scanning matters more than anything the app can do afterwards: scan RAW with a straight curve, turn off auto-exposure, auto-levels and sharpening, and keep the settings identical between sessions — Scanning a Print for Measurement has the whole setup. All readings are relative — normalized to the lightest and darkest patch measured — so consistency beats absolute accuracy.

Orientation

The two rotate buttons turn the working image in 90° steps. The quad, every measured point, the per-cell offsets and the step-0 corner are remapped through the same rotation, and the rotation is stored in the session. The file on disk is never rewritten.

Detection

Detection lives in the inspector’s Measurement section, next to the pickers it reads and writes — there is no toolbar copy, because reaching one before setting the layout was the easiest mistake to make. Two buttons run the same CoreML-backed pass and differ only in how much of it they adopt.

Detect Corners and Steps adopts all of it:

It then samples every cell and fills the table, the graph and the statistics. The canvas badge changes to ⚠ auto-detected, and the inspector’s Status pill reads DETECTED · 51 PTS.

Detect Corners, the button above it, takes only the outline and keeps your Cols / Rows / Steps, re-deriving the cell centres from the newly-found quad. It leads the section because most of the time you are holding a wedge whose layout you already know: set Cols, Rows and Steps, then detect, and the classifier never gets to overrule you. If what it read disagrees with what you set, a note under the button block says so rather than silently choosing for you.

If detection fails outright, an alert offers Place corners manually, which seeds a quad you can then drag into place.

Checking and correcting the placement

Click the button in the zoom chip to frame the wedge, then look at the circles.

The detected grid over the wedge, with corner handles and per-cell labels

The badge under the canvas tracks provenance: · untouched, ⚠ auto-detected, or ✓ manually adjusted once you have moved anything.

Manual placement

Shift + ⌘ + drag a rectangle over the wedge to lay out the full cols × rows grid inside it. Two details make this quicker than it sounds:

The 51-point wizard

For the common 17 × 3, 51-step wedge, Display → Fill and adjust measure points → 51 points 3x17 (wizard) asks for two clicks — the 0 % patch, then the 100 % patch — and fills everything between. A banner across the top of the canvas prompts for each click; Cancel or Esc leaves the wizard.

Grid and cell order

The three pickers are independent:

Picker Values
Steps 5, 10, 11, 12, 14, 21, 31, 37, 41, 51, 101, 129, 256
Cols 1, 7, 8, 11, 13, 17, 21, 31, 41, 51
Rows 1, 2, 3, 7, 8, 10

Changing one never silently rewrites the others; the single rule enforced is cols × rows ≥ steps, so setting a step count that no longer fits bumps the other axis. Choosing a step count also offers its canonical layout — 11 → 11×1, 21 → 7×3, 31 → 31×1, 41 → 41×1, 51 → 17×3, 129 → 43×3 — which covers the common Stouffer strips.

Cell order is two independent choices, both in the toolbar:

Between them they describe any wedge orientation, including a strip scanned upside down. Changing either re-derives the cell centres and clears per-cell nudges, because those nudges belonged to the previous numbering.

Noise, smoothing and display

Two different things are often confused here, so they are worth separating.

Blur and Edge (inspector → Image) change what is drawn and what is sampled from the canvas: Blur is a Metal-accelerated pre-blur that suppresses scanner grain, Edge is a Laplacian pass that makes patch boundaries obvious while you are placing the grid. The Display picker switches the canvas between Processed (blurred), Raw (the scan as scanned), and Edges (the edge map). Reports and exported profiles always use the unprocessed scan, whatever these are set to.

The same wedge with Display set to Processed — the Blur slider softens grain

Mode and Smoothing (inspector → Processing) work on the series of 51 numbers, not on pixels:

Mode Behaviour
Gaussian Weighted average across the series; Smoothing is the sigma
Median Median over a window; Smoothing is the half-window
Savitzky-Golay Polynomial fit over a window, which preserves the shape of the curve better than a plain average; Smoothing is the half-window

After smoothing, the series is rescaled so the lightest reading is 1.0 and the darkest is 0.0 — this is the NORM column, and everything downstream (Δ, γ, σ, the correction curve) is computed from it. A setting of 0 leaves the readings untouched.

Reading the result

Step Detail window

Detail panel… above the step table (or the Window menu) opens a selectable text dump of every step — step percentage, source value, normalized value, normalized value within the step, and error — for pasting into a notebook or spreadsheet.

The Step Detail window