In [9]:
import numpy as np
In [1]:
from PIL import Image
In [2]:
im = Image.open('london.png','r')
col,row = im.size
In [3]:
col
Out[3]:
In [5]:
row
Out[5]:
In [7]:
im.mode
Out[7]:
In [10]:
data = np.zeros((row*col, 5))
In [11]:
data
Out[11]:
In [12]:
pixeles = im.load()
In [13]:
pixeles
Out[13]:
In [14]:
pixeles[699,466]
Out[14]:
In [16]:
for i in range(col):
for j in range(row):
r,g,b = pixeles[i,j]
data[j*col + i,:] = r,g,b,j,i
In [17]:
data
Out[17]:
In [20]:
type(im)
Out[20]:
In [21]:
U, s, V = np.linalg.svd(data, full_matrices=False)
In [22]:
U
Out[22]:
In [23]:
s
Out[23]:
Considerese el sistema de ecuaciones $Ax=b$, donde $A$ es una matrix de $m\times n$ y $b\in\mathbb{R}^n$. Sea $\tilde{A}$ pseudoinversa de $A$. Si $z=\tilde{A}b$, entonces $z$ tiene las siguientes propiedades:
1- Si $A$ es invertible, entonces $z$ es la unica solucion del sistema que tiene norma minima. Es decir, $z$ es una solucion al sistema y si $y$ es cualquier (otra) solucion del sistema, entonces $||z||\leq ||y||$.
2- Si $A$ no es invertible, entonces $z$ la unica mejor aproximacion a la solucion que tiene minima norma. Es decir, para cualquier $y\in\mathbb{R}^n$ se cumple que $||Az-b||\leq ||Ay-b||$. Ademas, si $Az=Ay$ entonces $||z||\leq||y||$.