SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
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
AGNALDO CESAR COELHO
           Orientador: FABIO ANTONIO DORINI




OTIMIZAÇÃ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
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
INTRODUÇÃO

      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 [1]. 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.
      Aplicando a SVD a uma matriz com m linhas e n colunas, que é simplesmente a fatoração
desta em um produto UΣV T , é possível diminuir o espaço de armazenamento de mn para um
múltiplo pequeno de m + n + 1 [2]. Isto porque, elementos de uma dada linha da matriz tem
valores muito semelhantes aos elementos correspondentes das linhas vizinhas (essa observação
também vale para as colunas), pois, nas imagens, frequentemente a cor associada a um dado
píxel está próxima a cor dos píxeis vizinhos.
      Em imagens representadas por matrizes tridimensionais (m × n × 3), como por exemplo
as 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 a
estas 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 ser
aplicada 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 em
diversas 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 essencial
aprofundar 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, apenas
quatro 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 de
imagens por meio da Decomposição em Valores Singulares; (ii) Analisar imagens reconstruídas
pelo método da SVD, com a utilização de quantias distintas de dados. Assim, variando entre
um conjunto mínimo e máximo de valores necessários para preservar características úteis das
imagens; (iii) Examinar a qualidade de imagens processadas com a SVD após a conversão
destas, 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) consiste
em fatorar uma matriz qualquer em um produto UΣV T [2]. Ela foi demonstrada pela primeira
vez por Beltrami e Jordan na década de 1870, para matrizes quadradas reais. Após, Autonne
demonstrou a decomposição SVD para matrizes quadradas complexas. Em 1936, Carl Eckart e
Gale 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
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 = j
e δi j = 1 para i = j [2].
                                                                     
                                                           1 0 0
       Por exemplo, a matriz identidade para n = 3 é: I = 0 1 0 .
                                                           0 0 1
Definiçã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 −1
Definição 3. A transposta de uma matriz A, m × n, é representada por AT , n × m, cujas colunas
sã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 3

Definiçã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      10
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−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 diversas
operações. Por exemplo, medir a distância entre duas matrizes ou obter um vetor unitário (vetor
de tamanho um).
      Primeiramente será definido o produto interno entre dois vetores pertencentes ao espaço
vetorial Rn , tratados aqui como duas matrizes n × 1. Dessa forma, entende-se por Rn o conjunto
constituí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 é dado
pelo 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
O produto interno entre duas matrizes m × n pode ser definido seguindo a mesma ideia
anterior, onde o elemento ai j da matriz A é multiplicado pelo seu correspondente bi j da matriz
B [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 3
Exemplo 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 tamanho
de um vetor ou uma matriz. E, pode também ser utilizada para medir a distância entre vetores
ou 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 definir
diversos tipos de normas, desde que sejam satisfeitas algumas condições. Estas condições não
serã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 igual
a zero. E ainda, para que ela seja igual a zero, o vetor precisa ser nulo, ou seja, todas as suas
componentes devem ser iguais a zero. Isto está de acordo com a definição de comprimento ou
distância.
                                                                                        1
      Para obter um vetor unitário u a partir de um vetor não nulo x, basta fazer u =      x.
                                                                                        x
Exemplo 4. O vetor unitário obtido a partir do vetor x do Exemplo 1, com a norma calculada
no 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 deriva
do 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
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. Por
meio 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 B
sã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 o
produto 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ão
o 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 da
SVD. Além disso, o Teorema 1 é proveitoso na discussão e compreensão de ortogonalidade que
será visto na seção seguinte.

Ortogonalidade. A palavra ortogonal significa ângulo reto [8]. Neste contexto, dois vetores
sã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 um
melhor 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 estarem
ortogonais entre si, basta que um deles, x ou y, seja nulo ou senão o ângulo entre eles seja de
90°.
      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 um
deles, obtém-se o que é conhecida por matriz ortogonal. Diz-se, então, que os vetores coluna
desta matriz formam um conjunto ortonormal em Rn .
Definição 12. Uma matriz Q, n × n, é denominada matriz ortogonal se seus vetores coluna
formam 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 ocorre
se, e somente se, Q é invertível. Logo QT = Q−1 [8].
                                                                          T                 T
                                                          1      1          1   1
Exemplo 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
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 preservarem
produtos 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, por
meio da SVD.

Produto externo. O produto externo discutido aqui não é o produto vetorial usual. Aquele
diferentemente 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 coluna
x, por uma 1 × n, vetor linha yT . Essa operação resulta em uma matriz n × n e é conhecida por
produto 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 resultante
sempre terá posto 1. É proveitoso relembrar que o posto de uma matriz A é igual ao número de
linhas não nulas em qualquer forma escalonada por linhas de A [4].
      Conforme abordado em Leon (2011), é possível particionar uma matriz C em diversas
submatrizes, traçando-se retas horizontais entre as linhas e verticais entre as colunas [2]. Estas
partições são chamadas de blocos. A técnica pode ser utilizada para efetuar a multiplicação
por blocos entre duas matrizes A e B, devidamente particionadas. Se os blocos tiverem as
dimensões apropriadas, a multiplicação de blocos poderá ser realizada da mesma maneira que
a 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
                                                                                          n

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




                                                                                                5
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 a
maior parte do processo de fatoração de uma matriz A, m × n, em um produto UΣV T envolve os
mesmos métodos e conceitos desenvolvidos aqui. O objetivo agora é, por meio de autovalores e
autovetores, 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. Por
ora, o que pretende-se é: encontrar vetores, não nulos, para uma matriz quadrada A, que quando
multiplicados por ela se comportem como se estivem sendo multiplicados por um escalar λ . Ou
seja, 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 vetor
x, 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 sistema
deve 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ão
obtidos 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 grau
n em λ . Os vetores x, soluções do sistema, são os chamados autovetores de A associados ao
autovalor λ [2, 4].
                                −1 0
Exemplo 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 associados
a λ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 forma
idêntica, para encontrar os autovetores para λ2 resolve-se o sistema: (A − 1I)x2 = 0. Deste
modo, 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, tentar
resolver o problema de fatoração de uma matriz A, n × n, em um produto da forma XDX −1 ,

                                                                                               6
do qual os vetores coluna de X são autovetores de A, X −1 é a inversa de X e D é uma matriz
diagonal formada pelos autovalores de A.
Definição 14. Uma matriz A, n × n, é dita diagonalizável se existir uma matriz não singular X
e 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 autovetores
linearmente independentes [4].
      Dizer que A tem n autovetores linearmente independentes, significa dizer que nenhum
destes n autovetores de A é combinação linear dos outros n − 1 autovetores. O motivo está na
matriz diagonalizante X, porque pela Definição 14, X deve ser não singular. Logo, para que X
seja não singular, os vetores colunas de X, que são os autovetores de A, devem ser linearmente
independentes. 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 0
Como X = X −1 , tem-se A = XDX −1 =                                          =      ·
                                                  0 1        0 1         0 1    0 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 problema
matemá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 a
distâ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 associados
a autovalores distintos são ortogonais [2].

                                                                                                     7
O diferencial da SVD está no fato desta poder ser aplicada a qualquer matriz m × n como
afirmado no teorema seguinte.
Teorema 6 (SVD de uma matriz). Se A é uma matriz m × n, então existe uma Decomposição
em 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 elementos
fora da diagonal principal são todos iguais a zero e cujo os elementos da diagonal são os valores
singulares (σ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 Teorema
2 (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, eles
també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 2

Pela Definição 14, V diagonaliza AT A e, portanto, os vetores coluna de V (v1 , . . . , vn ) são os
autovetores de AT A. E ainda, como U diagonaliza AAT , os vetores coluna de U (u1 , . . . , um ) são
autovetores 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 A
satisfazem
                                σ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 diferentes
de 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 , com
posto 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 7
Exemplo 12. Considere A =             , então AT A =                                       =       · Para
                                 −3 3                4 3                              −3 3    7 25


                                                                                                        8
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   0

Resolvendo-se o sistema, obtém-se (v1 , v2 )T = (−1, 1)T . Como a matriz V é ortogonal, é ne-
                                             1                    1 −1           −1 1
cessá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    1
32, 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 por
V , à direita, em ambos os lados de A = UΣV T , obtendo AV = UΣ . Logo, Av j = σ j u j ou,
                         1
equivalentemente, 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                                                      2

Segue-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 existe
uma matriz A , m × n, de posto k, onde 0 < k < r, tal que A é a matriz mais próxima de A em
relaçã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)
                                             F


Observaçã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
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
                           1

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

Imagem. A maioria das imagens são representadas como matrizes, onde cada elemento de uma
matriz corresponde a um píxel da imagem [1]. Por exemplo, a figura 1(a) mostra uma imagem
de intensidade em tons de cinza, na qual cada píxel da imagem é representada por um elemento
da matriz com valor em ponto flutuante, variando entre 0,0000 (preto) a 1,0000 (branco). No
entanto, para algumas imagens, como por exemplo as RGB (Red, Green, Blue), são necessárias
três matrizes de mesma dimensão, onde a primeira destas (banda 1) representa as intensidades
em tons de vermelho; a segunda (banda 2) em tons de verde; e a terceira (banda 3) em tons de
azul. Deste modo, conforme mostram os números em negrito na figura 1(b), representa-se a
cor de cada píxel pela combinação das intensidades de vermelho, verde e azul por elementos na
mesma 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ês
matrizes. No entanto, a primeira representa a matiz (tonalidade), a segunda a saturação e a
terceira 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 suas
representaçõ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 da
matriz map [9, 10].
      De fato, os valores de cada elemento das matrizes que representam imagens RGB, com
Cores 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
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 convertidas
para imagens de Intensidade em tons de cinza antes de serem submetidas para avaliação do
SSIM. O valor referente a qualidade das imagens varia entre o intervalo de números flutuantes
0,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 em
http://www.mathworks.com/help/. O código fonte do IMSVD pode ser encontrado no
APÊNDICE A - CÓDIGOS FONTE.
      O software IMSVD, para processamento de imagens por meio da SVD, foi desenvolvido
com 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. Elas
foram processadas via IMSVD, nos modos HSV, RGB, Cores Indexadas e de Intensidade. Os
processamentos 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 utilizado
o 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 instalados
em 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
gens eram reconstruídas com o posto igual ou muito próximo ao da “original”, devido ao ruído
apresentado nelas. A melhor solução encontrada para este problema foi processar as imagens
na versão 5.3 do MATLAB.

Justificativa e análise do método. Por que a SVD é útil para otimizar o armazenamento de
imagens? 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, em
relaçã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
                                                               i
do 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 ui
de 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 das
três matrizes que as representam (isto pode ser melhor observado no pseudocódigo do código
1).
      É 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 , assim
como 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 a
aplicaçã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 possui
muitos 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 qualidade
próxima a da imagem “original”. O exemplo seguinte demonstra a aplicação do método com
uma 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 posto
40 (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 comando
A = imread( mozilla. j pg );
      O comando seguinte converte a imagem, lida, para uma imagem de intensidade em tons
de 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 em
um 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
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ÃO
10                         c o n v e r t a A p a r a hsv
11                 SENÃO , SE modo == i n d , ENTÃO
12                         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 o
13                         256 c o r e s em map ( k == 2 5 6 )
14                 FIM SE
15        FIM SE
16        % 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       % M a t r i z e s em h s v já são d o u b l e
18       SE modo ! = hsv , ENTÃO
19             converta A para double
20       FIM SE
21       % 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 s
22       PARA i == 1 até v a l o r da dimensão ( A ) FAÇA
23            % 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 PARA
28       SE dimensão ( A ) == 1 , ENTÃO
29             p o s t o = p1
30       SENÃO
31             p o s t o = mínimo ( p1 , p2 , p3 )
32       FIM SE
33       % 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 =O
35       PARA j == 1 até o v a l o r do p o s t o FAÇA
36            PARA i == 1 até o v a l o r da dimensão ( A ) FAÇA
37                     % expansão do p r o d u t o e x t e r n o
38                     Ai = Ai + σi j j ui j vTj
                                              i
39            FIM PARA
40            A =A
41            SE modo == hsv , ENTÃO
42                      c o n v e r t a A p a r a RGB
43            SENÃO
44                     % 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 uint8
46            FIM SE
47             mostrar (A )
48             pausar iteração
49            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ÃO
50                      c o n t i n u a r iteração
51            FIM SE
52       FIM PARA
53   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
normados, conjuntos ortonormais, processo de ortogonalização de Gram-Schmidt); (iv) estudo
de autovalores e autovetores (autovalores e autovetores, diagonalização, matrizes autoadjuntas,
matrizes positivas definidas); (v) decomposição SVD de uma matriz; (vi) aplicações da SVD
em “compressão” de imagens; (vii) redação do relatório final em L TEX.
                                                                  A


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ção
e análise dos resultados. As imagens utilizadas nos ensaios são exibidas na figura 4 e suas
informaçõ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 comando
spiral do MATLAB.

Tabela 1: Informações das imagens na figura 4. A coluna R.A Posto quer dizer que a redução
no 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 e
A3 representam as bandas 1, 2 e 3 da imagem RGB ou HSV (Ai = Ui ΣiViT ). Para os casos
de Imagens de Intensidade e com Cores Indexadas, A1 representa a única banda destas. A


                                                                                               15
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, ele
as 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, Cores
Indexadas 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 das
matrizes computadas, estão dentro do intervalo de números inteiros de 0 a 255. Já no modo
HSV 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
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
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
(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
(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
(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
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
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
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 a
opção ’speckle’ (ruído multiplicativo). A tabela 3 exibe o posto de imagens da figura 4, usadas
neste 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 e
A3 ) das imagens, processadas com ruído, com relação as colunas das matrizes diagonais Σ1 , Σ2
e Σ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
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 principal
formador desta. Por outro lado, a maior parte dos valores singulares são bem pequenos e, em
consequência disto, a(s) matriz(es) da imagem pode(m) ser aproximada(s) por outra(s) de posto
muito 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 com
qualidade 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 no
modo 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 imagens
obtidas de radares de trânsito durante à noite, que possuem ruído semelhante.

                                                                                            25
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, algumas
imagens apresentaram ruído e/ou pequenas alterações nos tons de suas cores, que provocaram
diminuições evidentes na qualidade destas. Pode-se observar isto, com clareza, no ensaio 4 com
a 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 das
imagens são mais comuns nos processamentos do modo Cores Indexadas. Isto ocorre devido
a 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 + 1
amarelo. Então, se a matriz da imagem aproximada, ao invés de ter o elemento ei j = x, como
na matriz “original”, tiver o elemento ei j = x + 1, a imagem aproximada terá no píxel i j a cor
amarelo e não a azul. Em todo caso, em estudos futuros seria interessante pesquisar maneiras
para 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 resultados
comprovam 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 mostraram
diferenç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 apenas
as primeiras colunas da matriz U, as primeiras linhas de V T e alguns valores singulares podem
apresentar praticamente a mesma qualidade da imagem “original”.
       Alguns problemas como a falta de memória ram, para processar imagens maiores que as
discutidas, não chegaram a prejudicar na análise do método. Contudo trabalhos futuros poderão
resolver este problema, com o desenvolvimento de algoritmos, que possam dividir uma matriz
com 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 o
processamento de imagens com Cores Indexadas utilizando a SVD nas versões mais novas do
MATLAB, 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 do
que é visto em sala de aula. Por esses e outros motivos a realização deste projeto foi de grande
satisfaçã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
[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
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 ou
10   %       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 o
12   %      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 o
13   %      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 +c
16   %
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 e
20   %                                      ’ 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 Decomposicao
27   %                       em V a l o r e s S i n g u l a r e s
28   %      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 ARAUCARIA
29   %       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)
30
31   %%% 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   end
36
37   %%% l e n d o a imagem e armazenando na m a t r i z
38   %%% 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 nada
39   [ A, map ] = i m r e a d ( nome_imagem ) ;
40
41   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 o
42   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 s
43   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 s
44   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 A
45   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 A
46   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 A
47
48   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 s
49   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 s
50   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 s
51
52   %%% 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
53   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 o
55         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 o
59         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 INDexada
63                  % %% A :m x n e map : 256 x 3
64                 [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 s
66                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         end
68   end
69
70   %%% 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 o
71   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 v
73        % %% 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 s
74        A = d o u b l e (A) + 1 ;
75   end
76
77   %%%   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 y
78   %%%   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 o
79   %%%   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 s
81         %%% c a l c u l a a s v d de A
82         [ 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 de
84         %%% 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 0
86         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   end
88
89   %%% 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 de
90   %%% do p r i m e i r o e l e m e n t o no v e t o r p
91   %%% 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 s
92   i f q u a n t i d a d e _ b a n d a s == 1




                                                                                                                                                                       28
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: posto
101
102          %%%   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 a
103          %%%   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 s
107                B ( : , : , banda ) = B ( : , : , banda ) + d ( i , i , banda ) *u ( : , i , banda ) *v ( : , i , banda ) ’ ;
108          end
109
110          %%% 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 o
111          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 b
113                  imshow ( hsv2rgb ( B ) ) ;
114          else
115                  %%% 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 s
117                  imshow ( u i n t 8 ( B − 1 ) , map ) ;
118          end
119          %%% 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 imagem
120          %%% 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 s
121          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 a
123          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

Mais conteúdo relacionado

Mais procurados

12 eac proj vest mat módulo 2 matrizes e sistemas
12 eac proj vest mat módulo 2 matrizes e sistemas12 eac proj vest mat módulo 2 matrizes e sistemas
12 eac proj vest mat módulo 2 matrizes e sistemas
con_seguir
 
Anexo ma aula_fd_unidade1
Anexo ma aula_fd_unidade1Anexo ma aula_fd_unidade1
Anexo ma aula_fd_unidade1
Carmem Almeida
 
Redes Neurais: Técnicas Bayesianas
Redes Neurais: Técnicas BayesianasRedes Neurais: Técnicas Bayesianas
Redes Neurais: Técnicas Bayesianas
Renato Vicente
 
funçoes
funçoesfunçoes
funçoes
tagma33
 
Redes Neurais: classificação e regressão
Redes Neurais: classificação e regressãoRedes Neurais: classificação e regressão
Redes Neurais: classificação e regressão
Renato Vicente
 
Introdução aos espaços de dimensão infinita
Introdução aos espaços de dimensão infinitaIntrodução aos espaços de dimensão infinita
Introdução aos espaços de dimensão infinita
Felipe Rocha Felix
 
01 conjuntos nmericos - introduo
01 conjuntos nmericos - introduo01 conjuntos nmericos - introduo
01 conjuntos nmericos - introduo
resolvidos
 
Integral de linha campo vetorial - calculo iii
Integral de linha   campo vetorial - calculo iiiIntegral de linha   campo vetorial - calculo iii
Integral de linha campo vetorial - calculo iii
Jailson Nascimento
 
Calculo vetorial
Calculo vetorialCalculo vetorial
Calculo vetorial
tooonks
 
Apostila matematica ens medio 000
Apostila matematica ens medio 000Apostila matematica ens medio 000
Apostila matematica ens medio 000
resolvidos
 
Aula 9 variáveis aleatória contínua - parte 2
Aula 9   variáveis aleatória contínua - parte 2Aula 9   variáveis aleatória contínua - parte 2
Aula 9 variáveis aleatória contínua - parte 2
Ariel Rennó Chaves
 

Mais procurados (19)

12 eac proj vest mat módulo 2 matrizes e sistemas
12 eac proj vest mat módulo 2 matrizes e sistemas12 eac proj vest mat módulo 2 matrizes e sistemas
12 eac proj vest mat módulo 2 matrizes e sistemas
 
Anexo ma aula_fd_unidade1
Anexo ma aula_fd_unidade1Anexo ma aula_fd_unidade1
Anexo ma aula_fd_unidade1
 
Redes Neurais: Técnicas Bayesianas
Redes Neurais: Técnicas BayesianasRedes Neurais: Técnicas Bayesianas
Redes Neurais: Técnicas Bayesianas
 
funçoes
funçoesfunçoes
funçoes
 
Redes Neurais: classificação e regressão
Redes Neurais: classificação e regressãoRedes Neurais: classificação e regressão
Redes Neurais: classificação e regressão
 
Introdução aos espaços de dimensão infinita
Introdução aos espaços de dimensão infinitaIntrodução aos espaços de dimensão infinita
Introdução aos espaços de dimensão infinita
 
CN 07
CN 07CN 07
CN 07
 
Slides cn c05
Slides cn c05Slides cn c05
Slides cn c05
 
Tadeu
TadeuTadeu
Tadeu
 
01 conjuntos nmericos - introduo
01 conjuntos nmericos - introduo01 conjuntos nmericos - introduo
01 conjuntos nmericos - introduo
 
V@R Não-Linear
V@R Não-LinearV@R Não-Linear
V@R Não-Linear
 
5
55
5
 
Introducao Funcao
Introducao FuncaoIntroducao Funcao
Introducao Funcao
 
www.AulasDeMatematicaApoio.com.br - Matemática - Determinantes
 www.AulasDeMatematicaApoio.com.br  - Matemática - Determinantes www.AulasDeMatematicaApoio.com.br  - Matemática - Determinantes
www.AulasDeMatematicaApoio.com.br - Matemática - Determinantes
 
Integral de linha campo vetorial - calculo iii
Integral de linha   campo vetorial - calculo iiiIntegral de linha   campo vetorial - calculo iii
Integral de linha campo vetorial - calculo iii
 
Ap matemática m2
Ap matemática m2Ap matemática m2
Ap matemática m2
 
Calculo vetorial
Calculo vetorialCalculo vetorial
Calculo vetorial
 
Apostila matematica ens medio 000
Apostila matematica ens medio 000Apostila matematica ens medio 000
Apostila matematica ens medio 000
 
Aula 9 variáveis aleatória contínua - parte 2
Aula 9   variáveis aleatória contínua - parte 2Aula 9   variáveis aleatória contínua - parte 2
Aula 9 variáveis aleatória contínua - parte 2
 

Destaque

Error messages
Error messagesError messages
Error messages
rtinkelman
 
1ºBACH Economía Tema 5 Oferta y demanda
1ºBACH Economía Tema 5 Oferta y demanda1ºBACH Economía Tema 5 Oferta y demanda
1ºBACH Economía Tema 5 Oferta y demanda
Geohistoria23
 

Destaque (20)

Estrategias de porter
Estrategias de porterEstrategias de porter
Estrategias de porter
 
De Reis van de Heldin december 2015
De Reis van de Heldin december 2015De Reis van de Heldin december 2015
De Reis van de Heldin december 2015
 
Geheugen verbeteren
Geheugen verbeterenGeheugen verbeteren
Geheugen verbeteren
 
De impact van adhd
De impact van adhdDe impact van adhd
De impact van adhd
 
"Protección de la salud mental luego del terremoto y tsunami del 27 de febrer...
"Protección de la salud mental luego del terremoto y tsunami del 27 de febrer..."Protección de la salud mental luego del terremoto y tsunami del 27 de febrer...
"Protección de la salud mental luego del terremoto y tsunami del 27 de febrer...
 
Relatietips
RelatietipsRelatietips
Relatietips
 
Error messages
Error messagesError messages
Error messages
 
Tears In The Rain
Tears In The RainTears In The Rain
Tears In The Rain
 
Análisis situacional integral de salud final
 Análisis situacional integral de salud final Análisis situacional integral de salud final
Análisis situacional integral de salud final
 
Onderzoeksrapport acrs v3.0_definitief
Onderzoeksrapport acrs v3.0_definitiefOnderzoeksrapport acrs v3.0_definitief
Onderzoeksrapport acrs v3.0_definitief
 
Schrijven voor het web
Schrijven voor het webSchrijven voor het web
Schrijven voor het web
 
PMP Sonora Saludable 2010 2015
PMP Sonora Saludable 2010   2015  PMP Sonora Saludable 2010   2015
PMP Sonora Saludable 2010 2015
 
Rodriguez alvarez
Rodriguez alvarezRodriguez alvarez
Rodriguez alvarez
 
El emprendedor y el empresario profesional cert
El emprendedor y el empresario profesional certEl emprendedor y el empresario profesional cert
El emprendedor y el empresario profesional cert
 
1ºBACH Economía Tema 5 Oferta y demanda
1ºBACH Economía Tema 5 Oferta y demanda1ºBACH Economía Tema 5 Oferta y demanda
1ºBACH Economía Tema 5 Oferta y demanda
 
Como hacer un plan de negocios
Como hacer un plan de negociosComo hacer un plan de negocios
Como hacer un plan de negocios
 
Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA.
Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA.Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA.
Evidence: Describing my kitchen. ENGLISH DOT WORKS 2. SENA.
 
Estrategias competitivas básicas
Estrategias competitivas básicasEstrategias competitivas básicas
Estrategias competitivas básicas
 
Cápsula 1. estudios de mercado
Cápsula 1. estudios de mercadoCápsula 1. estudios de mercado
Cápsula 1. estudios de mercado
 
2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda...
2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda...2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda...
2. describing cities and places. ENGLISH DOT WORKS 2. SENA. semana 4 acitivda...
 

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

1) matrizes 2012 (prevest)
1) matrizes 2012 (prevest)1) matrizes 2012 (prevest)
1) matrizes 2012 (prevest)
Márcio Queiroz
 
Apostila de-algebra-linear-1235013869657841-2
Apostila de-algebra-linear-1235013869657841-2Apostila de-algebra-linear-1235013869657841-2
Apostila de-algebra-linear-1235013869657841-2
Alessandra Nascimento
 
Matemática Discreta - Parte IV teoria dos-conjuntos
Matemática Discreta - Parte IV teoria dos-conjuntosMatemática Discreta - Parte IV teoria dos-conjuntos
Matemática Discreta - Parte IV teoria dos-conjuntos
Ulrich Schiel
 
Algebra linear apostila i prof inacio
Algebra linear apostila i   prof inacioAlgebra linear apostila i   prof inacio
Algebra linear apostila i prof inacio
Eng Amb
 
Implementação mód4
Implementação   mód4 Implementação   mód4
Implementação mód4
inechidias
 
Implementação mód4
Implementação   mód4 Implementação   mód4
Implementação mód4
inechidias
 
Implementação mód4 -
Implementação   mód4 - Implementação   mód4 -
Implementação mód4 -
inechidias
 

Semelhante a Otimização no Armazenamento de Imagens por meio da Decomposição em Valores Singulares (20)

Lista matrizes 2_ano_2012_pdf
Lista matrizes 2_ano_2012_pdfLista matrizes 2_ano_2012_pdf
Lista matrizes 2_ano_2012_pdf
 
Geometria Analitica - Matrizes e Determinantes
Geometria Analitica - Matrizes e DeterminantesGeometria Analitica - Matrizes e Determinantes
Geometria Analitica - Matrizes e Determinantes
 
www.aulasapoio.com - Matemática - Determinantes
www.aulasapoio.com  - Matemática -  Determinanteswww.aulasapoio.com  - Matemática -  Determinantes
www.aulasapoio.com - Matemática - Determinantes
 
www.AulasDeMatematicanoRJ.Com.Br - Matemática - Determinantes
 www.AulasDeMatematicanoRJ.Com.Br  - Matemática -  Determinantes www.AulasDeMatematicanoRJ.Com.Br  - Matemática -  Determinantes
www.AulasDeMatematicanoRJ.Com.Br - Matemática - Determinantes
 
www.professoraparticularapoio.com.br -Matemática - Determinantes
www.professoraparticularapoio.com.br -Matemática -  Determinanteswww.professoraparticularapoio.com.br -Matemática -  Determinantes
www.professoraparticularapoio.com.br -Matemática - Determinantes
 
1) matrizes 2012 (prevest)
1) matrizes 2012 (prevest)1) matrizes 2012 (prevest)
1) matrizes 2012 (prevest)
 
www.AulasDeMatematicaApoio.com - Matemática - Determinante
www.AulasDeMatematicaApoio.com  - Matemática - Determinantewww.AulasDeMatematicaApoio.com  - Matemática - Determinante
www.AulasDeMatematicaApoio.com - Matemática - Determinante
 
LISTA 02 E 03 - EXERCÍCIOS DE MATEMÁTICA 1º ANO - PROFª NEID
LISTA 02 E 03 - EXERCÍCIOS DE MATEMÁTICA 1º ANO - PROFª NEIDLISTA 02 E 03 - EXERCÍCIOS DE MATEMÁTICA 1º ANO - PROFª NEID
LISTA 02 E 03 - EXERCÍCIOS DE MATEMÁTICA 1º ANO - PROFª NEID
 
Matrices y Sistema de Ecuaciones Lineales ccesa007
Matrices y Sistema de Ecuaciones Lineales  ccesa007Matrices y Sistema de Ecuaciones Lineales  ccesa007
Matrices y Sistema de Ecuaciones Lineales ccesa007
 
Apostila de-algebra-linear-1235013869657841-2
Apostila de-algebra-linear-1235013869657841-2Apostila de-algebra-linear-1235013869657841-2
Apostila de-algebra-linear-1235013869657841-2
 
Matemática Discreta - Parte IV teoria dos-conjuntos
Matemática Discreta - Parte IV teoria dos-conjuntosMatemática Discreta - Parte IV teoria dos-conjuntos
Matemática Discreta - Parte IV teoria dos-conjuntos
 
euclides primos
euclides primoseuclides primos
euclides primos
 
Algebra linear apostila i prof inacio
Algebra linear apostila i   prof inacioAlgebra linear apostila i   prof inacio
Algebra linear apostila i prof inacio
 
Implementação mód4
Implementação   mód4 Implementação   mód4
Implementação mód4
 
Implementação mód4
Implementação   mód4 Implementação   mód4
Implementação mód4
 
Implementação mód4 -
Implementação   mód4 - Implementação   mód4 -
Implementação mód4 -
 
Álgebra Linear e Suas Aplicações - André Gustavo de A. Santos
Álgebra Linear e Suas Aplicações -  André Gustavo de A. SantosÁlgebra Linear e Suas Aplicações -  André Gustavo de A. Santos
Álgebra Linear e Suas Aplicações - André Gustavo de A. Santos
 
Capitulo 8 gujarati resumo
Capitulo 8 gujarati resumoCapitulo 8 gujarati resumo
Capitulo 8 gujarati resumo
 
www.aulaparticularonline.net.br - Matemática - Matrizes
www.aulaparticularonline.net.br - Matemática -  Matrizeswww.aulaparticularonline.net.br - Matemática -  Matrizes
www.aulaparticularonline.net.br - Matemática - Matrizes
 
www.aulasapoio.com - Matemática - Matrizes
www.aulasapoio.com  - Matemática -  Matrizeswww.aulasapoio.com  - Matemática -  Matrizes
www.aulasapoio.com - Matemática - Matrizes
 

Último

PPP6_ciencias final 6 ano ano de 23/24 final
PPP6_ciencias final 6 ano ano de 23/24 finalPPP6_ciencias final 6 ano ano de 23/24 final
PPP6_ciencias final 6 ano ano de 23/24 final
carlaOliveira438
 
O Reizinho Autista.pdf - livro maravilhoso
O Reizinho Autista.pdf - livro maravilhosoO Reizinho Autista.pdf - livro maravilhoso
O Reizinho Autista.pdf - livro maravilhoso
VALMIRARIBEIRO1
 
clubinho-bio-2.pdf vacinas saúde importância
clubinho-bio-2.pdf vacinas saúde importânciaclubinho-bio-2.pdf vacinas saúde importância
clubinho-bio-2.pdf vacinas saúde importância
LuanaAlves940822
 
Manual dos Principio básicos do Relacionamento e sexologia humana .pdf
Manual dos Principio básicos do Relacionamento e sexologia humana .pdfManual dos Principio básicos do Relacionamento e sexologia humana .pdf
Manual dos Principio básicos do Relacionamento e sexologia humana .pdf
Pastor Robson Colaço
 

Último (20)

Enunciado_da_Avaliacao_1__Sistemas_de_Informacoes_Gerenciais_(IL60106).pdf
Enunciado_da_Avaliacao_1__Sistemas_de_Informacoes_Gerenciais_(IL60106).pdfEnunciado_da_Avaliacao_1__Sistemas_de_Informacoes_Gerenciais_(IL60106).pdf
Enunciado_da_Avaliacao_1__Sistemas_de_Informacoes_Gerenciais_(IL60106).pdf
 
UFCD_9184_Saúde, nutrição, higiene, segurança, repouso e conforto da criança ...
UFCD_9184_Saúde, nutrição, higiene, segurança, repouso e conforto da criança ...UFCD_9184_Saúde, nutrição, higiene, segurança, repouso e conforto da criança ...
UFCD_9184_Saúde, nutrição, higiene, segurança, repouso e conforto da criança ...
 
PPP6_ciencias final 6 ano ano de 23/24 final
PPP6_ciencias final 6 ano ano de 23/24 finalPPP6_ciencias final 6 ano ano de 23/24 final
PPP6_ciencias final 6 ano ano de 23/24 final
 
Unidade 4 (Texto poético) (Teste sem correção) (2).docx
Unidade 4 (Texto poético) (Teste sem correção) (2).docxUnidade 4 (Texto poético) (Teste sem correção) (2).docx
Unidade 4 (Texto poético) (Teste sem correção) (2).docx
 
Respostas prova do exame nacional Port. 2008 - 1ª fase - Criterios.pdf
Respostas prova do exame nacional Port. 2008 - 1ª fase - Criterios.pdfRespostas prova do exame nacional Port. 2008 - 1ª fase - Criterios.pdf
Respostas prova do exame nacional Port. 2008 - 1ª fase - Criterios.pdf
 
Os Padres de Assaré - CE. Prof. Francisco Leite
Os Padres de Assaré - CE. Prof. Francisco LeiteOs Padres de Assaré - CE. Prof. Francisco Leite
Os Padres de Assaré - CE. Prof. Francisco Leite
 
Apresentação sobre Robots e processos educativos
Apresentação sobre Robots e processos educativosApresentação sobre Robots e processos educativos
Apresentação sobre Robots e processos educativos
 
O Reizinho Autista.pdf - livro maravilhoso
O Reizinho Autista.pdf - livro maravilhosoO Reizinho Autista.pdf - livro maravilhoso
O Reizinho Autista.pdf - livro maravilhoso
 
Trabalho sobre as diferenças demograficas entre EUA e Senegal
Trabalho sobre as diferenças demograficas entre EUA e SenegalTrabalho sobre as diferenças demograficas entre EUA e Senegal
Trabalho sobre as diferenças demograficas entre EUA e Senegal
 
Enunciado_da_Avaliacao_1__Sociedade_Cultura_e_Contemporaneidade_(ED70200).pdf
Enunciado_da_Avaliacao_1__Sociedade_Cultura_e_Contemporaneidade_(ED70200).pdfEnunciado_da_Avaliacao_1__Sociedade_Cultura_e_Contemporaneidade_(ED70200).pdf
Enunciado_da_Avaliacao_1__Sociedade_Cultura_e_Contemporaneidade_(ED70200).pdf
 
Descrever e planear atividades imersivas estruturadamente
Descrever e planear atividades imersivas estruturadamenteDescrever e planear atividades imersivas estruturadamente
Descrever e planear atividades imersivas estruturadamente
 
O que é uma Revolução Solar. tecnica preditiva
O que é uma Revolução Solar. tecnica preditivaO que é uma Revolução Solar. tecnica preditiva
O que é uma Revolução Solar. tecnica preditiva
 
Multiplicação - Caça-número
Multiplicação - Caça-número Multiplicação - Caça-número
Multiplicação - Caça-número
 
Aula 5 - Fluxo de matéria e energia nos ecossistemas.ppt
Aula 5 - Fluxo de matéria e energia nos ecossistemas.pptAula 5 - Fluxo de matéria e energia nos ecossistemas.ppt
Aula 5 - Fluxo de matéria e energia nos ecossistemas.ppt
 
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptx
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptxSlides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptx
Slides Lição 8, CPAD, Confessando e Abandonando o Pecado.pptx
 
clubinho-bio-2.pdf vacinas saúde importância
clubinho-bio-2.pdf vacinas saúde importânciaclubinho-bio-2.pdf vacinas saúde importância
clubinho-bio-2.pdf vacinas saúde importância
 
PLANO DE ESTUDO TUTORADO COMPLEMENTAR 1 ANO 1 BIMESTRE.pdf
PLANO DE ESTUDO TUTORADO COMPLEMENTAR 1 ANO 1 BIMESTRE.pdfPLANO DE ESTUDO TUTORADO COMPLEMENTAR 1 ANO 1 BIMESTRE.pdf
PLANO DE ESTUDO TUTORADO COMPLEMENTAR 1 ANO 1 BIMESTRE.pdf
 
Manual dos Principio básicos do Relacionamento e sexologia humana .pdf
Manual dos Principio básicos do Relacionamento e sexologia humana .pdfManual dos Principio básicos do Relacionamento e sexologia humana .pdf
Manual dos Principio básicos do Relacionamento e sexologia humana .pdf
 
Semana Interna de Prevenção de Acidentes SIPAT/2024
Semana Interna de Prevenção de Acidentes SIPAT/2024Semana Interna de Prevenção de Acidentes SIPAT/2024
Semana Interna de Prevenção de Acidentes SIPAT/2024
 
Slide - HIV (1) edit.pptx hiv em crianças
Slide - HIV (1) edit.pptx hiv em criançasSlide - HIV (1) edit.pptx hiv em crianças
Slide - HIV (1) edit.pptx hiv em crianças
 

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

  • 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 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
  • 2. AGNALDO CESAR COELHO Orientador: FABIO ANTONIO DORINI OTIMIZAÇÃ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. 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
  • 4. INTRODUÇÃO 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 [1]. 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. Aplicando a SVD a uma matriz com m linhas e n colunas, que é simplesmente a fatoração desta em um produto UΣV T , é possível diminuir o espaço de armazenamento de mn para um múltiplo pequeno de m + n + 1 [2]. Isto porque, elementos de uma dada linha da matriz tem valores muito semelhantes aos elementos correspondentes das linhas vizinhas (essa observação também vale para as colunas), pois, nas imagens, frequentemente a cor associada a um dado píxel está próxima a cor dos píxeis vizinhos. Em imagens representadas por matrizes tridimensionais (m × n × 3), como por exemplo as 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 a estas 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 ser aplicada 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 em diversas 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 essencial aprofundar 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, apenas quatro 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 de imagens por meio da Decomposição em Valores Singulares; (ii) Analisar imagens reconstruídas pelo método da SVD, com a utilização de quantias distintas de dados. Assim, variando entre um conjunto mínimo e máximo de valores necessários para preservar características úteis das imagens; (iii) Examinar a qualidade de imagens processadas com a SVD após a conversão destas, 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) consiste em fatorar uma matriz qualquer em um produto UΣV T [2]. Ela foi demonstrada pela primeira vez por Beltrami e Jordan na década de 1870, para matrizes quadradas reais. Após, Autonne demonstrou a decomposição SVD para matrizes quadradas complexas. Em 1936, Carl Eckart e Gale 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. 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 = j e δi j = 1 para i = j [2].   1 0 0 Por exemplo, a matriz identidade para n = 3 é: I = 0 1 0 . 0 0 1 Definiçã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 −1 Definição 3. A transposta de uma matriz A, m × n, é representada por AT , n × m, cujas colunas sã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 3 Definiçã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 10 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−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 diversas operações. Por exemplo, medir a distância entre duas matrizes ou obter um vetor unitário (vetor de tamanho um). Primeiramente será definido o produto interno entre dois vetores pertencentes ao espaço vetorial Rn , tratados aqui como duas matrizes n × 1. Dessa forma, entende-se por Rn o conjunto constituí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 é dado pelo 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. O produto interno entre duas matrizes m × n pode ser definido seguindo a mesma ideia anterior, onde o elemento ai j da matriz A é multiplicado pelo seu correspondente bi j da matriz B [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 3 Exemplo 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 tamanho de um vetor ou uma matriz. E, pode também ser utilizada para medir a distância entre vetores ou 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 definir diversos tipos de normas, desde que sejam satisfeitas algumas condições. Estas condições não serã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 igual a zero. E ainda, para que ela seja igual a zero, o vetor precisa ser nulo, ou seja, todas as suas componentes devem ser iguais a zero. Isto está de acordo com a definição de comprimento ou distância. 1 Para obter um vetor unitário u a partir de um vetor não nulo x, basta fazer u = x. x Exemplo 4. O vetor unitário obtido a partir do vetor x do Exemplo 1, com a norma calculada no 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 deriva do 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. 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. Por meio 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 B sã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 o produto 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ão o 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 da SVD. Além disso, o Teorema 1 é proveitoso na discussão e compreensão de ortogonalidade que será visto na seção seguinte. Ortogonalidade. A palavra ortogonal significa ângulo reto [8]. Neste contexto, dois vetores sã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 um melhor 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 estarem ortogonais entre si, basta que um deles, x ou y, seja nulo ou senão o ângulo entre eles seja de 90°. 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 um deles, obtém-se o que é conhecida por matriz ortogonal. Diz-se, então, que os vetores coluna desta matriz formam um conjunto ortonormal em Rn . Definição 12. Uma matriz Q, n × n, é denominada matriz ortogonal se seus vetores coluna formam 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 ocorre se, e somente se, Q é invertível. Logo QT = Q−1 [8]. T T 1 1 1 1 Exemplo 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. 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 preservarem produtos 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, por meio da SVD. Produto externo. O produto externo discutido aqui não é o produto vetorial usual. Aquele diferentemente 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 coluna x, por uma 1 × n, vetor linha yT . Essa operação resulta em uma matriz n × n e é conhecida por produto 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 resultante sempre terá posto 1. É proveitoso relembrar que o posto de uma matriz A é igual ao número de linhas não nulas em qualquer forma escalonada por linhas de A [4]. Conforme abordado em Leon (2011), é possível particionar uma matriz C em diversas submatrizes, traçando-se retas horizontais entre as linhas e verticais entre as colunas [2]. Estas partições são chamadas de blocos. A técnica pode ser utilizada para efetuar a multiplicação por blocos entre duas matrizes A e B, devidamente particionadas. Se os blocos tiverem as dimensões apropriadas, a multiplicação de blocos poderá ser realizada da mesma maneira que a 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 n Então, a multiplicação XY T pode ser executada da seguinte forma: 5
  • 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 a maior parte do processo de fatoração de uma matriz A, m × n, em um produto UΣV T envolve os mesmos métodos e conceitos desenvolvidos aqui. O objetivo agora é, por meio de autovalores e autovetores, 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. Por ora, o que pretende-se é: encontrar vetores, não nulos, para uma matriz quadrada A, que quando multiplicados por ela se comportem como se estivem sendo multiplicados por um escalar λ . Ou seja, 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 vetor x, 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 sistema deve 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ão obtidos 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 grau n em λ . Os vetores x, soluções do sistema, são os chamados autovetores de A associados ao autovalor λ [2, 4]. −1 0 Exemplo 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 associados a λ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 forma idêntica, para encontrar os autovetores para λ2 resolve-se o sistema: (A − 1I)x2 = 0. Deste modo, 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, tentar resolver o problema de fatoração de uma matriz A, n × n, em um produto da forma XDX −1 , 6
  • 10. do qual os vetores coluna de X são autovetores de A, X −1 é a inversa de X e D é uma matriz diagonal formada pelos autovalores de A. Definição 14. Uma matriz A, n × n, é dita diagonalizável se existir uma matriz não singular X e 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 autovetores linearmente independentes [4]. Dizer que A tem n autovetores linearmente independentes, significa dizer que nenhum destes n autovetores de A é combinação linear dos outros n − 1 autovetores. O motivo está na matriz diagonalizante X, porque pela Definição 14, X deve ser não singular. Logo, para que X seja não singular, os vetores colunas de X, que são os autovetores de A, devem ser linearmente independentes. 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 0 Como X = X −1 , tem-se A = XDX −1 = = · 0 1 0 1 0 1 0 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 problema matemá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 a distâ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 associados a autovalores distintos são ortogonais [2]. 7
  • 11. O diferencial da SVD está no fato desta poder ser aplicada a qualquer matriz m × n como afirmado no teorema seguinte. Teorema 6 (SVD de uma matriz). Se A é uma matriz m × n, então existe uma Decomposição em 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 elementos fora da diagonal principal são todos iguais a zero e cujo os elementos da diagonal são os valores singulares (σ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 Teorema 2 (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, eles també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 2 Pela Definição 14, V diagonaliza AT A e, portanto, os vetores coluna de V (v1 , . . . , vn ) são os autovetores de AT A. E ainda, como U diagonaliza AAT , os vetores coluna de U (u1 , . . . , um ) são autovetores 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 A satisfazem σ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 diferentes de 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 , com posto 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 7 Exemplo 12. Considere A = , então AT A = = · Para −3 3 4 3 −3 3 7 25 8
  • 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 0 Resolvendo-se o sistema, obtém-se (v1 , v2 )T = (−1, 1)T . Como a matriz V é ortogonal, é ne- 1 1 −1 −1 1 cessá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 1 32, 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 por V , à direita, em ambos os lados de A = UΣV T , obtendo AV = UΣ . Logo, Av j = σ j u j ou, 1 equivalentemente, 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 2 Segue-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 existe uma matriz A , m × n, de posto k, onde 0 < k < r, tal que A é a matriz mais próxima de A em relaçã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) F Observaçã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. 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 1 serão as matrizes com postos n − 1, n − 2, . . ., 1, respectivamente, mais próximas de A em relação à norma de Frobenius (equação (3)), naquela ordem. Imagem. A maioria das imagens são representadas como matrizes, onde cada elemento de uma matriz corresponde a um píxel da imagem [1]. Por exemplo, a figura 1(a) mostra uma imagem de intensidade em tons de cinza, na qual cada píxel da imagem é representada por um elemento da matriz com valor em ponto flutuante, variando entre 0,0000 (preto) a 1,0000 (branco). No entanto, para algumas imagens, como por exemplo as RGB (Red, Green, Blue), são necessárias três matrizes de mesma dimensão, onde a primeira destas (banda 1) representa as intensidades em tons de vermelho; a segunda (banda 2) em tons de verde; e a terceira (banda 3) em tons de azul. Deste modo, conforme mostram os números em negrito na figura 1(b), representa-se a cor de cada píxel pela combinação das intensidades de vermelho, verde e azul por elementos na mesma 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ês matrizes. No entanto, a primeira representa a matiz (tonalidade), a segunda a saturação e a terceira 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 suas representaçõ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 da matriz map [9, 10]. De fato, os valores de cada elemento das matrizes que representam imagens RGB, com Cores 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. 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 convertidas para imagens de Intensidade em tons de cinza antes de serem submetidas para avaliação do SSIM. O valor referente a qualidade das imagens varia entre o intervalo de números flutuantes 0,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 em http://www.mathworks.com/help/. O código fonte do IMSVD pode ser encontrado no APÊNDICE A - CÓDIGOS FONTE. O software IMSVD, para processamento de imagens por meio da SVD, foi desenvolvido com 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. Elas foram processadas via IMSVD, nos modos HSV, RGB, Cores Indexadas e de Intensidade. Os processamentos 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 utilizado o 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 instalados em 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. gens eram reconstruídas com o posto igual ou muito próximo ao da “original”, devido ao ruído apresentado nelas. A melhor solução encontrada para este problema foi processar as imagens na versão 5.3 do MATLAB. Justificativa e análise do método. Por que a SVD é útil para otimizar o armazenamento de imagens? 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, em relaçã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 i do 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 ui de 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 das três matrizes que as representam (isto pode ser melhor observado no pseudocódigo do código 1). É 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 , assim como 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 a aplicaçã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 possui muitos 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 qualidade próxima a da imagem “original”. O exemplo seguinte demonstra a aplicação do método com uma 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 posto 40 (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 comando A = imread( mozilla. j pg ); O comando seguinte converte a imagem, lida, para uma imagem de intensidade em tons de 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 em um 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. 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ÃO 10 c o n v e r t a A p a r a hsv 11 SENÃO , SE modo == i n d , ENTÃO 12 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 o 13 256 c o r e s em map ( k == 2 5 6 ) 14 FIM SE 15 FIM SE 16 % 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 % M a t r i z e s em h s v já são d o u b l e 18 SE modo ! = hsv , ENTÃO 19 converta A para double 20 FIM SE 21 % 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 s 22 PARA i == 1 até v a l o r da dimensão ( A ) FAÇA 23 % 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 PARA 28 SE dimensão ( A ) == 1 , ENTÃO 29 p o s t o = p1 30 SENÃO 31 p o s t o = mínimo ( p1 , p2 , p3 ) 32 FIM SE 33 % 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 =O 35 PARA j == 1 até o v a l o r do p o s t o FAÇA 36 PARA i == 1 até o v a l o r da dimensão ( A ) FAÇA 37 % expansão do p r o d u t o e x t e r n o 38 Ai = Ai + σi j j ui j vTj i 39 FIM PARA 40 A =A 41 SE modo == hsv , ENTÃO 42 c o n v e r t a A p a r a RGB 43 SENÃO 44 % 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 uint8 46 FIM SE 47 mostrar (A ) 48 pausar iteração 49 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ÃO 50 c o n t i n u a r iteração 51 FIM SE 52 FIM PARA 53 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. normados, conjuntos ortonormais, processo de ortogonalização de Gram-Schmidt); (iv) estudo de autovalores e autovetores (autovalores e autovetores, diagonalização, matrizes autoadjuntas, matrizes positivas definidas); (v) decomposição SVD de uma matriz; (vi) aplicações da SVD em “compressão” de imagens; (vii) redação do relatório final em L TEX. A 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ção e análise dos resultados. As imagens utilizadas nos ensaios são exibidas na figura 4 e suas informaçõ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 comando spiral do MATLAB. Tabela 1: Informações das imagens na figura 4. A coluna R.A Posto quer dizer que a redução no 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 e A3 representam as bandas 1, 2 e 3 da imagem RGB ou HSV (Ai = Ui ΣiViT ). Para os casos de Imagens de Intensidade e com Cores Indexadas, A1 representa a única banda destas. A 15
  • 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, ele as 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, Cores Indexadas 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 das matrizes computadas, estão dentro do intervalo de números inteiros de 0 a 255. Já no modo HSV 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
  • 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. 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. (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. (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. (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. 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. 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. 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 a opção ’speckle’ (ruído multiplicativo). A tabela 3 exibe o posto de imagens da figura 4, usadas neste 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 e A3 ) das imagens, processadas com ruído, com relação as colunas das matrizes diagonais Σ1 , Σ2 e Σ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. 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 principal formador desta. Por outro lado, a maior parte dos valores singulares são bem pequenos e, em consequência disto, a(s) matriz(es) da imagem pode(m) ser aproximada(s) por outra(s) de posto muito 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 com qualidade 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 no modo 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 imagens obtidas de radares de trânsito durante à noite, que possuem ruído semelhante. 25
  • 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, algumas imagens apresentaram ruído e/ou pequenas alterações nos tons de suas cores, que provocaram diminuições evidentes na qualidade destas. Pode-se observar isto, com clareza, no ensaio 4 com a 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 das imagens são mais comuns nos processamentos do modo Cores Indexadas. Isto ocorre devido a 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 + 1 amarelo. Então, se a matriz da imagem aproximada, ao invés de ter o elemento ei j = x, como na matriz “original”, tiver o elemento ei j = x + 1, a imagem aproximada terá no píxel i j a cor amarelo e não a azul. Em todo caso, em estudos futuros seria interessante pesquisar maneiras para 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 resultados comprovam 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 mostraram diferenç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 apenas as primeiras colunas da matriz U, as primeiras linhas de V T e alguns valores singulares podem apresentar praticamente a mesma qualidade da imagem “original”. Alguns problemas como a falta de memória ram, para processar imagens maiores que as discutidas, não chegaram a prejudicar na análise do método. Contudo trabalhos futuros poderão resolver este problema, com o desenvolvimento de algoritmos, que possam dividir uma matriz com 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 o processamento de imagens com Cores Indexadas utilizando a SVD nas versões mais novas do MATLAB, 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 do que é visto em sala de aula. Por esses e outros motivos a realização deste projeto foi de grande satisfaçã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. [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. 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 ou 10 % 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 o 12 % 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 o 13 % 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 +c 16 % 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 e 20 % ’ 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 Decomposicao 27 % em V a l o r e s S i n g u l a r e s 28 % 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 ARAUCARIA 29 % 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) 30 31 %%% 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 end 36 37 %%% l e n d o a imagem e armazenando na m a t r i z 38 %%% 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 nada 39 [ A, map ] = i m r e a d ( nome_imagem ) ; 40 41 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 o 42 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 s 43 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 s 44 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 A 45 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 A 46 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 A 47 48 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 s 49 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 s 50 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 s 51 52 %%% 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 53 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 o 55 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 o 59 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 INDexada 63 % %% A :m x n e map : 256 x 3 64 [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 s 66 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 end 68 end 69 70 %%% 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 o 71 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 v 73 % %% 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 s 74 A = d o u b l e (A) + 1 ; 75 end 76 77 %%% 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 y 78 %%% 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 o 79 %%% 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 s 81 %%% c a l c u l a a s v d de A 82 [ 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 de 84 %%% 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 0 86 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 end 88 89 %%% 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 de 90 %%% do p r i m e i r o e l e m e n t o no v e t o r p 91 %%% 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 s 92 i f q u a n t i d a d e _ b a n d a s == 1 28
  • 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: posto 101 102 %%% 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 a 103 %%% 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 s 107 B ( : , : , banda ) = B ( : , : , banda ) + d ( i , i , banda ) *u ( : , i , banda ) *v ( : , i , banda ) ’ ; 108 end 109 110 %%% 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 o 111 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 b 113 imshow ( hsv2rgb ( B ) ) ; 114 else 115 %%% 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 s 117 imshow ( u i n t 8 ( B − 1 ) , map ) ; 118 end 119 %%% 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 imagem 120 %%% 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 s 121 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 a 123 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