Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- def pad_image(image: np.ndarray, pad_size: int) -> np.ndarray:
- if pad_size < 1:
- raise ValueError
- res = np.array([])
- m = image.shape[0]
- n = image.shape[1]
- if image.ndim == 2:
- res = np.zeros(shape = (m + 2 * pad_size, n + 2 * pad_size))
- elif image.ndim == 3:
- k = image.shape[2]
- res = np.zeros(shape=(m + 2 * pad_size, n + 2 * pad_size, k))
- res[pad_size: pad_size + m, pad_size: pad_size + n] = image
- return res
- def blur_image(
- image: np.ndarray,
- kernel_size: int,
- ) -> np.ndarray:
- if kernel_size < 1 or kernel_size % 2 == 0:
- raise ValueError
- pad_size = kernel_size // 2
- padded_image = pad_image(image, pad_size)
- N = image.shape[0]
- M = image.shape[1]
- res = np.zeros(shape = image.shape)
- print("image")
- print(image)
- print("padded_image")
- print(padded_image)
- if image.ndim == 2:
- for i in range(N):
- for j in range(M):
- sliding_window = padded_image[i : i + kernel_size, j : j + kernel_size]
- res[i, j] = np.mean(sliding_window)
- else:
- K = image.shape[2]
- print("N M K")
- print(N, M, K)
- for i in range(N):
- for j in range(M):
- for k in range(K):
- sliding_window = padded_image[i: i + kernel_size, j: j + kernel_size, k]
- res[i, j, k] = np.mean(sliding_window)
- return res
- """
- matrix = np.array([
- np.array([1,1,1,1,1,1,1]),
- np.array([1,1,1,1,1,1,1]),
- np.array([1,1,1,1,1,1,1])
- ])
- res = pad_image(matrix, 2)
- print("res")
- print(res)
- """
- MATRIX = np.full((2, 3, 7), 5)
- res = blur_image(MATRIX, 5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement