pumapy.filters

pumapy.filters.filters

Note: Most of the filters are simple wrappers of functions in either scikitimage or scipy.ndimage. The filters can be run directly in these packages if the user desires, but the wrapping is done for simplicity so that the Workspace class can be used, and the filter executions can be logged by the workspace class in order to document the simulation workflows.

The C++ version of puma implements the filters directly. But for python, there’s no reason to re-invent the wheel when so many great packages exist for image manipulation

pumapy.filters.filters.filter_closing(ws, cutoff, size=5)[source]

3D morphological closing filter (i.e. erosion first and then dilation).

Parameters
  • ws (Workspace) – input workspace

  • cutoff ((int, int)) – cutoff to binarize image

  • size (int) – size of the spherical windows used

Example

>>> import pumapy as puma
>>> ws = puma.import_3Dtiff(puma.path_to_example_file("100_fiberform.tif"), 1.3e-6)
Importing .../100_fiberform.tif ... Done
>>> ws_closing = ws.copy()
>>> puma.filter_closing(ws_closing, cutoff=(90, 255), size=3)
>>> ws_binary = ws.copy()
>>> ws_binary.binarize_range((90, 255))
>>> # puma.compare_slices(ws_binary, ws_closing, 'z', index=1)  # to visualize it
pumapy.filters.filters.filter_dilate(ws, cutoff, size=5)[source]

3D morphological dilation filter.

Parameters
  • ws (Workspace) – input workspace

  • cutoff ((int, int)) – cutoff to binarize image

  • size (int) – size of the spherical windows used

Example

>>> import pumapy as puma
>>> ws = puma.generate_tpms((100, 100, 100), (0.02, 0.05), 0.201, 0)  # generate tpms material
Generating TPMS ...
>>> ws_dilate = ws.copy()
>>> puma.filter_dilate(ws_dilate, cutoff=(1, 1), size=5)  # dilating the copy
>>> # puma.compare_slices(ws, ws_dilate)  # to visualize it
pumapy.filters.filters.filter_edt(ws, cutoff)[source]

3D Exact euclidean distance transform.

Parameters
  • ws (Workspace) – input workspace

  • cutoff ((int, int)) – cutoff to binarize image

Example

>>> import pumapy as puma
>>> ws = puma.generate_tpms((100, 100, 100), (0.02, 0.05), 0.201, 0)  # generate tpms material
Generating TPMS...
>>> ws_edt = ws.copy()
>>> puma.filter_edt(ws_edt, cutoff=(1, 1))
>>> # puma.compare_slices(ws, ws_edt)  # to visualize it
pumapy.filters.filters.filter_erode(ws, cutoff, size=5)[source]

3D morphological erosion filter.

Parameters
  • ws (Workspace) – input workspace

  • cutoff ((int, int)) – cutoff to binarize image

  • size (int) – size of the spherical windows used

Example

>>> import pumapy as puma
>>> ws = puma.generate_tpms((100, 100, 100), (0.02, 0.05), 0.201, 0)  # generate tpms material
Generating TPMS ...
>>> ws_erode = ws.copy()
>>> puma.filter_erode(ws_erode, (1, 1))  # eroding the copy
>>> # puma.compare_slices(ws, ws_erode)  # to visualize it
pumapy.filters.filters.filter_gaussian(ws, sigma=1, apply_on_orientation=False)[source]

3D Gaussian filter

Parameters
  • ws (Workspace) – input workspace

  • sigma (int) – size of kernel

  • apply_on_orientation (bool) – specify whether to apply filter on orientation field

Example

>>> import pumapy as puma
>>> ws = puma.import_3Dtiff(puma.path_to_example_file("100_fiberform.tif"), 1.3e-6)
Importing .../100_fiberform.tif ... Done
>>> ws_gaussian = ws.copy()
>>> puma.filter_gaussian(ws_gaussian, sigma=2, apply_on_orientation=False)
>>> # puma.compare_slices(ws, ws_gaussian, 'z', index=1)  # to visualize it
pumapy.filters.filters.filter_mean(ws, size=5)[source]

3D Mean filter.

Parameters
  • ws (Workspace) – input workspace

  • size (int) – size of window

Example

>>> import pumapy as puma
>>> ws = puma.import_3Dtiff(puma.path_to_example_file("100_fiberform.tif"), 1.3e-6)
Importing .../100_fiberform.tif ... Done
>>> ws_mean = ws.copy()
>>> puma.filter_mean(ws_mean, size=10)
>>> # puma.compare_slices(ws, ws_mean)  # to visualize it
pumapy.filters.filters.filter_median(ws, size)[source]

3D Median filter

Parameters
  • ws (Workspace) – input workspace

  • size (int) – size of window

Example

>>> import pumapy as puma
>>> ws = puma.import_3Dtiff(puma.path_to_example_file("100_fiberform.tif"), 1.3e-6)
Importing .../100_fiberform.tif ... Done
>>> ws_median = ws.copy()
>>> puma.filter_median(ws_median, size=10)
>>> # puma.compare_slices(ws, ws_median)  # to visualize it
pumapy.filters.filters.filter_opening(ws, cutoff, size=5)[source]

3D morphological opening filter (i.e. dilation first and then erosion).

Parameters
  • ws (Workspace) – input workspace

  • cutoff ((int, int)) – cutoff to binarize image

  • size (int) – size of the spherical windows used

Example

>>> import pumapy as puma
>>> ws = puma.import_3Dtiff(puma.path_to_example_file("100_fiberform.tif"), 1.3e-6)
Importing .../100_fiberform.tif ... Done
>>> ws_opening = ws.copy()
>>> puma.filter_opening(ws_opening, cutoff=(90, 255), size=3)
>>> ws_binary = ws.copy()
>>> ws_binary.binarize_range((90, 255))
>>> # puma.compare_slices(ws_binary, ws_opening, 'z', index=1)  # to visualize it