Source code for ewoksxrpd.tasks.morphology
from numbers import Number
import numpy
from numpy.typing import ArrayLike
try:
from pyFAI.ext import morphology
def binary_dilation(mask: ArrayLike, hwhm: Number):
fwhm = int(round(2.0 * hwhm))
return morphology.binary_dilation(mask.astype(numpy.int8), fwhm)
except ImportError:
from scipy.ndimage import morphology
[docs]
def binary_dilation(mask: ArrayLike, hwhm: Number):
fwhm = int(round(2.0 * hwhm))
my, mx = numpy.ogrid[-fwhm : fwhm + 1, -fwhm : fwhm + 1]
grow = (mx * mx + my * my) <= (4.0 * hwhm * hwhm)
return morphology.binary_dilation(mask, grow)