PSD Analysis for Android

The image to be analyzed must be fully comprised of circular objects  (such as iron ore pellets) without empty borders; analysis parameters (including image scale) must be set accordingly for proper functioning of the app.

The purpose of this application is to perform quick and approximate on-site anlysis of bulk material, especially of green/burnt iron ore pellets.

The application is divided into 3 tabs, which are ordered following the processing logic:

  1. Image acquisition
  2. Analysis parameters
  3. Result


Image tab: start

Three buttons at the bottom select image source; it can be made with Camera, an existing picture can be selected from Gallery or one of the Demos can be chosen. The question mark icon opens this manual.

The quality of the source image co-determines the quality of the result. Excessive resolution is not necessary (any pictures above 4Mpix are downscaled first to avoid excessive computational cost) but good lighting (at best from the top) is essential.

After image selection, the app switches to the next tab automatically.

Image tab


Parameters tab

The analysis itself depends on a number of parameters. Only the most important ones are exposed in the user interface to make the experience as streamlined as possible.

Each pellet is at first (after applying several image filters) identified as a point cluster, then, using principal component analysis, treated as an equivalent ellipse with equivalent principal axes and area. Area determines equivalent radius and ellipse semi-axes determine eccentricity (see Ellipse at Wikipedia).

Diameter range for pellets is pre-defined to be 5mm−20mm while dimensionless eccentricity is by default 0.8 maximum. The eccentricity often comes more from lighting, image processing and configuration (such as occlusion, shade and so on) than from physical pellet deformation.

Since image does not contain any dimension information, it is necessary to set either height or width of the scene captured.

After clicking Process, the analysis is actually performed and the app switches to the last tab automatically.


Result tab

The PSD curve, cumulative distribution function expresses pellet size distribution. It is shown between minimum and maximum diameters, with markers at 9mm and 16mm as fraction boundaries.

The small table underneath shows percentage of undersize (<9mm), onsize (9mm…16mm) and oversize (>16mm), and also median diameter, where the PSD function crosses 50%.

Below that is image with analysis overlay, which can be used to check analysis accuracy and validity; if it is not satisfactory, analysis parameters, lighting or perspective might need to be adjusted.


Empty image areas are misidentified as pellets.

The algorithm supposes that the entire image area is covered with pellets, empty image areas will, during image processing, create artificial spots which will be misidentified. You can crop the image (using e.g. the crop function in the phone gallery) to avoid this effect.

Some pellets are not identified.

This is the result from suboptimal lighting conditions. However, since the PSD is statistical expression of size distribution, larger number of pellets in the image makes this effect less troubling; even more so, repeated analysis of slightly different images (such as when analyzing bulk from conveyor belt) even out the omissions.