GrainSight — Particle Size Distribution from RGB-D Data

Published:

A 3D particle size and granulometry analyzer that estimates grain size distributions from RGB-D (depth) data. Developed during 2018 at ALGES as the third component of a mineral characterization trio: spectral composition (HSI), surface geometry (Depth Profiler), and now particle size (GrainSight).

Business context

Particle size distribution (PSD) is one of the most critical parameters in mineral processing. It directly affects grinding energy consumption, flotation recovery, and leaching kinetics. Traditional PSD measurement requires physical sieve analysis — a destructive, time-consuming laboratory procedure that provides only batch-level averages.

Key Performance Indicators — Process impact

GrainSight replaces physical sieve analysis with non-destructive image-based measurement, enabling continuous monitoring that was previously impossible.

KPIBaseline (sieve analysis)With GrainSightImpact
Measurement methodDestructive sieve stackingNon-destructive depth imagingSample preserved for further analysis
TurnaroundHours per sample (manual sieving)Minutes (image capture + processing)Near real-time PSD feedback
Spatial resolutionBulk average per sieve fractionPer-grain measurement (18 metrics each)Spatially resolved size maps
D-value extractionManual interpolation from sieve dataAutomatic D10/D25/D50/D75/D80/D90Consistent, repeatable analysis
IntegrationStandalone lab procedureCo-registered with HSI + depth dataJoint composition-size characterization

The characterization trio

This project completes a three-system pipeline for comprehensive mineral sample characterization:

  1. HSI Mineral Classificationwhat it is (spectral composition, mineral abundances)
  2. 3D Distance Profilerhow it looks (surface depth maps, roughness, curvature)
  3. GrainSighthow big it is (particle size distribution, grain shapes)

Together, these three systems provide the data needed for geometallurgical models that predict processing behavior from ore properties.

Granulometry analysis pipeline

How it works

1. Grain segmentation

Marker-based watershed segmentation on the depth gradient magnitude image. Local maxima in the depth map identify grain peaks (markers), and the watershed algorithm floods from these markers to delineate grain boundaries. Small fragments are merged based on area thresholds.

2. Per-grain measurement

18 geometric properties extracted per segmented grain:

Per-grain metrics:
deq = √(4A/π) — equivalent diameter from pixel area
AR = dmajor / dminor — aspect ratio from PCA axes
C = 4πA / P² — circularity (1.0 = perfect circle)
V = Σ (zi - zbase) × Δx × Δy — depth-integrated volume above base plane

3. PSD analysis and Rosin-Rammler fitting

Rosin-Rammler distribution:
R(d) = 100 × exp(-(d/d')ⁿ)
d' = characteristic size (63.2% passing), n = uniformity index
Fitted by least-squares on log-log transformed cumulative data

D-values (D10, D25, D50, D75, D80, D90) are extracted from the cumulative PSD curve, and a sieve simulation matches the ISO 565 standard series.

PSD cumulative curve with D-values

Technical stack

  • Backend: Python/FastAPI with scikit-image for watershed segmentation, NumPy/SciPy for PSD analysis
  • Frontend: HTML5 Canvas with dark theme, real-time PSD chart, grain measurement table
  • Calibration: Pixel-to-mm conversion via reference object or direct pixel size
  • Export: CSV with 18 metrics per grain, PSD summary with D-values
  • Standards: ISO 565 (sieve series), ISO 13322-1 (image-based particle sizing)

View on GitHub