Source code for medical_image.algorithms.top_hat
from medical_image.algorithms.algorithm import Algorithm
from medical_image.data.image import Image
from medical_image.process.morphology import MorphologyOperations
[docs]
class TopHatAlgorithm(Algorithm):
"""
White Top-Hat enhancement algorithm for microcalcification detection.
Highlights bright structures (e.g., microcalcifications) that are smaller than
the selected structuring element.
Math and Logic:
TopHat(I) = I - opening(I, SE)
Pipeline:
1. Create a disk structuring element of the specified radius.
2. Perform morphological opening (erosion followed by dilation).
3. Subtract the opened image from the original image.
Args:
radius: Disk SE radius (default 4 -> 9x9 footprint).
device: Torch device (e.g. "cpu", "cuda:0").
"""
[docs]
def __init__(self, radius: int = 4, device: str = "cpu"):
super().__init__(device=device)
self.radius = radius
self.top_hat = lambda img, out: MorphologyOperations.white_top_hat(
image=img, output=out, radius=self.radius, device=self.device
)
[docs]
def apply(self, image: Image, output: Image) -> Image:
"""
Apply white top-hat to the image.
Args:
image: Input Image (2D float, e.g. normalized [0,1]).
output: Output Image — pixel_data will contain top-hat result.
Returns:
The output Image.
"""
self.top_hat(image, output)
return output