CNRI PupilMetrics

PupilMetrics Research · v5.7.0

The static pupil, measured in numbers you can argue with.

Pupil–iris ratio, ellipseness, decentration, collarette position and the shape of the pupil margin itself — each against a published band, each exportable, each stored so the next visit can be compared with this one.

Windows, Android, macOS and iOS. The analysis runs on the device; patient records never leave it.

Patient names, ages, images and results are written to a local SQLite database and nowhere else. Licence activation sends a machine ID and a key — never a patient identifier.

A pupil margin with zone findings A schematic right eye. The pupil margin is drawn against a dashed circle of its own median radius. Two sectors bulge outward — middle-temporal by 8.9 percent and lower-temporal by 8.4 percent — and three fall inward: lower-basal by 5 percent, lower-nasal by 3.7 percent and upper-central by 1.8 percent. +8.9% middle-temporal −5.0% lower-basal 12 6
  • Median radius the pupil's own, not an ideal circle
  • Protrusion margin bulges outward at that zone
  • Flattening margin curves inward at that zone
  • Collarette (ANW) the autonomic nerve wreath
A schematic right iris carrying the five findings a real scan produced. The margin is a circle modulated by one bump per zone, solved so the deviation at each zone centre is exactly the percentage its callout claims — neighbouring zones overlap, and fitting them independently made the numbers lie.
Version
5.7.0
Platforms
Windows 10 64-bit · Android 8.0+ · macOS · iOS 14+
Trial
14 days or 20 analyses, whichever ends first
Languages
18 languages, 20 locales
01 — Measurements

What one capture produces

Two independent pipelines run on every image — a classical computer-vision pass on the full-resolution pixels, and an ONNX model on a normalised 224×224 iris-centred crop — and their outputs are fused into a single confidence figure. Both eyes are captured, right (OD) first.

P/I ratio
Pupil diameter as a percentage of iris diameter. The primary measure of pupil size, and the only one the ML model predicts directly.
%
normal 20–30
Ellipseness
Minor axis over major axis. 100% is a perfect circle; below the threshold the ellipse orientation is classified into a pupil form — horizontal, vertical, diagonal, chord-like or irregular.
%
normal ≥ 95
Decentration
Offset of the pupil centre from the geometric centre of the iris, as a percentage of iris radius, reported with a direction in degrees and a named pattern.
% of iris radius
normal < 5
Zone findings
Local deviation of the pupil margin from its own median radius, graded and reported per zone as a flattening (inward) or protrusion (outward). Up to four of each per eye.
% deviation
reported ≥ 1.5
ANW ratio
Diameter of the collarette — the autonomic nerve wreath — relative to the iris. Reported with the OD/OS asymmetry alongside it.
%
normal 25–35
Anisocoria
Absolute difference in pupil size between the two eyes, with the larger pupil named. Moderate and above raises a TBI research-observation flag.
mm (converted)
none < 0.25
Hybrid confidence
A single score fusing capture quality, classical-CV confidence, ML plausibility and the agreement between the two models. A low score is the app telling you not to trust the row above it.
%

Two pipelines, on purpose

The classical pass uses circle detection, radial sampling and boundary-point analysis at full resolution, and produces pixel-accurate boundaries. The model sees a 224×224 crop and predicts the P/I ratio through a calibrated linear fit (R² = 0.856), verified by a SHA-256 hash at load.

Where they disagree, the confidence score falls. That disagreement is the useful output — a number neither pipeline could produce alone.

The millimetre figure is a conversion

This app measures a ratio. It has no scale reference, no known working distance and no calibration target, so it cannot measure anything in millimetres directly. Every mm figure is the ratio multiplied by an assumed iris diameter — 12.0 mm for adults, less for infants.

Real adult iris diameter runs about 10.2–13.0 mm, so treat the millimetre column as a convention that makes bands comparable, and the ratio as the thing actually measured.

02 — Thresholds

Every band the app will flag against

These are read off the app's own manual strings and its threshold constants, so the software and this page cannot drift apart. If a threshold changes in a release, this section changes with it.

P/I ratio
RatioLabel
< 15%Miosis — very constricted
15–19%Constricted
20–30%Normal for adults in standard indoor lighting
31–40%Dilated
> 40%Mydriasis — very dilated
Age-normalised reference bands
Age groupExpectedNormal range
Infant (< 1 yr)2.2 mm2.0 – 2.5 mm
Child (1–5)4.0 mm3.5 – 4.5 mm
Child (6–11)4.3 mm3.8 – 4.8 mm
Teen4.2 mm3.5 – 5.0 mm
Adult (20–39)3.5 mm3.0 – 4.2 mm
Adult (40–59)3.0 mm2.5 – 3.5 mm
Senior (60+)2.7 mm2.3 – 3.2 mm

Date of birth must be entered for this comparison to appear. The infant band is measured against a smaller assumed iris — a newborn iris is about 10 mm, not 12 — because using an adult constant inflated every infant pupil by 20% and reported perfectly normal infants as above baseline.

Zone finding severity
DeviationSeverityWhat the app does
< 1.5%Not reported at all
1.5–3.0%Within limitsMinor variation, not flagged
3.0–6.0%MildNoted for observation
6.0–10.0%ModerateFlagged for follow-up
> 10.0%SignificantPrimary focus in the report
Collarette (ANW) ratio
RatioStatus
< 25%Spastic — ring contracted inward
25–35%Normal
> 35%Atonic — ring expanded outward

OD/OS asymmetry of 0–5% is normal. One eye spastic and the other atonic is flagged as a functional frustration pattern.

Anisocoria
DifferenceSeverity
< 0.25 mmNone — within normal limits
0.25–0.50 mmMild — may be physiological
0.50–1.00 mmModerate — TBI flag raised
> 1.00 mmSevere — TBI flag raised

Against the assumed 12.0 mm iris these are roughly 2.1%, 4.2% and 8.3% of ratio. The TBI flag is a research-observation reference, not a diagnostic finding.

03 — Capture

Six ways to get the image, one gate they all pass through

Source is chosen per eye on the camera-mode selector. Whatever the source, an image that fails the quality gate does not reach analysis — a blurred capture produces a confident wrong number, which is worse than no number.

The static camera mode selector, offering Load from Gallery, Iriscope/External over USB, Wireless Iriscope over WiFi, and Binocular Iriscope.

Camera sources

Iriscope / External (USB). Deep integration with the Dino-Lite AM4115ZT and compatible models. Optimal focal distance is about 2–3 cm from the eye.

Wireless iriscope. HF4115-RUT with the WF-20 adapter — connect the computer to the iriscope's own hotspot first.

Binocular iriscope. A dual-lens USB camera, so one capture fills both eyes at once.

Quality-gated rear and front camera. The recommended method on phones and tablets: the gate fires the shutter itself when every criterion is met.

Manual camera. Direct shutter control, for a third-party macro lens or lighting the gate rejects unfairly.

Import from gallery. Re-analyse an archived image. The file is copied into the app's own folder, so the original is never modified.

The quality gate — every frame is checked against all five before it is accepted
CriterionAcceptableWhat it catches
Sharpnessscore ≥ 100Motion blur, out-of-focus iris
Brightness30 – 230Under- and over-exposure
Contrastscore ≥ 30Flat, low-detail images
Pupil confidence≥ 30%Frame contains no detectable pupil
Centre offset≤ 25% of framePupil too far off centre to measure decentration

A red border and a live message name the failing criterion; amber is borderline; on green the photo is captured automatically. A separate “not an eye” check runs after capture in every mode, including manual.

Lighting

Diffuse and even — the iriscope's own LED ring is ideal. Avoid harsh shadows across the iris, and reposition slightly to move a corneal reflection off the pupil border.

Framing

The iris should fill at least half the frame width and sit centred. A pupil near the frame edge costs decentration accuracy directly.

Stability

Brace the device. Ask the patient to fixate on a distant point, and capture between blinks — the gate rejects blink frames on its own.

The 4:3 crop tool, with the instruction to drag the box so the iris fills most of the frame.

Imported images get a crop step

A gallery image was framed for something other than this analysis. The 4:3 crop tool lets you bring the iris up to the share of the frame the detector expects before anything is measured, or keep the original if it is already close.

Both eyes can be imported in one action — the app prompts for the right eye, then the left.

04 — PLR mode

The reflex, when the static picture is not enough

Research carries the same PLR video pipeline as PupilMetrics Neuro: a dark baseline, a calibrated flash, and a frame-by-frame diameter series with latency, constriction, peak velocity and T75 read off it. PLR results are kept on their own screen and are not merged into the static iris analysis.

A PLR analysis panel: Grade C, latency 31 ms flagged abnormal, constriction 34.3 percent normal, max velocity 1.8 millimetres per second borderline, t75 recovery 7028 ms abnormal, above a pupil diameter waveform.

Every parameter carries its own verdict

Latency, constriction, max velocity and T75 recovery are each flagged Normal, Borderline or Abnormal against the age-adjusted band — and when no age was entered, the panel says so rather than quietly defaulting.

The waveform is drawn under the numbers with the baseline and minimum marked, so a grade that came from a noisy trace is visible as a noisy trace.

Grades A–F are assigned from signal-to-noise and constriction amplitude. A grade D or below is a capture problem, not a finding.

The PLR direct-USB capture screen with a mode list showing 640x480 and 1280x1024 in NV12 and MJPG at 20 and 30 frames per second, and a status line reading 640x480 YUY2 verified, 31.2 fps measured.

The frame rate is measured, not assumed

The direct-USB capture path enumerates what the camera actually offers and reports the rate it measured, alongside the mode it verified — because a nominal 30 fps that delivers 15 puts every time-based metric out by a factor of two.

Timestamps are written per frame in microseconds at capture time, so the analysis assigns the baseline and post-stimulus windows correctly even when the rate wobbles.

At 30 fps one frame is about 33 ms, so latency differences below one or two frames are not meaningful. Latency-sensitive work wants 60–120 fps.

05 — Visual and research tools

Ways of looking at the same image

The chip bar on the results screen toggles overlays over the captured iris. The Research tab collects the more specialised instruments in a full-screen workspace — aimed at comparative case studies and teaching, and not needed for routine use.

CLAHE

Contrast-limited adaptive histogram equalisation, tile by tile rather than globally, bringing out crypts and fibre texture without blowing out the bright regions.

3D relief

The iris as an interactive height map — luminance becomes elevation, so raised fibres read as high ground and crypts as valleys, textured with the original image.

Pigment heatmap

A thermal scale over local pigment density, making heterochromia sectors and ciliary-zone darkening obvious.

Gabor

A filter bank across four scales and multiple orientations — the canonical texture operator in iris analysis, underlying Daugman's iris code.

LBP

Uniform rotation-invariant local binary patterns over the stroma, with a histogram — invariant to how the eye was rotated at capture.

Annotation

Freehand drawing on the image with undo and clear, exported as a flat PNG alongside the report.

The eye comparison dialog showing right and left irides side by side with synchronised zoom and a bilateral metrics strip beneath.

Side-by-side comparison

Both irides in synchronised, zoomable panels with the bilateral metrics and their deltas beneath. Mirror OD flips the right eye so both are oriented nasal-side inward — the standard bilateral orientation. Sync pan ties the two panels together so you are comparing the same region of each.

Per-eye confidence is printed on each panel, so an asymmetry driven by one bad capture is visible as one bad capture.

06 — Over time

One scan is a data point. The file is the finding.

Every completed analysis is written to the local database the moment the results screen finishes loading — there is no save step to forget. History is searchable by name and complaint, and any record reopens with its full result intact.

The serial scan timeline for one patient across 228 scans, with toggleable series for right and left eye P/I ratio, ellipseness and confidence, and a thumbnail strip of the underlying captures.

Serial scan timeline

Up to six series — OD and OS P/I ratio, ellipseness and hybrid confidence — plotted chronologically across every scan on file for that patient, each independently toggleable.

The thumbnail strip along the bottom is the point: a spike in the trend line is one click from the image that produced it, so an artefact can be identified as an artefact rather than written up as a change.

Plotting confidence next to the metric is deliberate. A series that moves while its confidence falls is a capture story, not a patient story.

07 — Exports

Four ways out, all of them local

The export button row on the results screen: TXT, JSON, Save PDF, Print, plus retake and start-new-analysis.

PDF, TXT, JSON, print

PDF is the primary report, assembled on-device at the moment you tap export. Both eye images sit on page one unless you turn images off; the practice name appears in the header of every page; the whole document is generated in the currently active app language.

TXT carries identical clinical content without the images, formatted for pasting into an EHR or an email — all metrics for both eyes, the full ANW section, the age-normalised comparison, anisocoria, research observations and observer notes.

JSON is the machine-readable record. Keep it alongside the PDF: it is the authoritative version, and it carries the parameters the analysis ran under.

Auto-save PDF is off by default. Turn it on and a report is written at the end of every analysis without a tap.

08 — Platforms

One application, four places to run it

The analysis pipeline is identical everywhere. What differs is how the image gets in, and what the operating system lets the app do with a window.

Windows

Windows 10 64-bit · 4 GB RAM · USB 2.0 for an iriscope

  • The primary target, and where the iriscope integration is deepest
  • Custom title bar; F11 fullscreen, Ctrl+H history, Escape to go back
  • Constitutional type selection (desktop only)
  • Reports written to the Documents folder

Install the DNVideoX driver before first launch if you are using a Dino-Lite.

Android

Android 8.0+ · USB OTG for an iriscope

  • Quality-gated front and rear capture, with the shutter fired by the gate
  • Mirror-assist modes for capturing your own eye
  • Share sheet on every export, not just save-to-disk
  • Iriscope over USB OTG where the device supports it

Install from Google Play or sideload the provided APK.

macOS

Signed DMG, built on CI

  • Install directly from cnri.edu
  • Same desktop feature set as Windows
  • USB iriscope support depends on the device's UVC compliance

Built and notarised through the same pipeline as the iOS release.

iOS

iOS 14 or later

  • Quality-gated capture and the full analysis pipeline
  • Purchases handled in-app rather than by licence key
  • Share sheet export

Distributed through the App Store.

The language picker dialog listing English, Spanish, Portuguese for Portugal and Brazil, French and German, each with its endonym and English name.

Twenty locales, and the report follows the app

Arabic, Chinese (simplified and traditional), Dutch, English, French, German, Hindi, Indonesian, Italian, Japanese, Korean, Polish, Portuguese (Portugal and Brazil), Romanian, Russian, Spanish, Swedish and Turkish.

Switching language changes the exported report too — headings, metric labels, status labels and finding descriptions are all generated in the active language, not just the interface.

Arabic renders right-to-left throughout, including the report.

The same database everywhere

SQLite on every platform, in the application support directory. Records hold the patient fields, the scan timestamp, image paths, the full result JSON for each eye, the anisocoria and age-norm results, and the PDF path.

Nothing is synced. Moving a patient file between machines means moving the file.

Keyboard, on desktop

F11 toggles fullscreen, Ctrl + H opens scan history from anywhere, and Escape goes back or closes the current dialog.

Settings and the practice-name field are reachable from the title bar on any screen, so neither needs you to leave what you are doing.

09 — On screen

Desktop

Captured on Windows. The interface is identical on macOS.

The PupilMetrics Research splash screen, badged Research/Educational Tool, with buttons to start a new analysis, view history and open the user manual.
StartThe badge is not decoration — it is the first thing the app says about itself.
Results screen showing the research-tool disclaimer, patient details, both eye images with confidence grades, and a pupil size difference card reading 25.8 versus 22.8 percent, a 3.0 percent difference.
Bilateral summaryBoth captures, both grades, and the size difference between them with the larger pupil named.
The age-based research baseline card reading within baseline for age 55, above the right eye panel with P/I ratio, ellipseness, circularity and decentralization.
Per-eye metricsEach figure carries its own label — normal, irregular, centered — rather than leaving the reader to look the band up.
Zone findings: three flattenings at lower-basal 5.0 percent, lower-nasal 3.7 percent and upper-central 1.8 percent, and four protrusions including middle-temporal 8.9 percent.
Zone findingsEach finding names its zone, its clock span, its deviation and the association claimed for it — in that order, so the measurement comes before the interpretation.
PLR camera modes: wired iriscope over USB at about 15 fps through the bridge, direct USB measured at 27 to 30 fps with microsecond timestamps, and wireless iriscope.
PLR sourcesEach mode states the frame rate it actually achieves, including the bridge path that only manages about 15.
Scan history with static and PLR tabs, a search field, totals for scans, this week and patients, and a list of records each with OD, OS, timeline and delete controls.
HistoryStatic and PLR records are kept in separate tabs — they are not the same measurement and do not belong on one list.
Settings dialog with preferred camera, default zoom, full sensor resolution, show ML comparison, auto-save PDF and include images.
SettingsFull sensor resolution captures at the camera's maximum — 1280×1024 on a Dino-Lite Premier — and takes effect at the next camera open.
The built-in user manual, open at the Overview tab, with tabs for Science, Protocol, Analysis, Drug Monitor, Help and Validation.
Manual, built inEvery threshold on this page is taken from these same strings, so the two cannot disagree.

Android

The same pipeline and the same numbers, with capture adapted to a handset.

PupilMetrics Research on Android, showing the splash screen.
Start
Android results header with the research-tool disclaimer, patient details, both eye thumbnails graded B and C, and a trial counter reading 8 left.
Results, and the trial counter
Android results showing a significant pupil size difference of 4.3 percent flagged as moderate asymmetry, above the age-based research baseline card.
Asymmetry flagged
Android per-eye metrics with a grade B badge, a pupil form card reading mild oval deformation, and zone findings below.
Per-eye detail
The eye comparison view on Android with both irides and the bilateral metrics strip.
Comparison
Android export row with TXT, JSON, Save PDF and Share PDF buttons.
Exports and share
The serial scan timeline on Android across three scans with six toggleable series.
Timeline
The built-in manual on Android, open at the Overview tab with Science, Protocol and Analysis tabs alongside.
Manual
10 — Licensing

Machine-bound on desktop, in-app on mobile

Desktop licence tiers
TierDurationMachinesNotes
Trial14 days1Full features. Also ends after 20 completed analyses, whichever comes first.
Standard1 year1
ProfessionalLifetime1
EnterpriseLifetimeMultipleMulti-seat.

Activation contacts licenses.cnri.edu once, to bind the key to a machine ID. After that the application works offline indefinitely. No patient identifier is ever part of that exchange.

Starting the trial

Click Start Free Trial on the licence screen. The countdown begins immediately and every feature is available — no card, no account.

Two limits run at once, days and analyses, and the trial ends on whichever runs out first. A failed capture is not counted against you.

Mobile

iOS purchases are handled in-app through the store rather than by licence key. Android follows the desktop model where the build is sideloaded, and the store model where it is not.

11 — Limits

What this software is not

Published rather than buried, because a research instrument that oversells itself is worse than no instrument.

Not a medical device

PupilMetrics Research is a research and educational tool for practitioners. It is not approved, cleared or certified by the FDA, CE, TGA or any equivalent authority for diagnostic use in any medical context.

Every measurement, finding and report it produces — P/I ratio, ellipseness, decentration, zone findings, ANW assessment, anisocoria, age-normative comparison, confidence score and all therapy-panel content — is observational and educational only, and is not a diagnostic conclusion or a substitute for clinical examination.

The zone associations are a theoretical framework

The zone-to-organ correspondences come from historical clinical literature. The software labels them as research-derived frameworks and so do we. A protrusion at the middle-temporal zone is a measured deviation of the pupil margin; what it means is a hypothesis with a long paper trail, not a finding.

Millimetres are converted, not measured

There is no scale reference in the image. Every mm figure is a ratio multiplied by an assumed iris diameter, uniformly about 2.6% high against real population means. The ratio is the measurement; the millimetre is a convention for making bands comparable.

Texture metrics are device-relative

Gabor, LBP and the other texture tools compute from pixel intensity and image gradient, and are influenced by capture lighting, white balance and camera characteristics. Interpret them longitudinally within one patient on one device. Cross-device and cross-practitioner comparison needs a calibration the app does not perform.

Automatic detections are suggestions

Crypt, contraction-furrow and heterochromia-sector detection are algorithmic proposals. Each one should be visually confirmed before it is written down.

Not validated against a reference instrument

No method-comparison study, no test–retest repeatability figure, no sensitivity or specificity against a criterion standard. The specific studies that would be required are listed on the Neuro page and apply here equally.

Your data, your responsibility

Everything stays on the device, which means the practitioner is responsible for ensuring that local storage and any onward sharing of exported reports complies with HIPAA, GDPR, the Australian Privacy Act or whatever applies in their jurisdiction.

Fourteen days, twenty analyses, every feature

The trial is not a demo build. If it is going to disappoint you, it will do it with your own patients and your own camera, which is the only test that counts.