Source code for phenotypic.detect._triangle_detector

from __future__ import annotations
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from phenotypic import Image
from skimage.filters import threshold_triangle

from ..abc_ import ThresholdDetector


[docs] class TriangleDetector(ThresholdDetector): """Detects triangles in an image using a thresholding method. This class inherits from ThresholdDetector and is specifically designed to detect triangles through a thresholding algorithm applied to the image's enhance gray. The threshold is calculated using the triangle algorithm, and the result modifies the image's object mask. Methods: apply: Applies triangle thresholding to the enhance gray of the image and updates the object mask accordingly. """ def _operate(self, image: Image) -> Image: """ Applies a thresholding operation on the enhanced gray of an image using the triangle method. Thresholding is performed by comparing each element in the enhanced gray to the computed triangular threshold, setting the corresponding other_image in the output mask (`omask`) to True if the condition is satisfied. Args: image (Image): The arr image object containing an enhanced gray (`enh_gray`) which will be processed to generate an output mask. Returns: Image: The modified image object with an updated output mask (`omask`). """ nbins = 2**image.bit_depth image.objmask[:] = image.enh_gray[:] >= threshold_triangle( image.enh_gray[:], nbins=nbins ) return image
# Set the docstring so that it appears in the sphinx documentation TriangleDetector.apply.__doc__ = TriangleDetector._operate.__doc__