Zabihollahy 2026 — CurvReg (multi-stain liver biopsy registration)
Curvature-aware, mask-based registration of multi-stain liver needle biopsies, scored against real anatomical landmarks and externally validated — whose headline micron errors cannot be reproduced from its own released code, and which matches fully automatic VALIS only with 30 seconds of human input per slide.
Read status: full text (pre-proof) plus source. Received 18 March 2026, accepted 23 July. The companion repository
jeremyyu64/curveregis by the second author and was cloned and read; everything below marked from the code comes from there rather than from the Methods section. Figures are separate images and only their legends were read.
What they did
The problem is the one Cross-Stain Registration describes, on the specimen type this group actually holds: a liver needle biopsy cut into serial sections and stained H&E, Masson trichrome and CK7, where the core is curved, deforms non-linearly during microtomy, and looks entirely different between stains.
Two ideas, and the second is the interesting one:
- Piecewise affine over anatomically coherent segments. The core is divided along cutlines into contiguous pieces, each cropped and resampled to 4096×4096, then aligned by its own local affine transform. This handles curvature that a single global affine cannot.
- Deformable refinement driven by geometry, not stain. A VoxelMorph-style dense network estimates the deformation field from binary tissue segmentation masks rather than from the stained images. Because the input carries no colour or texture, stain appearance cannot influence the warp — which is a genuinely clean answer to cross-stain variability, and a different answer from stain normalisation or CycleGAN-style translation.
Tissue masks come from Otsu thresholding with morphological cleanup — deliberately, as an annotation-free baseline.
The fields that are usually buried
| Datasets | Four, 136 WSIs / 242 tissue sections total. #1: 78 WSIs (26 H&E, 26 MT, 26 CK7), bile-duct landmarks. #2: 32 WSIs (16 H&E, 16 MT) = 64 sections, portal tract and hepatic vein landmarks. External: 16 WSIs (8 H&E, 8 MT) = 32 sections, multi-centre. ANHIR kidney: 10 WSIs (5 PAS, 5 MT) = 14 sections |
| Scanners | Huron TissueScope LE120 and Leica Aperio GT 450 DX for internal slides; Leica Aperio AT2 for ANHIR. All ×40 |
| Resolution | ~0.25 µm/pixel (stated range 0.2500–0.2530) |
| Validation | Landmark TRE + Dice. Registration model trained on 100 slides (50 pairs) of tissue masks |
| External validation | Yes, and twice over — a separate multi-centre liver cohort on different scanners, and a different organ with a different stain pair (ANHIR kidney, PAS–MT) |
That external-validation row is worth pausing on. Most work in this area does not have one; this has a multi-centre cohort and a cross-organ public benchmark. Against wiki/index.md gap #2 it is the kind of design the group’s own projects lack.
Landmarks are clinically meaningful structures, not generic correspondence points — bile ducts for the H&E/MT/CK7 set, portal tracts and hepatic veins elsewhere, and ANHIR’s own provided landmarks. That distinction is the reason this paper matters here: the error is measured against things a pathologist can independently identify, which is precisely what a training residual is not.
Headline results
Mean TRE, before → after registration:
| Dataset | Pair | TRE (µm) | Dice |
|---|---|---|---|
| #1 | H&E–MT | 231.5 → 51.9 | 0.54–0.60 → 0.95 |
| #1 | MT–CK7 | 255.3 → 57.9 | → 0.95 |
| #1 | H&E–CK7 | 188.7 → 50.9 | → 0.96 |
| #2 | H&E–MT | 147.9 → 48.0 | 0.76 → 0.98 |
| External | H&E–MT | 93.4 → 42.2 | 0.61 → 0.95 |
| ANHIR kidney | PAS–MT | 107.2 → 81.6 | 0.90 → 0.97 |
All p < 0.001 except ANHIR TRE (p = 0.024).
Downstream, and this is the most useful result in the paper. Portal tract and hepatic vein segmentation scores median Dice 0.93 on MT but only 0.86 on H&E — the expected stain-dependent gap, driven by false positives rather than missed structures. Transferring the MT-derived segmentations onto H&E through CurvReg lifts H&E to 0.92 (p < 0.01), nearly closing the gap to MT’s own performance. That is the draw-once-carry-across payoff QuPath Annotation Workflow keeps naming, demonstrated with a number.
Reading it critically
Numbered so they can be referred to later. The method looks sound; these bound what can be quoted from it.
- The micron figures cannot be reproduced from the released code, and the paper states two different downsampling factors. This is the finding that most affects how the table above should be used. The Methods say WSIs were “processed at pyramid level 2, corresponding to a fourfold down-sampling”. Evaluation Metrics say micron values were computed using “the 64× downsampling factor applied during registration”. The code is a third answer: for non-slide inputs and the read-at-level-0 branch it hardcodes
4 ** level= 16×, while the default WSI path used by bothtrain.pyandevaluate.pysimply readslevel_dimensions[2], so the actual factor is whatever that slide’s pyramid happens to be and is not fixed by the code at all. Arithmetic settles which one produced the published numbers: 3.12 px × 0.25 µm × 64 = 49.9 µm, against the 51.9 µm reported for H&E–MT (the small gap is consistent with the two excluded cores, below); 4× gives 3.1 µm and 16× gives 12.5 µm, neither close. The most likely innocent explanation is that 64× is a cumulative factor — a 16× pyramid level times a further ~4× from resampling each segment to 4096×4096 — in which case the Methods’ “fourfold” is simply an error and the true factor varies per segment with the size of its bounding box. That reading is consistent with everything observed and is not stated anywhere. Recorded as ambiguous rather than resolved; only the authors can settle it.[unverified]Note the repository’s own README says: “the evaluation of TRE is based on the input pixel, not microns” — the released code never performs this conversion, so the µm column above is the one part of the results that the released artefact cannot regenerate. The pixel numbers are reproducible. - CurvReg is semi-automated and VALIS is not, which reframes the head-to-head entirely. The piecewise stage is anchored on cutlines that a human draws — the Methods say “manual cutlines were drawn in QuPath and exported as PNG overlays”, the limitations concede the interaction “typically requires less than 30 seconds per slide” and “introduces observer variability”, and from the code this is not optional: both
train.pyandevaluate.pyglob aCutlines/directory andassertone mask per slide, aborting otherwise. ROI masks are optional; cutlines are not. So the benchmark below compares a method receiving human input on every slide against one receiving none. - On TRE, CurvReg is not significantly better than VALIS. On the 42 cores both methods registered: CurvReg 3.12 ± 3.51 px, VALIS 3.61 ± 6.39 px, p = 0.091; RegWSI 4.51 ± 18.70 px, p < 0.0001. Dice 0.98 vs 0.97 (p < 0.01) vs 0.94. The paper states the TRE result honestly. Read with point 2, the finding is sharper than the paper puts it: fully automatic VALIS matches a semi-automated method on landmark error, and CurvReg’s advantage over it is a 0.01 Dice difference.
- Two cores were excluded, and the exclusion is informative rather than random. VALIS failed on 2 of 44 — out-of-memory, or feature matching that aligned “structurally unrelated tissue segments” — and paired statistics require cases both methods completed. The reasoning is stated plainly and is defensible. But it means the comparison measures accuracy given success, not overall performance, and it cuts both ways: it removes VALIS’s worst behaviour from VALIS’s score (flattering it), while the 2/44 failure rate — arguably the more decision-relevant number — appears in no statistical test. A robustness claim and an accuracy claim are being conflated.
- VALIS was not run as shipped. It needed harmonised maximum image dimensions and was given CurvReg’s own tissue masks to exclude background before rigid alignment; under default configuration it “failed in several cases”. Disclosed and reasonable as an attempt at fairness — but the honest summary is that the baseline required the competing method’s preprocessing to become comparable. (It also corroborates the failure mode recorded independently on VALIS: its
register()swallows exceptions and returnsNonerather than raising.) - Mean ± SD is the wrong summary for these errors. VALIS 3.61 ± 6.39 and RegWSI 4.51 ± 18.70 have standard deviations larger than their means — a heavy right tail in which a few catastrophic failures dominate. Median and IQR, or an explicit failure count, would describe this far better, and the paper uses medians elsewhere (for the segmentation Dice) so the machinery was to hand.
- The cross-organ generalisation is the weakest evidence and the authors say so. ANHIR kidney improves TRE only 107.2 → 81.6 µm at p = 0.024, on 14 sections — a fraction of the liver gains, on the smallest dataset, at the least convincing p-value. It supports “not liver-specific”; it does not support “generalises across organs”.
- Pre-proof. Numbers may change before the Version of Record.
Why it earns space here
- It is the group’s own specimen type. Liver needle biopsies, H&E/MT/CK7, curved cores — this is Liver Tru-Cut Cohort material. Nothing else filed here registers needle biopsies, and the curvature problem CurvReg is built around is specific to them.
- It supplies the acceptance test Cross-Stain Registration has been asking for, from a third direction. That page’s blocker was that the only available error number (VALIS’s
rTRE) is a residual over the transform’s own fitted keypoints. elastix supplied the mechanism for scoring held-out points. This supplies the landmark set: bile ducts, portal tracts and hepatic veins — structures a pathologist can identify independently on both stains, at two useful scales. For a liver study the fiducials that page says nobody has specified are named here. - It independently corroborates the serial-section ceiling. Best-case TRE of 42–58 µm on liver, against VALIS’s own 70 µm brightfield regression bar quoted on that page. Two unrelated sources now put achievable cross-stain error at roughly four to seven cell diameters, which is the quantitative form of “the same region, never the same cell”.
- The MT→H&E transfer is a worked example of annotation transfer paying off, not merely being possible: 0.86 → 0.92 Dice by borrowing structure from the stain that shows it better.
Related: Cross-Stain Registration — the method page this bears on most; it supplies the anatomical landmark set that page’s open question asks for, and a second independent estimate of the achievable error. Related: VALIS — the benchmark comparator, matched on TRE here despite being fully automatic where CurvReg needs manual cutlines. Related: elastix — the complementary half: elastix gives the machinery to warp held-out points, this gives the anatomy worth using as those points. Related: Liver Tru-Cut Cohort — the same specimen type and stains, on this group’s own material. Related: QuPath Annotation Workflow — cutlines are drawn in QuPath and the payoff is carrying segmentations between stains, so both ends of this method touch that workflow. Related: External Validation — an unusually strong example: multi-centre plus cross-organ, which is more than any of the group’s own imaging projects currently has.