Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

32
Ministério da Educação Universidade Tecnológica Federal do Paraná Pró-Reitoria de Pesquisa e Pós-Graduação Relatório Final de Atividades Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares vinculado ao projeto Métodos para Resolução de Equações Diferenciais Estocásticas Agnaldo Cesar Coelho Bolsista FUNDAÇÃO ARAUCÁRIA (Ações Afirmativas) Engenharia De Computação Data de ingresso no programa: 02/2012 Orientador: Prof. Fabio Antonio Dorini Área do Conhecimento: 1.01.04.00-3 (Matemática Aplicada) CAMPUS CURITIBA, 2012

description

Imagens de intensidade, como em tons de cinza, são normalmente representadas por uma matriz, onde cada elemento desta corresponde a um píxel na imagem. Este trabalho aborda a redução no espaço de armazenamento de imagens, utilizando para isto a Decomposição em Valores Singulares (SVD - Singular Value Decomposition) de uma matriz.

Transcript of Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

Page 1: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

Ministério da EducaçãoUniversidade Tecnológica Federal do ParanáPró-Reitoria de Pesquisa e Pós-Graduação

Relatório Final de Atividades

Otimização no Armazenamento de Imagens por meio daDecomposição em Valores Singulares

vinculado ao projetoMétodos para Resolução de Equações Diferenciais Estocásticas

Agnaldo Cesar CoelhoBolsista FUNDAÇÃO ARAUCÁRIA (Ações Afirmativas)

Engenharia De ComputaçãoData de ingresso no programa: 02/2012Orientador: Prof. Fabio Antonio Dorini

Área do Conhecimento: 1.01.04.00-3 (Matemática Aplicada)

CAMPUS CURITIBA, 2012

Page 2: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

AGNALDO CESAR COELHOOrientador: FABIO ANTONIO DORINI

OTIMIZAÇÃO NO ARMAZENAMENTO DE IMAGENS POR MEIO DADECOMPOSIÇÃO EM VALORES SINGULARES

Relatório de Pesquisa do Programa deIniciação Científica da UniversidadeTecnológica Federal do Paraná.

CURITIBA, 2012

Page 3: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

SUMÁRIO

INTRODUÇÃO 1

REVISÃO DA LITERATURA 1

MATERIAIS E MÉTODOS 11

RESULTADOS E DISCUSSÕES 15

CONCLUSÕES 26

REFERÊNCIAS 26

APÊNDICE A - CÓDIGOS FONTE 28

Page 4: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

INTRODUÇÃO

Imagens de intensidade, como em tons de cinza, são normalmente representadas por umamatriz, onde cada elemento desta corresponde a um píxel na imagem [1]. Este trabalho abordaa redução no espaço de armazenamento de imagens, utilizando para isto a Decomposição emValores Singulares (SVD - Singular Value Decomposition) de uma matriz.

Aplicando a SVD a uma matriz com m linhas e n colunas, que é simplesmente a fatoraçãodesta em um produto UΣV T , é possível diminuir o espaço de armazenamento de mn para ummúltiplo pequeno de m+ n+ 1 [2]. Isto porque, elementos de uma dada linha da matriz temvalores muito semelhantes aos elementos correspondentes das linhas vizinhas (essa observaçãotambém vale para as colunas), pois, nas imagens, frequentemente a cor associada a um dadopíxel está próxima a cor dos píxeis vizinhos.

Em imagens representadas por matrizes tridimensionais (m× n× 3), como por exemploas RGB, observam-se as mesmas situações. Nestes casos, a SVD é aplicada a cada uma destas.Este trabalho se apoia nestes fatos para alcançar os objetivos pretendidos.

Justificativa. Imagens digitais são indispensáveis em varias áreas como, por exemplo, medi-cina, biologia, astronomia, área militar e arqueologia [3]. São geralmente mantidas e transmi-tidas na forma de matrizes enormes, que requerem muito espaço no armazenamento. Devido aestas circunstâncias, torna-se viável pesquisar por métodos eficazes que otimizem esses proces-sos, acelerando a transmissão eletrônica de imagens e reduzindo seu espaço de armazenamento.Neste trabalho, decidiu-se investir em tais problemas empregando a SVD, porque ela pode seraplicada a quaisquer tipos de matrizes: quadradas, retangulares, singulares e não singulares,esparsas [2, 4]. Além do mais, foi fundamental para a escolha o fato da SVD ser utilizada emdiversas aplicações. Por exemplo, ela é a base de muitos dos melhores algoritmos computacio-nais para resolução de sistemas lineares [4]. Contudo, para compreender o método, foi essencialaprofundar conhecimentos de Álgebra Linear, imprescindíveis na formação de um Engenheiro.E este é o motivo principal da escolha da SVD nesta pesquisa, pois, durante a graduação, apenasquatro meses são dedicados a esse ramo tão importante da matemática.

Objetivos. (i) Demonstrar que é possível reduzir o espaço necessário para o armazenamento deimagens por meio da Decomposição em Valores Singulares; (ii) Analisar imagens reconstruídaspelo método da SVD, com a utilização de quantias distintas de dados. Assim, variando entreum conjunto mínimo e máximo de valores necessários para preservar características úteis dasimagens; (iii) Examinar a qualidade de imagens processadas com a SVD após a conversãodestas, se necessário, para os seguintes modelos: RGB, HSV, Cores Indexadas e de Intensidade.

REVISÃO DA LITERATURA

A Decomposição em Valores Singulares (SVD - Singular Value Decomposition) consisteem fatorar uma matriz qualquer em um produto UΣV T [2]. Ela foi demonstrada pela primeiravez por Beltrami e Jordan na década de 1870, para matrizes quadradas reais. Após, Autonnedemonstrou a decomposição SVD para matrizes quadradas complexas. Em 1936, Carl Eckart eGale Young demonstraram para matrizes retangulares gerais, as quais este trabalho irá se ocupar[5, 6].

Antes de continuar com a decomposição SVD, serão expostos alguns procedimentos, re-sultados e tipos de matrizes necessários para fatorar uma matriz em um produto UΣV T .

1

Page 5: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

Matrizes. Nesta seção, são apresentadas e definidas alguns tipos de matrizes, operações e pro-priedades.

Definição 1. A Matriz Identidade, n×n, é aquela em que I = δi j1, sendo que δi j = 0 para i 6= j

e δi j = 1 para i = j [2].

Por exemplo, a matriz identidade para n = 3 é: I =

1 0 00 1 00 0 1

.

Definição 2. Uma matriz A, n×n, é diagonal quando ai j = 0 para i 6= j [7].

Como exemplo, a matriz identidade e a matriz A =

6 0 00 0 00 0 −1

são diagonais.

Definição 3. A transposta de uma matriz A, m×n, é representada por AT , n×m, cujas colunassão as linhas de A. Assim, para AT = B tem-se ai j = b ji [7].

Como exemplo, considere a matriz A =

(1 4 0−2 4 3

), então sua transposta é

AT =

1 −24 40 3

.

Definição 4. Uma matriz A, n×n, é dita simétrica se A = AT [2].

Por exemplo, é fácil observar que a matriz A =

1 8 08 4 30 3 10

é simétrica.

Definição 5. Uma matriz A, n×n, é dita inversível ou não singular se existir uma matriz, deno-tada por A−1, tal que A−1A = AA−1 = I. Caso contrário a matriz A é singular [2].

Um outro tipo importante de matriz é a ortogonal, que será abordada na subseção Orto-gonalidade.

Produto Interno e Norma. Nesta seção são apresentadas algumas ideias e conceitos relaci-onados a distâncias, comprimentos e ângulos de matrizes e vetores, essenciais em diversasoperações. Por exemplo, medir a distância entre duas matrizes ou obter um vetor unitário (vetorde tamanho um).

Primeiramente será definido o produto interno entre dois vetores pertencentes ao espaçovetorial Rn, tratados aqui como duas matrizes n×1. Dessa forma, entende-se por Rn o conjuntoconstituído por todas as matrizes n×1.

Definição 6. O produto interno entre dois vetores x e y de Rn é denotado por 〈x,y〉 e é dadopelo produto matricial xT y, do qual resulta um número real [2].

Exemplo 1. Seja x = (−1,0,2)T e y = (4,−3,1)T . Então

〈x,y〉= xT y = (−1,0,2)

4−31

= (−1)×4+0× (−3)+2×1 =−2.

1δi j é o operador delta de Kronecker

2

Page 6: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

O produto interno entre duas matrizes m× n pode ser definido seguindo a mesma ideiaanterior, onde o elemento ai j da matriz A é multiplicado pelo seu correspondente bi j da matrizB [2].

Definição 7. O produto interno entre duas matrizes A e B, ambas m×n, é indicado por 〈A,B〉 eé dado por

〈A,B〉=m

∑i=1

n

∑j=1

ai jbi j. (1)

Exemplo 2. Se A =

(1 3−2 4

)e B =

(1 34 2

). Então

〈A,B〉= 1×1+(−2)×4+3×3+4×2 = 10·

Agora será apresentado o conceito de norma. Esta representa o comprimento ou tamanhode um vetor ou uma matriz. E, pode também ser utilizada para medir a distância entre vetoresou matrizes.

A norma de um vetor ou matriz será definida em termos dos produtos internos. No en-tanto, é importante deixar claro que ela não depende desses produtos, pois é possível definirdiversos tipos de normas, desde que sejam satisfeitas algumas condições. Estas condições nãoserão discutidas aqui [2].

Definição 8. A norma de um vetor x pertencente a Rn, denotada por ‖x‖, é definida como

‖x‖=√〈x,x〉=

√x2

1 + x22 + · · ·+ x2

n. (2)

Se ‖x‖= 1, então este vetor, chamado de vetor unitário, é dito estar normalizado [7].

Exemplo 3. A norma do vetor x do Exemplo 1 é

‖x‖=√〈x,x〉=

√(−1)2 +(0)2 +(2)2 = 5.

Observação 1. De acordo com a Definição 8, a norma de um vetor sempre é maior ou iguala zero. E ainda, para que ela seja igual a zero, o vetor precisa ser nulo, ou seja, todas as suascomponentes devem ser iguais a zero. Isto está de acordo com a definição de comprimento oudistância.

Para obter um vetor unitário u a partir de um vetor não nulo x, basta fazer u =1‖x‖

x.

Exemplo 4. O vetor unitário obtido a partir do vetor x do Exemplo 1, com a norma calculadano Exemplo 3, é

u =1‖x‖

x =15(−1,0,2)T =

(−15,0,

25

)T

Assim como a norma para vetores, existe uma norma para matrizes, que também derivado produto interno. Ela é conhecida como a norma de Frobenius [2].

Definição 9. A norma de Frobenius de uma matriz A m×n, escrita como ‖A‖F , é dada por

‖A‖F = (〈A,A〉)12 =

(m

∑i=1

n

∑j=1

a2i j

) 12

. (3)

3

Page 7: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

Exemplo 5. A norma de Frobenius da matriz A no Exemplo 2 é calculada como

‖A‖F =√〈A,A〉=

√12 +32 +(−2)2 +42 =

√30·

A Observação 1 feita para norma de vetores, também é válida para a norma matricial. Pormeio da norma, pode-se também determinar a distância entre dois vetores ou duas matrizes [2].

Definição 10. A distância d entre dois vetores x e y e a distância D entre duas matrizes A e Bsão definidas, respectivamente, como

d = ‖x−y‖ e D = ‖A−B‖F · (4)

Exemplo 6. Considere as matrizes A e B do Exemplo 2. A distância entre elas é dada por

D = ‖A−B‖F =√(1−1)2 +(3−3)2 +(−2−4)2 +(4−2)2 = 2

√10·

Além das aplicações já discutidas para a norma, ela também é utilizada para calcular oproduto interno entre dois vetores [2].

Teorema 1. Sejam x e y dois vetores não nulos em Rn e seja θ o menor ângulo entre eles, entãoo produto interno entre x e y pode ser determinado por 〈x,y〉= ‖x‖‖y‖cosθ .

Os conceitos desenvolvidos nesta seção serão úteis, posteriormente, para o método daSVD. Além disso, o Teorema 1 é proveitoso na discussão e compreensão de ortogonalidade queserá visto na seção seguinte.

Ortogonalidade. A palavra ortogonal significa ângulo reto [8]. Neste contexto, dois vetoressão ditos ortogonais se o ângulo formado entre eles é um ângulo reto.

Segundo David Poole (2004), o conceito de ortogonalidade é um dos mais importantes eúteis na álgebra linear [8]. Devido a isto e também pela importância deste na SVD, para ummelhor entendimento, esta seção tratará exclusivamente deste assunto .

Definição 11. Os vetores x e y em Rn são ortogonais entre si se 〈x,y〉= 0 [8].

Por meio da Definição 11 e do Teorema 1 constata-se que, para dois vetores estaremortogonais entre si, basta que um deles, x ou y, seja nulo ou senão o ângulo entre eles seja de90°.

Vetores ortogonais, em Rn, podem ser utilizados para formar uma matriz quadrada, n×n,onde cada coluna da matriz é um destes vetores. Indo um pouco além e normalizando cada umdeles, obtém-se o que é conhecida por matriz ortogonal. Diz-se, então, que os vetores colunadesta matriz formam um conjunto ortonormal em Rn.

Definição 12. Uma matriz Q, n× n, é denominada matriz ortogonal se seus vetores colunaformam um conjunto ortonormal em Rn [2].

Teorema 2. Uma matriz Q, n×n, é ortogonal se, e somente se, QT Q = I [2].

Portanto, pelo Teorema 2 e de acordo com a Definição 5, QT Q = I = Q−1Q. Isto ocorrese, e somente se, Q é invertível. Logo QT = Q−1 [8].

Exemplo 7. Seja a matriz ortogonal Q =(x1 x2

), onde x1 =

(1√2,− 1√

2

)Te x2 =

(1√2, 1√

2

)T,

então

QT Q =

(1√2− 1√

21√2

1√2

)(1√2

1√2

− 1√2

1√2

)=

(〈x1,x1〉 〈x1,x2〉〈x2,x1〉 〈x2,x2〉

)=

(1 00 1

4

Page 8: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

Os vetores x1 e x2 são ortogonais, pois 〈x1,x2〉= 〈x2,x1〉= ‖x1‖‖x2‖cos(90°) = 0. Ade-mais, como x1 e x2 são vetores unitários, segue que 〈x1,x1〉= ‖x1‖‖x1‖cos0° = 1×1×1 = 1.A mesma relação é válida para x2.

Outra propriedade relevante de matrizes ortogonais refere-se ao fato destas preservaremprodutos internos [2, 8]. Pode-se observar que para uma matriz ortogonal n×n, Q

〈Qx,Qy〉= (Qx)T (Qy) = xT QT Qy = xT (QT Q)y = xT y = 〈x,y〉 .

E, se x = y, conforme a equação (2), ‖Qx‖2 = (Qx)T (Qx) = 〈x,x〉= ‖x‖2. Logo ‖Qx‖= ‖x‖.Portanto, a multiplicação de uma matriz ortogonal por um vetor preserva seu comprimento [2].

Os conceitos vistos nesta seção não serão apenas úteis para justificar a SVD. Estes tam-bém ajudarão a encontrar uma forma simples de determinar a distância entre duas matrizes, pormeio da SVD.

Produto externo. O produto externo discutido aqui não é o produto vetorial usual. Aquelediferentemente deste, é, geralmente, utilizado para representar a multiplicação entre matrizes,de forma distinta da usual.

Na SVD e em diversas aplicações é conveniente multiplicar uma matriz n×1, vetor colunax, por uma 1×n, vetor linha yT . Essa operação resulta em uma matriz n×n e é conhecida porproduto externo [2].

Exemplo 8. O produto externo entre x = (1,2,3)T e y = (4,3,2)T é

xyT =

123

(4,3,2) =

1×4 1×3 1×22×4 2×3 2×23×4 3×3 3×2

=

4 3 28 6 4

12 9 6

.

É interessante observar que as linhas (vetores linha) de xyT são múltiplas umas das outras.Por exemplo: a linha 2 é igual a linha 1 multiplicada por 2. Dessa forma, a matriz resultantesempre terá posto 1. É proveitoso relembrar que o posto de uma matriz A é igual ao número delinhas não nulas em qualquer forma escalonada por linhas de A [4].

Conforme abordado em Leon (2011), é possível particionar uma matriz C em diversassubmatrizes, traçando-se retas horizontais entre as linhas e verticais entre as colunas [2]. Estaspartições são chamadas de blocos. A técnica pode ser utilizada para efetuar a multiplicaçãopor blocos entre duas matrizes A e B, devidamente particionadas. Se os blocos tiverem asdimensões apropriadas, a multiplicação de blocos poderá ser realizada da mesma maneira quea multiplicação habitual de matrizes.

Exemplo 9. Particionando X , m×n, em colunas e a transposta de Y , k×n, em linhas, tem-se

X =

x11 x12 · · · x1nx21 x22 · · · x2n...

......

xm1 xm2 · · · xmn

=(x1,x2, · · · ,xn

)e Y T =

y11 y21 · · · yk1y12 y22 · · · yk2...

......

y1n y2n · · · ykn

=

yT

1yT

2...

yTn

·Então, a multiplicação XY T pode ser executada da seguinte forma:

5

Page 9: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

XY T =(x1,x2, · · · ,xn

)

yT1

yT2...

yTn

= x1yT1 +x2yT

2 + · · ·+xnyTn ·

Conforme visto no Exemplo 8, XY T é escrita como a soma de produtos externos de veto-res, soma de matrizes de posto 1, que é conhecida como a expansão de produto externo [2].

Autovalores, autovetores e diagonalização. Esta é a seção chave para entender a SVD, pois amaior parte do processo de fatoração de uma matriz A, m×n, em um produto UΣV T envolve osmesmos métodos e conceitos desenvolvidos aqui. O objetivo agora é, por meio de autovalores eautovetores, buscar uma fatoração para uma matriz A, n×n, em um produto da forma XDX−1,no qual D, n×n, é uma matriz diagonal.

Quando um vetor é multiplicado por um escalar λ , ele pode sofrer contração ou alonga-mento, com ou sem inversão em seu sentido. Porém, a direção deste vetor não se altera. Porora, o que pretende-se é: encontrar vetores, não nulos, para uma matriz quadrada A, que quandomultiplicados por ela se comportem como se estivem sendo multiplicados por um escalar λ . Ouseja, pretende-se encontrar as soluções da equação Ax = λx, x 6= 0.

Definição 13. Seja A n×n. Um escalar λ é denominado um autovalor de A se existe um vetorx, não nulo, tal que Ax = λx. O vetor x é dito um autovetor de A associado a λ [4].

Pode-se reescrever a equação na Definição 13 como Ax= λ Ix, e então (A−λ I)x= 0. Paraλ ser autovalor de A, as componentes de x não podem ser todas iguais a 0, ou seja, o sistemadeve ter solução não trivial [2]. Logo, a matriz (A−λ I) tem de ser singular (não inversível).Portanto, o determinante de (A−λ I) deve ser igual a zero. Com isso, os autovalores de A sãoobtidos por meio da equação

det(A−λ I) = 0, (5)

denominada equação característica de A. A expansão desta resulta em um polinômio de graun em λ . Os vetores x, soluções do sistema, são os chamados autovetores de A associados aoautovalor λ [2, 4].

Exemplo 10. Seja a matriz A =

(−1 00 1

). A equação característica associada é

det(A−λ I) =∣∣∣∣(−1 0

0 1

)−(

λ 00 λ

)∣∣∣∣= ∣∣∣∣−1−λ 00 1−λ

∣∣∣∣= (−1−λ )(1−λ ) = 0·

Então, os autovalores de A são λ1 =−1 e λ2 = 1. Para encontrar os autovetores associadosa λ1, substitui-se o valor dele no sistema (A−λ I)x = 0, fazendo:

(A− (−1)I)x1 =

(−1+1 0

0 1+1

)(x1x2

)=

(00

).

Resolvendo o sistema, obtém x2 = 0 e x1 = qualquer número ∈R. Então, x1 = (x1,x2)T =

(x1,0)T = x1(1,0)T . Portanto, (1,0)T é um autovetor de A associado a λ1 = −1. De formaidêntica, para encontrar os autovetores para λ2 resolve-se o sistema: (A− 1I)x2 = 0. Destemodo, x2 = (0,x2)

T = x2(0,1)T . Logo, (0,1)T é autovetor de A associado a λ2 = 1.

Visto como encontrar os autovalores e autovetores de uma matriz, pode-se, por fim, tentarresolver o problema de fatoração de uma matriz A, n× n, em um produto da forma XDX−1,

6

Page 10: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

do qual os vetores coluna de X são autovetores de A, X−1 é a inversa de X e D é uma matrizdiagonal formada pelos autovalores de A.

Definição 14. Uma matriz A, n×n, é dita diagonalizável se existir uma matriz não singular Xe uma diagonal D, de modo que X−1AX = D ou, equivalentemente, A = XDX−1. Neste caso,diz-se que X diagonaliza A [2].

Definição 15. Um vetor v pertencente a Rn é combinação linear dos vetores x1,x2, . . . ,xn, tam-bém pertencentes a Rn, se v pode ser escrito como

v = c1x1 + c2x2 + · · ·+ cnxn· (6)

onde c1,c2, . . . ,cn são escalares [4].

Vale observar, que se c2 = c3 = · · ·= cn = 0 e c1 6= 0, então v é múltiplo escalar de x1.

Teorema 3. Uma matriz A de ordem n é diagonalizável se, e somente se, A possuir n autovetoreslinearmente independentes [4].

Dizer que A tem n autovetores linearmente independentes, significa dizer que nenhumdestes n autovetores de A é combinação linear dos outros n− 1 autovetores. O motivo está namatriz diagonalizante X , porque pela Definição 14, X deve ser não singular. Logo, para que Xseja não singular, os vetores colunas de X , que são os autovetores de A, devem ser linearmenteindependentes. Segundo o Teorema 4, isto sempre ocorre se os autovalores forem distintos.

Teorema 4. Se uma matriz A, n× n, possuir n autovalores distintos, λ1, . . . ,λn, com os corres-pondentes autovetores x1, . . . ,xn, então x1, . . . ,xn são linearmente independentes [2].

Exemplo 11. Seja A a matriz do Exemplo 10. As matrizes D e X , são

D =

(λ1 00 λ2

)=

(−1 00 1

)e X =

(x1 x2

)=

(1 00 1

Como X = X−1, tem-se A = XDX−1 =

(1 00 1

)(−1 00 1

)(1 00 1

)=

(−1 00 1

Observação 2. Uma matriz diagonalizante X não é única. Se multiplicar X por escalares dife-rentes de zero ou reordenar suas colunas produzirá outra matriz diagonalizável [2].

Decomposição em Valores Singulares - SVD. A SVD têm aplicações à “compressão”, ar-mazenamento e transmissão de dados digitais. Ela está estreitamente relacionada ao problemamatemático de aproximar uma matriz por outra de posto menor. Eckart e Young (1936), em Psy-chometrika, demonstram a SVD para matrizes retangulares, formulando o seguinte problema:encontrar uma matriz B de posto r, de modo que não exista outra matriz de posto r tal que adistância de outra até a matriz A seja menor que a distância de B a A [6]. A SVD será, então,utilizada para encontrar a matriz B mais próxima de A. Por simplicidade, considera-se m ≥ n.No entanto, todos os resultados também são válidos para m < n.

O produto matricial de AAT e AT A resulta em uma matriz simétrica, m×m, e uma simé-trica, n× n, respectivamente [4]. Isto pode ser verificado pela Definição 4 (matriz simétrica),fazendo

(AAT )T = (AT )T AT = AAT e (AT A)T = AT (AT )T = AT A.

Algumas propriedades importantes de matrizes simétricas são mostradas no teorema seguinte.

Teorema 5. Os Autovalores de uma matriz simétrica são reais. E ainda, autovetores associadosa autovalores distintos são ortogonais [2].

7

Page 11: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

O diferencial da SVD está no fato desta poder ser aplicada a qualquer matriz m×n comoafirmado no teorema seguinte.

Teorema 6 (SVD de uma matriz). Se A é uma matriz m× n, então existe uma Decomposiçãoem Valores Singulares de A da seguinte forma:

A =UΣV T , (7)

onde U , m×m, e V , n×n, são matrizes ortogonais e Σ , m×n, é uma matriz onde os elementosfora da diagonal principal são todos iguais a zero e cujo os elementos da diagonal são os valoressingulares (σi) de A ordenados de tal modo que σ1 ≥ σ2 ≥ ·· · ≥ σn [2, 4].

Buscando, agora, a Decomposição em Valores singulares de A e lembrando do Teorema2 (V T =V−1 e UT =U−1), tem-se

AT A = (UΣV T )T (UΣV T ) = (ΣV T )TUTUΣV T =V ΣT

ΣV T (8)

AAT = (UΣV T )(UΣV T )T =UΣV TV ΣTUT =UΣΣ

TUT . (9)

De acordo com o Teorema 5, os autovalores de AT A e AAT são reais. Além disso, elestambém são todos não negativos, pois ‖Ax‖2 = (Ax)T Ax = xT AT Ax = λxT x = λ‖x‖2 e assim

λ =‖Ax‖2

‖x‖2 ≥ 0.

Pela Definição 14, V diagonaliza AT A e, portanto, os vetores coluna de V (v1, . . . ,vn) são osautovetores de AT A. E ainda, como U diagonaliza AAT , os vetores coluna de U (u1, . . . ,um) sãoautovetores de AAT . Outro resultado das equações (8) e (9), é obtido das matrizes diagonaisΣΣ T e Σ T Σ , cujo os valores diferentes de zero na diagonal principal são iguais em ambas.Logo, os autovalores de AT A e AAT são os mesmos e, desta forma, os valores singulares de Asatisfazem

σ j =√

λ j ≥ 0 j = 1,2, . . . ,n. (10)

Sabe-se que se o posto de A é r < n, então o posto de AT A e de AAT também será r.Como o posto de uma matriz simétrica é igual ao número de autovalores diferentes de zero,segue, da equação (10), que o posto de A é igual ao número de valores singulares diferentesde zero [2]. Os valores singulares podem, então, ser ordenados na matriz Σ de forma queσ1 ≥ σ2 ≥ ·· · ≥ σr > σr+1 = · · · = σn = 0. Desta forma, a SVD da matriz A = UΣV T , composto r, será

A = (u1,...,ur,ur+1,...,um )

σ1. . . O

σr

O O

vT1...

vTr

vTr+1...

vTn

·Efetuando-se a multiplicação por meio da expansão do produto externo tem-se

A = σ1u1vT1 +σ2u2vT

2 + · · ·+σrurvTr . (11)

Exemplo 12. Considere A =

(4 4−3 3

), então AT A =

(4 −34 3

)(4 4−3 3

)=

(25 77 25

)· Para

8

Page 12: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

encontrar os autovalores de AT A calcula-se

det(AT A−λ I) =∣∣∣∣25−λ 7

7 25−λ

∣∣∣∣= λ2−50λ +576 = 0.

Os autovalores são λ1 = 32 e λ2 = 18. Os valores singulares de A são σ1 =√

λ1 =√

32 e σ2 =√18. O autovetor v2 é obtido por meio da equação

(AT A−18I)v2 =

(25−18 7

7 25−18

)(v1v2

)=

(00

Resolvendo-se o sistema, obtém-se (v1,v2)T = (−1,1)T . Como a matriz V é ortogonal, é ne-

cessário normalizá-lo, fazendo: v2 =1

‖(−1,1)T‖(−1,1)T =

1√2

(−11

)=

(−1√

2,

1√2

Procedendo da mesma maneira, encontra-se o autovetor normalizado v1 associado a λ1 =32, v1 = ( 1√

2, 1√

2)T . Com estes resultados, pode-se construir as matrizes Σ e V . Portanto

Σ =

(√32 00√

18

)e V =

(1√2−1√

21√2

1√2

).

Para determinar as colunas da matriz U , pode-se calcular os autovetores de AAT , seguin-do-se os mesmos passos tomados para V ou, de outra forma, simplesmente multiplicar porV , à direita, em ambos os lados de A = UΣV T , obtendo AV = UΣ . Logo, Av j = σ ju j ou,

equivalentemente, u j =1σ j

Av j. Então,

u1 =1

σ1Av1 =

1√32

(4 4−3 3

)( 1√2

1√2

)=

(10

), u2 =

1√18

(4 4−3 3

)(−1√2

1√2

)=

(01

Segue-se então que

A =UΣV T =

(1 00 1

)(√32 00√

18

)( 1√2

1√2

−1√2

1√2

A SVD simplifica o cálculo da norma de uma matriz. Se A =UΣV T , então

‖A‖F = ‖U(ΣV T )‖F = ‖ΣV T‖F = ‖(ΣV T )T‖F = ‖Σ T‖F = ‖Σ‖F =√

σ21 +σ2

2 + · · ·+σ2n ·

Conforme abordagem de Leon (2011), se A, m×n, é uma matriz com posto r, então existeuma matriz A′, m×n, de posto k, onde 0 < k < r, tal que A′ é a matriz mais próxima de A emrelação à norma de Frobenius [2]. Neste caso, a distância entre as matrizes é dada por

‖A−A′‖F =√

σ2k+1 +σ2

k+2 + · · ·+σ2n · (12)

Observação 3. A equação (12) diz que se a matriz A tem posto n, onde A = σ1u1vT1 +σ2u2vT

2 +· · ·+σnunvT

n , então

9

Page 13: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

An−1 = σ1u1vT1 +σ2u2vT

2 + · · ·+σn−2un−2vTn−2 +σn−1un−1vT

n−1

An−2 = σ1u1vT1 +σ2u2vT

2 + · · ·+σn−2un−2vTn−2

...

A1 = σ1u1vT1

serão as matrizes com postos n− 1, n− 2, . . ., 1, respectivamente, mais próximas de A emrelação à norma de Frobenius (equação (3)), naquela ordem.

Imagem. A maioria das imagens são representadas como matrizes, onde cada elemento de umamatriz corresponde a um píxel da imagem [1]. Por exemplo, a figura 1(a) mostra uma imagemde intensidade em tons de cinza, na qual cada píxel da imagem é representada por um elementoda matriz com valor em ponto flutuante, variando entre 0,0000 (preto) a 1,0000 (branco). Noentanto, para algumas imagens, como por exemplo as RGB (Red, Green, Blue), são necessáriastrês matrizes de mesma dimensão, onde a primeira destas (banda 1) representa as intensidadesem tons de vermelho; a segunda (banda 2) em tons de verde; e a terceira (banda 3) em tons deazul. Deste modo, conforme mostram os números em negrito na figura 1(b), representa-se acor de cada píxel pela combinação das intensidades de vermelho, verde e azul por elementos namesma posição de cada matriz [9].

(a) Imagem de Intensidade, em tons de cinza.Apenas uma matriz representa imagem.

(b) Imagem RGB. Três matrizes combinadas sãoutilizadas para formar a imagem RGB.

Figura 1: Utilização de matrizes para representar imagens. Fonte: Adaptado de [9].

Similarmente ao RGB, na imagem HSV (Hue, Saturation, Value), também utiliza-se trêsmatrizes. No entanto, a primeira representa a matiz (tonalidade), a segunda a saturação e aterceira o brilho. Além disso, alguns tipos de imagens, como as de Cores Indexadas, utilizam“mapeamento direto”. Estas, como apresenta a figura 2, requerem duas matrizes para suasrepresentações. Uma delas, a matriz map (m×3), armazena em suas linhas as cores vermelho,verde e azul, onde cada linha representa uma cor dada pela combinação daquelas três. A outra,a matriz de dados, guarda a cor de cada píxel da imagem, que corresponde a uma das linhas damatriz map [9, 10].

De fato, os valores de cada elemento das matrizes que representam imagens RGB, comCores Indexadas e de Intensidades, podem estar no intervalo de valores, em ponto flutuante,entre 0,0000 e 1,0000 ou dentro do intervalo de números inteiros, de 0 a 255. Entretanto,elementos de matrizes em imagens HSV, estão apenas naquele intervalo de 0,0000 a 1,0000[9, 10].

10

Page 14: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

Figura 2: Imagem de Cores Indexadas. O píxel referente ao número cinco na matriz de dados,é a cor da quinta linha na matriz de cores de três colunas. Fonte: [9].

Qualidade de imagens. Para medir a qualidade das imagens foi utilizado o software SSIM, de-senvolvido pelos autores do artigo “Image Quality Assessment: From Error Visibility to Struc-tural Similarity” e disponibilizado em https://ece.uwaterloo.ca/~z70wang/research/ssim/ [11].

Este sistema avalia a qualidade da imagem baseada na degradação desta, empregando ou-tra imagem normalmente não degradada como referência. As imagens em RGB são convertidaspara imagens de Intensidade em tons de cinza antes de serem submetidas para avaliação doSSIM. O valor referente a qualidade das imagens varia entre o intervalo de números flutuantes0,0000 (“pior qualidade”) e 1,0000 (qualidade da imagem “original”).

MATERIAIS E MÉTODOS

O processamento digital das imagens foi efetuado por meio do software IMSVD desen-volvido em ambiente de programação MATLAB durante este trabalho. O MATLAB é em-pregado no desenvolvimento de algoritmos, análise de dados, visualização e cálculo numé-rico [12]. A documentação e a versão de testes (trial) do MATLAB, podem ser obtidas emhttp://www.mathworks.com/help/. O código fonte do IMSVD pode ser encontrado noAPÊNDICE A - CÓDIGOS FONTE.

O software IMSVD, para processamento de imagens por meio da SVD, foi desenvolvidocom o auxilio do Professor Fabio Antonio Dorini do Departamento Acadêmico de Matemática(DAMAT) da UTFPR. Desde o início, ele instruiu na pesquisa e realização dos testes. A Pro-fessora Leyza Baldo Dorini do Departamento Acadêmico de Informática (DAINF) da UTFPR,também colaborou com o trabalho, apresentando sugestões nas pesquisas e fornecendo infor-mações importantes sobre imagens e ferramentas do MATLAB.

Os testes foram realizados com imagens RGB e de intensidade em tons de cinza. Elasforam processadas via IMSVD, nos modos HSV, RGB, Cores Indexadas e de Intensidade. Osprocessamentos no modo Cores Indexadas foram feitos no MATLAB versão 5.3 (R11), insta-lado em Sistema Operacional (SO) Windows XP de 32 bits. Para os demais modos, foi utilizadoo MATLAB versão R2010b, instalado no SO Windows 7 de 32 bits. Para o Windows 7 são dis-ponibilizados 3 GB de memória ram e para o Windows XP 1,5 GB, ambos com SO instaladosem um notebook com processador Intel 2 DUO de 2.1 GHz.

Fazendo uso das ferramentas citadas, foi possível processar imagens com tamanho má-ximo de aproximadamente 2700×2100 píxeis, sem que ocorresse erro por falta de memória.As imagens RGB processadas com a versão R2010b do MATLAB, no modo Cores Indexadas,apresentaram resultados insatisfatórios. A visualização destas ocorria somente quando as ima-

11

Page 15: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

gens eram reconstruídas com o posto igual ou muito próximo ao da “original”, devido ao ruídoapresentado nelas. A melhor solução encontrada para este problema foi processar as imagensna versão 5.3 do MATLAB.

Justificativa e análise do método. Por que a SVD é útil para otimizar o armazenamento deimagens? Para uma imagem de intensidade, de acordo com a Observação 3 da equação (12)pode-se truncar o somatório da expansão do produto externo da matriz A, que representa a ima-gem “original”, nos p primeiros termos. E desta forma obter outra matriz A′, próxima à A, emrelação à norma de Frobenius. Isto significa que a imagem reconstruída com A′ será similar a“original”. Além disso, quanto mais termos σiuivT

i forem adicionados na soma da expansãodo produto externo que resulta em A′, mais próxima será a imagem reconstruída da “original”.A ideia então é, ao invés de armazenar todos os elementos da matriz da imagem “original”,simplesmente armazenar os p primeiros σi da diagonal de Σ e os p primeiros vetores coluna uide U e vi de V , resultantes da decomposição de A =UΣV T . Isto permite reduzir o espaço ne-cessário no armazenamento das matrizes de imagens, e acelerar a transmissão eletrônica destas.No caso de a imagem ser RGB ou HSV, por exemplo, o método é aplicado em cada uma dastrês matrizes que as representam (isto pode ser melhor observado no pseudocódigo do código1).

É importante frisar, que a matriz A′ pode ser obtida pelo produto matricial usual U ′Σ ′V ′T ,onde U ′ = (u1, . . . ,up), Σ ′ = diagonal(σ1, . . . ,σp) e V ′ = (v1, . . . ,vp). Deste modo se A′, assimcomo A, conter m linhas e n colunas, serão necessários armazenar p×m+ p× 1+ p× n =p(m+ n+ 1) elementos e não mais os m× n elementos de A. Portanto, é claro que para que aaplicação do método seja viável, é preciso satisfazer p(m+n+1)< m×n e assim

p <m×n

(m+n+1). (13)

Como será visto na seção RESULTADOS E DISCUSSÕES, geralmente a matriz A possuimuitos valores singulares pequenos. Em vista disso, é praticamente sempre possível aproximá-la por uma matriz A′ de posto bem menor e, mesmo assim, obter uma imagem com qualidadepróxima a da imagem “original”. O exemplo seguinte demonstra a aplicação do método comuma imagem em tons de cinza.Exemplo 13 (Aplicação do Método no MATLAB). Será processada, no MATLAB, a imagem“mozilla.jpg” convertida para imagem de Intensidade, com resolução de 40×40 píxeis e posto40 (obs.: a pontuação utilizada nos comandos é somente a do MATLAB).

Inicia-se com a leitura da imagem, representando-a como uma matriz, através do comandoA = imread(′mozilla. jpg′);

O comando seguinte converte a imagem, lida, para uma imagem de intensidade em tonsde cinza: A = rgb2gray(A);

Agora, para efeito de cálculo, converte-se a matriz A para double, fazendo A = double(A)+1;

O MATLAB requer +1 para acertos. Para aplicar a Decomposição SVD, fatorando A emum produto UΣV T , basta digitar [U,D,V ] = svd(A);

Para reconstruir a matriz A1 =U1Σ1V T1 com posto 1, pode-se usar o comando

A1 =U(:,1 : 1)∗D(1 : 1,1 : 1)∗V (:,1 : 1)′;

Então, para visualizar a imagem correspondente a A1, realiza-se primeiro a conversão para uint8(explicação linha 45 do código 1), com -1 para acertos, e então utiliza-se o comando imshow.

12

Page 16: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

Isto pode ser feito diretamente, digitando: imshow(uint8(A1−1))Da mesma forma, para visualizar as matrizes com posto = 2, 3, . . ., 40 deve-se fazer

A2 =U(:,1 : 2)∗D(1 : 2,1 : 2)∗V (:,1 : 2)′;...

A40 =U(:,1 : 40)∗D(1 : 40,1 : 40)∗V (:,1 : 40)′;

seguido respectivamente dos comandos: imshow(uint8(A2−1)) . . . imshow(uint8(A40−1))A figura 3 apresenta a imagem “original”, seguida das outras com posto reduzido. Con-

forme a inequação (13) para reduzir o espaço no armazenamento da imagem, o posto p devesatisfazer

p <40×40

(40+40+1)= 19.

(a) Original (b) p = 1 (c) p = 3 (d) p = 5 (e) p = 15 (f) p = 20

Figura 3: Imagem “original” (a), seguida das imagens, de posto menor, reconstruídas com oExemplo 13. Fonte: adaptado de icongal.com.

Visão do sistema. O código 1 apresenta o pseudocódigo do software IMSVD. Após a decom-posição da(s) matriz(es) (linha 25), o programa reconstrói e exibe a imagem em cada novoincremento do posto (laço PARA externo, linha 35). O IMSVD pausa o processo (linha 48),a cada iteração, para permitir que o usuário analise a imagem correspondente ao posto atual.Para continuar o processo ininterruptamente, este deve manter pressionada qualquer tecla ou,com apenas um clique, ele pode visualizar a imagem resultante da iteração seguinte, e pararnovamente a execução do programa. A aplicação é finalizada quando o posto da imagem emaproximada se iguala ao posto da “original”. Em imagens RGB ou HSV, o posto é definido,neste trabalho, pelo menor posto dentre as três matrizes que representam as bandas 1, 2 e 3 daimagem.

Código 1: Pseudocódigo do software desenvolvido para o processamento de imagens. Fonte:Autoria Própria.

1 % imsvd ( imagem , modo ) p r o c e s s a IMAGENs nos MODOs: HSV , RGB, Cores I n d e x a d a s ( i n d ) e , também , de2 % I n t e n s i d a d e . Os o p e r a d o r e s ==, = e != r e p r e s e n t a m i g u a l d a d e , atribuição e negação , n e s t a ordem3 imsvd ( imagem , modo )4 % A == (A1,A2,A3) é um " a r r a y " m×n×3 se A f o r RGB ou HSV . Caso contrário , A == A1 . Os Ai s são as5 % m a t r i z e s r e f e r e n t e s as bandas 1 , 2 e 3 da imagem . A m a t r i z map , com dimensões k×3 ,6 % r e p r e s e n t a o mapa de c o r e s das imagens i n d e x a d a s . Se a imagem f o r RGB, map será v a z i a7 [ A,map ] = l e r ( imagem )8 SE A f o r RGB, ENTÃO9 SE modo == hsv , ENTÃO

10 c o n v e r t a A p a r a hsv11 SENÃO , SE modo == ind , ENTÃO12 c o n v e r t a A p a r a o modo Cores Indexadas , armazenando13 256 c o r e s em map ( k == 256)14 FIM SE15 FIM SE16 % A é c o n v e r t i d o para d oub l e para que o MATLAB possa e f e t u a r os cálculos .

13

Page 17: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

17 % M a t r i z e s em hsv já são do ub l e18 SE modo != hsv , ENTÃO19 c o n v e r t a A p a r a do ub l e20 FIM SE21 % dimensão ( A ) == 3 para rgb e hsv ou dimensão ( A ) == 1 para o u t r o s c a s o s22 PARA i == 1 até v a l o r da dimensão ( A ) FAÇA23 % cálculo da svd de Ai ==UiΣiV T

i , onde Ui == (ui1 , . . . ,uim ) , Σi ==d i a g o n a l (σi11 , . . . ,σinn )24 % e Vi == (vi1 , . . . ,vin )25 [Ui,Σi,Vi ] = svd ( Ai )26 pi = calcular_posto(Ai)27 FIM PARA28 SE dimensão ( A ) == 1 , ENTÃO29 p o s t o = p130 SENÃO31 p o s t o = mínimo ( p1, p2, p3 )32 FIM SE33 % i n i c i a l i z a n d o A′ como " a r r a y " nu lo . A′ tem as mesmas dimensões de A .34 A′ = O35 PARA j == 1 até o v a l o r do p o s t o FAÇA36 PARA i == 1 até o v a l o r da dimensão ( A ) FAÇA37 % expansão do p r o d u t o e x t e r n o38 A′i = A′i +σi j j ui j v

Ti j

39 FIM PARA40 A′′ = A′

41 SE modo == hsv , ENTÃO42 c o n v e r t a A′′ p a r a RGB43 SENÃO44 % u i n t 8 é um t i p o e s p e c i a l de i n t e i r o que v a r i a de 0 a 2 5 5 .45 c o n v e r t a A′′ p a r a u i n t 846 FIM SE47 m o s t r a r ( A′′ )48 pausar iteração49 SE usuário p r e s s i o n a r q u a l q u e r t e c l a , ENTÃO50 cont inuar iteração51 FIM SE52 FIM PARA53 FIM imsvd

Devido ao software propiciar a visualização da imagem em evolução, torna-se conveni-ente aplicar a expansão do produto externo na reconstrução desta (linha 38). Assim, os cálculosrealizados para formar a imagem atual, de posto p−1, são armazenados para serem utilizadosna construção da imagem seguinte, de posto p. Isto reduz o custo computacional evitando-se aaplicação do produto entre as matrizes Ui,Σi, e V T

i em cada repetição do laço PARA interno.Entretanto, se o propósito for reconstruir a imagem definitiva com o posto p já determi-

nado, e assim, visualizá-la somente com este posto, geralmente será melhor efetuar o produtomatricial usual do MATLAB, Ui ∗Σi ∗V T

i diretamente. Os testes demostraram que desta forma,o processamento da imagem é muito mais eficiente do que o método abordado anteriormente.Por exemplo, o tempo de processamento de uma imagem RGB com tamanho 1024×768 píxeis,fazendo uso do produto matricial usual e no modo RGB, foi de aproximadamente 5 segundos.Por outro lado, o tempo gasto para processar a mesma imagem, utilizando a expansão do pro-duto externo no mesmo modo, foi de cerca de 80 segundos. Em ambos os testes a imagemfoi reconstruída com o posto máximo (768) e visualizada somente após o término do processa-mento. O código fonte do programa para processamento no modo RGB por meio do produtomatricial usual empregado neste teste, está no APÊNDICE A - CÓDIGOS FONTE.

Cronograma de atividades. A pesquisa cumpriu o cronograma com as seguintes atividades:(i) estudo de matrizes e do ambiente de programação MATLAB; (ii) estudo de espaços ve-toriais e transformações lineares (espaços vetoriais, subespaços, independência linear, base edimensão, mudança de base, espaços linha e coluna, transformações lineares, representaçãomatricial de transformações lineares, semelhança); (iii) estudo de produto interno e ortogona-lidade (produto interno, subespaços ortogonais, espaços munidos de produto interno, espaços

14

Page 18: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

normados, conjuntos ortonormais, processo de ortogonalização de Gram-Schmidt); (iv) estudode autovalores e autovetores (autovalores e autovetores, diagonalização, matrizes autoadjuntas,matrizes positivas definidas); (v) decomposição SVD de uma matriz; (vi) aplicações da SVDem “compressão” de imagens; (vii) redação do relatório final em LATEX.

RESULTADOS E DISCUSSÕES

Nesta seção primeiramente são apresentados os resultados obtidos nos ensaios realizados(1 a 7). Em seguida ocorre uma breve interpretação e análise daqueles na subseção Interpretaçãoe análise dos resultados. As imagens utilizadas nos ensaios são exibidas na figura 4 e suasinformações aparecem na tabela 1.

(a) spiral.png (b) mundo.jpg (c) lena.jpg (d) pentagono.jpg

(e) hawaii.jpg (f) peppers.png

Figura 4: Imagens utilizadas nos ensaios de 1 a 7. A imagem (a) foi construída com o comandospiral do MATLAB.

Tabela 1: Informações das imagens na figura 4. A coluna R.A Posto quer dizer que a reduçãono armazenamento da imagem somente ocorre para os valores do posto p indicado.

Imagem R.A. Posto Altura × Largura (píxeis) Fonte

(a) spiral.png p <= 3 8 × 8 Autoria Própria(b) mundo.jpg p <= 1023 2048 × 2048 [13](c) lena.jpg p <= 127 256 × 256 [14](d) pentagono.jpg p <= 200 382 × 425 [15](e) hawaii.jpg p <= 685 1200 × 1600 [16](f) peppers.png p <= 219 384 × 512 [17]

Fonte: Autoria Própria.

Os valores singulares serão abreviados por VS e o posto por p. Além disso, A1, A2 eA3 representam as bandas 1, 2 e 3 da imagem RGB ou HSV (Ai = UiΣiV T

i ). Para os casosde Imagens de Intensidade e com Cores Indexadas, A1 representa a única banda destas. A

15

Page 19: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

qualidade SSIM (QS) da imagem processada é com relação a imagem “original” e varia entre 0(pior qualidade) e 1 (qualidade da “original”).

Vale lembrar que, quando o programa IMSVD processa imagens RGB no modo HSV, eleas converte para HSV e então computa tanto a SVD quanto QS, com relação a imagem HSV.O mesmo vale para o processamento no modo Cores Indexadas. Para imagens de Intensidade,não há conversão. O software recebe a imagem já convertida e efetua os cálculos diretamente.A tabela 2 mostra o posto de cada uma das imagens da figura 4 nos modos RGB, HSV, CoresIndexadas e de Intensidade. Como visto na subseção Visão do sistema, o posto de uma imagemé definido aqui, pelo menor posto dentre as três matrizes A1, A2 e A3.

Tabela 2: Posto das Imagens na figura 4, após a conversão para o modo indicado.

Modo RGB HSV Cores Indexadas Intensidade

Posto spiral.png 6 3 7 8Posto mundo.jpg 1798 - 1816 1799

Posto lena.jpg 255 197 255 256Posto pentagono.jpg 382 346 382 382

Posto hawaii.jpg 1200 641 1200 1200Posto peppers.png 384 279 384 384

Fonte: Autoria Própria.

Nos processos dos modos RGB, Cores Indexadas e de Intensidade, os elementos dasmatrizes computadas, estão dentro do intervalo de números inteiros de 0 a 255. Já no modoHSV o intervalo de valores está em ponto flutuante e varia entre números de 0 a 1.

Ensaio 1. Imagem “spiral.png”Gráficos dos valores singulares

Figura 5: Modo RGB. Gráficos dos VS das matrizes das bandas 1, 2 e 3 com relação as colunas de Σ1, Σ2 e Σ3.

Figura 6: Modo HSV. Gráficos dos VS das matrizes das bandas 1, 2 e 3 com relação as colunas de Σ1, Σ2 e Σ3.

16

Page 20: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

Figura 7: Modo Cores Indexadas (esquerda) e Intensidade (direita). VS de A1 com relação as colunas de Σ1.

Imagens obtidas do processamento de “spiral.png”

(a) p=1, QS=0,710 (b) p=2, QS=0,983 (c) p=4, QS=0,997 (d) p=6, QS=1

(e) p=1, QS=0,930 (f) p=2, QS=0,964 (g) p=3, QS=0,978

(h) p=1, QS=0,785 (i) p=2, QS=0,878 (j) p=4, QS=0,986 (k) p=6, QS=0,989

(l) p=1, QS=0,812 (m) p=2, QS=0,990 (n) p=4, QS=0,997 (o) p=8, QS=1

Figura 8: Modos: (a-d) RGB; (e-g) HSV; (h-k) Cores Indexadas; (l-o) Intensidade.

Ensaio 2. Imagem “peppers.png”Gráficos dos valores singulares

17

Page 21: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

Figura 9: Modo RGB. Gráficos dos VS das bandas 1, 2 e 3 com relação as colunas de Σ1, Σ2 e Σ3.

Figura 10: Modo HSV. Gráficos dos VS das bandas 1, 2 e 3 com relação as colunas de Σ1, Σ2 e Σ3.

Figura 11: Modo Cores Indexadas (esquerda) e Intensidade (direita). VS de A1 em relação as colunas de Σ1.

Imagens obtidas do processamento de “peppers.png”

(a) p=4, QS=0,671 (b) p=20, QS=0,885 (c) p=60, QS=0,978 (d) p=160, QS=0,998

(e) p=4, QS=0,558 (f) p=20, QS=0,670 (g) p=61, QS=0,771 (h) p=160, QS=0,872

(i) p=4, QS=0,403 (j) p=20, QS=0,526 (k) p=60, QS=0,601 (l) p=160, QS=0,644

Figura 12: Modos: (a-d) RGB; (e-h) HSV; (i-l) Cores Indexadas.

18

Page 22: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

(a) p=4, QS=0,650 (b) p=20, QS=0,860 (c) p=60, QS=0,968 (d) p=160, QS=0,998

Figura 13: Modo de Intensidade.

Ensaio 3. Imagem “mundo.jpg”Gráficos dos valores singulares

Figura 14: Modo RGB. Gráficos dos VS das bandas 1, 2 e 3 com relação as colunas de Σ1, Σ2 e Σ3.

Figura 15: Modo Cores Indexadas (esquerda) e Intensidade (direita). VS de A1 em relação as colunas de Σ1.

Imagens obtidas do processamento de “mundo.jpg”

(a) p=4, QS=0,489 (b) p=20, QS=0,733 (c) p=85, QS=0,932 (d) p=200, QS=0,971

(e) p=4, QS=0,357 (f) p=20, QS=0,492 (g) p=85, QS=0,660 (h) p=661, QS=0,776

Figura 16: Modos: (a-d) RGB; (e-h) Cores Indexadas.

19

Page 23: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

(a) p=4, QS=0,490 (b) p=20, QS=0,728 (c) p=87, QS=0,931 (d) p=200, QS=0,971

Figura 17: Modo de Intensidade.

Ensaio 4. Imagem “lena.jpg”Gráficos dos valores singulares

Figura 18: Modo RGB. Gráficos dos VS das bandas 1, 2 e 3 com relação as colunas de Σ1, Σ2 e Σ3.

Figura 19: Modo HSV. Gráficos dos VS das bandas 1, 2 e 3 com relação as colunas de Σ1, Σ2 e Σ3.

Figura 20: Modo Cores Indexadas (esquerda) e Intensidade (direita). VS de A1 em relação as colunas de Σ1.

Imagens obtidas do processamento de “lena.jpg”

(a) p=4, QS=0,567 (b) p=15, QS=0,704 (c) p=60, QS=0,899 (d) p=100, QS=0,966

Figura 21: Modo RGB.

20

Page 24: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

(a) p=4, QS=0,373 (b) p=15, QS=0,282 (c) p=100, QS=0,306 (d) p=197, QS=0,848

(e) p=4, QS=0,466 (f) p=15, QS=0,607 (g) p=60, QS=0,767 (h) p=100, QS=0,817

(i) p=4, QS=0,551 (j) p=15, QS=0,694 (k) p=60, QS=0,886 (l) p=100, QS=0,958

Figura 22: Modos: (a-d) HSV; (e-h) Cores Indexadas; (i-l) Intensidade.

Ensaio 5. Imagem “hawaii.jpg”Gráficos dos valores singulares

Figura 23: Modo RGB. Gráficos dos VS das bandas 1, 2 e 3 com relação as colunas de Σ1, Σ2 e Σ3.

Figura 24: Modo HSV. Gráficos dos VS das bandas 1, 2 e 3 com relação as colunas de Σ1, Σ2 e Σ3.

21

Page 25: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

Figura 25: Modo Cores Indexadas (esquerda) e Intensidade (direita). VS de A1 em relação as colunas de Σ1.

Imagens obtidas do processamento de “hawaii.jpg”

(a) p=4, QS=0,516 (b) p=20, QS=0,745 (c) p=100, QS=0,938 (d) p=200, QS=0,980

(e) p=4, QS=0,485 (f) p=20, QS=0,707 (g) p=100, QS=0,901 (h) p=200, QS=0,960

(i) p=4, QS=0,187 (j) p=20, QS=0,285 (k) p=100, QS=0,397 (l) p=685, QS=0,570

(m) p=4, QS=0,505 (n) p=20, QS=0,720 (o) p=100, QS=0,922 (p) p=200, QS=0,972

Figura 26: Modos: (a-d) RGB; (e-h) HSV; (i-l) Cores Indexadas; (m-p) Intensidade.

Ensaio 6. Imagem “pentagono.jpg”Gráficos dos valores singulares

Figura 27: Modo RGB. Gráficos dos VS das bandas 1, 2 e 3 com relação as colunas de Σ1, Σ2 e Σ3.

22

Page 26: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

Figura 28: Modo HSV. Gráficos dos VS das bandas 1, 2 e 3 com relação as colunas de Σ1, Σ2 e Σ3.

Figura 29: Modo Cores Indexadas (esquerda) e Intensidade (direita). VS de A1 em relação as colunas de Σ1.

Imagens obtidas do processamento de “pentagono.jpg”

(a) p=10, QS=0,313 (b) p=40, QS=0,613 (c) p=120, QS=0,888 (d) p=190, QS=0,970

(e) p=10, QS=0,302 (f) p=40, QS=0,587 (g) p=120, QS=0,867 (h) p=190, QS=0,951

(i) p=10, QS=0,303 (j) p=40, QS=0,588 (k) p=120, QS=0,859 (l) p=190, QS=0,936

(m) p=10, QS=0,310 (n) p=40, QS=0,609 (o) p=120, QS=0,886 (p) p=190, QS=0,970

Figura 30: Modos: (a-d) RGB; (e-h) HSV; (i-l) Cores Indexadas; (m-p) Intensidade.

23

Page 27: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

Ensaio 7. Adição de Ruído em Algumas Imagens - Somente Modo RGBPara adicionar ruído às imagens, foi utilizado o comando imnoise do MATLAB, com a

opção ’speckle’ (ruído multiplicativo). A tabela 3 exibe o posto de imagens da figura 4, usadasneste ensaio, após a adição de ruído.

Tabela 3: Posto de imagens na figura 4, após a adição de ruído.

Imagem peppers.png lena.jpg hawaii.jpg pentagono.jpgPosto 384 256 1200 382

Fonte: Autoria Própria.

Gráficos dos valores singularesOs gráficos desta seção, referem-se aos valores singulares das bandas 1, 2 e 3 (A1, A2 e

A3) das imagens, processadas com ruído, com relação as colunas das matrizes diagonais Σ1, Σ2e Σ3, respectivamente.

Figura 31: Gráficos referentes a imagem “peppers.png” com ruído.

Figura 32: Gráficos referentes a imagem “lena.jpg” com ruído.

Figura 33: Gráficos referentes a imagem “hawaii.jpg” com ruído.

Figura 34: Gráficos referentes a imagem “pentagono.jpg” com ruído.

24

Page 28: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

Resultado do processamento das imagens com ruído

(a) p=4, QS=0,560 (b) p=20, QS=0,769 (c) p=60, QS=0,883 (d) p=160, QS=0,960

(e) p=4, QS=0,288 (f) p=15, QS=0,452 (g) p=60, QS=0,768 (h) p=100, QS=0,889

(i) p=4, QS=0,493 (j) p=20, QS=0,715 (k) p=100, QS=0,909 (l) p=200, QS=0,953

(m) p=10, QS=0,241 (n) p=40, QS=0,550 (o) p=120, QS=0,862 (p) p=190, QS=0,950

Figura 35: Imagens: (a-d) peppers.png; (e-h) lena.jpg; (i-l) hawaii.jpg; (m-p) pentagono.jpg.

Interpretação e análise dos resultados. Os valores singulares tornam-se rapidamente peque-nos da primeira para a última coluna nas matrizes diagonais, nos quatro modos de processa-mento observados. Em todos os casos, o primeiro valor singular de cada matriz da imagem,possui um valor muito alto, e consideravelmente maior que todos os demais. Por este motivo,ele é o valor singular que “guarda” mais informações da imagem e, visivelmente, é o principalformador desta. Por outro lado, a maior parte dos valores singulares são bem pequenos e, emconsequência disto, a(s) matriz(es) da imagem pode(m) ser aproximada(s) por outra(s) de postomuito menor. Isto ocorre porque geralmente os valores de um dado elemento desta(s) matriz(es)estão próximos dos valores dos elementos vizinhos. Em outras palavras, uma “linha de píxeis”qualquer na imagem é, normalmente, muito parecida à “linha de píxeis” vizinha.

Para processamento nos modos RGB e de Intensidade, foi possível obter imagens comqualidade próxima a qualidade da imagem “original”, onde QS = 1, empregando na reconstru-ção desta um posto bem menor que o maior posto necessário para reduzir o espaço de arma-zenamento da(s) matriz(es) da imagem (Tab. 1). Isto fica claro na análise de imagens maiores,como a “mundo.jpg” e “hawaii.jpg” (Fig. 4(b) e 4(e)). Além destes resultados, os processos nomodo RGB, envolvendo imagens com ruído, mostraram que este método pode ser aplicado atémesmo em imagens onde a qualidade não é tão boa. Isto pode ser exemplificado em imagensobtidas de radares de trânsito durante à noite, que possuem ruído semelhante.

25

Page 29: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

De maneira geral, os resultados do processo de imagens nos modos HSV e Cores Inde-xadas foram satisfatórios. Entretanto, embora utilizando valores altos para o posto, algumasimagens apresentaram ruído e/ou pequenas alterações nos tons de suas cores, que provocaramdiminuições evidentes na qualidade destas. Pode-se observar isto, com clareza, no ensaio 4 coma imagem “lena.jpg”. Alguns testes realizados no modo HSV, que não são mostrados aqui, indi-cam que o ruído ocorre na banda que representa a matiz (banda 1). As distorções nas cores dasimagens são mais comuns nos processamentos do modo Cores Indexadas. Isto ocorre devidoa matriz do mapa de cores, eventualmente, apresentar cores de linhas vizinhas bem diferentes.Assim, por exemplo, suponha-se que a cor da linha x do mapa de cores seja azul e a linha x+1amarelo. Então, se a matriz da imagem aproximada, ao invés de ter o elemento ei j = x, comona matriz “original”, tiver o elemento e′i j = x+ 1, a imagem aproximada terá no píxel i j a coramarelo e não a azul. Em todo caso, em estudos futuros seria interessante pesquisar maneiraspara solucionar os problemas encontrados no modo HSV e RGB.

Por fim, conclui-se que a qualidade de imagens processadas nos modos RGB e de Inten-sidade são melhores em relação aos outros dois modos ensaiados. Além disso, os resultadoscomprovam a validade da SVD para aplicações que envolvem a redução no espaço de armaze-namento de imagens.

CONCLUSÕES

Considera-se que todos os objetivos estabelecidos foram alcançados devido aos resulta-dos obtidos mediante a aplicação do método proposto. Os resultados dos ensaios mostraramdiferenças claras na qualidade de imagens RGB, HSV, de Cores Indexadas e de Intensidade re-construídas por meio da SVD. Foi possível verificar que uma imagem reconstituída com apenasas primeiras colunas da matriz U , as primeiras linhas de V T e alguns valores singulares podemapresentar praticamente a mesma qualidade da imagem “original”.

Alguns problemas como a falta de memória ram, para processar imagens maiores que asdiscutidas, não chegaram a prejudicar na análise do método. Contudo trabalhos futuros poderãoresolver este problema, com o desenvolvimento de algoritmos, que possam dividir uma matrizcom grandes dimensões em blocos de matrizes menores, para processá-las individualmente.Outros problemas citados anteriormente, como o aparecimento de ruído em imagens HSV e oprocessamento de imagens com Cores Indexadas utilizando a SVD nas versões mais novas doMATLAB, também podem ser abordados em trabalhos futuros.

Ressalta-se o aprendizado obtido por meio deste trabalho. Foi possível estudar e compre-ender a maioria dos temas abordados em livros de graduação de Álgebra Linear, indo além doque é visto em sala de aula. Por esses e outros motivos a realização deste projeto foi de grandesatisfação.

REFERÊNCIAS

[1] MATHWORKS. Working with Images in MATLAB Graphics. 2012. Disponível em:<http://www.mathworks.com/help/techdoc/creating_plots/f2-145.html#brb6oxj >. Acessoem: 16 de julho de 2012.

[2] LEON, S. J. Álgebra Linear com Aplicações. 8. ed. [S.l.]: Editora LTC, 2011.

[3] PEDRINI, H.; SCHWARTZ, W. R. ANÁLISE DE IMAGENS DIGITAIS: Princípios,Algoritmos e Aplicações. [S.l.]: Editora Thomson Learning Edições Ltda, 2007. ISBN 978-85-221-0595-3.

26

Page 30: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

[4] ANTON, H.; BUSBY, R. C. Álgebra Linear Contemporânea. [S.l.]: Bookman, 2006.ISBN 9788536306155.

[5] KLEMA, V.; LAUB, A. The singular value decomposition: Its computation and some ap-plications. Automatic Control, IEEE Transactions on, v. 25, n. 2, p. 164 – 176, apr 1980.ISSN 0018-9286.

[6] ECKART, C.; YOUNG, G. The approximation of one matrix by another of lowerrank. Psychometrika, Springer New York, v. 1, p. 211–218, 1936. ISSN 0033-3123.10.1007/BF02288367. Disponível em: <http://dx.doi.org/10.1007/BF02288367>.

[7] BOLDRINI, J.; COSTA, S.; FIGUEREDO, V.; WETZLER, H. Álgebra Linear. 3. ed.[S.l.]: Editora Harbra ltda., 1980.

[8] POOLE, D. Álgebra Linear. 1. ed. [S.l.]: Pioneira Thomson Learning, 2004. ISBN9788522103591.

[9] MATHWORKS. Image Types. 2012. Disponível em: <http://www.mathworks.com/help/techdoc/creating_plots/f2-10709.html>. Acesso em: 16 de julho de 2012.

[10] MATHWORKS. Converting Color Data Between Color Spaces. 2012. Disponível em:<http://www.mathworks.com/help/toolbox/images/f8-20792.html>. Acesso em: 16 de ju-lho de 2012.

[11] WANG, Z.; BOVIK, A. C.; SHEIKH, H. R.; P., S. E. Image quality assessment:From error visibility to structural similarity. Image Processing, IEEE Transactionson, v. 13, n. 4, p. pp. 600–612, Abril 2004. Disponível em: <https://ece.uwaterloo.ca/~z70wang/research/ssim/>.

[12] MATHWORKS. MATLAB - The Language of Technical Computing. 2012. Disponívelem: <http://www.mathworks.com/products/matlab/index.html>. Acesso em: 19 de julho de2012.

[13] IMAGE-MAX.ORG. Image Max. 2012. Disponível em: <http://www.image-max.org/Globe_West_nasa.htm>. Acesso em: 20 de julho de 2012.

[14] COPYS.BIZ. The secret ingredient. 2012. Disponível em: <http://copys.biz/2012/07/the-secret-ingredient-of-blog-sites-top/>. Acesso em: 20 de julho de 2012.

[15] GUANABARA.INFO. Primeiras imagens do satélite da Google. 2012. Disponível em:<http://www.guanabara.info/2008/10/primeiras-imagens-do-satelite-da-google/ >. Acessoem: 20 de julho de 2012.

[16] MY-WALLPAPERS.ORG. Hanauma Bay. 2011. Disponível em: <http://www.my-wallpapers.org/picture/22254/hanauma-bay-oahu-hawaii>. Acesso em: 20 de julho de 2012.

[17] MATHWORKS. Registering an Image Using Normalized Cross-Correlation. 2012.Disponível em: <http://www.mathworks.com/products/image/examples.html?file=/products/demos/shipping/images/ipexnormxcorr2.html>. Acesso em: 20 de julho de 2012.

Nome Orientador Nome Aluno

27

Page 31: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

APÊNDICE A - CÓDIGOS FONTE

Código 2: Software IMSVD para processamento de imagens por meio da SVD.1 f u n c t i o n imsvd ( nome_imagem , modo )2 %3 % Eh recomendave l e x e c u t a r o modo i n d e x a d o no mat lab 5 . 3 com a4 % s u b s t i t u i c a o do operador | | por |5 %6 % Decomposicao em V a l o r e s S i n g u l a r e s (SVD − S i n g u l a r Value Decompos i t i on ) .7 %8 % imsvd ( imagem , modo ) produz a Decomposicao em V a l o r e s S i n g u l a r e s da ( s )9 % m a t r i z ( e s ) da IMAGEM, p r o c e s s a n d o e s t a ( s ) nos MODOs: hsv , rgb ou

10 % i n d e x a d a e , se a IMAGEM f o r de i n t e n s i d a d e , em m a t r i z de i n t e n s i d a d e .11 % Apos a Decomposicao , a fu nc ao imsvd r e c o n s t r o i a imagem p e l a aproximacao12 % do pos to , incremen tando−o em um a cada i t e r a c a o e e n t a o parando o p r o c e s s o13 % para que o u s u a r i o possa v i s u a l i z a r a imagem r e c o n s t r u i d a com o p o s t o a t u a l .14 % Para c o n t i n u a r o proces so , b a s t a c l i c a r ou manter p r e s s i o n a d a q u a l q u e r t e c l a .15 % Para i n t e r r o m p e r o p r o c e s s o p r e s s i o n e c t r l +c16 %17 % ENTRADA:18 % ( 1 ) nome_imagem : ’ nome_imagem . e x t e n s a o ’ .19 % ( 2 ) modo : ’ hsv ’ para hsv , ’ ind ’ para indexada , ’ rgb ’ para rgb e20 % ’ i n t ’ para i n t e n s i d a d e ( ex : t o n s de c i n z a ) .21 %22 % Se a imagem nao f o r de i n t e n s i d a d e s e l a s e r a p r o c e s s a d a no modo rgb e .23 % v i c e−v e r s a .24 %25 % PROGRAMA INSTITUCIONAL DE INICIACAO CIENTIFICA ( PIBIC )26 % TITULO : O t i m i z a c a o no Armazenamento de Imagens por meio da Decomposicao27 % em V a l o r e s S i n g u l a r e s28 % Aluno : Agnaldo Cesar Coelho − B o l s i s t a FUNDACAO ARAUCARIA29 % O r i e n t a d o r : Pro f . Dr . Fabio A n t o n i o D o r i n i (DAMAT)3031 %%% v e r i f i c a so o modo eh v a l i d o . Se nao f o r r e t o r n a .32 i f ~( strcmp ( modo , ’hsv’ ) | | strcmp ( modo , ’rgb’ ) | | strcmp ( modo , ’ind’ ) | | strcmp ( modo , ’int’ ) )33 f p r i n t f ( ’modo incorreto! digite help imsvd, para ajuda\n’ )34 re turn ;35 end3637 %%% l e n d o a imagem e armazenando na m a t r i z38 %%% se a imagem f o r RGB, a v a r i a v e l map nao r e c e b e nada39 [ A, map ] = imread ( nome_imagem ) ;4041 t o l e r a n c i a = 0 . 1 ; %%% t o l e r a n c i a u t i l i z a d a no c a l c u l o do p o s t o42 B = z e r o s ( s i z e (A) ) ; %%% pre−a l o c a c a o de B , m x n x d , u t i l i z a n d o z e r o s43 p = z e r o s ( 1 , 3 ) ; %%% pre−a l o c a c a o de P , 1 x 3 , u t i l i z a n d o z e r o s44 m = s i z e (A, 1 ) ; %%% q u a n t i d a d e de l i n h a s da m a t r i z A45 n = s i z e (A, 2 ) ; %%% q u a n t i d a d e de c o l u n a s da m a t r i z A46 q u a n t i d a d e _ b a n d a s = s i z e (A, 3 ) ; %%% q u a n t i d a d e de d imensoes da m a t r i z A4748 u = z e r o s (m,m, q u a n t i d a d e _ b a n d a s ) ; %%% pre−a l o c a c a o de u , m x m x d , com z e r o s49 d = z e r o s (m, n , q u a n t i d a d e _ b a n d a s ) ; %%% pre−a l o c a c a o de d , m x n x d , com z e r o s50 v = z e r o s ( n , n , q u a n t i d a d e _ b a n d a s ) ; %%% pre−a l o c a c a o de v , n x n x d , com z e r o s5152 %%% v e r i f i c a se a imagem eh RGB para e n t r a r na s e l e c a o53 i f i s r g b (A)54 %%% compara se s t r i n g em modo eh i g u a l a hsv para e n t r a r na s e l e c a o55 i f strcmp ( modo , ’hsv’ )56 %%% c o n v e r t e a m a t r i z A de rgb para hsv ( em d oub le de 0 . 0 a 1 . 0 )57 A = rgb2hsv (A) ;58 %%% compara se s t r i n g em modo eh i g u a l a i n d para e n t r a r na s e l e c a o59 e l s e i f strcmp ( modo , ’ind’ )60 %%% c o n f i g u r a a r r a y para t e r apenas uma m a t r i z ( uma dimensao )61 q u a n t i d a d e _ b a n d a s = 1 ;62 %%% c o n v e r t e n d o a imagem para INDexada63 %%% A :m x n e map : 256 x 364 [A, map ] = r g b 2 i n d (A, 256) ;65 %%% pre−a l o c a c a o de B , m x n x 1 , u t i l i z a n d o z e r o s66 B = z e r o s (m, n , q u a n t i d a d e _ b a n d a s ) ;67 end68 end6970 %%% compara se s t r i n g em modo NAO eh i g u a l a hsv para e n t r a r na s e l e c a o71 i f ~strcmp ( modo , ’hsv’ )72 %%% t o d a s as m a t r i z e s das imagens que nao s e r a o p r o c e s s a d a s como hsv73 %%% sao c o n v e r t i d a s em d oub le . O Matlab r e q u e r +1 para a c e r t o s74 A = d oub le (A) + 1 ;75 end7677 %%% l a c o f o r , v a r i a n d o de um a t e o maximo de d imensoes do a r r a y78 %%% para c a l c u l a r a svd de A para cada dimensao79 %%% e armazenar na m a t r i z u ( r e p r e s e n t a U) , d ( Sigma ) , v ( V )80 f o r banda = 1 : q u a n t i d a d e _ b a n d a s81 %%% c a l c u l a a svd de A82 [ u ( : , : , banda ) , d ( : , : , banda ) , v ( : , : , banda ) ] = svd ( A ( : , : , banda ) ) ;83 %%% c a l c u l a o p o s t o u t i l i z a n d o a soma ( sum ) da q u a n t i d a d e de84 %%% e l e m e n t o s da d i a g o n a l da m a t r i z d ( d imensao banda ) ma iores que 1 .85 %%% Se d iag ( . . . ) maior que t o l e r a n c i a r e t o r n a 1 , senao r e t o r n a 086 p ( banda ) = sum ( diag ( d ( : , : , banda ) ) > t o l e r a n c i a ) ;87 end8889 %%% se q u a n t i d a d e das d imensoes f o r 1 , o p o s t o r e c e b e o v a l o r de90 %%% do p r i m e i r o e l e m e n t o no v e t o r p91 %%% senao , r e c e b e o minimo e n t r e os p o s t o s das t r e s m a t r i z e s92 i f q u a n t i d a d e _ b a n d a s == 1

28

Page 32: Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares

93 p o s t o = p ( 1 ) ;94 e l s e95 p o s t o = min ( p ( 1 ) , min ( p ( 2 ) , p ( 3 ) ) ) ;96 end9798 %%% l a c o f o r v a r i a n d o de um a t e o p o s t o99 %%% para c a l c u l a r as m a t r i z e s mais prox imas de A ( norma F r o b e n i u s )

100 f o r i = 1 : p o s t o101102 %%% l a c o f o r v a r i a n d o de um a t e a q u a n t i d a d e de d imensoes para a103 %%% r e s c o n t r u c a o da imagem u t i l i z a n d o a expansao do p r o d u t o e x t e r n o ,104 %%% A = sigma_1 *u_1 *v_1 ’+ sigma_2 *u_2*v_2 ’ + . . . + sigma_p *u_p*v_p ’105 %%% onde p == p o s t o ( A = s o m a t o r i o de m a t r i z e s de p o s t o 1 )106 f o r banda = 1 : q u a n t i d a d e _ b a n d a s107 B ( : , : , banda ) = B ( : , : , banda ) + d ( i , i , banda ) *u ( : , i , banda ) *v ( : , i , banda ) ’ ;108 end109110 %%% compara se s t r i n g em modo eh i g u a l a hsv para e n t r a r na s e l e c a o111 i f strcmp ( modo , ’hsv’ )112 %%% most ra a imagem apos c o n v e r t e r de hsv para rgb113 imshow ( hsv2rgb (B) ) ;114 e l s e115 %%% most ra a imagem apos c o n v e r t e r de d ou b l e para u i n t 8 (0−255)116 %%% e se map nao e s t i v e r v a z i o e l e s e r a usado como mapa de c o r e s117 imshow ( u i n t 8 ( B − 1 ) , map ) ;118 end119 %%% imprime o p o s t o a t u a l de B acima da imagem . O p o s t o da imagem120 %%% p r o c e s s a d a em hsv ou rgb eh dado p e l o menor p o s t o d e n t r e as t r e s m a t r i z e s121 t i t l e ( s t r c a t ( ’posto atual=’ , num2str ( i ) , ’ , ’ , ’ posto total=’ , num2str ( p o s t o ) ) ) ;122 %%% pausa a e x i b i c a o de imagens , para eh c o n t i n u a r p r e s s i o n a r quaquer t e c l a123 pause ;124 end

Código 3: Processamento no modo RGB por meio da SVD, usando o produto matricial usual.1 f u n c t i o n imsvd_rgb ( nome_imagem , posto_max )2 %3 % imsvd ( imagem , posto_max ) produz a decompos icao das m a t r i z e s da IMAGEM,4 % p r o c e s s a n d o a imagem em rgb .5 %6 % nome_imagem >> ’ nome_imagem . e x t e n s a o ’ .7 % posto_max >> i n t e i r o > 0 . Pos to u t i l i z a d o no c a l c u l o da r e c o n s t r u c a o da m a t r i z decompos ta89 A = imread ( nome_imagem ) ; %%% l e n d o a imagem e armazenando na m a t r i z A

1011 i f i s r g b (A) %%% v e r i f i c a se a imagem eh RGB para e n t r a r na s e l e c a o12 A = d oub le (A) + 1 ; %%% c o n v e r s a o para d oub l e . Matlab r e q u e r +1 para a c e r t o s13 f o r i = 1 : 314 [U, D, V] = svd ( A ( : , : , i ) , ’econ’ ) ; %%% c a l c u l a a svd de A ( forma economica )15 p ( i ) = sum ( diag (D) > 0 . 1 ) ; %%% c a l c u l a o p o s t o1617 i f posto_max > p ( i ) | | posto_max <= 0 %%% v e r i f i c a se o p o s t o d e t e r m i n a d o p e l o18 posto_max = p ( i ) ; %%% u s u a r i o eh v a l i d o . Se nao f o r r e c e b e r a o p o s t o19 end %%% de A_i ( m a t r i z R , G ou B )2021 u = 1 : f i x ( posto_max ) ; %%% u = [1 2 3 . . . pos to_max ]22 A ( : , : , i ) = U ( : , u ) *D( u , u ) *V ( : , u ) ’ ; %%% r e s c o n t r u c a o da imagem u t i l i z a n d o23 %%% o p r o d u t o m a t r i c i a l u s u a l A=U* Sigma *V ’24 end25 p o s t o = min ( p ( 1 ) , min ( p ( 2 ) , p ( 3 ) ) ) ;26 imshow ( u i n t 8 ( A − 1 ) ) ; %%% most ra a imagem apos c o n v e r t e r de d oub l e para u i n t 8 (0−255)27 %%% com t i t u l o mos trando p o s t o e p o s t o t o t a l28 t i t l e ( s t r c a t ( ’posto=’ , num2str ( posto_max ) , ’ , ’ , ’ posto total=’ , num2str ( p o s t o ) ) ) ;29 e l s e30 f p r i n t f ( ’Imagem nao eh RGB!\n\n’ ) ;31 end

29