forked from ivanov-an-spbu/2019_IT
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtask2.py
40 lines (29 loc) · 904 Bytes
/
task2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import matplotlib.pyplot as plt
import numpy as np
def add_noise(img, rate=5):
img[::rate, ::rate, :] = 1
return
def get_kernel(windos_size):
kernel = np.ones((windos_size, windos_size))
kernel/=kernel.sum()
return kernel
def filter(img, window_size=3):
img2 = np.zeros_like(img)
kernel = get_kernel(window_size)
p = window_size//2
for k in range(img.shape[2]): # foreach color channel
for i in range(p, img.shape[0]-p): # foreach row
for j in range(p, img.shape[1]-p): # foreach column
window = img[i-p:i+p+1, j-p:j+p+1, k]
img2[i,j,k] = (kernel*window).sum()
return img2
def main():
img = plt.imread("img.png")[:, :, :3]
add_noise(img)
img2 = filter(img)
fig, axs = plt.subplots(1,2)
axs[0].imshow(img)
axs[1].imshow(img2)
plt.show()
if __name__ == "__main__":
main()