Advertisement
Korotkodul

B. Нечеткий парень Часть 2. Размытие

Feb 24th, 2025 (edited)
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.11 KB | None | 0 0
  1. import numpy as np
  2.  
  3. def pad_image(image: np.ndarray, pad_size: int) -> np.ndarray:
  4.     if pad_size < 1:
  5.         raise ValueError
  6.     res = np.array([])
  7.     m = image.shape[0]
  8.     n = image.shape[1]
  9.     if image.ndim == 2:
  10.         res = np.zeros(shape = (m + 2 * pad_size, n + 2 * pad_size))
  11.     elif image.ndim == 3:
  12.         k = image.shape[2]
  13.         res = np.zeros(shape=(m + 2 * pad_size, n + 2 * pad_size, k))
  14.     res[pad_size: pad_size + m, pad_size: pad_size + n] = image
  15.     return res
  16.  
  17. def blur_image(
  18.     image: np.ndarray,
  19.     kernel_size: int,
  20. ) -> np.ndarray:
  21.     if kernel_size < 1 or kernel_size % 2 == 0:
  22.         raise ValueError
  23.     pad_size = kernel_size // 2
  24.     padded_image = pad_image(image, pad_size)
  25.     N = image.shape[0]
  26.     M = image.shape[1]
  27.     res = np.zeros(shape = image.shape)
  28.     print("image")
  29.     print(image)
  30.     print("padded_image")
  31.     print(padded_image)
  32.     if image.ndim == 2:
  33.         for i in range(N):
  34.             for j in range(M):
  35.                 sliding_window = padded_image[i : i + kernel_size, j : j + kernel_size]
  36.                 res[i, j] = np.mean(sliding_window)
  37.     else:
  38.         K = image.shape[2]
  39.         print("N M K")
  40.         print(N, M, K)
  41.         for i in range(N):
  42.             for j in range(M):
  43.                 for k in range(K):
  44.                     print("i j k", i,  j, k)
  45.                     sliding_window = padded_image[i: i + kernel_size, j: j + kernel_size, k]
  46.                     print("padded_image[i]")
  47.                     print(padded_image[i])
  48.                     print("padded_image[i][j]")
  49.                     print(padded_image[i][j])
  50.                     print("padded_image[i][j][k]")
  51.                     print(padded_image[i][j][k])
  52.                     print("sliding_window")
  53.                     print(sliding_window)
  54.                     print()
  55.     return res
  56.  
  57.  
  58.  
  59. """
  60. matrix = np.array([
  61.    np.array([1,1,1,1,1,1,1]),
  62.    np.array([1,1,1,1,1,1,1]),
  63.    np.array([1,1,1,1,1,1,1])
  64. ])
  65.  
  66. res = pad_image(matrix, 2)
  67. print("res")
  68. print(res)
  69. """
  70.  
  71. MATRIX = np.full((2, 3, 7), 5)
  72. res = blur_image(MATRIX, 5)
  73.  
  74.  
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement