flood#

Floods each region with a specific value based on a specified statistical operation performed on values in that region.

Import packages#

import matplotlib.pyplot as plt
from edt import edt

import porespy as ps

ps.visualization.set_mpl_style()

im#

The distance transform can have statistical calculations performed

im = ps.generators.blobs(shape=[200, 200])
dt = edt(im)

plt.figure(figsize=[6, 6])
plt.imshow(dt / im)
plt.axis(False);
../../../_images/c66e78c4c4c57706700c80a92cc819934d5201349cb1b51281eb7d14a9fabb5f.png

labels#

snow_partitioning can be used to create regions

regions = ps.filters.snow_partitioning(im, r_max=4, sigma=0.4)
labels = regions.regions

plt.figure(figsize=[6, 6])
plt.imshow(labels / im)
plt.axis(False);
../../../_images/6680d2bfaf1bf6ebd8278c9f4620f7769ab36fd85d947835055d68b9794ba979.png

mode#

Various functions in scipy.ndimage.measurements are called to perform statistical calculation. The mode indicates which function to call.

x1 = ps.filters.flood(im=dt, labels=labels, mode="max")
x2 = ps.filters.flood(im=dt, labels=labels, mode="mean")
x3 = ps.filters.flood(im=dt, labels=labels, mode="sum")

fig, ax = plt.subplots(1, 3, figsize=[18, 18])
ax[0].imshow(x1)
ax[0].axis(False)
ax[0].set_title("mode = max")
ax[1].imshow(x2)
ax[1].axis(False)
ax[1].set_title("mode = mean")
ax[2].imshow(x3)
ax[2].axis(False)
ax[2].set_title("mode = sum");
../../../_images/2319e050d65fe7e44430037dbd6866fa49ef446cdc19ef3cf9919d231c3c5b71.png