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.
| KPI | Baseline (sieve analysis) | With GrainSight | Impact |
|---|---|---|---|
| Measurement method | Destructive sieve stacking | Non-destructive depth imaging | Sample preserved for further analysis |
| Turnaround | Hours per sample (manual sieving) | Minutes (image capture + processing) | Near real-time PSD feedback |
| Spatial resolution | Bulk average per sieve fraction | Per-grain measurement (18 metrics each) | Spatially resolved size maps |
| D-value extraction | Manual interpolation from sieve data | Automatic D10/D25/D50/D75/D80/D90 | Consistent, repeatable analysis |
| Integration | Standalone lab procedure | Co-registered with HSI + depth data | Joint composition-size characterization |
The characterization trio
This project completes a three-system pipeline for comprehensive mineral sample characterization:
- HSI Mineral Classification — what it is (spectral composition, mineral abundances)
- 3D Distance Profiler — how it looks (surface depth maps, roughness, curvature)
- GrainSight — how 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.
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:
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
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.
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)
