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)
    """
    # Store original image for visualization
    image_org = image.copy()
    
    # Convert image to binary (0 or 255)
    for i in range(len(image)):
        for j in range(len(image[i])):
            if image[i][j] != 255:
                image[i][j] = 0
                
    # Add padding of 50 pixels on all sides
    padding = 0
    image = cv2.copyMakeBorder(image, padding, padding, padding, padding, 
                              cv2.BORDER_CONSTANT, value=255)

    # Apply Gaussian blur for smoothening
    image = cv2.GaussianBlur(image, (5,5), 50)

    # Threshold to create binary mask
    _, mask = cv2.threshold(image, 254, 255, cv2.THRESH_BINARY)
    
    # Visualization (commented out for production use)
    """
    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