Ministério da Educação                 Universidade Tecnológica Federal do Paraná                 Pró-Reitoria de Pesquisa...
AGNALDO CESAR COELHO           Orientador: FABIO ANTONIO DORINIOTIMIZAÇÃO NO ARMAZENAMENTO DE IMAGENS POR MEIO DA        D...
SUMÁRIOINTRODUÇÃO                              1REVISÃO DA LITERATURA                   1MATERIAIS E MÉTODOS              ...
INTRODUÇÃO      Imagens de intensidade, como em tons de cinza, são normalmente representadas por umamatriz, onde cada elem...
Matrizes. Nesta seção, são apresentadas e definidas alguns tipos de matrizes, operações e pro-priedades.Definição 1. A Matri...
O produto interno entre duas matrizes m × n pode ser definido seguindo a mesma ideiaanterior, onde o elemento ai j da matri...
Exemplo 5. A norma de Frobenius da matriz A no Exemplo 2 é calculada como                                                 ...
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ári...
yT                                                                                                 1                    ...
do qual os vetores coluna de X são autovetores de A, X −1 é a inversa de X e D é uma matrizdiagonal formada pelos autovalo...
O diferencial da SVD está no fato desta poder ser aplicada a qualquer matriz m × n comoafirmado no teorema seguinte.Teorema...
encontrar os autovalores de AT A calcula-se                                             25 − λ    7                  det(A...
An−1 = σ1 u1 vT + σ2 u2 vT + · · · + σn−2 un−2 vT + σn−1 un−1 vT                           1          2                   ...
Figura 2: Imagem de Cores Indexadas. O píxel referente ao número cinco na matriz de dados,é a cor da quinta linha na matri...
gens eram reconstruídas com o posto igual ou muito próximo ao da “original”, devido ao ruídoapresentado nelas. A melhor so...
Isto pode ser feito diretamente, digitando: imshow(uint8(A1 − 1))           Da mesma forma, para visualizar as matrizes co...
17       % M a t r i z e s em h s v já são d o u b l e18       SE modo ! = hsv , ENTÃO19             converta A para doubl...
normados, conjuntos ortonormais, processo de ortogonalização de Gram-Schmidt); (iv) estudode autovalores e autovetores (au...
qualidade SSIM (QS) da imagem processada é com relação a imagem “original” e varia entre 0(pior qualidade) e 1 (qualidade ...
Figura 7: Modo Cores Indexadas (esquerda) e Intensidade (direita). VS de A1 com relação as colunas de Σ1 .Imagens obtidas ...
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. G...
(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: Mo...
(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: Mo...
(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...
Figura 25: Modo Cores Indexadas (esquerda) e Intensidade (direita). VS de A1 em relação as colunas de Σ1 .Imagens obtidas ...
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 Inde...
Ensaio 7. Adição de Ruído em Algumas Imagens - Somente Modo RGB      Para adicionar ruído às imagens, foi utilizado o coma...
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=1...
De maneira geral, os resultados do processo de imagens nos modos HSV e Cores Inde-xadas foram satisfatórios. Entretanto, e...
[4] ANTON, H.; BUSBY, R. C. Álgebra Linear Contemporânea. [S.l.]: Bookman, 2006.   ISBN 9788536306155.[5] KLEMA, V.; LAUB,...
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...
93          posto = p (1) ; 94   else 95          p o s t o = min ( p ( 1 ) , min ( p ( 2 ) , p ( 3 ) ) ) ; 96   end 97 98...
Próximos SlideShares
Carregando em…5
×

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

1.370 visualizações

Publicada em

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.

Publicada em: Educação
  • Seja o primeiro a comentar

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

  1. 1. Ministério da Educação Universidade Tecnológica Federal do Paraná Pró-Reitoria de Pesquisa e Pós-Graduação Relatório Final de AtividadesOtimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares vinculado ao projetoMé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
  2. 2. AGNALDO CESAR COELHO Orientador: FABIO ANTONIO DORINIOTIMIZAÇÃO NO ARMAZENAMENTO DE IMAGENS POR MEIO DA DECOMPOSIÇÃO EM VALORES SINGULARES Relatório de Pesquisa do Programa de Iniciação Científica da Universidade Tecnológica Federal do Paraná. CURITIBA, 2012
  3. 3. SUMÁRIOINTRODUÇÃO 1REVISÃO DA LITERATURA 1MATERIAIS E MÉTODOS 11RESULTADOS E DISCUSSÕES 15CONCLUSÕES 26REFERÊNCIAS 26APÊNDICE A - CÓDIGOS FONTE 28
  4. 4. 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
  5. 5. 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 j 1 , sendo que δi j = 0 para i = je δi j = 1 para i = j [2].   1 0 0 Por exemplo, a matriz identidade para n = 3 é: I = 0 1 0 . 0 0 1Definição 2. Uma matriz A, n × n, é diagonal quando ai j = 0 para i = j [7].   6 0 0 Como exemplo, a matriz identidade e a matriz A = 0 0 0  são diagonais. 0 0 −1Definiçã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]. 1 4 0 Como exemplo, considere a matriz A = , então sua transposta é −2 4 3   1 −2 A T = 4 4  . 0 3Definição 4. Uma matriz A, n × n, é dita simétrica se A = AT [2].   1 8 0 Por exemplo, é fácil observar que a matriz A = 8 4 3  é simétrica. 0 3 10Definiçã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−1 A = 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   4 T −3 = (−1) × 4 + 0 × (−3) + 2 × 1 = −2. x, y = x y = (−1, 0, 2) 1 1δ é o operador delta de Kronecker ij 2
  6. 6. 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 m n A, B = ∑ ∑ ai j bi j . (1) i=1 j=1 1 3 1 3Exemplo 2. Se A = e B= . Então −2 4 4 2 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 = 2 2 2 x1 + x2 + · · · + xn . (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. 1 Para obter um vetor unitário u a partir de um vetor não nulo x, basta fazer u = x. xExemplo 4. O vetor unitário obtido a partir do vetor x do Exemplo 1, com a norma calculadano Exemplo 3, é 1 1 −1 2 T u= x = (−1, 0, 2)T = , 0, x 5 5 5 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 1 m n 2 1 A F = ( A, A ) =2 ∑ ∑ a2j i . (3) i=1 j=1 3
  7. 7. 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−1 Q. Isto ocorrese, e somente se, Q é invertível. Logo QT = Q−1 [8]. T T 1 1 1 1Exemplo 7. Seja a matriz ortogonal Q = x1 x2 , onde x1 = √2 , − √2 e x2 = √2 , √2 ,então 1 1 1 1 T √ 2 − √2 √ 2 √ 2 = x1 , x1 x1 , x2 1 0 Q Q= 1 1 1 1 = · √ 2 √ 2 − √2 √2 x2 , x1 x2 , x2 0 1 4
  8. 8. 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 cos 0° = 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 é       1 1×4 1×3 1×2 4 3 2 xyT = 2 (4, 3, 2) = 2 × 4 2 × 3 2 × 2 =  8 6 4 . 3 3×4 3×3 3×2 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      T x11 x12 · · · x1n y11 y21 · · · yk1 y1  x21 x22 · · · x2n   y12 y22 · · · yk2  yT  T   2X = . .  = x1 , x2 , · · · , xn e Y =  . .  =  . ·    . .  . . . . .  .  . . . . .  . . . xm1 xm2 · · · xmn y1n y2n · · · ykn yT nEntão, a multiplicação XY T pode ser executada da seguinte forma: 5
  9. 9. yT   1 yT   2 XY T = x1 , x2 , · · · , xn  .  = x1 yT + x2 yT + · · · + xn yT · 1 2 n . . yT n 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 = 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]. −1 0Exemplo 10. Seja a matriz A = . A equação característica associada é 0 1 −1 0 λ 0 −1 − λ 0 det (A − λ I) = − = = (−1 − λ )(1 − λ ) = 0· 0 1 0 λ 0 1−λ 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: −1 + 1 0 x1 0 (A − (−1)I)x1 = = . 0 1+1 x2 0 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
  10. 10. 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 −1 AX = 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 = c1 x1 + c2 x2 + · · · + cn xn · (6)onde c1 , c2 , . . . , cn são escalares [4]. Vale observar, que se c2 = c3 = · · · = cn = 0 e c1 = 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 λ1 0 −1 0 1 0 D= = e X = x1 x2 = · 0 λ2 0 1 0 1 1 0 −1 0 1 0 −1 0Como X = X −1 , tem-se A = XDX −1 = = · 0 1 0 1 0 1 0 1Observaçã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
  11. 11. 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 U T = U −1 ), tem-se AT A = (UΣV T )T (UΣV T ) = (ΣV T )T U T UΣV T = V Σ T ΣV T (8) AAT = (UΣV T )(UΣV T )T = UΣV T V Σ T U T = UΣ Σ T U T . (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 λ= ≥ 0. x 2Pela 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á  T  v1  .   .T   σ1 . .. A = ( u1 ,...,ur ,ur+1 ,...,um )  . O  vr  ·  vT  σr  r+1  O O  . . . vT n Efetuando-se a multiplicação por meio da expansão do produto externo tem-se A = σ1 u1 vT + σ2 u2 vT + · · · + σr ur vT . 1 2 r (11) 4 4 4 −3 4 4 25 7Exemplo 12. Considere A = , então AT A = = · Para −3 3 4 3 −3 3 7 25 8
  12. 12. encontrar os autovalores de AT A calcula-se 25 − λ 7 det(AT A − λ I) = = λ 2 − 50λ + 576 = 0. 7 25 − λ √ √√ autovalores são λ1 = 32 e λ2 = 18. Os valores singulares de A são σ1 =Os λ1 = 32 e σ2 = 18. O autovetor v2 é obtido por meio da equação 25 − 18 7 v1 0 (AT A − 18I)v2 = = · 7 25 − 18 v2 0Resolvendo-se o sistema, obtém-se (v1 , v2 )T = (−1, 1)T . Como a matriz V é ortogonal, é ne- 1 1 −1 −1 1cessário normalizá-lo, fazendo: v2 = ( − 1, 1)T = √ = √ ,√ · (−1, 1)T 2 1 2 2 Procedendo da mesma maneira, encontra-se o autovetor normalizado v1 associado a λ1 = 1 132, v1 = ( √2 , √2 )T . Com estes resultados, pode-se construir as matrizes Σ e V . Portanto √ 1 √ −1 √ 32 √0 2 2 Σ= e V= 1 1 . 0 18 √ √ 2 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 = σ j u j ou, 1equivalentemente, u j = Av j . Então, σj 1 √ −1 √ 1 1 4 4 2 1 1 4 4 2 0 u1 = Av1 = √ 1 = , u2 = √ 1 = · σ1 32 −3 3 √ 0 18 −3 3 √ 1 2 2Segue-se então que √ √1 1 √ 1 0 T 32 √0 2 2 A = UΣV = −1 1 · 0 1 0 18 √ √ 2 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 = 2 2 2 σ1 + σ2 + · · · + σn · 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 = 2 2 2 σk+1 + σk+2 + · · · + σn · (12) FObservação 3. A equação (12) diz que se a matriz A tem posto n, onde A = σ1 u1 vT + σ2 u2 vT + 1 2· · · + σn un vT , então n 9
  13. 13. An−1 = σ1 u1 vT + σ2 u2 vT + · · · + σn−2 un−2 vT + σn−1 un−1 vT 1 2 n−2 n−1 An−2 = σ1 u1 vT + σ2 u2 vT + · · · + σn−2 un−2 vT 1 2 n−2 . . . A1 = σ1 u1 vT 1serã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. (b) Imagem RGB. Três matrizes combinadas são Apenas uma matriz representa imagem. utilizadas 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
  14. 14. 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
  15. 15. 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 σi ui vT forem adicionados na soma da expansão ido 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 , . . . , u p ), Σ = diagonal(σ1 , . . . , σ p ) e V = (v1 , . . . , v p ). 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 m×n p< . (13) (m + n + 1) 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 Σ1V1T 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
  16. 16. 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 deve satisfazer 40 × 40 p< = 19. (40 + 40 + 1) (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 o Exemplo 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 novo incremento 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 parar novamente a execução do programa. A aplicação é finalizada quando o posto da imagem em aproximada 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 da imagem. Código 1: Pseudocódigo do software desenvolvido para o processamento de imagens. Fonte: Autoria Própria. 1 % i m s v d ( imagem , modo ) p r o c e s s a IMAGENs n o s MODOs: HSV , RGB , C o r e s I n d e x a d a s ( i n d ) e , também , de 2 % 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 ordem 3 imsvd ( imagem , modo ) 4 % A == (A1 , A2 , A3 ) é um " a r r a y " m × n × 3 s e A f o r RGB ou HSV . Caso contrário , A == A1 . Os Ai s são a s 5 % m a t r i z e s r e f e r e n t e s a s b a n d a s 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 d a s i m a g e n s i n d e x a d a s . Se a imagem f o r RGB , map será v a z i a 7 [ A,map ] = l e r ( imagem ) 8 SE A f o r RGB, ENTÃO 9 SE modo == hsv , ENTÃO10 c o n v e r t a A p a r a hsv11 SENÃO , SE modo == i n d , ENTÃO12 c o n v e r t a A p a r a o modo C o r e s I n d e x a d a s , a r m a z e n a n d o13 256 c o r e s em map ( k == 2 5 6 )14 FIM SE15 FIM SE16 % A é c o n v e r t i d o p a r a d o u b l e p a r a que o MATLAB p o s s a e f e t u a r o s cálculos . 13
  17. 17. 17 % M a t r i z e s em h s v já são d o u b l e18 SE modo ! = hsv , ENTÃO19 converta A para double20 FIM SE21 % dimensão ( A ) == 3 p a r a r g b e h s v ou dimensão ( A ) == 1 p a r a 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 s v d de Ai == Ui ΣiViT , onde Ui == (ui1 , . . . , uim ) , Σi == d i a g o n a l (σi11 , . . . , σinn )24 % e Vi == (vi1 , . . . , vin )25 [Ui , Σi ,Vi ] = s v d ( 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 " n u l o . A tem a s 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 Ai = Ai + σi j j ui j vTj i39 FIM PARA40 A =A41 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 converta A para uint846 FIM SE47 mostrar (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 c o n t i n u a r 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álculos realizados para formar a imagem atual, de posto p − 1, são armazenados para serem utilizados na construção da imagem seguinte, de posto p. Isto reduz o custo computacional evitando-se a aplicação do produto entre as matrizes Ui , Σi , e ViT 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 produto matricial usual do MATLAB, Ui ∗ Σi ∗ViT 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 imagem foi 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 produto matricial 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 e dimensão, mudança de base, espaços linha e coluna, transformações lineares, representação matricial 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
  18. 18. 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 L TEX. ARESULTADOS 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.pngFigura 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 ΣiViT ). Para os casosde Imagens de Intensidade e com Cores Indexadas, A1 representa a única banda destas. A 15
  19. 19. 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 8 Posto mundo.jpg 1798 - 1816 1799 Posto lena.jpg 255 197 255 256 Posto pentagono.jpg 382 346 382 382 Posto hawaii.jpg 1200 641 1200 1200 Posto 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 singularesFigura 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
  20. 20. 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
  21. 21. 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
  22. 22. (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
  23. 23. (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
  24. 24. (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
  25. 25. 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
  26. 26. 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
  27. 27. Ensaio 7. Adição de Ruído em Algumas Imagens - Somente Modo RGB Para adicionar ruído às imagens, foi utilizado o comando imnoise do MATLAB, com aopçã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.jpg Posto 384 256 1200 382 Fonte: Autoria Própria.Gráficos dos valores singulares Os gráficos desta seção, referem-se aos valores singulares das bandas 1, 2 e 3 (A1 , A2 eA3 ) 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
  28. 28. 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
  29. 29. 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 ei 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 >. Acesso em: 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
  30. 30. [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 lower rank. 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. ISBN 9788522103591.[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 Transactions on, 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ível em: <http://www.mathworks.com/products/matlab/index.html>. Acesso em: 19 de julho de 2012.[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/ >. Acesso em: 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=/produc ts/demos/shipping/images/ipexnormxcorr2.html>. Acesso em: 20 de julho de 2012. Nome Orientador Nome Aluno 27
  31. 31. 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 r e c o m e n d a v e l e x e c u t a r o modo i n d e x a d o no m a t l a b 5 . 3 com a 4 % s u b s t i t u i c a o do o p e r a d o r | | p o r | 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 V a l u e D e c o m p o s i t i o n ) . 7 % 8 % i m s v d ( imagem , modo ) p r o d u z 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 ) n o s MODOs: hsv , r g b ou10 % i n d e x a d a e , s e 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 f u n c a o i m s v d r e c o n s t r o i a imagem p e l a a p r o x i m a c a o12 % do p o s t o , i n c r e m e n t a n d o −o em um a cada i t e r a c a o e e n t a o p a r a n d o o p r o c e s s o13 % p a r a que o u s u a r i o p o s s a 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 p r o c e s s o , b a s t a c l i c a r ou m a n t e r 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 ’ p a r a hsv , ’ i n d ’ p a r a i n d e x a d a , ’ rgb ’ p a r a r g b e20 % ’ i n t ’ p a r a i n t e n s i d a d e ( e x : 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 r g b 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 I m a g e n s p o r meio da Decomposicao27 % em V a l o r e s S i n g u l a r e s28 % A l u n o : A g n a l d o C e s a r C o e l h o − B o l s i s t a FUNDACAO ARAUCARIA29 % O r i e n t a d o r : P r o f . Dr . F a b i o A n t o n i o D o r i n i (DAMAT)3031 %%% v e r i f i c a s o 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 ajudan’ )34 return ;35 end3637 %%% l e n d o a imagem e armazenando na m a t r i z38 %%% s e 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 ] = i m r e a d ( nome_imagem ) ;4041 tolerancia = 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 = zeros (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 i m e n s o e s 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 = zeros (n , n , quantidade_bandas ) ; % %% 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 s e a imagem eh RGB p a r a e n t r a r na s e l e c a o53 i f i s r g b (A)54 % %% compara s e s t r i n g em modo eh i g u a l a h s v p a r a 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 r g b p a r a h s v ( em d o u b l e de 0 . 0 a 1 . 0 )57 A = rgb2hsv (A) ;58 % %% compara s e s t r i n g em modo eh i g u a l a i n d p a r a 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 p a r a t e r a p e n a s uma m a t r i z ( uma d i m e n s a o )61 quantidade_bandas = 1;62 % %% c o n v e r t e n d o a imagem p a r a INDexada63 % %% A :m x n e map : 256 x 364 [A, map ] = r g b 2 i n d (A, 2 5 6 ) ;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 s e s t r i n g em modo NAO eh i g u a l a h s v p a r a 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 a s m a t r i z e s d a s i m a g e n s que nao s e r a o p r o c e s s a d a s como h s v73 % %% s a o c o n v e r t i d a s em d o u b l e . O M a t l a b r e q u e r +1 p a r a a c e r t o s74 A = d o u b l e (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 i m e n s o e s do a r r a y78 %%% p a r a c a l c u l a r a s v d de A p a r a cada d i m e n s a o79 %%% e a r m a z e n a r na m a t r i z u ( r e p r e s e n t a U) , d ( Sigma ) , v ( V )80 for 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 s v d de A82 [ u ( : , : , b a n d a ) , d ( : , : , b a n d a ) , v ( : , : , b a n d a ) ] = svd ( A ( : , : , b a n d a ) ) ;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 i m e n s a o banda ) m a i o r e s que 1 .85 %%% Se d i a g ( . . . ) m a i o r que t o l e r a n c i a r e t o r n a 1 , s e n a o r e t o r n a 086 p ( b a n d a ) = sum ( d i a g ( d ( : , : , b a n d a ) ) > t o l e r a n c i a ) ;87 end8889 %%% s e q u a n t i d a d e d a s d i m e n s o e s 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 o s p o s t o s d a s 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
  32. 32. 93 posto = p (1) ; 94 else 95 p o s t o = min ( p ( 1 ) , min ( p ( 2 ) , p ( 3 ) ) ) ; 96 end 97 98 %%% 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 o 99 %%% p a r a c a l c u l a r a s m a t r i z e s m a i s p r o x i m a s de A ( norma F r o b e n i u s )100 for i = 1: posto101102 %%% 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 i m e n s o e s p a r a 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 e x p a n s a o do p r o d u t o e x t e r n o ,104 %%% A = s i g m a _ 1 * u_1 * v_1 ’+ s i g m a _ 2 * u_2 * v_2 ’ + . . . + s i g m a _ 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 for 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 s e s t r i n g em modo eh i g u a l a h s v p a r a e n t r a r na s e l e c a o111 i f strcmp ( modo , ’hsv’ )112 %%% m o s t r a a imagem a p o s c o n v e r t e r de h s v p a r a r g b113 imshow ( hsv2rgb (B) ) ;114 else115 %%% m o s t r a a imagem a p o s c o n v e r t e r de d o u b l e p a r a u i n t 8 (0 −255)116 %%% e s e map nao e s t i v e r v a z i o e l e s e r a u s a d o como mapa de c o r e s117 imshow ( u i n t 8 ( B − 1 ) , map ) ;118 end119 %%% i m p r i m e 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 h s v ou r g b eh dado p e l o menor p o s t o d e n t r e a s 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 %%% p a u s a a e x i b i c a o de imagens , p a r a eh c o n t i n u a r p r e s s i o n a r q u a q u e r 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 i m s v d _ r g b ( nome_imagem , p o s t o _ m a x ) 2 % 3 % i m s v d ( imagem , p o s t o _ m a x ) p r o d u z a d e c o m p o s i c a o d a s 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 r g b . 5 % 6 % nome_imagem >> ’ nome_imagem . e x t e n s a o ’ . 7 % p o s t o _ m a x >> i n t e i r o > 0 . P o s t o 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 d e c o m p o s t a 8 9 A = i m r e a d ( nome_imagem ) ; %%% l e n d o a imagem e armazenando na m a t r i z A 10 11 i f i s r g b (A) % %% v e r i f i c a s e a imagem eh RGB p a r a e n t r a r na s e l e c a o 12 A = d o u b l e (A) + 1 ; % %% c o n v e r s a o p a r a d o u b l e . M a t l a b r e q u e r +1 p a r a a c e r t o s 13 for i = 1:3 14 [U, D, V] = svd ( A ( : , : , i ) , ’econ ’ ) ; % %% c a l c u l a a s v d de A ( f o r m a e c o n o m i c a ) 15 p ( i ) = sum ( d i a g (D) > 0 . 1 ) ; % %% c a l c u l a o posto 16 17 i f p o s t o _ m a x > p ( i ) | | p o s t o _ m a x <= 0 % %% v e r i f i c a s e o p o s t o d e t e r m i n a d o p e l o 18 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 o 19 end %%% de A _ i ( m a t r i z R , G ou B ) 20 21 u = 1 : f i x ( posto_max ) ; % %% u = [ 1 2 3 . . . p o s t o _ m a x ] 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 o 23 %%% 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 end 25 p o s t o = min ( p ( 1 ) , min ( p ( 2 ) , p ( 3 ) ) ) ; 26 imshow ( u i n t 8 ( A − 1 ) ) ; % %% m o s t r a a imagem a p o s c o n v e r t e r de d o u b l e p a r a u i n t 8 (0 −255) 27 % %% com t i t u l o m o s t r a n d o p o s t o e p o s t o t o t a l 28 t i t l e ( s t r c a t ( ’posto=’ , num2str ( p o s t o _ m a x ) , ’ , ’ , ’ posto total=’ , num2str ( p o s t o ) ) ) ; 29 else 30 f p r i n t f ( ’Imagem nao eh RGB!nn’ ) ; 31 end 29

×