trim_saddle_points
#
trim_saddle_points
function is a filter which removes peaks that were mistakenly identified because they lie on a saddle or a ridge in the distance transform.
import numpy as np
import porespy as ps
import scipy.ndimage as spim
import matplotlib.pyplot as plt
import skimage
from edt import edt
ps.visualization.set_mpl_style()
/opt/hostedtoolcache/Python/3.8.16/x64/lib/python3.8/site-packages/openpnm/algorithms/_invasion_percolation.py:358: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.
def _find_trapped_pores(inv_seq, indices, indptr, outlets): # pragma: no cover
dt
#
The distance transform of a test image is detetmined using the edt
method.
im = ps.generators.blobs(shape=[200, 200], blobiness=[2, .5], porosity=0.65)
dt = edt(im)
plt.figure(figsize=[6, 6]);
plt.axis(False);
plt.imshow(dt/im);

peaks
#
peaks
is found using the find_peaks
filter on the distance transform. Peaks that lie on a saddle or a ridge are removed.
peaks = ps.filters.find_peaks(dt, r_max=4)
x = ps.filters.trim_saddle_points(peaks=peaks, dt=dt)
fix, ax = plt.subplots(1, 2, figsize=[12, 12])
ax[0].axis(False)
ax[0].imshow(peaks/im)
ax[0].set_title('Before', fontdict={'fontsize': 18});
ax[1].axis(False)
ax[1].imshow(x/im);
ax[1].set_title('After', fontdict={'fontsize': 18});
