Last active
September 16, 2022 21:46
-
-
Save Semnodime/ddf1e63d4405084f886204e73ecfabcd to your computer and use it in GitHub Desktop.
MatLab imreconstruct in OpenCV Python for Morphological Reconstruction
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import cv2 | |
import numpy as np | |
def imreconstruct(marker: np.ndarray, mask: np.ndarray, radius: int = 1): | |
"""Iteratively expand the markers white keeping them limited by the mask during each iteration. | |
:param marker: Grayscale image where initial seed is white on black background. | |
:param mask: Grayscale mask where the valid area is white on black background. | |
:param radius Can be increased to improve expansion speed while causing decreased isolation from nearby areas. | |
:returns A copy of the last expansion. | |
Written By Semnodime. | |
""" | |
kernel = np.ones(shape=(radius * 2 + 1,) * 2, dtype=np.uint8) | |
while True: | |
expanded = cv2.dilate(src=marker, kernel=kernel) | |
cv2.bitwise_and(src1=expanded, src2=mask, dst=expanded) | |
# Termination criterion: Expansion didn't change the image at all | |
if (marker == expanded).all(): | |
return expanded | |
marker = expanded |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment