evidence_quantile — IMGFORENSICS calibration op

• Data kinds: measurement × table → table

• Call: import fullseye as fs; fs.ledger.evidence_quantile(measurement, null, higher_is_stronger=True) (to call the implementation directly, import imgforensics; imgforensics.evidence_quantile(measurement, null, higher_is_stronger=True); from the registry, opsimgforensics.get("evidence_quantile"))

Usage

Where the evidence statistic sits within the clean distribution. It does not return a verdict.

The consumer of the null_distribution output. What it returns is "outside what % of clean pairs", not "tampered" ―― sitting outside only means that it is rare under those conditions (rare clean images do exist).

Parameters

measurement : float

The measured evidence quantity (e.g. the return value of hash_distance).

null : dict

The return value of null_distribution.

higher_is_stronger : bool

True if, like PCE or correlation, larger means stronger evidence.

False if, like Hamming distance, smaller means stronger evidence.

Always think it through instead of relying on the default —— get this wrong and the pair with

the strongest evidence comes out as "not rare at all" (no exception is raised).

Returns

dict

beyond_fraction (fraction of the clean distribution lying inside this value =

outside what % of clean pairs it sits; a continuous value in [0, 1]) /

z (how many standard deviations; None if the spread is 0) / caveats.

Notes

beyond_fraction takes the quantiles held by null (min / 5 / 25 / 50 / 75 / 95 / 99th percentiles / max) as knots and is the empirical distribution function interpolated piecewise linearly. Exact on the knots, a linear approximation between them; inside min it saturates to 0, outside max to 1 (no extrapolation beyond the samples). With higher_is_stronger=False the side subtracted from 1 is returned. When all clean values are identical and the knots coincide, exactly that value is placed at 0.5 (the median rank).

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• image_forensics_audit — py -3.11 examples/image_forensics_audit.py

• poc_prnu_camera_fingerprint — py -3.11 examples/poc_prnu_camera_fingerprint.py

Ops the type connects to (they accept table as input)

—

Same category (calibration)

null_distribution


*Provenance: imgforensics.py — IMGFORENSICS operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.