blob: a2d6981d9b855bad59a7bf89d4baf4b5d4e6f05e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
from scipy import misc
import matplotlib.pyplot as plt
import numpy as np
from numpy import linalg
img = misc.face()
img_array = img / 255
img_gray = img_array @ [0.2126, 0.7152, 0.0722]
U, s, Vt = linalg.svd(img_gray)
Sigma = np.zeros((768, 1024))
for i in range(768):
Sigma[i, i] = s[i]
k = 10
approx = U @ Sigma[:, :k] @ Vt[:k, :]
plt.imshow(approx, cmap="gray")
|