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