In [1]:
import numpy as np
from PIL import Image, ImageFilter


im = Image.open('racoon.png')

imarray = np.array(im)
print imarray.shape, im.size   #these agree


(768, 1024, 3) (1024, 768)

In [2]:
imarray[:,:,0].shape


Out[2]:
(768, 1024)

In [58]:
import matplotlib
%matplotlib inline
import matplotlib.pyplot as plt

plt.imshow(imarray[:,:,0])
plt.show()



In [96]:
U0, s0, V0 = np.linalg.svd(imarray[:,:,0])
U1, s1, V1 = np.linalg.svd(imarray[:,:,1])
U2, s2, V2 = np.linalg.svd(imarray[:,:,2])

In [97]:
for i in range(100, len(s0)):
    s0[i] = 0

In [98]:
zero = np.zeros (imarray[:,:,0].shape)
zero.shape


Out[98]:
(768, 1024)

In [99]:
for i in range(imarray.shape[0]):
    for j in range(imarray.shape[1]):
        if i == j:
            zero[i,j] = s0[i]
S0 = zero

In [100]:
recon = np.dot(np.dot(U0,S0), V0)

In [101]:
plt.imshow(recon)
plt.show()



In [ ]: