Source code for stouputils.data_science.data_processing.image.median_blur
# pyright: reportUnusedImport=false
# ruff: noqa: F401
# Imports
from .common import Any, NDArray, check_image, cv2, np
# Functions
[docs]
def median_blur_image(image: NDArray[Any], kernel_size: int = 7, iterations: int = 1) -> NDArray[Any]:
""" Apply median blur to an image.
Args:
image (NDArray[Any]): Image to apply median blur
kernel_size (int): Kernel size for the median blur
iterations (int): Number of iterations for the median blur
Returns:
NDArray[Any]: Image with median blur applied
>>> ## Basic tests
>>> image = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=np.uint8)
>>> adjusted = median_blur_image(image, kernel_size=7, iterations=1)
>>> adjusted.tolist()
[[3, 3, 3], [4, 5, 6], [7, 7, 7]]
>>> adjusted.shape == image.shape
True
>>> adjusted.dtype == image.dtype
True
>>> median_blur_image(image, kernel_size=3, iterations=1).tolist()
[[2, 3, 3], [4, 5, 6], [7, 7, 8]]
>>> median_blur_image(image, kernel_size=3, iterations=2).tolist()
[[3, 3, 3], [4, 5, 6], [7, 7, 7]]
>>> median_blur_image(image, kernel_size=3, iterations=5).tolist()
[[3, 3, 3], [4, 5, 6], [7, 7, 7]]
>>> ## Test invalid inputs
>>> median_blur_image("not an image")
Traceback (most recent call last):
...
AssertionError: Image must be a numpy array
"""
# Check input data
check_image(image, ignore_dtype=True)
# Apply median blur
for _ in range(iterations):
image = cv2.medianBlur(image, kernel_size)
# Return the image
return image