CBCT · mandibular third molar and inferior alveolar canal
It measures the distance. When it cannot, it says so.
CANDID segments the mandibular third molar and the inferior alveolar canal on a CBCT volume, computes the shortest surface-to-surface distance in millimetres, grades that proximity anatomically, and withholds the number when its own topology and anatomy checks fail. It runs on your machine. The scan does not leave it.
The same scan. Two answers.
One real CBCT — a 167-slice DICOM series never used in training or in any evaluation — put through the identical measurement engine twice. Only the segmentation model differs.
Public baseline model
nnU-Net v2, ToothFairy2 Dataset112, as published
No measurement
RED — withheld
no inferior alveolar canal segmented
There was no canal to measure to, so no number was reported and no overlay was drawn. The reason is the output.
CANDID
nnU-Net v2, side-merged relabel of the same 480 public volumes (Dataset113)
1.50 mm
GREEN — reported
topology and anatomy checks clean
Proximity grade (anatomical): high. Canal lingual to the tooth, overlying cortex thinned, 4.55 mm of close approach. Tooth 48, right.
The overlay is checked against the engine before it is shown: the tool recovers both endpoints back out of the rendered figure and refuses to publish a picture that disagrees with the number. On this case both endpoints came back at zero voxels of offset.
How it works
Three steps, one command.
01
Drop a scan in
Point it at a DICOM folder, or at an .mha or .nii.gz volume. It reads the series and resamples to an isotropic 0.3 mm grid before anything else happens.
02
It segments, then measures
An nnU-Net v2 model segments the mandible, the canal and the molars. The measurement engine then converts those masks to marching-cubes surfaces and computes the minimum tooth-to-canal surface distance at sub-voxel precision. The engine is checked against synthetic known-answer phantoms that ship as a permanent self-test — 16 checks that run without any data.
03
It reports, or it withholds
Rule-based confidence flags are computed from the segmentation itself. GREEN shows the number; AMBER shows it with a badge; RED withholds it and reports the reason instead. Every rule is plain, editable logic with frozen thresholds — there are no learned weights anywhere outside the segmentation stage.
What comes out
A distance in millimetres, an anatomical proximity grade, the confidence flag with its reason, a three-plane colour overlay marking the closest approach, and a machine-readable report.json carrying the full provenance — including where the side label came from and whether the anatomy corroborated it.
Evidence
Ten fresh third molars, never previously measured by the assessor, read blind in a single session without sight of any tool output. The sheet has been compared once and is spent.
0.23 mm
median absolute error against the expert, n = 10
Public baseline on the identical teeth: 1.43 mm
8 of 8
expert-identified contacts detected, within the pre-registered ±0.3 mm tolerance — with no false contacts
Public baseline on the identical teeth: 3 of 8
p = 0.0039
paired Wilcoxon signed-rank on the within-tooth absolute errors (W = 1, n = 10 pairs; nine teeth improved, one worsened)
Describes how consistent the improvement was on these ten teeth — not that it generalises
Below the expert's own repeatability
Four repeat teeth were hidden, unlabelled, in the same reading sheet. Blind to their own earlier values, the assessor differed from themselves by a mean of 0.79 mm, and by 2.39 mm at worst. Every one of the tool's ten errors — largest 0.88 mm — falls inside that range, against six of ten for the baseline. The tool's median error therefore sits below the expert's agreement with themselves, so further gains on these cases could not be distinguished from rater noise under this reference.
No test is reported on those four repeats. At n = 4 the smallest attainable two-sided exact p is 0.125, so a test could not return a meaningful result, and none is manufactured.
Trained on public data only
Segmentation was trained on the 480 publicly released ToothFairy2 CBCT volumes and nothing else. No case, mask or expert value from the patient cohort entered training or validation — the two bodies of data never mix. The segmentation is adapted from published public-data models and is not presented as a contribution; the measurement engine and its governance are.
It withholds
On the development set it returns RED and reports a reason rather than a number when its topology or anatomy checks fail — a missing third molar, no canal anywhere, no canal on the measured side, a canal that stops behind the tooth and so cannot reach the interface, or a canal too short to be real. Abstention is asymmetric by design: it is always cheaper to say nothing than to say something false about a nerve.
What it is not
These boundaries are not disclaimers bolted on at the end. They are what the evidence does and does not support, and they are enforced in the code and in the wording of every report the tool writes.
It does not predict nerve injury
CANDID reports a proximity grade (anatomical): a description of where the canal lies relative to the tooth. The data behind it contain no postoperative outcomes, so no claim about nerve injury, its probability or its prevention is made or implied.
It is not a certified medical device
This is research software, built for an MClinDent (Oral Surgery) thesis at UCL Eastman Dental Institute. It carries no CE mark, no UKCA mark and no FDA clearance, and it is not for clinical use without appropriate regulatory clearance.
It does not decide
Output is advisory. Where the tool suggests a pathway it says so as a suggestion, with its reasons in plain text next to it. Management remains the surgeon's decision.
It is not a validation at scale
The confirmatory evidence is ten fresh cases measured blind by one expert. That is a verification. It is reported as one.
It does not upload your scan
There is no upload path on this site, deliberately, and the tool itself makes no outbound connection. The reasoning is set out below.
Two ways in
See it work on a case we provide, or run it on a scan of your own. Neither involves sending us anything.
A sample case, already measured
These are four of the ten fresh cases from the blind verification, shown exactly as the tool rendered them. For each one you can see what the tool measured, what the public baseline measured on the same scan, and what the expert measured by hand without sight of either.
Draft status: the downloadable sample volumes are not published yet. This page shows the tool's real, unretouched output for these cases; releasing the CBCT volumes themselves needs an information-governance decision that has not been taken. Until it is, the try-it demo is what you see here.
Desktop app for Windows
A single installer that carries the model with it: choose a DICOM folder, choose the side, get the report — no Python, no command line, no server. It is listed first because it is the right first thing to try, and it is marked honestly because it does not exist yet.
What is holding it up is not packaging but weight. The segmentation model is 5.1 GB and expects a CUDA GPU; on a laptop without one, a single scan runs in tens of minutes rather than a couple. Shipping an installer that technically runs but takes half an hour per case would be a worse answer than saying it is not ready.
Your scan, your machine
This is the product, and it is one command over a folder of DICOM files: nothing is transmitted, the tool reads the scan, runs the model locally and writes an HTML report and a report.json next to it. But it needs the trained weights, and those are not released yet — so this path is open today only to someone who already has them. Until the release, the command below will stop immediately and tell you the model is missing rather than failing somewhere deep inside the segmenter.
# works today, no model and no scan needed
pip install -r requirements.txt
python test_geometry.py
# needs the segmentation stack AND the trained weights
pip install -r requirements-seg.txt
python candid.py /path/to/dicom_folder \
--side right --compare
The first block genuinely works on any machine: requirements.txt carries the geometry and grading stack only, and test_geometry.py runs 16 known-answer checks against synthetic phantoms with no data and no model at all. The second block does not work yet for anyone outside the project — requirements-seg.txt pins torch and nnU-Net to whatever the model release specifies, and that release does not exist publicly. --side is required, not optional: side is not derivable from these volumes, so the tool refuses to assume one.
--compare additionally segments the same scan with the original public model and measures that too, so the report shows what the answer would have been otherwise. That contrast is the point of the project.
Clone it and read it
The measurement engine, the confidence rules and the whole test suite are plain Python with no learned weights outside the segmentation stage. Every threshold sits in one config file. The eleven test suites run without any scan data at all, on synthetic phantoms with known answers, so you can check the geometry is right before you trust it on a patient.
What you need
Python 3.10 or later for the parts that run anywhere. For measurement: a CUDA GPU, the segmentation stack, and the 5.1 GB of trained weights — which are not in the repository and have not been published. There is no download link on this page because there is nothing yet to link to. It is not a laptop tool, and today it is not yet a stranger's tool either.
Why there is no upload button
Accepting patient CBCT over the web would require a regulatory and data-processing position this project does not yet have: a lawful basis, a defined controller and processor with an agreement between them, a security position for identifiable imaging, and a route through the sponsoring institution. None of that exists today, so the honest design is no upload at all. The tool runs where the data already lawfully sits.
This page makes no external request of any kind. No web fonts, no scripts, no stylesheets, no images from anywhere else, no analytics, no cookies, no tracking. Everything you are looking at is inside the single HTML file, and it runs without JavaScript.
Limitations
Stated here rather than in a footnote, because they change how the numbers above should be read.
Left and right come from the referral, not the image
These volumes carry no patient coordinate frame — every image has an identity direction matrix, a property of the upstream DICOM conversion that pre-dates this pipeline — so left and right are not computable from the image. Side identity comes from the referral, and every report says so in a side_provenance field. The measurements themselves are unaffected, but across the wider 65-tooth set the referral side disagreed with the adjudicated side on 16: a wrong-site reporting risk in deployment. All ten verification cases contain exactly one third molar, so the same tooth is measured whichever side is passed.
The confidence flag is the weakest part
The earlier frozen flag over-withheld badly on these same fresh cases, marking six of ten outputs RED despite absolute errors of 0.11 to 0.88 mm — it was describing the old model's failure signature, not the new segmentation. The recalibrated flag set now shipping, which is what produced the GREENs on this page, was designed on development and synthetic data only and has had no gated evaluation on held-out data.
The shipped configuration is a single fold
A five-fold ensemble is trained and improves the aggregate figures — median error 0.23 to 0.18 mm on these ten teeth — but on the one scan whose field of view crops the buccal mandible it moves 0.74 to 0.93 mm, leaving the ±0.3 mm tolerance, so contact detections fall from 8 of 8 to 7 of 8. Since the claim is about not missing contacts, fold 0 ships. That is a judgement, not a further evaluation.
The cohort is enriched, and the thresholds are provisional
The referral cohort is high-risk-enriched by selection — around 74% of referrals cite a radiographic risk sign — and the expert-measured sets contain no distance above 4 mm, so behaviour at distant canals is unassessed by design. The clinical thresholds (contact ≤ 0.5 mm, close approach ≤ 2 mm) are provisional pending clinical-team sign-off, and every gate is frozen against them, so revising one would change outcomes and not only wording.
The statistics are post-hoc
Every test quoted on this page is post-hoc and describes a within-unit change on a fixed set of teeth. None was pre-registered and none is a test of generalisation to a population. Separately, the project ran a pre-registered evaluation budget on a held-out set; two of its three permitted evaluations were spent and both failed their gates, and both are reported in full in the paper rather than dropped.
Where this is up to
A validation study, then a repair, then a blind re-test. Everything under Delivered has happened; everything under Ahead has not. The dates are the dates.
Delivered
-
The pipeline, frozen
An end-to-end measurement pathway, then frozen and hash-pinned before any reference measurement was taken, so it could not be tuned to the answer.
-
A blinded reference standard
768 cases reviewed and adjudicated, distilled to 65 third molars hand-traced in three dimensions, blind to all tool output, with the side verified independently. Intra-observer re-read 0.035 mm.
-
The baseline audited
Agreement was absent (ICC 0.03) and the error ran one way: the tool read the tooth 2.36 mm farther from the canal than it was, in 62 of the 65 teeth. That is the reassuring direction, which is the dangerous one.
-
The mechanism found
Under-segmentation of the root apex and canal wall at the point of closest approach. Error scaled 5.6-fold with how much correction an assessor judged the mask to need — so the failure is visible in the segmentation itself.
-
Two data-integrity faults
Side labels scrambled on bilateral referrals, and identical distances emitted for both sides of every two-sided case. Neither was visible to any internal check; both were found by verifying laterality independently.
-
Retrained, on public data only
The segmenter was retrained on a side-merged relabelling of the 480 public ToothFairy2 volumes. No study case, no patient scan and no expert measurement entered training.
-
Two failed gates, reported
Of three pre-registered evaluations, two were spent and both failed their gates. They are published rather than buried; the third is still unspent.
-
Re-tested blind
On ten fresh cases measured blind by the assessor, median absolute error was 0.23 mm against 1.43 mm for the frozen baseline on the same teeth — a six-fold reduction. This is the confirmatory step; the larger evaluation set is already drawn and still untouched.
-
Thesis submitted
Submitted to UCL Eastman Dental Institute on 1 September 2026, and under examination.
-
Runs on an ordinary machine
Measured at 1 min 13 s per case with no graphics card, on a 40 mm field of view of the kind a referral scan gives. 236 MB of weights and an eight-step install.
Ahead
-
Segmentation weighted at the interface
Train for the few voxels that decide the distance rather than for average overlap. The hand-traced annotations this study produced are the training data that refinement needs.
-
Orientation and laterality safeguards
An orientation frame derived from each scan instead of assumed, and the side carried explicitly from the referral and checked against the image, so neither integrity fault can recur.
-
A confidence signal that ships
The tool already withholds a number it cannot support. The next version should decide that from the segmentation itself, because the study showed a human can.
-
Faster expert annotation
Promptable foundation models were assessed for this and set aside: they have no native three-dimensional segmentation, and the best published interactive result for this canal carries about 2.3 mm of boundary error, several times the threshold that matters. The route is a three-dimensional interactive tool aimed at the coarse failures, with hand tracing still setting the standard at the interface.
-
A larger, multi-reader standard
53 cases of the blinded package are still untouched and a 46-tooth hold-out is still unspent, so the standard can grow without re-randomisation. A second blinded assessor is the single most valuable addition.
The goal
A measurement a surgeon can rely on at the distances where management is decided — or, when the imaging will not support one, a refusal that says so plainly. Not a number that is merely confident.
Publications
Each item carries its current status. The thesis is submitted and under examination; the manuscript is written, with its full evaluation record, and is ready to go out.
-
Submitted 1 Sep 2026
Validating automated measurement of the mandibular third molar to inferior alveolar canal relationship on CBCT
I. Alroudhan. MClinDent (Oral Surgery) thesis, UCL Eastman Dental Institute. Supervisor: Prof Rachel Leeson.
Under examination. The validation described across this page is the work reported in it.
-
Pending submission
Automated measurement of the third molar to inferior alveolar canal relationship: audit, public-data retraining and blind verification
Manuscript prepared, with a STARD checklist and the full evaluation record. Venue under consideration between a specialty surgical and a dentomaxillofacial radiology journal.
Next step is the venue decision, then submission. The status above moves when that does.
Preprints, data and code will be linked here as they become available.
Who made this, and from what
Two people built it, one supervised it, and it stands on public data and open software that other people made. Naming which part is whose is not a courtesy — an examiner and a reviewer will both ask.
People
- Ibrahim AlroudhanStudy design, clinical framing, the reference-standard protocol and the interpretation. Performed the blinded expert assessments that the tool is measured against.
- Adam AlroudhanImplemented the measurement pipeline, its evaluation harness, and the figure- and table-generating scripts.
- Prof Rachel LeesonAcademic supervision.
Data
- ToothFairy2480 public CBCT volumes, and the only data the segmentation model was ever trained on. No study case, no patient scan and no expert measurement went into training — the separation is the point, not a detail.
- The referral cohortA retrospective cohort of about 1,669 referred patients, from which 768 cases were reviewed and a 65-tooth blinded reference standard distilled. It is not public, it is not distributed with the tool, and no part of it appears on this page beyond the four cropped sample overlays.
Software this is built on
- nnU-Net v2 — Isensee et al., Nature Methods 2021;18(2):203–211. The segmentation framework. Imported, not a contribution of this work.
- 3D Slicer — Fedorov et al., Magnetic Resonance Imaging 2012;30(9):1323–1341. Used for mask review and the blinded expert measurements.
- Segment Anything (Meta) — used only in an off-path annotation prototype, never in the measurement path. Assessed again in September 2026 for speeding up expert annotation and set aside: no native three-dimensional segmentation, and interactive results on this canal are not precise enough at the interface to serve as ground truth.
The segmentation is imported and improved, not invented here. What is new is the measurement engine that turns masks into a millimetre, and the governance that decides when that millimetre may be shown at all.
Feedback and suggestions
This is research software under active development, and the most useful thing anyone can send is a case where it got the answer wrong. Disagreement is data.
-
Something looks wrong
A distance that does not match what you see on the scan, a case the tool refused that it should have measured, or one it measured that it should have refused. Say what you expected and what you got.
-
A suggestion
An output that would be more useful in a different form, a variable worth adding, or a step in your workflow this does not fit.
-
Collaboration or access
Research collaboration, questions about the method, or running the measurement on your own data. A second blinded assessor would be especially welcome.
Write to Ibrahim@candidlabs.org
On GitHub github.com/ibrahimalroudhan-cmyk