A HAADF image is a number at every column. Normalise it and the number means something.
Normalise an annular dark-field image to the detector's dark level and the probe current so every pixel is a fraction of the beam, find and refine the atomic columns, integrate each over a disc or its Voronoi cell, read the statistics and the two-class split, and compare the column fractions with the thickness series exported from the SAED simulator's STEM tab to estimate the foil thickness and the Z-contrast exponent.
Try this: change measure in the Columns card from fitted peak amplitude to Voronoi cell mean, and watch the histogram and the two classes change.
Normalising to the detector with the beam blanked and with the full probe on it turns each pixel into the fraction of the beam that reaches the detector (LeBeau and Stemmer).
Columns are local maxima of a smoothed copy. Each is refined by a Gaussian fit that subtracts its neighbours, so the two columns of a dumbbell do not pull each other inward.
Each column is integrated over a disc and over its Voronoi cell. The cell integral collects the intensity that the probe tails spread between columns.
Load a thickness series from the simulator to read thickness off the curve. The Z exponent comes from I1/I2 = (Z1/Z2)n, a single-scattering rule of thumb.
Values in the raw units of the image: the detector output with the beam blanked and with the whole probe on the detector (vacuum, detector inserted into the beam). The image becomes (I − Idark)/(Iprobe − Idark), the fraction of the probe reaching the detector, which is what the simulator computes. Leave the probe level empty to work in raw units.
Local maxima of the smoothed image above the threshold (a fraction of the range), refined by a Gaussian fit that subtracts the neighbours, which keeps close dumbbell columns from pulling each other; the classes below split the columns into two groups by intensity.
Export the series from the STEM tab of the SAED pattern simulator (the button writes a JSON file, or hands it to this page through the browser). The same detector angles, voltage and probe as the experiment are needed for the comparison to mean anything.
The cards beside the image summarise the method. The full description is here.
An annular dark-field image records, at each probe position, the fraction of the beam that scatters into the detector. Expressed that way it is an absolute quantity, and it can be compared with a simulation without any fitted scale: LeBeau and Stemmer showed that normalising the image to the detector's response with the beam blanked and with the full probe on it turns the grey levels into that fraction, at which point the intensity of each atomic column is a number that depends on the specimen thickness, the column's composition, the probe and the detector angles, all of which a Bloch-wave or multislice calculation can reproduce.
The page performs the normalisation, locates the columns as local maxima of a smoothed copy of the image, refines each position and amplitude by fitting a Gaussian while subtracting the current model of its neighbours (which stops the two columns of a dumbbell pulling each other's centroid inward), and integrates each column over a disc of chosen radius and over its Voronoi cell, the set of pixels nearer to it than to any other column. The Voronoi integral is the measure that Van Aert and co-workers use for counting atoms in a column, because it collects the scattered intensity that the probe tails spread between columns.
The STEM tab of the SAED simulator on this site computes exactly this fraction for a chosen crystal, zone axis, voltage, probe and detector at a series of thicknesses, and exports the peak and cell-mean fraction of every column type in the projected cell.
Loaded here, that series becomes the calibration curve: the measured fraction of a column class is read against it, every thickness at which the curve passes through the measurement is reported, and the page says whether the curve is monotone over the range, since channelling makes the column intensity oscillate and a fraction can correspond to more than one thickness. The Z exponent is estimated from the two intensity classes with I1/I2 = (Z1/Z2)n, which is the single-scattering rule of thumb; the simulator gives the same ratio with the dynamical effects included, and the difference between the two is a measure of how far the specimen is from the thin, incoherent limit.
The normalisation assumes a linear, uniform detector. Real detectors vary across their face and are non-linear near saturation; flux-weighting maps correct this.
Scan distortion, drift and sample tilt change column intensities and positions. The page does not correct them.
Columns brighter than their surroundings and farther apart than the smoothing width. Remove a strongly non-uniform background first.
The comparison inherits the simulator’s assumptions, and the simulated fractions leave out the detector’s own response.
The normalisation assumes the detector responds linearly and uniformly; a real detector has a gain that varies across its face and a non-linear response near saturation, which the flux-weighting maps of LeBeau and Stemmer and of Findlay and LeBeau correct. Scan distortion, drift and sample tilt change the column intensities and positions; the page measures the image as it is. The column finder expects columns brighter than their surroundings and separated by more than the smoothing width; a strongly non-uniform background (thickness gradients, contamination) should be removed first.
The comparison with the simulator inherits every assumption of that calculation, including its Debye-Waller factors and the absence of the specimen's surface layers, and the simulated fractions do not include the detector's own response. Where the experimental and simulated intensities differ by a constant factor, the Stobbs factor of the HRTEM literature, the cause is usually in one of these, not in the physics.
@misc{tripathy2026quantitativehaadf,
author = {Tripathy, Manisha},
title = {Quantitative HAADF},
year = {2026},
howpublished = {\url{https://untetheredatom.com/tem/quantitative-haadf}},
note = {Interactive web tool}
}