Source code for cdl.computation.image.morphology # Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
"""
Morphology computation module
-----------------------------
"""
# pylint: disable=invalid-name # Allows short reference names like x, y, ...
# Note:
# ----
# All dataset classes must also be imported in the cdl.computation.param module.
from __future__ import annotations
import guidata.dataset as gds
from skimage import morphology
from cdl.computation.image import dst_11 , restore_data_outside_roi
from cdl.config import _
from cdl.obj import ImageObj
[docs]
class MorphologyParam ( gds . DataSet ):
"""White Top-Hat parameters"""
radius = gds . IntItem (
_ ( "Radius" ), default = 1 , min = 1 , help = _ ( "Footprint (disk) radius." )
)
[docs]
def compute_white_tophat ( src : ImageObj , p : MorphologyParam ) -> ImageObj :
"""Compute White Top-Hat with :py:func:`skimage.morphology.white_tophat`
Args:
src: input image object
p: parameters
Returns:
Output image object
"""
dst = dst_11 ( src , "white_tophat" , f "radius= { p . radius } " )
dst . data = morphology . white_tophat ( src . data , morphology . disk ( p . radius ))
restore_data_outside_roi ( dst , src )
return dst
[docs]
def compute_black_tophat ( src : ImageObj , p : MorphologyParam ) -> ImageObj :
"""Compute Black Top-Hat with :py:func:`skimage.morphology.black_tophat`
Args:
src: input image object
p: parameters
Returns:
Output image object
"""
dst = dst_11 ( src , "black_tophat" , f "radius= { p . radius } " )
dst . data = morphology . black_tophat ( src . data , morphology . disk ( p . radius ))
restore_data_outside_roi ( dst , src )
return dst
[docs]
def compute_erosion ( src : ImageObj , p : MorphologyParam ) -> ImageObj :
"""Compute Erosion with :py:func:`skimage.morphology.erosion`
Args:
src: input image object
p: parameters
Returns:
Output image object
"""
dst = dst_11 ( src , "erosion" , f "radius= { p . radius } " )
dst . data = morphology . erosion ( src . data , morphology . disk ( p . radius ))
restore_data_outside_roi ( dst , src )
return dst
[docs]
def compute_dilation ( src : ImageObj , p : MorphologyParam ) -> ImageObj :
"""Compute Dilation with :py:func:`skimage.morphology.dilation`
Args:
src: input image object
p: parameters
Returns:
Output image object
"""
dst = dst_11 ( src , "dilation" , f "radius= { p . radius } " )
dst . data = morphology . dilation ( src . data , morphology . disk ( p . radius ))
restore_data_outside_roi ( dst , src )
return dst
[docs]
def compute_opening ( src : ImageObj , p : MorphologyParam ) -> ImageObj :
"""Compute morphological opening with :py:func:`skimage.morphology.opening`
Args:
src: input image object
p: parameters
Returns:
Output image object
"""
dst = dst_11 ( src , "opening" , f "radius= { p . radius } " )
dst . data = morphology . opening ( src . data , morphology . disk ( p . radius ))
restore_data_outside_roi ( dst , src )
return dst
[docs]
def compute_closing ( src : ImageObj , p : MorphologyParam ) -> ImageObj :
"""Compute morphological closing with :py:func:`skimage.morphology.closing`
Args:
src: input image object
p: parameters
Returns:
Output image object
"""
dst = dst_11 ( src , "closing" , f "radius= { p . radius } " )
dst . data = morphology . closing ( src . data , morphology . disk ( p . radius ))
restore_data_outside_roi ( dst , src )
return dst
Copy to clipboard