• Invading Fluid Configurations: Simulating MIP with morphological image opening

Porous Media Image Analysis in Python

What is PoreSpy?

PoreSpy is a collection of image analysis tool used to extract information from 3D images of porous materials (typically obtained from X-ray tomography). There are many packages that offer generalized image analysis tools (i.e Skimage and Scipy.NDimage in the Python environment, ImageJ, MatLab’s Image Processing Toolbox), but the all require building up complex scripts or macros to accomplish tasks of specific use to porous media. The aim of PoreSpy is to provide a set of pre-written tools for all the common porous media measurements.

PoreSpy relies heavily on two general image analysis packages: scipy.ndimage and scikit-image also known as **skimage**. The former contains an assortment of general image analysis tools such as image morphology filters, while the latter offers more complex but still general functions such as watershed segmentation. PoreSpy does not duplicate any of these general functions so you will also have to install and learn how to use them to get the most from PoreSpy. The functions in PoreSpy are generally built up using several of the more general functions offered by skimage and scipy. There are a few functions in PoreSpy that are implemented natively, but only when necessary.


PoreSpy consists of the following modules:

  • generators: Routines for generating artificial images of porous materials useful for testing and illustration
  • filters: Functions that accept an image and return an altered image
  • metrics: Tools for quantifying properties of images
  • simulations: More complex calculations based on physical processes
  • networks: Tools for analyzing images as pore networks
  • visualization: Helper functions for creating useful views of the image
  • io: Functions for output image data in various formats for use in common software
  • tools: Various useful tools for working with images


PoreSpy depends heavily on the Scipy Stack. The best way to get a fully functional environment is the Anaconda distribution. Be sure to get the Python 3.6+ version.

PoreSpy is available on the Python Package Index  and can be installed using PIP as follows:

C:\> pip install porespy