Buscar

Restauração de Imagens Utilizando Processamento Paralelo

Prévia do material em texto

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO
ESCOLA DE ENGENHARIA
DEPARTAMENTO DE ELETRÔNICA E DE COMPUTAÇÃO
Autor:
Jaime Grande Vela
Orientador:
D. Sc. Eugenius Kaszkurewicz
Co-orientador:
Ph. D. Antônio Petraglia
Examinador:
Ph. D. Amit Bhaya
RESTAURAÇÃO DE IMAGENS MONOCROMÁTICAS 
UTILIZANDO PROCESSAMENTO PARALELO
DEL
Setembro de 2007
AGRADECIMENTO
Gostaria de agradecer a colaboração das pessoas que contribuíram na conclusão da minha for-
mação como engenheiro e sem as quais a realização deste projeto não teria sido possível.
Ao meu Orientador de Projeto de Fim de Curso Eugenius Kaszkurewicz, pela sua paciência, 
motivação e constante apoio, assim como meu co-orientador, Antônio Petraglia.
Aos meus pais pelo constante apoio e confiança que sempre depositaram em mim.
ii
RESUMO
Este trabalho tem por objetivo viabilizar o processamento e restauração de imagens que sofre-
ram efeitos de degradação, utilizando para tanto, algoritmos e redes neurais implementados 
em computadores paralelos. 
A necessidade de se dispor de algoritmos que possam restaurar imagens que sofreram degra-
dações utilizando a computação paralela, deve-se ao alto custo computacional dessas restau-
rações num ambiente seqüencial, especialmente nos casos em que se lida com imagens de alta 
resolução.
A quantidade de dados a ser processada nesses casos é elevada, o que torna o processamento 
seqüencial lento em ambiente computacional convencional. Assim, algoritmos paralelos mos-
tram-se como soluções adequadas.
As degradações de imagens podem ser de diversos tipos: perda de foco, deslocamento, ausên-
cia ou excesso de iluminação e ruído. A tecnologia de obtenção e transmissão de imagens tem 
imperfeições, o que provoca distorção de algum tipo. 
Neste trabalho consideramos que as distorções sofridas pelas imagens são invariantes no es-
paço, ou seja, todos os pixels (unidade mínima de discretização de uma imagem) da imagem 
sofreram o mesmo tipo de distorção e podem ser descritos por modelos lineares. Os modelos 
utilizados podem ser resolvidos pela utilização de algumas classes de métodos iterativos, que 
na realidade constituem-se em especializações de redes neurais. A opção pelos métodos itera-
tivos em relação aos diretos se deve à facilidade e conveniência de paralelização.
São apresentadas as equações integrais que descrevem o modelo contínuo e linear de forma-
ção da imagem, e a discretização da equação recaindo numa equação que descreve um modelo 
de sistema linear. Também são introduzidas as classes de métodos iterativos que podem solu-
cionar o problema e que atendem ao critério de convergência e as variações da matriz degra-
dação de acordo com o tipo de distorção sofrida pela imagem.
Apresenta-se e analisa-se a proposta de uma solução paralela para a recuperação de imagens, 
utilizando uma rede neural baseada no método iterativo de Jacobi, assim como no método de 
Polyak.
São apresentados os resultados computacionais com as curvas de desempenho do algoritmo 
paralelo quando aplicado às imagens submetidas a diferentes tipos de degradação.
iii
PALAVRAS-CHAVE
Restauração de imagens
Processamento de imagens
Distorção de imagens
Processamento paralelo
Métodos iterativos
iv
SUMÁRIO
 Figura 2.1: Convenção dos eixos para representação de imagens digitais. 4 ........................ viii 
 Figura 2.2. Matriz imagem e máscara. 6 ................................................................................ viii 
 Figura 2.3. Aplicação de filtros. 6 .......................................................................................... viii 
 Figura 2.4: Máscara 3x3 7 ...................................................................................................... viii 
 Figura 2.5: Máscara 5x5 (k = 25). 8 ....................................................................................... viii 
 Figura 2.6: Imagem da Lena sem degradação. 8 .................................................................... viii 
 Figura 2.7: Imagem da Lena após a filtragem (filtro de média 5x5). 8 .................................. viii 
 Figura 2.8: Máscara 5x5 (k = 65). 8 ....................................................................................... viii 
 Figura 2.9: Imagem da Lena sem degradação. 9 .................................................................... viii 
 Figura 2.10: Imagem da Lena após a filtragem (filtro Gaussiano 5x5). 9 .............................. viii 
 Figura 2.11: Representação gráfica do cálculo da mediana de um vetor. 9 ........................... viii 
 Figura 2.12: Imagem da Lena com ruído (Salt & Pepper 4%). 10 ......................................... viii 
 Figura 2.13: Imagem da Lena após a filtragem (filtro de Mediana 3x3). 10 .......................... viii 
 Figura 2.14: Formação de uma imagem pela passagem de radiação num meio não ideal. 10
 viii 
 Figura 2.15: Representação esquemática do sistema de formação de uma imagem. 12 ........ viii 
 Figura 2.16: Representação gráfica do rearranjo lexicográfico de uma matriz M. 12 ........... viii 
 Figura 2.17: Lena original. 14 .................................................................................. viii 
 Figura 2.18: Lena após filtro Motion Blur de 10 pixels e 0°. 14 ............................................ viii 
 Figura 2.19: Lena original. 14 .................................................................................. viii 
 Figura 2.20: Lena após filtro Motion Blur de 15 pixels e 0°. 14 ............................................ viii 
 Figura 2.21: Lena original. 15 .................................................................................. viii 
 Figura 2.22: Lena após filtro Motion Blur de 21 pixels e 0°. 15 ............................................ viii 
 Figura 2.23: Representação gráfica do comprimento da distorção. 15 .................................. viii 
 Figura 2.24: Distorção aplicada com um ângulo de 45°. 15 ................................................... viii 
 Figura 2.25: Distribuição dos pesos da distorção aplicada a 45°. 15 ..................................... viii 
 Figura 2.26: Lena original. 16 ................................................................................ viii 
 Figura 2.27: Lena após filtro Motion Blur de 10 pixels e 45°. 16 .......................................... viii 
 Figura 2.28: Lena original.17 ............................................................................... viii 
 Figura 2.29: Lena após filtro Motion Blur de 15 pixels e 45°. 17 .......................................... viii 
 Figura 2.30: Lena original. 18 ................................................................................ viii 
 Figura 2.31: Lena após filtro gaussiano 4 pixels de raio e σ = 2. 18 ...................................... viii 
 Figura 2.32: Matriz Toeplitz com valores crescentes. 18 ....................................................... viii 
 Figura 2.33: Matriz Toeplitz com valores decrescentes. 18 ................................................... viii 
 Figura 2.34: Imagem da Lena sem degradação. 19 ................................................................ viii 
 Figura 2.35: Imagem da Lena após a filtragem (matriz Toeplitz com n = 1,2). 19 ............... viii 
 Figura 2.36: Exemplo de arquivo PGM. 26 ............................................................................ viii 
 Figura 2.37: Visualização do exemplo (Fig. 2.36). 26 ........................................................... viii 
 Figura 2.38: Rede direta. 29 ................................................................................................... viii 
 Figura 2.39: Rede indireta. 29 ................................................................................................ viii 
 Figura 2.40: Rede de bus compartilhado. 29 .......................................................................... viii 
 Figura 2.41: Rede crossbar não bloqueante 30 ....................................................................... viii 
 Figura 2.42: Rede multiestágio. 30 ......................................................................................... viii 
 Figura 3.1: Representação discreta da cada pixel da imagem 33 ........................................... viii 
 Figura 3.2: Diagrama do processo de distorção e recuperação da imagem. 35 ...................... viii 
 Figura 3.3: Diagrama do processo de distorção da imagem. 35 ............................................. viii 
 Figura 3.4: Diagrama do processo de restauração. 35 ............................................................ viii 
v
 Figura 3.5: Imagem com distorção Motion Blur de 21 pixels e 45° e 6% de ruído. 36 ........ viii 
 Figura 3.6: Imagem da Lena após a filtra gem (filtro de Mediana 3x3). 36 ............................ viii 
 Figura 3.7: Diagrama de atividades do algoritmo seqüencial. 37 ............................................. ix 
 Figura 3.8: Tempo do processo vs número de iterações. 38 ..................................................... ix 
 Figura 3.8:Imagem original sem degrada ção. 39 ...................................................................... ix 
 Figura 3.9: Imagem degradada com efeito Toeplitz 1.3 e 7 % de ruído. 39 ............................. ix 
 Figura 3.10: Imagem recuperada após 40 iterações. 39 ............................................................ ix 
 Figura 3.11: Imagem recuperada após 320 iterações. 39 .......................................................... ix 
 Figura 3.12: Tempo do processo vs número de iterações. 40 ................................................... ix 
 Figura 3.13: Erro do processo vs número de iterações. 40 ....................................................... ix 
 Figura 3.14: Lena após distorção Motion Blur de 21 pixels e 45° e ruído aditivo 4%. 41 ....... ix 
 Figura 3.15: Imagem degradada após a pré- filtragem (Filtro Mediana Seletivo). 41 ............. ix 
 Figura 3.16: Imagem restaurada (Método de Polyak) após 4 iterações. 41 .............................. ix 
 Figura 3.17: Imagem restaurada (Método de Polyak) após 20 iterações. 41 ............................ ix 
 Figura 3.18: Lena após distorção Motion Blur de 15 pixels e 45° e ruído aditivo 4%. 42 ....... ix 
 Figura 3.19: Imagem degradada após a pré- filtragem (Filtro Mediana Seletivo). 42 ............. ix 
 Figura 3.20: Imagem restaurada (Método de Polyak) após 4 iterações. 42 .............................. ix 
 Figura 3.21: Imagem restaurada (Método de Polyak) após 30 iterações. 42 ............................ ix 
 Figura 4.1: Diagrama de atividades do algoritmo paralelo. 45 ................................................. ix 
 Figura 4.2 Tempos de execução do programa compilado com gcc (GNU) e icc (Intel) para 
320 iterações com uma imagem de 744x1024 pixels. 46 .......................................................... ix 
 Figura 4.3: Speed-up paralelo. 48 ............................................................................................. ix 
 Figura 4.4: Eficiência paralela. 48 ............................................................................................ ix 
 Figura 4.5: Imagem original degradada com efeito Toeplitz 1.3 e 3% de ruído. 49 ................ ix 
 Figura 4.6: Imagem recuperada com método direto (BLAS mkl). 49 ...................................... ix 
 Figura 4.7: Imagem recuperada com Polyak após 350 iterações em 8 processadores . 50 ...... ix 
 Figura 4.8: Imagem original. 50 ............................................................................................... ix 
 Figura 4.9: Imagem recuperada com Polyak após 350 iterações em 1 processador. 50 ........... ix 
 Figura B.1: Diagrama de atividades do algoritmo seqüencial. 59 ............................................ ix 
 Figura B.2: Fluxo de atividades da função mediana(). 61........................................................ ix 
 Figura B.3: Fluxo de atividades da função filtroMediana3x3(). 62 .......................................... ix 
 Figura B.4: Fluxo de atividades do algoritmo filtroMedianaSeletivo3x3(). 63 ........................ ix 
 Figura B.5: Representação gráfica do cálculo da mediana “seletiva” (caso 1). 64 .................. ix 
 Figura B.6: Representação gráfica do cálculo da mediana “seletiva” (caso 2). 64 .................. ix 
 Figura B.7: Fluxo de atividades da função polyak(). 65 ........................................................... ix 
 Figura B.8: Fluxo de atividades do algoritmo paralelo. 67 ...................................................... ix 
 Figura B.9: Fluxo de atividades da função distribuirLinhas(). 69 ............................................ ix 
 Figura B.10: Distribuição de linhas da matriz original em cada nó. 70 ................................... ix 
 Figura B.11: Tamanho da submatriz do processo local. 70 ...................................................... ix 
 Figura B.12: Cálculo do número de cada última linha das submatrizes. 71 ............................. ix 
 Figura B.13: Calculando endereço inicial e final da submatriz. 71 .......................................... ix 
 Figura B.14: Preenchendo submatriz(0). 72 ............................................................................. ix 
 Figura B.15: Preenchendo submatriz(1). 72 ............................................................................. ix 
 Figura B.16: Montagem da matriz final. 73 .............................................................................. ix 
 Figura B.17: Fluxo de atividades do algoritmo de montagem da matriz. 73 ............................ ix 
 Figura B.18: Representação gráfica da reconstrução da matriz de saída. 74 ............................ ix 
 Figura E.1: Grupo principal. 83 ................................................................................................ ix 
 Figura E.2: Comunicação ponto-a-ponto 84 ............................................................................ ix 
 Figura E.3: Comando Broadcast. 87 ......................................................................................... ix 
 Figura E.4: Exemplo de Reduce. 87 ......................................................................................... ix 
vi
 Figura E.5: Exemplo de Allreduce. 88 ..................................................................................... ix 
 Figura E.6: Exemplo de operação de soma com Scan. 89 ........................................................ ix 
 Figura E.7: Exemplo de Gather. 89 ........................................................................................... x 
 Figura E.8: Exemplo de Scatter. 90 ........................................................................................... x 
 Figura E.9: Exemplo de Allgather. 90 ....................................................................................... x 
1 INTRODUÇÃO ....................................................................................................................... 1 
2 FUNDAMENTOS TEÓRICOS ............................................................................................... 3 
3 ANÁLISE DA SOLUÇÃO .................................................................................................... 33 
4 PROPOSTA DE SOLUÇÃO PARALELA ........................................................................... 43 
 CONCLUSÕES ....................................................................................................................... 51 
 REFERÊNCIAS ...................................................................................................................... 53 
 APÊNDICE A – Tabelas de Dados ........................................................................................ 55 
 APÊNDICE B – Diagramas de Atividades .............................................................................. 59 
 APÊNDICE C – Código Seqüencial ........................................................................................ 74 
 APÊNDICE D – Código Paralelo ............................................................................................ 77 
 APÊNDICE E – MPI ............................................................................................................... 81 
vii
ÍNDICE DE FIGURAS
Figura 2.1: Convenção dos eixos para representação de imagens digitais. ............................... 4 
Figura 2.2. Matriz imagem e máscara. ........................................................................................ 6 
Figura 2.3. Aplicação de filtros. .................................................................................................. 6 
Figura 2.4: Máscara 3x3 ............................................................................................................. 7Figura 2.5: Máscara 5x5 (k = 25). ............................................................................................... 8 
Figura 2.6: Imagem da Lena sem degradação. ........................................................................... 8 
Figura 2.7: Imagem da Lena após a filtragem (filtro de média 5x5). ......................................... 8 
Figura 2.8: Máscara 5x5 (k = 65). ............................................................................................... 8 
Figura 2.9: Imagem da Lena sem degradação. ........................................................................... 9 
Figura 2.10: Imagem da Lena após a filtragem (filtro Gaussiano 5x5). ..................................... 9 
Figura 2.11: Representação gráfica do cálculo da mediana de um vetor. ................................... 9 
Figura 2.12: Imagem da Lena com ruído (Salt & Pepper 4%). ................................................ 10 
Figura 2.13: Imagem da Lena após a filtragem (filtro de Mediana 3x3). ................................. 10 
Figura 2.14: Formação de uma imagem pela passagem de radiação num meio não ideal. ...... 10 
Figura 2.15: Representação esquemática do sistema de formação de uma imagem. ............... 12 
Figura 2.16: Representação gráfica do rearranjo lexicográfico de uma matriz M. ................... 12 
 Figura 2.17: Lena original. .......................................................................................... 14 
Figura 2.18: Lena após filtro Motion Blur de 10 pixels e 0°. ................................................... 14 
 Figura 2.19: Lena original. .......................................................................................... 14 
Figura 2.20: Lena após filtro Motion Blur de 15 pixels e 0°. ................................................... 14 
 Figura 2.21: Lena original. .......................................................................................... 15 
Figura 2.22: Lena após filtro Motion Blur de 21 pixels e 0°. ................................................... 15 
Figura 2.23: Representação gráfica do comprimento da distorção. .......................................... 15 
Figura 2.24: Distorção aplicada com um ângulo de 45°. .......................................................... 15 
Figura 2.25: Distribuição dos pesos da distorção aplicada a 45°. ............................................. 15 
 Figura 2.26: Lena original. ........................................................................................ 16 
Figura 2.27: Lena após filtro Motion Blur de 10 pixels e 45°. ................................................. 16 
 Figura 2.28: Lena original. ....................................................................................... 17 
Figura 2.29: Lena após filtro Motion Blur de 15 pixels e 45°. ................................................. 17 
 Figura 2.30: Lena original. ........................................................................................ 18 
Figura 2.31: Lena após filtro gaussiano 4 pixels de raio e σ = 2. ............................................. 18 
Figura 2.32: Matriz Toeplitz com valores crescentes. .............................................................. 18 
Figura 2.33: Matriz Toeplitz com valores decrescentes. .......................................................... 18 
Figura 2.34: Imagem da Lena sem degradação. ....................................................................... 19 
Figura 2.35: Imagem da Lena após a filtragem (matriz Toeplitz com n = 1,2). ...................... 19 
Figura 2.36: Exemplo de arquivo PGM. ................................................................................... 26 
Figura 2.37: Visualização do exemplo (Fig. 2.36). ................................................................... 26 
Figura 2.38: Rede direta. ........................................................................................................... 29 
Figura 2.39: Rede indireta. ........................................................................................................ 29 
Figura 2.40: Rede de bus compartilhado. ................................................................................. 29 
Figura 2.41: Rede crossbar não bloqueante .............................................................................. 30 
Figura 2.42: Rede multiestágio. ................................................................................................ 30 
Figura 3.1: Representação discreta da cada pixel da imagem .................................................. 33 
Figura 3.2: Diagrama do processo de distorção e recuperação da imagem. ............................. 35 
Figura 3.3: Diagrama do processo de distorção da imagem. .................................................... 35 
Figura 3.4: Diagrama do processo de restauração. ................................................................... 35 
Figura 3.5: Imagem com distorção Motion Blur de 21 pixels e 45° e 6% de ruído. ............... 36 
Figura 3.6: Imagem da Lena após a filtra gem (filtro de Mediana 3x3).................................... 36 
viii
Figura 3.7: Diagrama de atividades do algoritmo seqüencial. .................................................. 37 
Figura 3.8: Tempo do processo vs número de iterações. .......................................................... 38 
Figura 3.8:Imagem original sem degrada ção. ........................................................................... 39 
Figura 3.9: Imagem degradada com efeito Toeplitz 1.3 e 7 % de ruído. .................................. 39 
Figura 3.10: Imagem recuperada após 40 iterações. ................................................................. 39 
Figura 3.11: Imagem recuperada após 320 iterações. ............................................................... 39 
Figura 3.12: Tempo do processo vs número de iterações. ........................................................ 40 
Figura 3.13: Erro do processo vs número de iterações. ............................................................ 40 
Figura 3.14: Lena após distorção Motion Blur de 21 pixels e 45° e ruído aditivo 4%. ............ 41 
Figura 3.15: Imagem degradada após a pré- filtragem (Filtro Mediana Seletivo). ................... 41 
Figura 3.16: Imagem restaurada (Método de Polyak) após 4 iterações. ................................... 41 
Figura 3.17: Imagem restaurada (Método de Polyak) após 20 iterações. ................................. 41 
Figura 3.18: Lena após distorção Motion Blur de 15 pixels e 45° e ruído aditivo 4%. ............ 42 
Figura 3.19: Imagem degradada após a pré- filtragem (Filtro Mediana Seletivo). ................... 42 
Figura 3.20: Imagem restaurada (Método de Polyak) após 4 iterações. ................................... 42 
Figura 3.21: Imagem restaurada (Método de Polyak) após 30 iterações. ................................. 42 
Figura 4.1: Diagrama de atividades do algoritmo paralelo. ...................................................... 45 
Figura 4.2 Tempos de execução do programa compilado com gcc (GNU) e icc (Intel) para 
320 iterações com uma imagem de 744x1024 pixels. .............................................................. 46 
Figura 4.3: Speed-up paralelo. .................................................................................................. 48 
Figura 4.4: Eficiência paralela. ................................................................................................. 48 
Figura 4.5: Imagem original degradada com efeito Toeplitz 1.3 e 3% de ruído. ..................... 49 
Figura 4.6: Imagem recuperada com método direto (BLAS mkl). ........................................... 49 
Figura 4.7: Imagem recuperada com Polyak após 350 iterações em 8 processadores . ........... 50 
Figura 4.8: Imagem original. .................................................................................................... 50 
Figura 4.9: Imagem recuperada com Polyak após 350 iterações em 1 processador. ................ 50 
Figura B.1: Diagrama de atividades do algoritmo seqüencial. ................................................. 59 
Figura B.2: Fluxo de atividades da função mediana(). ............................................................. 61 
Figura B.3: Fluxo de atividades da função filtroMediana3x3(). ............................................... 62 
Figura B.4: Fluxo de atividades do algoritmo filtroMedianaSeletivo3x3(). ............................. 63 
Figura B.5: Representação gráfica do cálculo da mediana “seletiva” (caso 1). ....................... 64 
Figura B.6: Representação gráfica do cálculo da mediana “seletiva” (caso 2). ....................... 64 
Figura B.7: Fluxo de atividades da função polyak(). ................................................................ 65 
Figura B.8: Fluxo de atividades do algoritmo paralelo. ............................................................ 67 
Figura B.9: Fluxo de atividades da função distribuirLinhas(). ................................................. 69 
Figura B.10: Distribuição de linhas da matriz original em cada nó. ......................................... 70 
Figura B.11: Tamanho da submatriz do processo local. ........................................................... 70 
Figura B.12: Cálculo do número de cada última linha das submatrizes. .................................. 71 
Figura B.13: Calculando endereço inicial e final da submatriz. ............................................... 71 
Figura B.14: Preenchendo submatriz(0). .................................................................................. 72 
Figura B.15: Preenchendo submatriz(1). .................................................................................. 72 
Figura B.16: Montagem da matriz final. ................................................................................... 73 
Figura B.17: Fluxo de atividades do algoritmo de montagem da matriz. ................................. 73 
Figura B.18: Representação gráfica da reconstrução da matriz de saída. ................................. 74 
Figura E.1: Grupo principal. ..................................................................................................... 83 
Figura E.2: Comunicação ponto-a-ponto ................................................................................. 84 
Figura E.3: Comando Broadcast. .............................................................................................. 87 
Figura E.4: Exemplo de Reduce............................................................................................... 87 
Figura E.5: Exemplo de Allreduce. ........................................................................................... 88 
Figura E.6: Exemplo de operação de soma com Scan. ............................................................. 89 
ix
Figura E.7: Exemplo de Gather. ............................................................................................... 89 
Figura E.8: Exemplo de Scatter. ............................................................................................... 90 
Figura E.9: Exemplo de Allgather. ........................................................................................... 90 
x
1 INTRODUÇÃO
1.1 MOTIVAÇÃO
A melhoria na qualidade de imagens ou processamento das mesmas para outros fins requer 
processos computacionalmente pesados e complexos. O desempenho destes processos pode 
ser melhorado utilizando-se implementações paralelas. Estas implementações paralelas po-
dem dar uma maior agilidade neste âmbito.
Este trabalho consiste no desenvolvimento de processos para restauração e tratamento de 
imagens que sofreram efeitos de degradação, utilizando para tanto, processos de redes neurais 
implementados em computadores paralelos assim como a otimização de alguns algoritmos 
usados no processamento de sinais.
Uma melhoria destes algoritmos, assim como a paralelização dos mesmos pode reduzir 
significativamente o tempo de execução dos processos, assim como melhores resultados des-
de o ponto de vista de medida de degradação.
1.2 DESCRIÇÃO DO PROJETO
O objetivo deste projeto é poder restaurar imagens digitais monocromáticas que sofreram 
algum tipo de degradação ou distorção. Para realizar esta restauração usamos métodos iterati-
vos para resolver os sistemas lineares que representam o fenômeno de degradação e recupera-
ção da imagem. Estes métodos iterativos são implementados com processos que usam redes 
neurais e são executados em um ambiente de computadores paralelos.
Uma imagem monocromática pode ser representada digitalmente por uma matriz bidimen-
sional, cada valor da matriz (pixel) representa o valor de brilho da imagem nesse ponto. À 
medida que a dimensão da matriz vai aumentando, temos uma imagem com maior resolução. 
Este aumento na resolução da imagem vai ser refletido em um aumento na memória necessá-
ria para poder armazenar o arquivo da imagem assim como na memória necessária no proces-
sador para poder tratar a mesma.
Para trabalhar na restauração destas imagens usamos um modelo linear (Jacobi e Polyak) 
[3], [4] que faz necessário o uso de matrizes de dimensões exponencialmente maiores que a 
dimensão da matriz que representa a imagem original. Este fato dificulta a execução destes 
processos em computadores comuns, já que para trabalhar com estas matrizes se requer de 
muita memória e de alto poder de processamento.
1
Os modelos lineares antes mencionados (Jacobi e Polyak) têm uma estrutura que facilita a 
divisão do processo em vários subprocessos menores que podem ser resolvidos ao mesmo 
tempo, é por isso que a computação paralela aparece como uma opção viável para trabalhar 
com estas grandes quantidades de dados. Alem da paralelização dos processos de restauração 
foram otimizados alguns dos algoritmos já conhecidos no processamento de imagens e que 
são utilizados neste trabalho. 
As imagens tratadas foram codificadas no formato PGM (Portable Gray Map) [11], este 
formato facilita a manipulação destas imagens já que as representa como uma matriz de valo-
res arbitrários de escala de cinzas colocados num arquivo tipo texto.
2
2 FUNDAMENTOS TEÓRICOS
2.1 PROCESSAMENTO DE IMAGENS
O processamento de imagens tem como objetivo melhorar a aparência das imagens e fazer 
mais evidente nelas determinados aspectos que se deseja ressaltar. O processamento pode ser 
feito por meios óticos ou por meios digitais usando métodos computacionais. Neste trabalho 
utilizamos o meio digital.
Da mesma maneira do método ótico, os fundamentos do processamento digital de imagens 
têm sido estabelecidos faz muitos anos, mas não eram realizados devido à falta de com-
putadores eficientes. Com o surgimento de computadores de alto desempenho e memória, co-
meçou-se a desenvolver este campo.
Um dos primeiros lugares onde se realizaram projetos de processamento de imagens foi no 
Laboratório de Propulsão a Jato (Jet Propulsion Laboratory) [18], no ano de 1959 com a fi-
nalidade de melhorar as imagens enviadas pelos satélites. Os resultados obtidos por este pro-
jeto foram tão impressionantes e num período de tempo tão curto que as aplicações foram le-
vadas rapidamente a outros campos.
2.2 PROCESSAMENTO DIGITAL DE IMAGENS
Nos últimos anos, o processamento digital de imagens tem sido usado amplamente em di-
versos campos da ciência humana tais como: Medicina, Biologia, Física e Engenharia [14].
Por meio do processamento digital, é possível manipular imagens digitais em um compu-
tador com o objetivo de obter informações objetivas e claras da cena capturada pela câmera. 
O processamento digital de imagens tem dois objetivos fundamentais:
• Melhoramento de uma imagem digital com fins de interpretação.
• Tomada de decisão de maneira automática de acordo com o conteúdo da imagem.
Como aplicações típicas, podemos mencionar: detecção de presença de objetos, inspeção 
visual automática, medição de características geométricas e de cor de objetos, classificação de 
objetos, restauração de imagens e melhoramento da qualidade das imagens.
2.2.1 Representação de Imagens Digitais
O termo imagem monocromática, ou simplesmente imagem, refere-se à função bidimensi-
onal de intensidade da luz f(x,y), onde x e y denotam as coordenadas espaciais e o valor f em 
3
qualquer ponto (x,y) é proporcional ao brilho (ou níveis de cinza) da imagem naquele ponto 
[14].
Uma imagem digital é uma imagem f(x,y) discretizada tanto em coordenadas espaciais 
quanto em brilho (intensidade da luz). Uma imagem digital pode ser considerada como uma 
matriz cujos índices de linhas e de colunas identificam um ponto na imagem, e o correspon-
dente valor do elemento da matriz, identifica o nível de cinza naquele ponto. Os elementos 
dessa matriz digital são chamados: elementos da imagem, elementos da figura, pixels ou pels 
(abreviações de picture elements). Quanto mais pixels uma imagem tiver melhor é a sua re-
solução e qualidade [14].
Figura 2.1: Convenção dos eixos para representação de imagens digi-
tais. 
2.3 FILTROS DIGITAIS
Em muitas aplicações no tratamento de imagens digitais é necessária a filtragem destas 
tanto na remoção de ruído quanto na segmentação, enfoque, suavizado, etc. Para estes propó-
sitos são utilizados os filtros digitais 2-D lineares e não lineares.
Os processos de melhoria da imagem podem agrupar-se tendo em conta o mecanismo utili-
zado na modificação da imagem digital. Assim existem algoritmos que modificam o histo-
grama ou função de distribuição de intensidade, algoritmos que modificam o conteúdo de 
cada pixel da imagem de acordo com os valores dos pixels vizinhos aplicando uma determi-
nada função pré-determinada e outros que filtram determinadas freqüências.
Uma parte muito importante no processo de restauração de imagens baseia-se na aplicação 
de funções, cujo resultado depende unicamente dos níveis de intensidade de cada pixel da 
imagem, mas não da posição dentro da imagem (Position-invariant), que permitemressaltar 
4
determinados elementos da imagem, melhorar o enfoque ou ainda reduzir o ruído no fundo da 
imagem.
Entre os principais objetivos da filtragem digital podemos mencionar a melhoria na quali-
dade de uma imagem (realce-sharpening-enhancement), eliminação de ruídos (noise), corre-
ção de imagens, segmentação, eliminação de distorções e criação de efeitos artísticos.
As funções aplicadas às imagens que por analogia com a teoria de processamento de sinais 
se denominam filtros, baseiam-se no processo de convolução e nas propriedades da convolu-
ção da transformação de Fourier, o que simplifica o cálculo matemático e os tempos de com-
putação. 
Por este motivo, muitos destes filtros herdam o nome segundo sua ação no espaço das fre-
qüências (filtros Passa-Alto, Passa-Baixo ou Direcionais). Embora cada vez mais freqüente, 
nos sistemas de processamento de imagens, se lhes atribui nomes de acordo com o resultado 
visual que produzem na imagem filtrada (filtros de enfoque ou dês-enfoque).
Um filtro de convolução, para uma imagem digital, no espaço real (x, y), pode representar-
se como uma matriz quadrada ou retangular (máscara), de dimensões pré-definidas (M×N). A 
matriz de convolução se desloca sob a imagem de tal forma que o elemento central da matriz 
de convolução coincida com cada um dos pixels da imagem. Em cada posição, se multiplica o 
valor de cada pixel da imagem, que coincide em posição com um elemento da matriz de con-
volução, pelo valor deste. O pixel da imagem, que coincide com o elemento central da matriz 
de convolução é substituído pela suma dos produtos.
2.3.1 Tipos de filtros digitais
Em filtragem digital existem dois tipos de domínio:
• Filtragem no Domínio da Freqüência. Neste domínio utilizamos a Transformada de 
Fourier, este tipo de filtragem é baseado no teorema da convolução.
• Filtragem no Domínio Espacial. Utilizamos máscaras.
2.3.2 Máscaras
O efeito que os filtros ocasionam representa-se digitalmente pela aplicação de máscaras 
nas matrizes que representam uma imagem.
Na figura 2.2 é representada uma matriz de valores onde aplicamos uma máscara de di-
mensão (3×3), o resultado da aplicação dessa máscara é um novo valor P33’ na posição do 
5
elemento P33 (figura 2.3). Este novo valor (P33’) é o resultado de uma função matemática 
dos elementos f contidos na máscara. 
66P65P64P63P62P61P
56P55P54P53P52P51P
46P45P44P43P42P41P
36P35P34P33P32P31P
26P25P24P23P22P21P
16P15P14P13P12P11P
987
654
321
fff
fff
fff
matriz máscara
Figura 2.2. Matriz imagem e máscara.
 
P33’=P22.f1+P23.f2+P24.f3+P32.f4+P33.f5+P34.f6+P42.f7+P43.f8+P44.f9
Figura 2.3. Aplicação de filtros.
2.3.3 Filtragem no domínio da freqüência (Domínio Fourier)
A base para a técnica baseada no domínio da freqüência é o teorema de Convolução. Con-
volução é o produto da transformada de Fourier aplicada pixel a pixel entre duas imagens en-
volvidas.
O efeito na aquisição de uma imagem é representado pela Função de Espalhamento de 
Pontos, PSF (Point Spread Function). 
Pequenas mudanças nos níveis de cinza são representadas como sendo de baixa freqüência 
e mudanças bruscas nos níveis de cinza (bordas) são representados como sendo de alta fre-
qüência.
Seja g(x,y) uma imagem formada pela convolução de uma imagem f(x,y) e um operador in-
variante h(x,y) (função de transferência do filtro), onde:
g(x,y) = h(x,y) * f(x,y)
6
Pelo teorema da convolução, tem-se a seguinte relação no domínio da freqüência.
G(x,y) = H(x,y) · F(x,y) onde:
G, H e F são as transformadas de Fourier de g, h e f.
A convolução no domínio da freqüência é mais fácil que no domínio espacial já que é sim-
plesmente o produto da transformada de Fourier pixel a pixel entre as imagens envolvidas, 
neste caso se o núcleo for menor, completa-se a matriz H com zeros.
Os principais filtros no domínio da freqüência são o Ideal, Batherworth, Cheby, Gaussiano 
e Filtro Wiener.
2.3.4 Filtragem Espacial
Esta técnica é baseada na aplicação de mascaras na imagem, estas máscaras são normal-
mente chamadas de Filtros Espaciais e são divididos em dois tipos principais.
• Filtros lineares. Onde temos os filtros de passa - alta, passa - baixa e passa-banda.
• Filtros não lineares. Podemos mencionar a filtragem morfológica. 
Filtros lineares
Os filtros lineares se baseiam na mudança do nível de cinza de um ponto (pixel) em função 
dos outros pontos da sua vizinhança mediante a aplicação de uma máscara do tipo:
987
654
321
ωωω
ωωω
ωωω
Figura 2.4: Máscara 
3x3
Onde o nível de cinza do pixel central é dado por:
( ) kpppppppppt /998877665544332211 ×+×+×+×+×+×+×+×+×= ωωωωωωωωωω s
endo k uma constante para evitar que o nível de cinza fique fora do limite máximo dos valores 
dos pixels e pi o valor de nível de cinza do pixel i dentro da máscara. Os coeficientes da más-
cara dependem do tipo de filtro linear, no caso do filtro passa-baixos, por exemplo, são todos 
positivos [16].
A seguir mostramos alguns exemplos para filtros lineares.
Exemplo 2.1: Filtro de média
7
Neste caso a máscara é uma matriz de dimensão (5×5) com valores iguais de 1/25.
11111
11111
11111
11111
11111
1
k
Figura 2.5: Máscara 5x5 (k = 
25).
Figura 2.6: Imagem da Lena sem degradação. Figura 2.7: Imagem da Lena após a filtragem 
(filtro de média 5x5).
Na figura 2.7 podemos observar os efeitos do filtro aplicado à imagem original (figura 2.6), 
este filtro cria o efeito de uma imagem embaçada.
Exemplo 2.2: Filtro Gaussiano
Neste caso a máscara é uma matriz com os valores mostrados na figura 2.8.
12321
23432
34543
23432
12321
1
k
Figura 2.8: Máscara 5x5 (k = 65).
Aplicando este filtro também podemos notar que o efeito na imagem (figura 2.10) é de uma 
imagem embaçada, a diferença deste filtro é que a influencia dos pixels vizinhos não é igual 
na mascara inteira, o peso dos vizinhos decai conforme o pixel vai se afastando do centro da 
máscara.
8
Figura 2.9: Imagem da Lena sem degradação. Figura 2.10: Imagem da Lena após a filtragem 
(filtro Gaussiano 5x5).
2.3.5 Filtros de Mediana
Este tipo de filtro é um exemplo de Filtro não Linear, o nível de cinza do pixel no qual se 
aplica a máscara também depende dos níveis de cinza dos pontos vizinhos, mas não é uma 
função linear destes. Neste caso é a mediana dos níveis de cinza dos pontos vizinhos [17].
Algoritmo da mediana:
Dado um conjunto de valores v = [a, b, c, ...] temos que ordenar os valores de maneira 
crescente ou decrescente, depois obtermos a mediana selecionando o valor que fica no meio 
deste novo vetor crescente. No caso de um número par de valores, podemos selecionar qual-
quer um dos valores que ficarem no meio.
Exemplo 2.3: Cálculo de mediana. 
v = [5, 6, 8, 9, 3, 1, 2, 4, 7] (Vetor original)
v’ = [1, 2, 3, 4, 5, 6, 7, 8, 9] (Vetor reordenado de forma crescente)
Mediana(v) = 5
Figura 2.11: Representação gráfica do cálculo da mediana de um vetor.
9
Figura 2.12: Imagem da Lena com ruído 
(Salt & Pepper 4%).
Figura 2.13: Imagem da Lena após a filtragem 
(filtro de Mediana 3x3).
2.4 DISTORÇÃO DE IMAGENS
Quando capturamos uma imagem, na verdade obtemos o resultado da penetração da radia-
ção refletida na imagem original num meio não ideal que geralmente tem propriedades físicas 
que ocasionam uma distorção no percurso da radiação que leva à formação da imagem.
Na figura 2.14 temos uma representação gráfica do processo de captura de uma imagem. 
Quando uma determinada radiação (luz visível) atinge um objeto não opaco, este reflete parte 
da radiação recebida.
Figura 2.14: Formação de uma imagem pela passagem de radiação num 
meio não ideal.
As degradações que são encontradas na imagem gerada são introduzidas pelo sistema de 
formação da imagem e/ou por fatores externos que geram mudanças no ambiente em que é 
feita a aquisição da imagem, como variação de temperatura ou pressão. As formas mais co-
muns de degradação são: A resolução finita dos sensores utilizados na aquisição da imagem, 
embaçamentodevido ao movimento dos sensores ou do alvo no momento da aquisição, refra-
10
ção e embaçamento provocado por problemas de foco [1]. As distorções em imagens podem 
ser classificadas em duas categorias [2]
• Variantes no espaço. A distorção sofrida depende da região da imagem que esta-
mos analisando. Este tipo de distorção é ocasionado por problemas na aquisição ou por 
fatores externos.
• Invariantes no espaço. A distorção é a mesma em todas as regiões da imagem. 
Este tipo de distorção pode ser provocado por problemas de foco ou movimento da câ-
mera. 
No pressente trabalho, consideramos somente as distorções invariantes no espaço e lineares 
por elas terem um modelo matemático mais simples. Muitas das distorções não-lineares po-
dem ser aproximadas por distorções lineares.
2.5 MODELAGEM MATEMÁTICA DA DISTORÇÃO DE IMAGENS
O processo de formação da imagem pode ser representado matematicamente pela equação 
integral de Fredholm [1] que mostramos a seguir.
∫ ∫
∞
∞−
∞
∞−
+= ),(),(),,,(),( yxddfyxhyxg εηξηξηξ (2.1)
Sendo f( , )ξ η e g(x,y) as funções que descrevem o objeto (no plano de coordenadas ( , )ξ η , 
que é referido como plano do objeto) e a imagem gravada (no plano de coordenadas (x,y), que 
é referido como plano da imagem), h(x, ,y, )ξ η é a forma analítica da função degradação e 
(x,y)ε representa o ruído presente na imagem. 
Na figura 2.15 mostramos um esquema representativo do objeto e da imagem em seus res-
pectivos sistemas de coordenadas.
11
Figura 2.15: Representação esquemática do sistema de formação de uma imagem.
O conhecimento do ruído (x,y)ε é limitado pelos métodos estatísticos. No processamento 
de imagens, a função de degradação h(x, ,y, )ξ η geralmente é conhecida a priori e representa a 
resposta do sistema a um impulso unitário nas coordenadas (x,y). Este impulso unitário é re-
presentado, no campo da ótica como um ponto de luz, é por isso que a função h(x, ,y, )ξ η é tam-
bém conhecida como Point Spread Function (PSF). A função PSF assume um papel fun-
damental no processo de restauração de uma imagem assim como na escolha do método de 
restauração. 
O modelo de Fredholm [1] para formação de imagens, mostrado na equação (2.1) pode ser 
reescrito no caso de sistemas discretos como se mostra na equação a seguir.
( ) ( ) ( ) ( )yxyxhfyxg
MN
,,;,,, εηξηξ
βα
+= ∑∑ (2.2)
Se considerarmos h(x, ,y, )ξ η uma função linear então a equação (2.1) pode ser reescrita 
considerando f( , )ξ η , g(x,y) e (x,y)ε como vetores coluna de dimensão (M×N). Para poder dei-
xar estas matrizes (f, g e ε) na forma de vetor temos que usar um rearranjo lexicográfico des-
tas informações. Um rearranjo lexicográfico consiste em reagrupar o conteúdo da matriz num 
vetor único que tem cada linha da matriz empilhada uma após a outra. 
Figura 2.16: Representação gráfica do rearranjo lexicográfico de uma matriz M.
Agora podemos representar a equação (2.1) como uma equação linear representada na 
equação (2.3). 
.ε+= Hfg (2.3)
Na equação linear acima (2.3) g e f representam os arranjos lexicográficos das matrizes de 
imagem degradada e imagem original respectivamente, ε representa a componente de ruído 
12
aditivo e H é uma matriz operador que representa a função h(x, ,y, ).ξ η A multiplicação da ma-
triz H com o vetor imagem f executa a mesma operação que convoluir f( , )ξ η com h(x, ,y, ).ξ η
2.6 TIPOS DE DISTORÇÃO
Existem muitos tipos de distorção, mas nesta seção vamos mencionar somente os que fo-
ram tratados no processo de restauração.
2.6.1 Motion Blur (Distorção por movimento)
No caso da distorção Motion Blur (Distorção por Movimento) a função PSF é representa 
por uma matriz que descreve as contribuições de brilho de cada um dos vizinhos do pixel cen-
tral que entram no processo de distorção. Para uma distorção deste tipo (Motion Blur) temos 
dois parâmetros a considerar, o tamanho da distorção e o ângulo da distorço.
Tamanho da distorção: É o comprimento da distorção em pixels, este valor representa o nú-
mero de pixels que entram na movimentação da câmera.
Ângulo da distorção: Este valor representa o ângulo em sentido anti-horário no qual se mo-
vimenta a câmera.
Quando o ângulo é 0 (zero) é fácil notar que a distorção Motion Blur é basicamente uma 
média dos valores dos pixels vizinhos que entram na distorção. 
Exemplo 2.4: Neste exemplo mostramos uma distorção do tipo Motion Blur com 10 (dez) pi-
xels de comprimento e 0° (zero graus).
PSF = [0.05 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.05]
Na figura 2.18 podemos ver que o efeito de aplicar esta distorção é a aparência de ter cap-
turado a imagem em movimento.
13
 Figura 2.17: Lena original. Figura 2.18: Lena após filtro Motion Blur de 
10 pixels e 0°.
Exemplo 2.5: Neste caso mostramos uma distorção do tipo Motion Blur com 15 (quinze) pi-
xels de comprimento e 0° (zero graus). Podemos notar que a distribuição dos valores dos pe-
sos dos pixels vizinhos da uma média aritmética dos mesmos.
PSF = [a a a a a a a a a a a a a a a] , a = 0.0667
Na figura 2.20 podemos ver o efeito deste filtro com 15 pixels, é evidente que a distorção é 
mais forte que no exemplo com 10 pixels.
 Figura 2.19: Lena original. Figura 2.20: Lena após filtro Motion Blur de 
15 pixels e 0°.
Exemplo 2.6: Neste caso mostramos uma distorção do tipo Motion Blur com 21 (vinte e um) 
pixels de comprimento e 0° (zero graus). 
PSF = [a a a a a a a a a a a a a a a a a a a a a], a = 0.0476
Neste ultimo exemplo podemos ver o aumento no numero de pixels que participam da dis-
torção aumenta também o grau de distorção da imagem (ver figura 2.22). 
14
 Figura 2.21: Lena original. Figura 2.22: Lena após filtro Motion Blur de 
21 pixels e 0°.
Quando mudamos o ângulo da distorção a representação deste efeito inclui pixels que de 
diferentes linhas e colunas já que neste caso, devido ao formato da matriz da imagem, se faz 
impossível colocar o vetor de distorção ocupando somente o número de pixels do vetor origi-
nal.
Figura 2.23: Representação 
gráfica do comprimento da dis-
torção.
Figura 2.24: Distorção aplicada 
com um ângulo de 45°.
Figura 2.25: Distribuição dos 
pesos da distorção aplicada a 
45°.
Exemplo 2.7: Neste caso mostramos uma distorção do tipo Motion Blur com 10 (dez) pixels 
de comprimento e 45° (quarenta e cinco graus).
15




























=
00000000
000000
000000
000000
000000
000000
000000
000000
00000000
c
bac
bab
bab
bab
bab
bab
cab
c
PSF
a = 0.089584
b = 0.026239
c = 0.014511
 Figura 2.26: Lena original. Figura 2.27: Lena após filtro Motion Blur de 10 
pixels e 45°.
Exemplo 2.8: Neste caso mostramos uma distorção do tipo Motion Blur com 15 (quinze) pi-
xels de comprimento e 45° (quarenta e cinco graus).


































=
000000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
000000000
bc
bab
bab
bab
bab
bab
bab
bab
bab
bab
cb
PSF
a = 0.059824
b = 0.017522
c = 0.055572
16
 Figura 2.28: Lena original. Figura 2.29: Lena após filtro Motion Blur de 15 
pixels e 45°.
No exemplo 2.7 e 2.8 podemos notar que a distorção é numa determinada direção do plano 
da imagem, isso vai depender de um dos parâmetros da distorção (ângulo).
2.6.2 Gaussian Blur (Distorção Gaussiana)
Este tipo de distorção é muito usado, ocasiona redução de níveis de detalhe nas imagens e 
pode servir para diminuir o ruído das mesmas. O efeito visual desta distorção é semelhante ao 
suavizado numa imagem vista através de uma tela translúcida, distintamente do efeito bokeh 
[10] produzido por uma lente do fora de foco.
Matematicamente falando, aplicar uma distorção gaussiana numa imagem equivale a con-voluir esta imagem com uma distribuição gaussiana ou normal. Esta convolução tem o efeito 
de filtro passa-baixas. 
Para gerar este efeito aplicamos a distribuição gaussiana em duas dimensões representada 
na seguinte equação.
eyxG 22
1),(
π σ
= )2/()( 222 σyx +− (2.4)
Onde σ é o desvio padrão da distribuição gaussiana e x e y são as coordenadas do pixel na 
matriz imagem. Esta formula aplicada na matriz imagem produz uma superfície cujos contor-
nos são círculos concêntricos com uma distribuição gaussiana do centro para fora.
A seguir mostramos um exemplo onde aplicou-se uma distorção gaussiana com um raio de 
4 pixels e um σ igual a 2.
17






















=
gjidijg
jfhchfj
ihebehi
dcbabcd
ihebehi
jfhchfj
gjidijg
PSF
a= 0.0467
b= 0.0412
c= 0.0283
d= 0.0152
e= 0.0364
f= 0.0172
g= 0.0049
h= 0.0250
i= 0.0134
j= 0.0092
 Figura 2.30: Lena original. Figura 2.31: Lena após filtro gaussiano 4 pixels 
de raio e = 2.σ
2.6.3 Distorção Toeplitz 
A matriz Toeplitz é uma matriz onde todo elemento que se situa na mesma diagonal possui 
o mesmo valor. Nas figuras 2.32 e 2.33 temos alguns exemplos de matriz de Toeplitz.
















12345
21234
32123
43212
54321


























11/n1/n1/n³1/n1/n1/n
n/1
1/n²11/n1/n1/n³1/n1/n
1/n³n/111/n1/n1/n³1/n
1/n1/n²n/111/n1/n1/n³
1/n1/n³1/n²n/111/n1/n
1/n1/n³1/n²n/111/n
1/n1/n1/n1/n³1/n²n/11
245
245
24
42
52
4
54








n
n
Figura 2.32: Matriz Toeplitz com 
valores crescentes.
Figura 2.33: Matriz Toeplitz com valores decres-
centes.
Se a nossa matriz H da equação (2.3) for representada por uma matriz Toepliz podemos ter 
uma distorção similar a distorção por movimento (Motion Blur) com a diferença que a medida 
18
que os pixels vizinhos de uma mesma linha vão se afastando o peso que eles têm na distorção 
do elemento central diminui. Neste tipo de distorção usou-se o modelo da figura 2.33, neste 
modelo existe um parâmetro que é dado para poder aplicar a distorção, é o valor de n. A se-
guir mostramos alguns exemplos deste tipo de distorção.
Na figura 2.35 podemos ver como o efeito desta distorção se assemelha à distorção motion 
blur.
Figura 2.34: Imagem da Lena sem de-
gradação.
Figura 2.35: Imagem da Lena após a fil-
tragem (matriz Toeplitz com n = 1,2). 
2.7 MÉTODOS DIRETOS PARA RESOLUÇÃO DE SISTEMAS LINEARES
Estes métodos são os que após um número finito de etapas nos dão a solução exata do pro-
blema. Esta solução é exata se assumimos a não existência de erros de erredondamento [21].
Nesta cessão apresentaremos os principais métodos numéricos diretos para a resolução de 
sistemas lineares do tipo Ax=b semelhante ao sistema proposto na equação (2.3). Neste tipo 
de sistemas assumimos que MNA R∈ onde NM ≤ . Os métodos diretos nos dão uma respos-
ta exata do sistema e com esses métodos é possível determinar, a priori, o tempo máximo gas-
to para resolver um sistema, uma vez que sua complexidade é conhecida. R
2.7.1 Método de eliminação de Gauss
O método de Gauss consiste em aplicar transformações elementares sobre as equações do 
sistema Ax = b até que, depois de (M – 1) passos se obtenha um sistema triangular superior do 
tipo Ux = c, após a obtenção deste novo sistema a resposta é obtida por substituições retroati-
vas (back substitution).
bAx = MNA R∈
LUA =
19
Após (M-1) passos: cUx =
A matriz L é uma matriz triangular inferior com a diagonal principal igual a um e a matriz 
U é uma matriz triangular superior. A matriz A também pode precisar de permutações para 
chegar ao modelo LU.
PA=LU
2.7.2 Métodos de Fatorização
No método de eliminação de Gauss vimos que quando não há permutações, podemos obter 
a fatorização da matriz A da forma A=LU, onde U seria a matriz triangular superior obtida ao 
final da fatorização e L a matriz triangular inferior com diagonal unitária, cujos elementos re-
presentariam os multiplicadores mij.
Método de Doolittle
Neste método pretendemos obter as matrizes L e U tal que A=LU
























=
− nn
n
nnn u
uu
ll
l
A
00
0
1
01
1
001 111
11
21








 L U
Depois, efetuando o produto, podemos obter as formulas correspondentes ao método de Doo-
little:
Passo 1: jj au 11 = (j=1,…,n)
 1111 / ual ii = (i=2,…,n)
Passo k: rj
k
r
krkjkj ulau ∑
−
=
−=
1
1
 (j=k,…,n)
 kkrk
k
r
irikik uulal /)(
1
1
∑
−
=
−= (i=k+1,…,n)
Para fatorizar a matriz A usando este método é usado o mesmo número de operações que no 
método de eliminação de Gauss. Mesmo assim há uma grande vantagem neste método que é o 
melhor uso de memória para armazenar os elementos da matriz, já que não são sucessivamen-
te alterados como no método de Gauss.
20
Método de Cholesky
Este método só pode ser aplicado quando a matriz A é simétrica (A=AT) e positiva definida.
Na prática para verificar se a matriz é positiva definida gastaríamos mais tempo do que resol-
vendo este sistema. Por isto só aplicamos este método quando sabemos a priori se a matriz A é 
positiva definida e simetrica. 
Para estes tipos de matrizes é valida a afirmação: A=LLT, e o método consiste nos seguintes 
passos:
Passo 1: 1111 al = 
 1111 / lal ii = para i=2,…,n
Passo k: ( )∑
−
=
−=
1
1
2
k
m
kmkkkk lal 
 
kk
km
k
m
imik
ik l
lla
l
)(
1
1
∑
−
=
−
= para i=k+1,…,n
2.8 MÉTODOS ITERATIVOS PARA RESOLUÇÃO DE SISTEMAS LINEA-
RES
Estes métodos nos dão uma resposta aproximada do sistema de equações. A precisão destas 
respostas depende do número de iterações que são efetuadas. Quando o número de iterações 
tende ao infinito a resposta do sistema será exata. Este tipo de métodos são mais simples de 
serem implementados computacionalmente que os métodos diretos e são facilmente paraleli-
zaveis, é por este motivo que a implementação deste projeto foi feita usando estes métodos. 
2.8.1 Método de Jacobi
Embora o método de Jacobi não seja viável para muitos problemas este método propor-
ciona um conveniente ponto de partida para a discussão de métodos iterativos [3].
Sendo A uma matriz não singular (N×N) e
bAx = (2.5)
o sistema pode ser resolvido. Assumiremos que os elementos da diagonal principal, aii, de A 
são diferentes de zero. O método de Jacobi pode ser representado como:
21




+−= ∑
≠
+
ij
i
k
jij
ii
k
j bxaa
x 11 , i=1,...,n k=0,1,... (2.6)
onde os superíndices indicam o número da iteração que eles assumem, como se faz em todo 
método iterativo, a seqüência 002
0
1 ,...,, nxxx representa o chute inicial.
Para poder entender melhor este algoritmo vamos considerar que a matriz A pode ser des-
composta da seguinte maneira: 












+












=
0
0
0
0
000
000
000
000
434241
343231
242321
141312
44
33
22
11
aaa
aaa
aaa
aaa
a
a
a
a
A
isto é, A = D + B, sendo D uma matriz diagonal. Podemos substituir agora a nova representa-
ção de A em (2.5) deixando a equação da seguinte forma:
( )Bxb
a
x
BxbDx
bBxDx
bxBD
ii
−=
−=
=+
=+
1'
)(
O método de Jacobi não é sempre convergente, existem dois teoremas de convergência que 
serão mostrados a seguir.
Teorema 2.1. Se A é estritamente diagonal dominante, então as iterações de Jacobi sempre 
convergirão para qualquer valor inicial de x0 . 
Teorema 2.2. Se A = D + B é positiva definida, então as iterações de Jacobi convergirão para 
qualquer valor inicial de x0 se e somente se (D - B) é positivo definido. 
Teste de convergência
Em cada iteração há um teste necessário que se faz para verificar a convergênciado mé-
todo. Se xk é a seqüência de uma iteração, dois testes comuns são:
ε≤−+ kk xx 1 ou kkk xxx ε≤−+1 (2.7)
22
2.8.2 Iterações de Gauss-Seider e SOR
Consideremos outro método iterativo para resolver o sistema bAx = , onde assumiremos 
novamente que os elementos da diagonal principal de A são diferentes que zero. Após calcu-
lar a nova iteração de Jacobi para x1,




+−= ∑
=
+
1
2
1
11
1
1
1 bxa
a
x
n
j
k
jj
k
é razoável usar este valor atualizado em lugar de kx1 no cálculo dos subseqüentes 
1+k
ix . O 
principio de Gauss-Seider [3] é usar nova informação tão rápido como esta esteja disponível e 
a iteração de Gauss-Seider é dada por




+−−= ∑∑
><
++
ij
i
k
jij
ij
k
jij
ii
k
i bxaxaa
x 11 1 , (2.8)
i = 1,...,n, k = 0,1,...
Façamos
ULDA −−= (2.9)
onde D é a diagonal de A e -L e -U são as partes estritamente diagonal superior e inferior de 
A. Então podemos escrever (2.9) como
bUxLxDx kkk ++= ++ 11
ou
dHxx kk += ++ 11 , k = 0,1,..., ULDH 1)( −−= , bLDd 1)( −−= (2.10)
Desde que D-L é a parte triangular inferior de A, sua inversa existe pela assunção de que os 
elementos da diagonal de A são diferentes que zero.
Uma importante modificação na iteração de Gauss-Seider é dada a seguir. Deixemos 1ˆ +kix 
representar o lado direito de (2.8), a iteração Gauss-Seider é definida como:
)ˆ( 11 ki
k
i
k
i
k
i xxxx −+=
++ ω (2.11)
Substituindo a representação de 1ˆ +kix em (2.11) e rearranjando os termos mostrados, 
1+k
ix satisfaz
i
ij
k
jij
k
iii
ij
k
jij
k
iii bxaxaxaxa ωωωω +−−=+ ∑∑
><
++ )1(11 (2.12)
ou, em termos de matrizes de (2.9),
,...1,0 ,)(])1[()( 111 =−++−−= −−+ kbLDxUDLDx kk ωωωωω (2.13)
23
Isto define a iteração de sucessiva de sobre relaxação (SOR). Note que se 1=ω , (2.13) se 
reduziria à iteração de Gauss-Seider. Note também que LD ω− é não singular pela assunção 
dos elementos da diagonal de A. 
A seguir mostraremos um teorema que garante a convergência das iterações de Gauss-Sei-
der.
Teorema 2.3. Se A é estrita ou irredutivelmente diagonal dominante, ou se A é uma matriz M, 
então as iterações de Gauss-Seider convergem para qualquer valor inicial x0.
2.8.3 Método de Polyak
Este método também serve para resolver um sistema linear na forma bAx = , onde b e x 
são vetores n x 1 e A é uma matriz n x n, assumimos que num ponto xk, medimos a variável 
kkk bAxy ξ+−= , onde bAx k − é conhecido , e kξ é o ruído randômico. Assumindo que as 
seguintes afirmações são satisfeitas (os superíndices indicam o número da iteração que eles 
assumem) [4].
1. A matriz A é uma matriz de Hurwitz, i.e., Re( j) > 0 para todos os autovalores de λ A. 
2. O Ruído kξ não é correlativo, com 0)( =kM ξ , 0))(( >= SM Tkk ξξ (S > 0 significa 
que S é positiva definida, e M é a média). 
Podemos considerar o seguinte método iterativo para achar o ponto bAx 1' −= :
,...1,0 
1
ˆˆˆ
 
.
1
1
=
+
−+=
+−=⋅−=
+
+
k
k
xxxx
bAxyyxx
kk
kk
kkkkkkk ξγ
 (2.14)
Neste ponto o processo para achar xk é um processo de aproximação estocástico ordinário, e 
∑
−
=
=
1
0
ˆ
k
i
k
k
k
xx , i.e., os pontos kx̂ são valores médios das iterações xj, j = 0,1,...,k-1. 
Considerando os valores iniciais x0 e o tamanho de passo kγ podemos assumir o seguinte.
3. O ponto x0 é também determinístico e arbitrário, ou randômico com ∞<− 2
0 'xxM
4. Também 
)Re(2min0 ,
2−
=<<≡ jjj
k λλγγγγ , (2.15)
ou
24
∑
∞
=
+ ∞=∞→+=
0
k
1 ),(1
k
kk
k
k
γγγδ
γ
γ
 (2.16)
A condição (2.16) é satisfeita, por exemplo, pela seqüência 10 , <<= − αγγ αkk , mas não por 
1−= kk γγ . Em outras palavras sk ')(γ decresce mais lentamente que k/1 . 
2.9 ARQUIVOS PGM
O formato PGM é uma denominação pouco comum para Grayscale File Format. Este for-
mato foi desenhado para ser extremamente fácil de aprender e aplicar em programas de pro-
cessamento de imagens. Um arquivo PGM é texto integral e pode ser processado por ferra-
mentas de processamento de texto [11].
Uma imagem PGM representa uma imagem em escala de cinzas. Há muitos pseudofor-
matos PGM em uso onde tudo é especificado como neste formato com exceção do valor indi-
vidual de cada pixel. Para a maioria dos propósitos, uma imagem PGM pode ser entendida 
simplesmente como uma matriz de valores inteiros arbitrários, nesse sentido todos os progra-
mas que trabalham com imagens em escala de cinza podem ser facilmente usados para pro-
cessar qualquer outra coisa. O nome PGM é o acrônimo derivado de Portable Gray Map.
Uma variante oficial de PGM é a máscara de transparências. Uma máscara de transparên-
cia é representada por uma imagem de PGM, com exceção que em lugar de intensidades de 
pixel, há representação de valores de opaco (vide abaixo).
Um arquivo PGM consiste numa seqüência de um ou mais imagens PGM. Não há nenhum 
dado, delimitadores ou recheio antes, depois ou no meio da imagem. 
Cada imagem PGM está formada pelas seguintes partes:
1. Um identificador para reconhecer o tipo de arquivo. O identificador de uma imagem 
PGM é P5 (P2 no caso de imagens monocromáticas).
2. Os comentários. Estes comentários têm que começar pelo símbolo sustenido (#) e vão 
até o final de cada linha. Estes comentários serão ignorados.
3. Largura e altura da matriz que representa a imagem (Width × Height). É usada a forma-
tação ASCII com caracteres decimais.
4. Máximo valor de brilho (Maxval). Também em ASCII decimal e menor que 65536.
25
5. Tom de cinza para cada pixel. Os elementos de cada linha são separados por um espaço 
em branco. Cada valor de cinza é um número proporcional à intensidade de cada pixel e 
têm que estar no intervalo de zero a Maxval (zero representa o valor de preto total).
F i-
gura 2.36: Exemplo de arquivo PGM.
 
Figura 2.37: Visualização do exemplo (Fig. 2.36).
2.10 PROCESSAMENTO PARALELO 
2.10.1 Motivação e aplicações
O principal motivo da aparição da computação paralela foi a demanda por poder computa-
cional, tanto nas aplicações comercias quanto nas aplicações científicas.
IDENTIFICADOR
COMENTARIOS}
LARGURA E 
ALTURA
MAXIMO VALOR DE 
BRILHO
TOM DE CINZA PARA 
CADA PIXEL
26
Pelo lado das aplicações comerciais podemos mencionar os bancos, seguradoras e sistemas 
industriais cuja demanda por acesso intensivo a dados, processamento de transações e alta dis-
ponibilidade foram aumentando criticamente.
Assim como as aplicações comerciais, as aplicações científicas foram exigindo um maior 
uso de sistemas eficientes e de alto desempenho para poder simular ou modelar processos 
cada vez mais complexos e pesados desde o ponto de vista computacional.
Computação paralela tem sido tradicionalmente aplicada com muito sucesso no desenho de 
superfícies aerodinâmicas, motores de combustão interna, circuitos de alta velocidade e dese-
nho de estruturas, entre outras. Mais recentemente, desenho de sistemas microeletromecâni-
cos e nanoeletromecânicos (MEMS e NEMS) tem atraído significativamente a atenção. En-
quanto muitas aplicações em engenharia e desenho propõem problemas de múltipla escala 
temporal e espacial e junto com fenômenos físicos. Podem-se tratar estes problemas como 
uma mistura de fenômenos quânticos, dinâmica molecular, modelos contínuos e estocásticos 
de processos físicos como condução, convecção, radiação, e estruturas mecânicas, tudo em 
um único sistema. Isto representa um formidável desafio para a modelagem geométrica, mo-
delagem matemática e desenvolvimento de algoritmos, tudo no contexto de processamento 
paralelo [6].
Entre as mais relevantes aplicações podemos mencionar aplicações científicas, aplicações co-
merciais

Continue navegando