In [1]:
import matplotlib.pyplot as plt
import numpy as np
from scipy.misc import imread
In [2]:
plt.style.use('ggplot')
%matplotlib inline
plt.rcParams['figure.figsize'] = (20,10) # set default size of plots
In [3]:
image = imread("Путь до вашей картинки", mode='RGB')
In [4]:
plt.imshow(image)
Out[4]:
Реализуйте функцию применяющую ядро kernel к изображению input_image. Для простоты, не будем делать padding, зафиксируем stride равным единице, а ядро свёртки будем считать квадратной матрицей (не трёхмерным тензором!) и приминять к каждому каналу независимо.
In [5]:
def conv2d(input_image, kernel):
h, w, d = input_image.shape
k_h, k_w = kernel.shape
# Впишите свой код на месте заглушки
result = input_image
return result
Опишите ядро свёртки, выполняющее тождественное преобразование
In [ ]:
identity_kernel = np.zeros((3,3))
In [ ]:
same_image = conv2d(image, identity_kernel)
In [ ]:
plt.imshow(same_image.astype(np.uint8))
Опишите ядро свёртки, выполняющее размытие
In [7]:
blur_kernel = np.zeros((3,3))
In [ ]:
blurry_image = conv2d(image, blur_kernel)
In [ ]:
plt.imshow(blurry_image.astype(np.uint8))
А теперь подсветите границы объектов на изображении
In [5]:
edge_kernel = np.zeros((3,3))
In [ ]:
edge_image = conv2d(image, edge_kernel)
In [ ]:
plt.imshow(edge_image.astype(np.uint8))
Кажется, что-то пошло не так... Возможно, необходимо сделать что-то ещё?