A reproducible ImageJ and Python workflow for SEM particle sizing
Built an open workflow that replaced manual particle counting in our lab course, cutting analysis time and removing operator bias.
- Role
- Independent project, arising from SCMS 242 Materials Characterisation
- Supervisor
- Self-directed; reviewed by Dr. Anucha Wongsri
- Lab
- SCME, Mahidol University
- Dates
- Sept – Dec 2025
Particle size distributions in our characterisation course were measured by hand in ImageJ, which is slow and depends heavily on who is doing the measuring. I wrote a thresholding and watershed macro to segment SEM micrographs automatically, then a short Python script to aggregate the output and fit a log-normal distribution.
I validated it against 200 particles measured manually by three different students, so the comparison covers inter-operator spread and not just my own measurements.
Key result
Agreed with manual measurement to within 4% on mean particle diameter while reducing analysis time per micrograph from about 25 minutes to under 2.
Methods and techniques
- ImageJ macro scripting
- Watershed segmentation
- Python (pandas, matplotlib)
- SEM image analysis
- Log-normal distribution fitting