メインコンテンツまでスキップ

imtophat

imtophat(img: np.ndarray, ksize: int | tuple[int, int] = (3, 3), kstruct: str | int | MORPH = MORPH.RECT) -> np.ndarray

  • 説明:トップハット演算:元の画像からオープニング演算の結果を引いたものです。マルチチャネル画像の場合、各チャネルは個別に処理されます。この手法は、元の画像よりも明るい領域を抽出するために使用され、明点や細かな構造を強調することができます。また、大面積の明るい領域を除去または弱めることができます。

  • 引数

    • img (np.ndarray):入力画像。
    • ksize (Union[int, Tuple[int, int]]):構造要素のサイズ。デフォルトは (3, 3)。
    • kstruct (str | int | MORPH):要素の形状。MORPH.CROSS/RECT/ELLIPSE、文字列 "CROSS"/"RECT"/"ELLIPSE"、または OpenCV の整数値を指定できます。デフォルトは MORPH.RECT
  • import numpy as np
    from capybara.vision.morphology import imtophat

    img = np.array([[1, 1, 1, 0, 0],
    [1, 1, 1, 0, 0],
    [1, 1, 1, 0, 0],
    [0, 0, 1, 1, 0],
    [0, 0, 0, 1, 1],
    [0, 0, 0, 1, 1]], dtype=np.uint8)

    tophat_img = imtophat(img, ksize=3, kstruct='RECT')

    # Kernel will be like this:
    # >>> np.array([[1, 1, 1],
    # [1, 1, 1],
    # [1, 1, 1]], dtype=np.uint8)

    # After tophat, the image will be like this:
    # >>> np.array([[0, 0, 0, 0, 0],
    # [0, 0, 0, 0, 0],
    # [0, 0, 0, 0, 0],
    # [0, 0, 1, 1, 0],
    # [0, 0, 0, 0, 0],
    # [0, 0, 0, 0, 0]], dtype=np.uint8)