|
import cv2 |
|
import numpy as np |
|
|
|
def create_mask(image): |
|
""" |
|
Creates a binary mask from an input image by thresholding and smoothing. |
|
|
|
Args: |
|
image: Input image (numpy array) |
|
|
|
Returns: |
|
Binary mask image (numpy array) |
|
""" |
|
|
|
image_org = image.copy() |
|
|
|
|
|
for i in range(len(image)): |
|
for j in range(len(image[i])): |
|
if image[i][j] != 255: |
|
image[i][j] = 0 |
|
|
|
|
|
padding = 0 |
|
image = cv2.copyMakeBorder(image, padding, padding, padding, padding, |
|
cv2.BORDER_CONSTANT, value=255) |
|
|
|
|
|
image = cv2.GaussianBlur(image, (5,5), 50) |
|
|
|
|
|
_, mask = cv2.threshold(image, 254, 255, cv2.THRESH_BINARY) |
|
|
|
|
|
""" |
|
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5)) |
|
ax1.imshow(image_org, cmap="gray") |
|
ax1.set_title("Original Image") |
|
ax2.imshow(mask, cmap="gray") |
|
ax2.set_title("Mask Image") |
|
plt.show() |
|
""" |
|
|
|
return mask |
|
|