Three instruments that treat the camera as a photometer rather than a viewfinder: a photon transfer curve for what the sensor's noise is actually made of, a slanted edge for what the lens actually resolves, and Beer-Lambert absorbance for what is dissolved in a cuvette. All three measure, all three calibrate, and all three are honest about the fact that a browser gets processed pixels rather than raw ones.
Point at a smooth, evenly lit surface and vary the brightness. For each pair of frames the tool measures the mean signal and the variance of their difference, which cancels fixed pattern noise and leaves only the noise that changes shot to shot. Plot variance against signal and the slope is the gain, the intercept is read noise, and where it stops rising is saturation. This is how sensors are actually characterized.
Print a black rectangle, tape it up, and photograph it with the edge a few degrees off vertical. That tilt is the trick: each row crosses the edge at a slightly different place, so a few hundred rows together sample the edge far more finely than the pixel pitch. Differentiate that supersampled edge to get the line spread, transform it, and you have the modulation transfer function. This is the ISO 12233 method.
Beer-Lambert, done with the camera as the detector. Take a blank, take a sample, and absorbance is the log of the ratio. Build a calibration curve from standards of known concentration and the tool will fit it and read unknowns off the line, with the R squared and the residuals shown, because a calibration you cannot see the scatter of is not a calibration.
| # | Conc | A(R) | A(G) | A(B) |
|---|
You do not get raw sensor data. A browser hands you an 8 bit sRGB image that has already been through demosaicing, white balance, tone mapping, noise reduction and sharpening. Every number on this page is therefore a measurement of the imaging pipeline, not of the silicon. That is stated plainly rather than papered over, and each instrument is affected differently.
The photon transfer curve suffers most. Gain in electrons per level is not recoverable from processed output, so this reports gain in levels, read noise in levels, and the shape of the curve, which are all real and all comparable between settings and between phones. Noise reduction is the enemy: it removes exactly the shot noise the method measures, and it flattens the curve. If the fitted slope looks implausibly shallow at low signal, that is denoising, and the tool says so. Undoing the sRGB gamma restores approximate linearity and is on by default, because the method assumes a linear detector.
MTF suffers from sharpening, which adds contrast at high spatial frequency and can push MTF above one near the origin. That overshoot is visible in the edge profile as a bright halo, and where it appears the tool flags it, because a lens cannot produce more than 100 per cent modulation and any such reading is the processor talking. Everything is measured on linearized data, as ISO 12233 requires.
Absorbance is the most robust of the three, because it is a ratio taken under identical conditions: anything the pipeline does to the blank it also does to the sample, and most of it divides out. What does not divide out is automatic exposure and automatic white balance, which change between the two shots and silently rescale the ratio. Lock them if your device allows it, keep the geometry and the lighting identical, and treat the calibration R squared as the real verdict on whether the run is trustworthy.
What this is good for anyway. Comparing two lenses on the same body. Finding the aperture where diffraction starts costing you. Watching read noise rise with ISO. Building a working calibration curve for a colored assay. Those are all relative measurements, and relative measurements survive a processed pipeline nearly intact.