extract_regions#

Import packages#

import numpy as np
import porespy as ps
import scipy.ndimage as spim
import matplotlib.pyplot as plt
import skimage
ps.visualization.set_mpl_style()
[01:58:20] ERROR    PARDISO solver not installed, run `pip install pypardiso`. Otherwise,          _workspace.py:56
                    simulations will be slow. Apple M chips not supported.                                         

Generate image for testing#

To illustrate this function, we need an image containing many labelled regions. This can obtained by generating some blobs, then using scipy.label.

np.random.seed(0)
im = ps.generators.blobs([500, 500], blobiness=2, porosity=0.4)
regions = spim.label(im)[0]
fig, ax = plt.subplots(1, 1, figsize=[4, 4])
ax.axis(False)
ax.imshow(regions);
../../../_images/ae09acbc093237b7eeb35c2cd4209c514822d842219d7e632c34d0d796935b78.png

Apply tool#

In it’s basic form, this function is equivalent to just obtaining a boolean mask like regions == 22, but it has a few more features including extracting a sub-image that just contains the regions, and also finding multiple regions at once.

reg1 = ps.tools.extract_regions(regions=regions, labels=[22], trim=False)
reg2 = ps.tools.extract_regions(regions=regions, labels=[22], trim=True)
reg3 = ps.tools.extract_regions(regions=regions, labels=[22, 23], trim=True)
fig, ax = plt.subplots(1, 3, figsize=[8, 4])
ax[0].axis(False)
ax[0].imshow(reg1)
ax[1].axis(False)
ax[1].imshow(reg2);
ax[2].axis(False)
ax[2].imshow(reg3);
../../../_images/19c5151d3dfc2077656be90b89ed726b77d075883351e24ead141a80091e4ba2.png