#keep
import numpy as np
import matplotlib.pyplot as pt
%matplotlib inline
#keep
from PIL import Image
with Image.open("siebel.jpg") as img:
rgb_img = np.array(img)
rgb_img.shape
#keep
img = np.sum(rgb_img, axis=-1)
#keep
pt.imshow(img, cmap="gray")
#keep
u, sigma, vt = np.linalg.svd(img)
sigma
pt.plot(sigma)
#keep
i=0
compressed_img = sigma[0] * np.outer(u[:, 0], vt[0])
pt.imshow(compressed_img, cmap="gray")
#keep
i += 1
compressed_img += sigma[i] * np.outer(u[:, i], vt[i])
pt.imshow(compressed_img, cmap="gray")