Skip to content
ISO 13322-1ISO 9276-6

PoreSizer™ Image Analysis

Particle sizing from micrographs — flood fill, scale calibration, ISO 13322.

Calculator

Upload a micrograph

Drag an image here, paste, or browse

PNG · JPG · WebP · BMP · TIFF · HEIC

Choose fileRuns entirely in your browser — your images never leave your device

Theory & method

PoreSizer performs static image analysis of a single micrograph following ISO 13322-1:2014. Dark features (particles or pores) are separated from the background by a grayscale threshold, and each connected region is measured by its equivalent circular diameter — the diameter of a circle with the same projected area, x_A = √(4A/π), also called the Heywood or area-equivalent diameter (ISO 13322-1 §3.1.1, ISO 9276-6).

Segmentation converts the image to grayscale as (R+G+B)/3 (the unweighted mean, matching ImageJ's default) and marks every pixel darker than the threshold as belonging to a particle; connected pixels are grouped by an iterative flood fill (8-connected by default, matching ImageJ/OpenCV/scikit-image). The Auto button sets the threshold by Otsu's method (1979), which maximizes the between-class variance σ²_B = ω₀ω₁(μ₀−μ₁)² of the luminance histogram. When particles are lighter than the background — glass microspheres on a dark bench, say — turn on polarity inversion under Advanced: the same threshold now marks every pixel lighter than it as a particle, without changing the threshold value (ISO 13322-1 §5.2 treats object/background contrast as a premise of segmentation, not its direction).

Particles that physically touch are segmented as one region, and ISO 13322-1 §5.2 requires measurements on isolated particles. The optional watershed separation addresses this: an exact Euclidean distance transform (Felzenszwalb & Huttenlocher 2012) maps each object pixel to its distance from the background, its significant maxima become seeds — maxima with prominence under 0.5 px are merged, the h-maxima criterion that guards against over-segmentation — and a priority flood from the seeds (Meyer 1994) draws a one-pixel cut where basins meet, the same semantics as ImageJ's binary watershed. It ships off by default: on very irregular or concave particles the watershed can introduce false cuts, so applying it is the operator's decision, and the export records whether it was used.

Particles cut by the edge of the measurement frame bias the size distribution, because a large particle is more likely to touch the border than a small one. ISO 13322-1 §8.3 corrects this with the Miles-Lantuéjoul factor: border-touching particles are excluded from measurement and each retained particle is weighted by 1/P_i, with P_i = (Z₁−w)(Z₂−h)/(Z₁·Z₂) the probability that a particle of that bounding size fits inside the frame. PoreSizer applies this by default; you can also simply exclude or include border particles.

Results can be reported by number (Q₀) or by projected area (Q₂), the quantity type r of ISO 9276-1. Image analysis is inherently number-based; the area weighting is a two-dimensional proxy in which larger particles carry more weight, not a true mass or volume distribution — converting to volume (Q₃) would require a stereological shape assumption to infer 3D volume from a 2D projection, which this tool does not make. Report the quantity type with every statistic.

Beyond size, PoreSizer reports 2D shape descriptors for particles above a size floor (about 15 px in equivalent diameter — below that, pixelation makes shape unreliable; ISO 13322-2 asks for at least ~9 px across a feature for shape). Circularity follows Wadell (ISO 9276-6): f = √(4πA)/P, equal to 1 for a perfect circle, where P is the Cauchy-Crofton perimeter (ISO 9276-6 Clause A.1) rather than a naïve boundary trace. A rasterized edge counted as a staircase overestimates the true perimeter by up to 41% (a square at 45°); the Cauchy-Crofton estimate, built from intercepts along four directions, corrects that bias (Vossepoel & Smeulders 1982). Feret max and min are the largest and smallest calliper widths of the convex hull, and the aspect ratio AR = Fmin/Fmax equals 1 for an equant particle. From the same convex hull, solidity S = A/A_c (particle area over hull area, symbol A_c in ISO 9276-6) approaches 1 for convex particles and drops with concavities, while convexity C = P_C/P compares the hull perimeter with the Cauchy-Crofton perimeter; because P is an estimate and P_C is exact polygon length, C is capped at 1.0 — the same estimator caveat as circularity.

The reliability of a percentile depends on how many particles were measured: the median x₅₀ is the most robust, while the tails (x₁₀, x₉₀) and area/volume weighting need far more particles — thousands for a dependable x₉₀ (ISO 13322-1 Annex A; Masuda & Iinoya 1971). Digitization also limits accuracy: below roughly 10 pixels in diameter the pixel-count area error grows quickly, so PoreSizer flags particles that small. Everything runs locally in your browser; your images never leave your device.

How to use

  1. 01Capture the sample well before uploading — this matters more than any setting. Spread the material into a thin, sparse layer so particles do not touch (ISO 13322-1 §5.2 assumes isolated particles); shoot straight down, perpendicular to the surface, with the focus locked; and choose a background that contrasts with the material — a dark matte surface under light powder or glass beads, a light surface under dark grains. Fill the frame with sample, not bench.
  2. 02Upload a micrograph by dragging it onto the canvas, pasting from the clipboard, or browsing. Decoding and analysis happen entirely in your browser.
  3. 03Calibrate the scale so results are in physical units: with the Reference-object method, switch to the measure tool, draw a line across a feature of known size, click "Use line" and enter the real size; or with the Microscope method, enter the camera sensor pixel size and the total magnification. If you use a physical ruler or tape as the reference, lay it in the same plane as the sample and shoot perpendicular — a ruler resting under the dish or plate photographs about 2–3% too large because of parallax.
  4. 04Optionally use the region tool to draw one or more areas of interest — this excludes scale bars, labels or artifacts from the analysis (hold Shift to add several regions).
  5. 05Set the grayscale threshold while watching the binarization mask highlight exactly what will be measured, or click Auto (Otsu). Under Advanced, tune the minimum particle size, 4/8 connectivity, hole filling, polarity inversion for light particles on a dark background, watershed separation of touching particles (off by default), and how edge particles are handled (Miles-Lantuéjoul by default).
  6. 06Click Analyze to read the particle count, mean diameter, D10/D50/D90, coverage and the sieve granulometry chart; switch between Q₀ (count) and Q₂ (area) weighting, and open the full particle table.
  7. 07Export a CSV with the complete data — parameters, aggregates, both granulometries and every particle — or a formatted PDF report with the distribution chart.

Frequently asked questions

Why do image-analysis results differ from sieving?

Image analysis measures the projected two-dimensional size of the features visible in one image and reports a number-based distribution, while sieving sorts three-dimensional particles by how they pass apertures and is mass-based. A handful of large particles dominate a mass distribution but count for little by number, so the two methods legitimately give different numbers; they are complementary, not interchangeable.

How are touching particles separated?

By default they are not: flood-fill segmentation groups touching particles into one region, and ISO 13322-1 requires measurements on isolated particles — the best practice is still to reduce particle density on the slide. When overlap is unavoidable, enable "Separate touching particles (watershed)" under Advanced: a distance-transform watershed (exact EDT, h-maxima seeds with 0.5 px prominence, Meyer priority flooding) cuts one-pixel lines at the necks between convex-ish particles. It is off by default because very irregular or concave shapes can be over-segmented into false fragments — inspect the result visually, and note that the CSV/PDF export records whether it was applied.

How do I analyze light particles on a dark background?

By default PoreSizer treats anything darker than the threshold as a particle (dark particles on a light background). For the opposite case — glass microspheres or light powder on a dark surface — turn on "Invert: light particles on dark background" under Advanced; the threshold comparison flips sides without changing the threshold value, and the export records the polarity used. Two capture caveats matter: reflections and the glass rim of a Petri dish are also light and become false particles, so constrain the analysis with the region tool; and transparent spheres appear as a ring of specular highlight with a dark center — keep hole filling on, but note that measuring only the highlight can under-size the diameter, in which case a matte or backlit background gives truer contrast.

Why does my photo produce hundreds of false particles?

Almost always it is the scene, not the tool. A ruler or tape lying in the frame, the glossy rim of a dish, specular reflections and bench texture are all segmented as "particles". Draw one or more regions of interest with the region tool so only the sample area is measured (ISO 13322-1 §5.2), and spread the material into a thinner, sparser layer. In one real test a full-frame photo of glass beads produced over 1300 spurious regions until a region of interest was applied.

How should I photograph transparent glass beads?

Transparent spheres are the hardest case: each bead reads as a bright ring of specular highlight around a darker centre, so a plain threshold may measure only the ring and under-size the bead. Use a matte or back-lit background rather than a glossy one, turn on polarity inversion (light particles on dark) with hole filling kept on, and constrain the field with the region tool to exclude the rim and reflections. Even then, treat transparent-bead diameters as approximate.

Does the ruler or scale bar need to be in the same plane as the sample?

Yes. If the calibration reference sits on a different plane from the particles — a ruler resting under the plate while the sample sits on top — perspective makes it photograph at a different scale and biases every measurement, roughly 2–3% in typical bench setups. Place the ruler beside the sample in the same focal plane and shoot perpendicular to the surface.

How much material can I put in one photo?

A single sparse layer. ISO 13322-1 §5.2 assumes isolated, non-touching particles; a dense monolayer violates that and, without watershed, touching grains merge into one oversized region. If the material is already dense, analyse only a sparse patch with the region tool instead of the whole frame, or re-shoot with less material spread further apart.

Does PoreSizer measure pores or particles?

It segments dark regions, which may be particles or pores, and reports their projected 2D size — a surface, image-based measurement in the spirit of ISO 13322-1. This differs from and complements fluid-flow porometry such as ASTM F316 (bubble point / mean-flow pore) and ASTM D6767 (capillary flow for geotextiles), which report the narrowest through-pore constriction that controls flow rather than the projected opening.

Which circularity convention is used, and what value should I expect?

PoreSizer uses Wadell's circularity, f = √(4πA)/P (ISO 9276-6), which is 1 for a perfect circle and decreases for irregular outlines. It is not ImageJ's 'circularity' 4πA/P², which is the square of this value — a rounded square that reads ~0.94 here reads ~0.89 there. Circularity also depends on how the perimeter P is measured: PoreSizer estimates P with the Cauchy-Crofton formula, which is orientation-robust but not exact for straight-edged polygons, so a digitized square reads about 0.94 rather than the textbook geometric √π/2 ≈ 0.886. This is inherent to any finite-direction perimeter estimate — always report the convention alongside the number.

What do solidity and convexity measure?

Both compare the particle with its convex hull (ISO 9276-6). Solidity S = A/A_c is an area ratio: 1 for a convex particle, lower when the outline has bays or notches — a plus-shaped particle, for instance, reads exactly 5/7 ≈ 0.71. Convexity C = P_C/P is a perimeter ratio that reacts to boundary roughness. Because the perimeter P is a Cauchy-Crofton estimate while the hull perimeter P_C is exact, C is capped at 1.0 — on straight-edged convex shapes the raw ratio can slightly exceed 1, the same estimator effect explained for circularity.

Can I upload HEIC photos?

Yes — HEIC/HEIF photos from iPhone are decoded right in your browser, with no conversion step. Decoding a full-resolution 12-megapixel HEIC takes several seconds (often 10–15 s while the WebAssembly decoder loads), so give it a moment after choosing the file — a spinner shows while it works. AVIF is still unsupported outside Safari; convert it to JPG or PNG. Microscopy sources normally export TIFF or PNG, which are fully supported.

How many particles do I need?

The median (x₅₀) is reliable with relatively few particles, but high percentiles such as x₉₀ and area/volume weighting need far more — often thousands (ISO 13322-1 Annex A; Masuda & Iinoya 1971). PoreSizer warns you when the count is low relative to the statistics you are reading.

Normative references

  • ISO 13322-1:2014 — Particle size analysis — Image analysis methods — Part 1: Static image analysis methods.
  • ISO 9276-1 — Representation of results of particle size analysis — Part 1: Graphical representation.
  • ISO 9276-6:2008 — Representation of results of particle size analysis — Part 6: Descriptive and quantitative representation of particle shape and morphology.
  • N. Otsu (1979). A Threshold Selection Method from Gray-Level Histograms. IEEE Transactions on Systems, Man, and Cybernetics 9(1): 62–66.
  • R. E. Miles (1974) and C. Lantuéjoul (1980) — correction of edge effects in the analysis of individual particles in a planar frame.
  • T. Allen (1997). Particle Size Measurement, 5th ed. Chapman & Hall — required particle counts versus precision.
  • P. F. Felzenszwalb & D. P. Huttenlocher (2012). Distance Transforms of Sampled Functions. Theory of Computing 8(19): 415–428 — exact Euclidean distance transform.
  • F. Meyer (1994). Un algorithme optimal de ligne de partage des eaux — priority-flood watershed used for touching-particle separation.
  • HEIC/HEIF decoding runs in your browser via libheif (LGPL-3.0), through the heic-to library — github.com/strukturag/libheif, github.com/hoppergee/heic-to.