Você está na página 1de 18

An alise em Componentes Principais

Processamento Estatstico de Sinais


1
o
Semestre de 2005/2006
1 Introduc ao
Muitos dos algoritmos cl assicos de processamento de sinal recorrem, de uma ou de outra forma,
a m etodos de descorrelac ao de dados. As vantagens de tais t ecnicas baseiam-se num princpio
relativamente simples: ao descorrelacionar os dados, estamos a eliminar parte da informac ao
redundante em cada dimens ao. Certos sinais, como e o caso de sinais fala ou de imagens, que
apresentam uma substancial correlac ao entre amostras ou pixeis consecutivos, s ao os can-
didatos ideais para os algoritmos de descorrelac ao. Os benefcios resultantes s ao v arios: os
dados podem ser descritos de uma forma mais concisa, certas caractersticas escondidas dos
dados podem vir ` a luz depois de transformadas, a distribuic ao dos dados pode ser represen-
tada (aproximadamente) pelas densidades individuais de cada dimens ao. Porventura, um dos
m etodos mais utilizados para a descorrelac ao de dados, e o m etodo denominado an alise em
componentes principais (ACP).
O objectivo da an alise em componentes principais e encontrar uma transformac ao mais re-
presentativa e geralmente mais compacta das observac oes. O m etodo de ACP transforma um
vector aleat orio x R
m
noutro vector y R
n
(para n m) projectando x nas n direcc oes
ortogonais de maior vari ancia - as componentes principais. Estas componentes s ao individu-
almente respons aveis pela vari ancia das observac oes, e neste sentido, representam-nas mais
claramente. Geralmente grande parte da vari ancia dos dados e explicada por um n umero redu-
zido de componentes, sendo possvel descartar as restantes sem grande perca de informac ao.
De facto, e possvel demonstrar que o m etodo de ACP e uma t ecnica optima de reduc ao li-

Por Goncalo Marques


2 Requisitos Te oricos 2
near de dimens ao, relativa ao erro quadr atico m edio. Tal reduc ao e vantajosa para compress ao,
visualizac ao dos dados, reduc ao do c alculo necess ario em fases de processamento posteriores,
etc. . .
As estimac ao das componentes principais e relativamente simples. Basta utilizar a informac ao
contida na matriz de covari ancia dos dados. No entanto, antes de descrever o m etodo de an alise
em componentes principais, primeiro e necess ario rever alguns conceitos utilizados em ACP.
2 Requisitos Te oricos
Os conceitos abordados nesta secc ao lidam com matrizes de covari ancia de vectores aleat orios
e com a decomposic ao em valores e vectores pr oprios destas matrizes. De seguida e denida a
notac ao utilizada.
Notac ao
Vari aveis e escalares s ao representados com letras min usculas (ex. x, , . . . )
Vectores s ao representados com letras min usculas a carregado (ex. x, , . . . )
Matrizes s ao representadas com letras mai usculas a carregado (ex. A, , , . . . )
Smbolos utilizados para representar certas vari aveis, vectores, ou matrizes:

x
m edia da vari avel aleat oria x

2
x
vari ancia da vari avel aleat oria x

x
m edia do vector aleat orio x

x
matriz de covari ancia do vector x
I matriz de identidade
R conjunto real
valor pr oprio
vector pr oprio
Notac ao de func oes utilizadas:
E{} operador valor esperado
|A| determinante da matriz (quadrada) A
x norma do vector x
2
2.1 Transformac oes Lineares e Matrizes de Covari ancia 3
2.1 Transformac oes Lineares e Matrizes de Covari ancia
Considere um vector aleat orio x R
m
, com uma m edia
x
, e com uma matriz de covari ancia

x
. Considere ainda a seguinte transformac ao:
y =
_

_
y
1
.
.
.
y
n
_

_
=
_

_
a
1,1
a
1,m
.
.
.
.
.
.
.
.
.
a
1,n
a
n,m
_

_
_

_
x
1
.
.
.
x
m
_

_
+
_

_
b
1
.
.
.
b
n
_

_
= Ax +b (1)
onde A R
nm
e {b, y} R
n
. O vector de m edia
y
, e a matriz de covari ancia
y
de y s ao
facilmente calcul aveis:

y
= E{y} = E{Ax +b} = A
x
+b

y
= E
_
_
y
y
__
y
y
_

_
= E
_
(Ax+bA
x
b) (Ax+bA
x
b)

_
= AE
_
(x
x
) (x
x
)

_
A

y
= A
x
A

(2)
Como era de espera, o vector b da equac ao (1), n ao afecta o valor da matriz de covari ancia,
y
:
b s o afecta a m edia de y. De notar ainda que as matrizes de covari ancia t em que satisfazer as
seguintes propriedades:
Matrizes de covari ancia s ao matrizes quadradas e sim etricas.
Para um vector aleat orio x = [x
1
, . . . , x
d
]

, com m edia
x
a matriz de covari ancia
x
, e
dada por:

x
= E
_
(x
x
) (x
x
)

_
= E
_
xx

x
=
_

_
E{x
2
1
}
2
x
1
. . . E{x
1
x
d
}
x
1

x
d
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
E{x
1
x
d
}
x
1

x
d
. . . E{x
2
d
}
2
x
d
_

_
=
_

2
x
1
. . .
x
1

x
d

x
1
x
d
. . . . . . . . . . . . . . . . . . . . . . . .

x
d

x
1

x
1
x
d
. . .
2
x
d
_

_
(3)
onde
x
i
e
2
x
i
s ao respectivamente a m edia e a vari ancia de x
i
, e onde
x
i
x
j
e o coeciente
de correlac ao entre x
i
e x
j
.
O coeciente de correlac ao
x
i
x
j
e uma medida de depend encia entre as vari aveis x
i
e x
j
,
3
2.2 Valores e Vectores Pr oprios 4
e e dado por:

x
i
x
j
=
E{x
i
x
j
}
x
i

x
j

x
i

x
j
e satisfaz as seguintes propriedades:
1
x
i
x
j
+1
Para
x
i
x
j
= 1, x
i
e x
j
s ao totalmente correlacionadas (ex. x
j
= ax
i
+ b)
Para
x
i
x
j
= 0, x
i
e x
j
s ao descorrelacionadas
Se x
i
e x
j
s ao independentes, ent ao
x
i
x
j
= 0. Conv em no entanto notar que
descorrelac ao n ao implica independ encia: se
x
i
x
j
= 0 n ao quer dizer que as
vari aveis x
i
e x
j
sejam independentes.
A matriz de covari ancia
x
, dum vector aleat orio real x, e uma matriz semi-denida
positiva: x

x
x 0 (i.e os valores pr oprios de
x
s ao superiores ou iguais a zero)
2.2 Valores e Vectores Pr oprios
Uma matriz quadrada Ade nn e um operador linear T de R
n
R
n
. Um vector R
n
n ao
nulo e um vector pr oprio de Ase existir um escalar tal que A = (o vector transformado
A e paralelo ao vector original ). Sendo e respectivamente um vector pr oprio e um valor
pr oprio de A, obtemos:
A = (4a)
(AI) = 0 (4b)

AI

= 0 (4c)
A equac ao (4c) e denominada a equac ao caracterstica do operador T ou da matriz A. As
razes desta equac ao s ao os valores pr oprios de A. Para calcular um vector pr oprio associado
ao valor pr oprio , basta resolver a equac ao (4b).
Exemplo: Considere a transformac ao linear T de R
3
R
3
representada pela matriz A.
T(x, y, z) = (3x y + z, x + 5y z, x y + 3z)
A =
_

_
3 1 1
1 5 1
1 1 3
_

_
4
2.2 Valores e Vectores Pr oprios 5
A equac ao caracterstica da matriz anterior e:
|AI| =

3 1 1
1 5 1
1 1 3

= 0
|AI| = (3 )

5 1
1 3

(1)

1 1
1 3

+ (+1)

1 5
1 1

= 0

3
11
2
+ 36 36 = 0
( 2)( 3)( 6) = 0
Os valores pr oprios de A s ao
1
= 2,
2
= 3,
3
= 6. Substituindo
i
(i = 1, 2, 3) na equac ao
(4b) permite calcular os vectores pr oprios correspondentes:
Para
1
= 2 temos
_

_
1 1 1
1 3 1
1 1 1
_

_
_

_
x
y
z
_

_
=
_

_
0
0
0
_

_
o que admite uma innidade de soluc oes do tipo: x = z, y = 0 (ex.
1
= [1, 0, 1]

).
Para
2
= 3 temos
_

_
0 1 1
1 2 1
1 1 0
_

_
_

_
x
y
z
_

_
=
_

_
0
0
0
_

_
soluc ao: x = y = z (ex.
2
= [1, 1, 1]

).
Para
3
= 6 temos
_

_
3 1 1
1 1 1
1 1 3
_

_
_

_
x
y
z
_

_
=
_

_
0
0
0
_

_
soluc ao: y = 2x, x = z (ex.
3
= [1, 2, 1]

).
Sendo Auma matriz nn comvalores pr oprios distintos (
i
=
j
, i = j, para i, j = 1, . . . , n),
existe um unico vector pr oprio
i
associado a cada valor pr oprio
i
1
. No entanto, os vectores
pr oprios s ao indeterminados respectivamente a um factor de escala. Relativamente ao exemplo
1
No caso de haver um valor pr oprio com uma multiplicidade k > 1, poder a haver n umero entre 1 e k vectores
pr oprios associados ao valor pr oprio.
5
2.2 Valores e Vectores Pr oprios 6
anterior, qualquer vector
i

i
, i = 1, 2, 3 , para
i
= 0, tamb em e vector pr oprio da matriz
A. No sentido e eliminarmos esta indeterminac ao, iremos convencionar que doravante os vec-
tores pr oprios t em norma unit aria
2
. Seguindo esta convenc ao, os vectores pr oprios do exemplo
anterior passam a ser
i
/
i
:

1
=
1

2
_

_
1
0
1
_

_
,
2
=
1

3
_

_
1
1
1
_

_
,
3
=
1

6
_

_
1
2
1
_

_
De notar que em ambiente MATLAB, os vectores pr oprios retornados pela func ao eig tamb em
t em norma unit aria:
>> A=[3 -1 1;-1 5 -1;1 -1 3]
A =
3 -1 1
-1 5 -1
1 -1 3
>> [V,U]=eig(A)
V =
0.7071 -0.5774 0.4082
-0.0000 -0.5774 -0.8165
-0.7071 -0.5774 0.4082
U =
2.0000 0 0
0 3.0000 0
0 0 6.0000
Os valores pr oprios de A s ao os elementos da diagonal da matriz U, e as colunas da matriz
V, s ao os vectores pr oprios correspondentes. Normalmente a func ao eig devolve os valores
pr oprios ordenados por ordem ascendente, no entanto, conv em vericar a ordenac ao visto esta
nem sempre e implementada.
2
De notar que a norma unit aria dos vectores pr oprios e apenas uma convenc ao adoptada neste documento.
6
2.3 Descorrelac ao de Dados 7
2.3 Descorrelac ao de Dados
Seja
x
a matriz de covari ancia do vector aleat orio, real, x. Se
x
for uma matriz n ao-singular
3
,
ent ao
x
pode ser decomposto no seguinte produto matricial:

x
=
x

x
para

x
=
_

11

1n
.
.
.
.
.
.
.
.
.

n1

nn
_

_
=
_

1
, ,
n


x
=
_

1
0 0
0
2
0
.
.
.
.
.
. 0
.
.
. 0
0 0
n
_

_
(5)
em que
1
, . . . ,
n
s ao os valores pr oprios (positivos) de
x
e
1
, . . . ,
n
os vectores pr oprios
correspondentes. Para matrizes sim etricas (como e o caso de
x
) os vectores pr oprios s ao
ortogonais:

i

j
= 0 para i = j. De notar que cada coluna de
x
e um vector pr oprio, e por
isso
x
e uma matriz ortogonal:
x

x
=

x
= I.
Este resultado possibilita-nos facilmente de descorrelacionar o vector x atrav es de uma
transformac ao linear. Para a seguinte transformac ao (com A =

x
)
y = Ax =

x
x (6)
obtemos (ver equac ao (2)):

y
= A
x
A

x
=

x

x

x
. .
x

x
=
x
(7)
Sendo a matriz
y
uma matriz diagonal, implica que os elementos do vector y s ao descorre-
lacionados entre si. Adicionalmente, cada valor pr oprio da matriz
x
corresponde ao valor da
vari ancia
2
y
i
, de cada dimens ao de y.

E habitual ordenar matriz
x
de forma a que os valores
pr oprios estejam em ordem descendente (i.e.
1

2
. . .
n
). Sendo
x
a matriz de vectores
pr oprios correspondente as valores pr oprios ordenados, a transformac ao da equac ao (6) d a-nos
um vector y cujas primeiras dimens oes variam mais do que as ultimas.
3
Matrizes n ao-singulares s ao matrizes invertveis (se A for n ao-singular, ent ao o determinante |A| = 0). De
notar que matrizes de covari ancia n ao-singulares tamb ems ao denidas positivas (A R
nn
e uma matriz denida
positiva se x

Ax > 0 para qualquer vector x R


n
, real e n ao nulo).
7
3 An alise em Componentes Principais 8
3 An alise em Componentes Principais
A transformac ao da equac ao (6) projecta x em direcc oes ortogonais de modo que o vector
transformado y tenha uma matriz de covari ancia diagonal. Cada dimens ao y
i
do vector y tem
uma vari ancia
2
y
i
igual ao valor pr oprio
i
. Esta transformac ao e geralmente conhecida como
an alise em componentes principais ou para o caso particular de imagem tamb em e denomi-
nada transformac ao de Karhunen e Lo` eve
4
. As componentes principais s ao simplesmente os
vectores pr oprios da matriz de covari ancia de x. A primeira componente principal e o vector
pr oprio associado ao valor pr oprio mais elevado, a segunda componente principal e o vector
pr oprio correspondente ao segundo valor pr oprio mais elevado, e assim por diante. Quando
lidamos com dados muito correlacionados, como e o caso de pixeis vizinhos numa imagem,
existe geralmente uma grande diferenca entre o maior e o menor valor pr oprio de
x
. Podemos
depreender que para y =

x
x, tamb em existe a mesma diferenca de valor nas vari ancias das
componentes y. Isto indica-nos que certas componentes de y variam muito pouco relativamente
a outras, e, nestes casos, podemos descartar as dimens oes de menor vari ancia sem afectar subs-
tancialmente a qualidade do dados. Os pr oximos exemplos ilustram este facto.
3.1 Exemplo: Compress ao de Dados Sint eticos
Pretende-se ilustrar o processo de descorrelac ao, compress ao e reconstruc ao de dados sint eticos
bidimensionais. Ao longo do exemplo ser ao tamb em dadas as instruc oes em c odigo MATLAB
de maneira a todos os passos aqui efectuados possam ser reproduzidos.
3.1.1 Gerac ao de Dados
Considere que os dados com os quais pretendemos fazer a an alise em componentes principais
est ao representados na seguinte gura:
4
Outra denominac ao menos utilizada e a transformac ao de Hotelling
8
3.1 Exemplo: Compress ao de Dados Sint eticos 9
1 0 1 2 3 4 5 6 7
1
0
1
2
3
4
5
6
7
x
1
x
2
Dados originais.
Estes dados consistemem 100 pontos bidimensionais, gerados sinteticamente em MATLAB com
as seguintes instruc oes:
>> randn(seed,0),rand(seed,0)
>> x=[1 -1;1 1]
*
[rand(1,100)
*
6;randn(1,100)
*
sqrt(0.01)];
3.1.2 C alculo da Matriz de Covari ancia
O comando cov(x) de MATLAB retorna a matriz de covari ancia do conjunto x:
>> Cx=cov(x)
Cx =
3.1013 3.0554
3.0554 3.0459
De notar que se pode calcular esta matriz analiticamente. O conjunto pontos x foi obtido
com uma transformac ao do tipo x = As, com a matriz A =
_
1 1
1 1

. O vector s = [s
1
, s
2
]

foi
gerado com o comando:
[rand(1,100)
*
6;randn(1,100)
*
sqrt(0.01)]
Isto signica que a primeira dimens ao s
1
, e uma vari avel aleat oria uniformemente distribuda
entre [0, 6] e a segunda dimens ao s
2
e uma vari avel aleat oria gaussiana de m edia nula e vari ancia

2
s
2
= 0.01. Adicionalmente s
1
e s
2
s ao independentes, e por isso a matriz de covari ancia
s
de
s e uma matriz diagonal:

s
=
_
_

2
s
1
0
0
2
s
2
_
_
=
_
_
3 0
0 0.01
_
_
9
3.1 Exemplo: Compress ao de Dados Sint eticos 10
onde o valor de
2
s
1
foi obtido segundo

2
s
1
=
_
6
0
(s
1

s
1
)
2
1
6
ds
1
=
1
6
_
6
0
(s
1
3)
2
ds
1
= 3
Assim, a matriz de covari ancia de x e (ver equac ao (2))

x
= A
s
A

=
_
_
3.01 2.99
2.99 3.01
_
_
Esta matriz difere da matriz obtida experimentalmente, como comando Cx=cov(x). Conv em
realcar que Cx e apenas uma estimativa calculada com um conjunto de 100 pontos. No limite,
para um n umero innito de pontos, os valores de Cx seriam iguais aos da matriz
x
.
3.1.3 C alculo dos Valores e Vectores Pr oprios da Matriz de Covari ancia
Os valores e vectores pr oprios s ao obtidos com o seguinte comando:
>> [V,U]=eig(Cx)
V =
0.7039 -0.7103
-0.7103 -0.7039
U =
0.0181 0
0 6.1292
Os valores pr oprios da matriz de covari ancia dos dados s ao os elementos da diagonal da ma-
triz U e os vectores pr oprios correspondentes s ao as colunas da matriz V. Os vectores pr oprios
indicam as direcc oes em que os dados variam mais. De notar que o segundo valor pr oprio e
consideravelmente superior ao primeiro. Isto signica que os dados est ao distribudos princi-
palmente ao longo da direcc ao do segundo vector pr oprio
_

2
= [0.7103, 0.7039]

_
: basta
sobrepor os vectores pr oprios e os dados originais para constatar este facto.
10
3.1 Exemplo: Compress ao de Dados Sint eticos 11
1 0 1 2 3 4 5 6 7
1
0
1
2
3
4
5
6
7
x
1
x
2
Dados originais e os vectores pr oprios (centrados na m edia dos
dados). A cheio est ao representados os vectores pr oprios (de
norma unit aria). As rectas a tracejado seguem as direcc oes dos
vectores pr oprios e foram includas para facilitar a visualizac ao
destas direcc oes).
O vector
2
e a componente principal dos dados, e o vector
1
(a 1
a
coluna da matriz V) e
a segunda componente principal. Ao projectar os dados nestas direcc oes estamos a fazer uma
an alise em componentes principais.
3.1.4 Projecc ao dos Dados nas Componentes Principais
Antes de projectar os dados x nas componentes principais vamos ordenar a matriz de vectores
pr oprios por ordem descendente de grandeza: neste caso basta trocar a primeira com a segunda
coluna da matriz V.
>> Vo=V(:,2:-1:1);
Ao transformarmos os dados x pelo transposto da matriz Vo, iremos obter um conjunto descor-
relacionado, com vari ancias iguais aos valores pr oprios da matriz Cx:
>> y=Vo
*
x;
>> cov(y)
ans =
6.1292 0.0000
0.0000 0.0181
11
3.1 Exemplo: Compress ao de Dados Sint eticos 12
9 8 7 6 5 4 3 2 1 0
5
4
3
2
1
0
1
2
3
4
5
y
1
y
2
Dados projectados nas componentes principais
O vector y n ao e mais do que uma transformac ao linear e bijectiva do vector x: isto e, o conjunto
de pontos representados na gura anterior cont em a mesma informac ao que o conjunto original.
Para recuperar os dados originais basta fazer a transformac ao inversa (multiplicar o vector y
pela matriz de vectores pr oprios
x
).

E f acil de ver que com esta transformac ao iremos obter
exactamente os mesmos dados que tnhamos ` a partida:
y =

x
x
ao transformar y pela matriz
x
obtemos:
z =
x
y =
x

x
. .
I
x = x
3.1.5 Compress ao de Dados
Os dois conjuntos x e y cont em a mesma informac ao mas existe uma diferenca fundamental
entre os dois: no conjunto x as vari ancias da primeira e da segunda coordenada s ao aproximada-
mente iguais. No conjunto y, os dados variam essencialmente ao longo da primeira dimens ao.
Podemos ent ao descartar os valores da segunda coordenada sem perder muita informac ao. No
MATLAB basta multiplicar x pela componente principal (transposta):
>> yc=Vo(:,1)
*
x;
>> size(yc)
ans =
1 100
Os dados do conjunto yc s ao unidimensionais (a segunda dimens ao do conjunto y foi
12
3.2 Exemplo: Compress ao de Imagem 13
deitada fora). Em termos de armazenamento, o conjunto yc precisa de metade da memoria do
conjunto y (ou do conjunto x).
Se utilizarmos o conjunto yc para recuperar os dados, ir a haver uma perda de informac ao.
No entanto iremos ganhar em termos de compress ao visto que necessitamos aproximadamente
de metade da mem oria do que seria necess ario para armazenar o conjunto original. Os dados
recuperados s o com um vector pr oprio s ao:
>> xc=Vo(:,1)
*
yc;
>> size(xc)
ans =
2 100
1 0 1 2 3 4 5 6 7
1
0
1
2
3
4
5
6
7
xc
1
x
c
2
Dados recuperados com uma componente principal
Comparando a gura anterior com os dados originais podemos ver que de facto houve perdas de
informac ao: a variac ao longo da componente principal foi preservada, mas a variac ao ao longo
da segunda componente e inexistente.
3.2 Exemplo: Compress ao de Imagem
Em v arios algoritmos cl assicos de compress ao de imagem e aplicado o mesmo principio do
exemplo 3.1. N ao e o objectivo desta cadeira estudar estes algoritmos, pretende-se apenas ana-
lisar quais as possibilidade e os resultados da descorrelac ao de dados (mais especicamente de
sinais de imagem). Para tal e necess ario representar a imagemde maneira a poder descorrelacio-
nar os dados e descartar as dimens oes menos relevantes. Uma das representac oes habitualmente
utilizadas consiste em dividir a imagem em blocos de mm pixeis, e considerar cada um desse
13
3.2 Exemplo: Compress ao de Imagem 14
blocos como uma amostra do vector aleat orio x (se m = 2 ent ao x R
4
,se m = 3 ent ao
x R
9
,etc. . . ). Por exemplo, considere que uma imagem a nveis de cinzento de 256 256
pixeis, foi dividida em blocos de 8 8 pixeis. Podemos ent ao representar esta imagem por
um conjunto de 1024 vectores num espaco em R
64
. Depois, e necess ario calcular a matriz de
covari ancia do conjunto e fazer uma decomposic ao em valores e vectores pr oprios desta matriz.
Para comprimir a imagem, temos que escolher um subconjunto de vectores pr oprios (associa-
dos aos maiores valores pr oprios), transformar os dados pela matriz compostas pelos vectores
pr oprios escolhidos, e guardar os dados transformados e a matriz de transformac ao. Para recu-
perar a imagemoriginal basta fazer a transformac ao inversa. Todos estes passos s ao, de seguida,
ilustrados com uma imagem do MATLAB.
Considere a seguinte imagem a nveis de cinzento de 256 256 pixeis:
Imagem original.
Esta imagem foi obtida com o comando:
>> [I]=im2double(imread(cameraman.tif));
Vamos agora dividir a imagem em blocos de 8 8 com ajuda da func ao blkimag (esta
func ao e dada em ap endice):
>> [x]=blkimag(I,8);
>> size(x)
ans =
64 1024
O conjunto x representa a imagem original dividida em blocos. Cada coluna de x e um
bloco de 8 8. O seguinte comando calcula a matriz de covari ancia dos dados e faz uma
decomposic ao em valores e vectores pr oprios dessa matriz:
>> [V,U]=eig(cov(x));
14
3.2 Exemplo: Compress ao de Imagem 15
Os seguintes comandos ordenam as matrizes de valores e vectores pr oprios em ordem de-
crescente:
>> Ud=diag(U);
>> [tmp,ind]=sort(Ud);
>> ind=ind(64:-1:1);
>> Vo=V(:,ind);
>> Uo=diag(Ud(ind));
0 10 20 30 40 50 60
0
0.5
1
1.5
2
2.5
3
3.5
i

i
0 10 20 30 40 50 60
9
8
7
6
5
4
3
2
1
0
1
2
i
l
o
g
(

i
)
Gr aco do valores pr oprios da matriz de
covari ancia dos dados.
Figura da esquerda em escala logartmica
para melhor visualizar a diferenca entre va-
lores.
As guras anteriores mostram que os primeiros valores pr oprios s ao substancialmente mais
elevados do que os restantes. As primeiras componentes principais s ao as direcc oes em que os
dados t em a maior vari ancia. As restantes componentes podem ser descartadas sem se perder
muita informac ao visto que nestas direcc oes os dados variam muito pouco. Assim, n ao e ne-
cess ario guardar toda a informac ao contida na imagem (no conjunto x: podemos projectar x
nas primeiras componentes principais, e guardar o conjunto transformado. Por exemplo, se s o
tivermos em conta as primeiras 8 componentes, ao transformarmos os dados passamos a ter um
conjunto de 1024 pontos a 8 dimens oes (em vez das 64 dimens oes). Obtemos aproximadamente
um factor de compress ao de 8. No entanto existem perdas neste tipo de compress ao. Para visu-
alizarmos a degradac ao ocorrida, temos que reconstruir a imagem com os dados transformados.
Estes passos s ao:
y=Vo(:,1:8)
*
x;
xc=Vo(:,1:8)
*
y;
Ic=unblkimag(xc,8,256,256);
15
3.2 Exemplo: Compress ao de Imagem 16
onde a func ao unblkimag e dada no ap endice. A imagem reconstruda conjuntamente com
o erro de reconstruc ao s ao dados nas seguintes guras. Na gura da direita, o valor do erro foi
representado por nveis de intensidade: pixeis a preto correspondem a valores nulos do erro e
pixeis a branco correspondem a valores elevados do erro.
Imagem reconstruda. Erro de reconstruc ao .
Na imagem reconstruda podemos ver o efeito de termos descartado 56 das 64 dimens oes
dos dados. De notar que cada bloco de 8 8 da imagem reconstruda e obtido com uma soma
ponderada de 8 vectores (as primeiras 8 componentes principais). Este processo descrito pela
seguinte operac ao
x
c
=
c
y =
1
y
1
+
2
y
2
+ +
8
y
8
onde x
c
R
64
e o vector que correspondente aos blocos de 88 da imagem reconstruda, onde

c
R
648
e uma matriz composta pelas 8 componentes principais (os 8 vectores pr oprios

i
associados aos 8 valores pr oprios mais elevados), e onde y = [y
1
, . . . , y
8
]

s ao os dados
transformados.
Cada componente principal e um vector em R
64
, e para visualizar cada componente pode-
mos representa-la por um bloco de 88 pixeis. Como no total existem 64 componentes, iremos
obter uma imagem com 64 blocos de 8 8.
16
3.2 Exemplo: Compress ao de Imagem 17
Componentes principais da imagem cameraman.tif.
Cada componente e um bloco de 8 8 pixeis, e as compo-
nentes est ao ordenadas em ordem decrescente de grandeza:
a primeira linha corresponde ` as 8 primeiras componentes, a
segunda linha ` as 8 seguintes, etc. . .
Na imagem reconstruda, cada bloco foi obtido com uma soma ponderada dos 8 primeiros
blocos da imagem anterior (a primeira linha desta imagem).
Para efeitos de comparac ao, est ao de seguida representadas as imagens reconstrudas com4,
8, 16 e 32 componentes principais. Quando preservamos unicamente 4 componentes, e visvel
a estrutura em blocos da imagem; quando o n umero de componentes aumenta este efeito desa-
parece.
4 componentes 8 componentes
16 componentes 32 componentes
17
3.2 Exemplo: Compress ao de Imagem 18
Ap endice
function [x,sc]=blkimag(s,n)
%function [x,imag_cut]=blkimag(imag,n)
% imag: matriz de RxC com a imagem
% n: imag dividida em blocos de nxn
% x: matriz de (n2 x numero_de_blocos_na_imagem)
% imag_cut: matriz de (r x c) r=n
*
round(R/n) e c=n
*
round(C/n);
[R,C]=size(s);
r=floor(R/n);
c=floor(C/n);
sc=s(1:n
*
r,1:n
*
c);
N=r
*
c;
x=zeros(n
*
n,N);
for i=1:r
x(:,1+(i-1)
*
c:i
*
c)=reshape(sc(1+(i-1)
*
n:i
*
n,:),n
*
n,c);
end
function [s,y]=unblkimag(x,n,r,c)
%function [imag]=unblkimag(x,n,R,C)
% x: blocos da imagem (n2 x numero de blocos na imagem)
% imag: matriz de RxC com a imagem reconstruida
% n: imagem original dividida em blocos de nxn => x
if(sum(size(x)==[n
*
n,r
*
c/n2])=2)
error(dimensoes erradas!)
exit(1)
end
r=r/n;
c=c/n;
for i=1:r
s(1+(i-1)
*
n:i
*
n,:)=reshape(x(:,1+(i-1)
*
c:i
*
c),n,c
*
n);
end
y=s;
%quantificar imagem em 256 niveis de cinzento
s=s-min(min(s));
s=uint8(255
*
s/max(max(s)));
18

Você também pode gostar