Você está na página 1de 157

1

RONIE PAULUCIO PORFIRIO

PROCESSAMENTO DE IMAGENS DE SENSORIAMENTO REMOTO


MULTITEMPORAIS USANDO A TRANSFORMADA RÁPIDA DE FOURIER

FILTRO TEMPORAL

Trabalho apresentado ao Centro


Universitário de Brasília (UniCEUB) como
pré-requisito para a obtenção de Certificado
de Conclusão do Curso de Graduação em
Engenharia de Computação. Orientador:
Luis Cláudio Lopes de Araújo.

Brasília
2008
2

RONIE PAULUCIO PORFIRIO

PROCESSAMENTO DE IMAGENS DE SENSORIAMENTO REMOTO


MULTITEMPORAIS USANDO A TRANSFORMADA RÁPIDA DE FOURIER

FILTRO TEMPORAL

Monografia apresentada ao Centro


Universitário de Brasília (UNICEUB) como
pré-requisito para a obtenção de Certificado
de Conclusão do Curso de Graduação em
Engenharia de Computação.

Aprovado pelos membros da banca examinadora em 01/12/2008, com menção ____


(_________________________________________________________________).

Banca Examinadora:

_________________________________
Presidente: Prof. Dr. Luis Cláudio Lopes de Araújo
UniCEUB

_________________________________
Prof. Dr. Jose Roque Magalhaes
UniCEUB

_________________________________
Prof. Dr. Miguel Arcanjo Bacellar Goes Telles Juni
UniCEUB
3

AGRADECIMENTOS

A Deus, por ter me concedido, através de sua bondade infinita, o potencial de


concretizar mais uma conquista em minha vida.

A toda minha família, em especial aos meus pais, Rommel Ferreira Porfírio e
Aparecida Paulucio Porfirio, pelo esforço na minha formação.

A minhas irmãs Elaine e Érica, pelo carinho e força que me dão.

Ao meu professor e orientador, Luis Cláudio Lopes de Araújo, pelo seu espírito
inovador e empreendedor na tarefa de multiplicar seus conhecimentos e sua presteza e
paciência sempre me direcionando para o caminho correto.

Aos meus co-orientadores Osmar Abílio de Carvalho Júnior e Nilton Correia da


Silva pelo auxílio no conhecimento técnico prestado.

Aos meus amigos do LSIE, em especial Antonio Felipe C. Júnior e José Oniram
A. Limaverde Filho, pelos esclarecimentos e contribuições de informações, sem os quais a
realização deste se tornaria mais árdua.

Aos amigos e colegas, em especial, Cristiano R. Isaac e João A. Romero, pelo


incentivo e momentos de descontração.

E a todos aqueles que direta ou indiretamente contribuíram para a realização deste


trabalho, os meus sinceros agradecimentos.
4

EPÍGRAFE

“De tudo, ficaram três coisas: a certeza de que ele estava sempre começando, a
certeza de que era preciso continuar e a certeza de que seria interrompido antes de terminar.
Fazer da interrupção um caminho novo. Fazer da queda um passo de dança, do medo uma
escada, do sono uma ponte, da procura um encontro.”
Fernando Sabino
5

RESUMO

Introdução. Com o avanço nas tecnologias de sensoriamento remoto e exploração espacial, o


homem tornou-se capaz de produzir diferentes tipos de imagens da superfície desse planeta.
Em especial, quando a imagem de uma determinada porção da superfície terrestre é obtida
periodicamente, produzimos as chamadas imagens de sensoriamento remoto multitemporais.
Essas imagens são de particular interesse, pois remetem a conhecimentos valiosos que ajudam
no entendimento de importantes assuntos como desmatamentos, queimadas dentre muitas
outras questões. Todavia, são raras as imagens multitemporais que possibilitam uma análise e
interpretação imediata em vista da existência de problemas e erros denominados ruídos
provenientes de diversos fatores como nuvens, sombras, etc. A rigor, nuvens e suas sombras
não são ruídos, elas são fenômenos naturais que podem aparecer ou não numa imagem. Mas
como uma imagem multitemporal possui inúmeras bandas, podemos considerá-las ruídos por
modificarem o sinal de forma abrupta. Assim, nesse trabalho, nuvens e sombras serão
considerados a fonte dos erros que se quer tratar.
Objetivo. Dessa forma, o objetivo desse trabalho é remover esse erro desenvolvendo um
software científico para processar essas imagens produzindo uma nova imagem sintética livre
desses ruídos. Pontos onde ocorre a presença de erros serão substituídos por uma informação
que mais se aproxima da realidade de acordo com o filtro empregado.
Método. O método (ou a solução) consiste em aplicar um filtro no domínio da freqüência por
meio do algoritmo da Transformada Rápida de Fourier. Basicamente podemos resumir o
método nos seguintes passos: transformação direta do sinal temporal extraído da imagem,
filtragem no domínio da freqüência e posterior transformação inversa do sinal filtrado de volta
para o domínio do tempo.
Resultado. O resultado é uma ferramenta capaz de remover o erro (proveniente de condições
atmosféricas) de imagens multitemporais. É um programa. Um Software Científico capaz de
filtrar qualquer imagem multitemporal eliminando ruídos.
Conclusões. Essa ferramenta auxiliará cientistas a desenvolver análises e interpretações nesse
tipo de dado de forma prática e rápida.
Palavras-chave: sensoriamento remoto, processamento de imagens, imagens multitemporais,
transformada rápida de Fourier, filtro, domínio do tempo, domínio da freqüência, programa,
algoritmo, software científico.
6

ABSTRACT

The advances in spacial exploration by developing artificial satellites and remote sensors
capable of retrieving valuable data changed the way mankind percept the outer space and our
inner home: The Earth. One of the new accomplished technologies is time remote sensors
images which gather information about a specific area of the planet several days per year.
Analysis and correct interpretation of those images may give us knowledge about some
significant set of issues. For example, they can show us the progress of deforestation in a
specific forest, the cycles between drought and rain seasons and many other questions
depending of the multitemporal image‟s data. Nevertheless, rarely multitemporal images are
in their best shape for correct interpretation to be performed since there are many factors that
may cause problems and errors. These errors are related with weather conditions like clouds,
shadows and many other things that together create what we call image noise. Thus, the main
goal of this piece of work is to process noisy multitemporal images producing new images
noise-removed. The means which we expect to achieve this goal is by performing frequency
filters using the Fast Fourier Transforms algorithm. Basically the process is resumed by three
steps: forward transform of the time domain sign extracted from the image, frequency
filtering followed by the inverse transform of the frequency domain filtered sign. The result
will be a scientific software tool that will produce noise-free steady images ready to yield
valuable knowledge.

Keywords: remote sensing, image processing, multitemporal images, Fast Fourier Transform
(FFT), filter, time domain, frequency domain, program, algorithm, scientific software.
7

Lista de Figuras

Figura 1 – Sinal extraído de uma imagem multitemporal. .................................................................................... 17


Figura 2 – Sinais original (em azul) e final (em vermelho). .................................................................................... 17
Figura 3 – Espectro eletromagnético. Fonte: http://static.howstuffworks.com ................................................... 22
Figura 4 – Eixos coordenados da imagem de sensoriamento remoto. ................................................................. 29
Figura 5 – Banda da imagem e respectivo zoom do quadrante mostrando os pixels. .......................................... 30
Figura 6 – Primeira banda da imagem multitemporal. ......................................................................................... 34
Figura 7 – Representação gráfica de três bandas da imagem multitemporal. ..................................................... 35
Figura 8 – Imagem multitemporal na qualidade de conjunto de imagens. ........................................................... 37
Figura 9 – Representação gráfica: Composição colorida de três bandas da imagem multitemporal. .................. 41
Figura 10 – Cubo representando uma imagem multitemporal. ............................................................................ 44
Figura 11 – Sinal temporal obtido a partir da imagem multitemporal. ................................................................ 45
Figura 12 - Sinal no domínio do tempo. ................................................................................................................. 46
Figura 13 – Sinal no domínio da freqüência. ......................................................................................................... 47
Figura 14 - Sinal contínuo. ..................................................................................................................................... 48
Figura 15 - Sinal discreto. ...................................................................................................................................... 49
Figura 16 – Número complexo na forma retangular. ................................................................................ 50
Figura 17 - Plano cartesiano. ................................................................................................................................. 51
Figura 18 – Magnitude e Fase para N = 4 + 3i. ...................................................................................................... 52
Figura 19 – Representação polar para N = 4 + 3i. ................................................................................................. 52
Figura 20 - Parte Real de um sinal no domínio do tempo...................................................................................... 54
Figura 21 - Parte real de um sinal no domínio da freqüência. ............................................................................... 55
Figura 22 - Parte Imaginária do sinal no domínio do tempo. ................................................................................ 55
Figura 23 - Parte imaginária do sinal no domínio da freqüência. ......................................................................... 56
Figura 24 - A Magnitude ou Espectro do sinal no domínio do tempo. .................................................................. 56
Figura 25 – Magnitude ou Espectro do sinal no domínio da freqüência. .............................................................. 57
Figura 26 - Fase do sinal no domínio do tempo. .................................................................................................... 57
Figura 27 - Fase do sinal no domínio da freqüência. ............................................................................................. 58
Figura 28 - Norma do sinal no domínio do tempo. ................................................................................................ 58
Figura 29 - Norma do sinal no domínio da freqüência. ......................................................................................... 59
Figura 30 - Parte real do sinal no ponto (100,100) da imagem da Figura 8. ........................................................ 60
Figura 31 - Parte real completada com zeros. ....................................................................................................... 60
Figura 32 - Parte imaginária. ................................................................................................................................. 61
Figura 33 – Espectro ou magnitude. ...................................................................................................................... 61
Figura 34 – Fase..................................................................................................................................................... 61
Figura 35 - Espectro de potência ou norma. .......................................................................................................... 62
Figura 36 - Parte real do sinal transformado para o domínio da freqüência. ....................................................... 62
Figura 37 - Zoom da parte real. ............................................................................................................................. 62
Figura 38 - Parte imaginária. ................................................................................................................................. 63
Figura 39 - Zoom da parte imaginária do sinal. .................................................................................................... 63
Figura 40 - Espectro do sinal.................................................................................................................................. 63
Figura 41 - Zoom do Espectro. ............................................................................................................................... 63
Figura 42 - Fase do sinal. ....................................................................................................................................... 64
Figura 43 - Zoom da fase do sinal. ......................................................................................................................... 64
Figura 44 - Espectro de potência do sinal. ............................................................................................................. 65
Figura 45 - Zoom do espectro de potência. ........................................................................................................... 65
Figura 46 - Retrato de Jean B. J. Fourier ................................................................................................................ 67
Figura 47 - Teoria Analítica do Calor de Jean B. J. Fourier ..................................................................................... 68
Figura 48 – Cubo de uma imagem de sensoriamento remoto multitemporal...................................................... 87
Figura 49 – Sinal temporal discreto extraído da imagem no ponto (100,100). ..................................................... 88
Figura 50 – O sinal temporal foi transformado para o domínio da freqüência. .................................................... 88
Figura 51 –Filtro passa-banda sendo aplicado ao sinal anterior. .......................................................................... 89
Figura 52 – Sinal original (azul) e sinal filtrado (vermelho). .................................................................................. 89
Figura 53 - Fluxograma do processo. .................................................................................................................... 90
8

Figura 54 Imagem multitemporal resposta gerada a partir do filtro que foi aplicado. ........................................ 91
Figura 55 - Banda antes do filtro. .......................................................................................................................... 92
Figura 56 - Banda depois do filtro. ........................................................................................................................ 92
Figura 57 – Filtro passa-alta. ................................................................................................................................. 93
Figura 58 - Filtro passa-baixa. ............................................................................................................................... 94
Figura 59 – Filtro passa-banda. ............................................................................................................................. 95
Figura 60 - Filtro para-banda. ............................................................................................................................... 95
Figura 61- Janela Principal do programa em execução. ...................................................................................... 102
Figura 62 - Menu Arquivo. ................................................................................................................................... 103
Figura 63 - Abrir uma imagem multitemporal. Nesse exemplo abrimos pnsc_ndvi.img. .................................... 103
Figura 64 - Janela Inicial mostrando os dados da imagem escolhida.................................................................. 104
Figura 65 - Menu Visualizar. ................................................................................................................................ 104
Figura 66 - Janela visualizando a banda da imagem carregada. ........................................................................ 105
Figura 67 - Alternando entre as bandas da imagem. .......................................................................................... 105
Figura 68 – Sinal temporal extraído da imagem multitemporal na coordenada escolhida. ............................... 106
Figura 69 - Visualização do filtro, e do sinal no domínio do tempo e da frequência. .......................................... 107
Figura 70 - Janela "Filtro". ................................................................................................................................... 107
Figura 71 – Filtro configurável em tempo real. .................................................................................................. 108
Figura 72 - Após ter definido o filtro, encontramos a opção "Gerar" na janela principal. .................................. 109
Figura 73 - Diálogo pedindo o nome e o local onde a nova imagem resposta será salva. .................................. 109
Figura 74 - A nova imagem está sendo criada. ................................................................................................... 110
Figura 75 - A nova imagem está sendo criada. ................................................................................................... 111
Figura 76 - A nova imagem foi criada com sucesso, ............................................................................................ 111
Figura 77 - Interface principal do Laboratório de Sinais. ..................................................................................... 112
Figura 78 - Interface Gerar Sinais ........................................................................................................................ 115
Figura 79 - Gráfico da Amostra da Exponencial. ................................................................................................. 118
Figura 80 – Parte real da transformada de Fourier da exponencial. ................................................................... 119
Figura 81 - Parte imaginária da transformada de Fourier da exponencial. ........................................................ 119
Figura 82 - Transformada inversa da transformada direta de fourier. ............................................................... 120
Figura 83 - Parte real do sinal cosseno gerado.................................................................................................... 123
Figura 84 - Espectro (Magnitude) da transformada do sinal. ............................................................................. 123
Figura 85 - Zoom do espectro. ............................................................................................................................. 124
Figura 86 - Fase da transformada. O eixo y foi colocado em graus. ................................................................... 124
Figura 87 - Zoom da fase. .................................................................................................................................... 125
Figura 88 - Sinal exemplo gerado pelo programa. .............................................................................................. 126
Figura 89 - Gráfico do Espectro de Magnitude gerado por outro software. ....................................................... 129
Figura 90 - Gráfico do Espectro de magnitude gerado pelo programa. .............................................................. 129
Figura 91 - Gráfico do espectro de fase gerado por outro software. .................................................................. 130
Figura 92 - Gráfico do Espectro de Fase gerado pelo programa. ........................................................................ 130
Figura 93 - Tela inicial da instalação. .................................................................................................................. 150
9

Sumário

Capítulo 1 Introdução ................................................................................................ 12


1.1 Motivação .................................................................................................................. 13
1.2 Objetivo Geral ............................................................................................................ 13
1.3 Objetivos Específicos .................................................................................................. 13
1.4 Resultados Esperados ................................................................................................. 14
1.5 Estrutura do Trabalho ................................................................................................. 14
Capítulo 2 Apresentação do Problema ....................................................................... 16
Capítulo 3 Imagens de Sensoriamento Remoto Multitemporais .................................. 19
3.1 Sensoriamento Remoto .............................................................................................. 19
3.2 Imagens de Sensoriamento Remoto: Formação ........................................................... 21
3.2.1 A radiação eletromagnética .......................................................................................................... 21
3.2.2 Sensores Remotos ......................................................................................................................... 23
3.2.3 Satélites Artificiais ......................................................................................................................... 24
3.3 Imagens de Sensoriamento Remoto: Características .................................................... 27
3.3.1 Estrutura das Imagens de Sensoriamento Remoto ....................................................................... 28
3.3.2 Resolução das Imagens de Sensoriamento Remoto ...................................................................... 31
3.4 Composição de Imagens de Sensoriamento Remoto .................................................... 33
3.4.1 Dados ou Imagens? ....................................................................................................................... 33
3.4.2 Redefinindo alguns termos ............................................................................................................ 37
3.4.3 Tipo de Imagens de Sensoriamento Remoto................................................................................. 38
3.5 Imagens de Sensoriamento Remoto encontradas nesse trabalho ................................. 40
Capítulo 4 Sinais ........................................................................................................ 43
4.1 O que são Sinais? ........................................................................................................ 43
4.2 Propriedades dos Sinais .............................................................................................. 45
4.2.1 Domínio do Sinal ............................................................................................................................ 45
4.2.2 Periodicidade do Sinal ................................................................................................................... 47
4.2.3 Sinais contínuos versus sinais discretos ........................................................................................ 47
4.3 Classes de sinais ......................................................................................................... 49
4.4 Complexidade do Sinal................................................................................................ 49
4.4.1 Representação de Sinais Complexos ............................................................................................. 53
4.4.2 Um último exemplo ....................................................................................................................... 59

Capítulo 5 Transformadas de Fourier ......................................................................... 66


5.1 Introdução às Transformadas ...................................................................................... 66
5.2 Histórico..................................................................................................................... 67
5.3 A Análise de Fourier.................................................................................................... 69
5.3.1 Transformada de Fourier de Tempo Contínuo .......................................................................... 71
5.3.2 Discrete Fourier Transform: A Série de Fourier de Tempo Discreto .............................................. 73
5.4 A Transformada Rápida de Fourier (FFT) ............................................................. 76
5.4.1 Histórico ....................................................................................................................................... 76
10

5.4.2 O método ...................................................................................................................................... 76


5.4.3 O Algoritmo ................................................................................................................................... 79

Capítulo 6 Processamento de Imagens de Sensoriamento Remoto Multitemporais ..... 81


6.1 Introdução ao Processamento Digital de Imagens de Sensoriamento Remoto .............. 81
6.2 Formas de Processamento de Imagens ........................................................................ 82
6.3 Razão de se processar imagens de sensoriamento remoto multitemporais .................. 83
Capítulo 7 Procedimento que iremos adotar para processar imagens de sensoriamento
remoto multitemporais usando a Transformada Rápida de Fourier .................................. 86
7.1 Procedimento e Processos .......................................................................................... 86
7.2 Os Filtros .................................................................................................................... 93
7.2.1 Filtro Passa-alta ............................................................................................................................. 93
7.2.2 Filtro Passa-baixa ........................................................................................................................... 94
7.2.3 Filtro Passa-banda ......................................................................................................................... 94
7.2.4 Filtro Para-banda ........................................................................................................................... 95

Capítulo 8 Programando o Software Científico ........................................................... 96


8.1 A Linguagem de Programação ..................................................................................... 96
8.2 As Estruturas de Dados ............................................................................................... 97
8.2.1 A classe complex ............................................................................................................................ 97
8.2.2 A classe valarray ............................................................................................................................ 98
8.2.3 Modelando os Sinais ...................................................................................................................... 98
8.3 As bibliotecas de acesso e manipulação de imagens .................................................... 99
8.4 Os Algoritmos Desenvolvidos .................................................................................... 100
8.4.1 Transformadas dos sinais ............................................................................................................ 100
8.4.2 Processamento da Imagem ......................................................................................................... 101
8.5 Processando Imagens Multitemporais ....................................................................... 102
8.6 Laboratório de Sinais ................................................................................................ 112
Capítulo 9 Validando os Resultados ......................................................................... 117
9.1 Primeiro Exemplo: Função Exponencial ..................................................................... 117
9.2 Segundo Exemplo: Função Cosseno ........................................................................... 120
9.3 Terceiro Exemplo: Cosseno e Seno ............................................................................ 125
Capítulo 10 Conclusão ............................................................................................... 134
10.1 Conclusões ............................................................................................................... 134
10.2 Sugestões para trabalhos futuros .............................................................................. 135
Referências ................................................................................................................... 137
APÊNDICE A - Estruturas de Dados ............................................................................ 139
APÊNDICE B - Algoritmos Desenvolvidos: Transformadas .......................................... 140
APÊNDICE C - Algoritmos Desenvolvidos: Processamento .......................................... 145
APÊNDICE D - DVD .................................................................................................... 150
ANEXO A - O Algoritmo da Transformada Rápida de Fourier (FFT) ............................ 153
11

ANEXO B - A Biblioteca TImagem ............................................................................. 156


12

Capítulo 1 Introdução

Os avanços na exploração espacial mudaram a forma como o homem percebe o

espaço que o rodeia seja olhando para fora e maravilhando-se com uma infinidade de

planetas, estrelas e galáxias que habitam o universo ou olhando para dentro e observando esse

pequeno planeta azul que chamamos Planeta Terra. Sem dúvida, muita tecnologia foi

produzida desde que o Sputnik, primeiro satélite artificial, foi lançado alavancando assim a

então corrida espacial até os dias de hoje quando podemos observar nosso planeta na palma de

nossa mão, ou pelo menos, na tela de nosso computador usando diversos softwares de

simulação.

Em especial, quando a imagem de uma determinada porção da superfície terrestre

é obtida periodicamente, produzimos as chamadas imagens de sensoriamento remoto

multitemporais. Essas imagens são de particular interesse quando devidamente analisadas e

corretamente interpretadas porque remetem a conhecimentos valiosos que ajudam no

entendimento de importantes assuntos como desmatamentos, queimadas dentre muitas outras

questões. Todavia, são raras as imagens multitemporais que possibilitam uma análise e

interpretação imediata em vista da existência de problemas e erros denominados ruídos

provenientes de diversos fatores como nuvens, sombras, suspensão de partículas sólidas no ar,

etc.

Dessa forma, esse trabalho se destina a desenvolver uma ferramenta

computacional de processamento de imagens de sensoriamento remoto multitemporais com o

objetivo de corrigir esses problemas e erros. Basicamente, esse processamento consiste em

filtrar imagens multitemporais ruidosas gerando novas imagens eliminando, ou pelo menos,

minimizando esses ruídos. À medida que o leitor avançar na leitura, os conceitos que

permeiam esse trabalho serão explicados e o leitor será conduzido ao entendimento de todo o
13

processo. Se você possuir algum interesse em processamento de imagens, processamento de

sinais e até mesmo sobre sensoriamento remoto, certamente a leitura desse trabalho será

proveitosa.

1.1 Motivação

A principal motivação é desenvolver novas tecnologias aplicando na prática os

conhecimentos alcançados ao longo do curso de Engenharia de Computação. Nesse sentido,

valendo-se dos métodos matemáticos aprendidos durante o curso de engenharia aliados ao

conhecimento das ciências da computação, procurou-se desenvolver novas ferramentas

destinadas à resolução dos mais diversos problemas. Nesse trabalho, os esforços foram

direcionados no sentido de criar uma nova forma de processar imagens.

1.2 Objetivo Geral

O objetivo geral desse trabalho é desenvolver um software científico para

processar imagens de sensoriamento remoto multitemporais usando o método matemático

denominado Transformada de Fourier. Esse método será utilizado para realizar filtragens na

freqüência de sinais extraídos das imagens multitemporais. Essas filtragens darão origem a

novas e melhores imagens.

1.3 Objetivos Específicos

Esse método matemático referenciado no tópico 1.2 acima deu origem a um

método numérico consagrado denominado Transformada Rápida de Fourier. Assim, entender

e adaptar esse método numérico de forma a empregá-lo no processamento de imagens de

sensoriamento remoto multitemporais constitui um primeiro objetivo específico.


14

Além disso, outro objetivo é desenvolver um software científico capaz de usar

essa transformada para processar imagens. Para tanto, será necessário definir as estruturas de

dados necessárias à programação e modelagem computacional do problema e sua solução.

1.4 Resultados Esperados

Espera-se ter desenvolvido (e documentado com essa monografia) uma ferramenta

de tratamento ou processamento de imagens de sensoriamento remoto multitemporais capaz

de filtrar essas imagens minimizando os erros e, assim, porque não dizer corrigindo a

imagem? Espera-se gerar novas imagens a partir das originais passíveis de serem

interpretadas corretamente.

1.5 Estrutura do Trabalho

No Capítulo 2 – “Apresentação do Problema” (p. 16) apresentamos de forma bem

definida qual é o problema que estamos tentando resolver.

No Capítulo 3 – “Imagens de Sensoriamento Remoto” (p.19) mostramos todos os

conceitos e processos relativos à formação de uma imagem de sensoriamento remoto.

Também é aqui que definimos o que é uma imagem de sensoriamento remoto multitemporal.

No Capítulo 4 – “Sinais” (p.43) introduzimos conceitos gerais relativos a sinais e

direcionamos a discussão aos sinais que poderemos extrair de imagens multitemporais.

No Capítulo 5 - "Transformadas de Fourier” (p.66) abordamos esse método

matemático que deu origem ao principal método numérico que assume importância central

nesse trabalho: A Transformada Rápida de Fourier.

No Capítulo 6 – “Processamento de Imagens de Sensoriamento Remoto

Multitemporais” (p.81) introduzimos algumas formas de se processar imagens terminando por

explicar quais as razões de se processar imagens de sensoriamento remoto multitemporais.


15

No Capítulo 7 – “Procedimento que iremos adotar para processar imagens de

sensoriamento remoto multitemporais usando a Transformada Rápida de Fourier” (p.86)

fazemos o que o título desse capítulo informa, ou seja, detalhamos todo o processo escolhido

para se processar nossas imagens.

No Capítulo 8 – “Programando o Software Científico” (p.96) apresentamos as

estruturas de dados utilizadas no software desenvolvido.

No Capítulo 9 – “Validando os Resultados” (p.117) mostramos alguns exemplos

de processamento de sinais controlados para validar a correção do algoritmo usado.

Finalmente, no Capítulo 10 – “ Conclusão” (p.134) terminamos esse trabalho

apresentando nossas conclusões e sugestões para trabalhos futuros.


16

Capítulo 2 Apresentação do Problema

Uma vez que esse trabalho se intitula “Processamento de Imagens de

Sensoriamento Multitemporais usando a Transformada Rápida de Fourier” fica óbvio que o

objetivo desse processamento é resolver algum “problema” na imagem multitemporal.

Como veremos mais detalhadamente no tópico 6.3 – “Razão de se processar

imagens de sensoriamento remoto multitemporais” (p. 83), a razão de processar imagens de

sensoriamento remoto multitemporais é corrigir erros. De fato, esses erros podem ser

provenientes de diversos fatores: nuvens, por exemplo, tanto a formação da nuvem em si

como a sua sombra constituem a principal fonte de erro encontrado em imagens de

sensoriamento remoto multitemporais. A rigor, nuvens e suas respectivas sombras são

fenômenos naturais. Não estaria correto considerá-las fontes de erro. Contudo, em se tratando

de imagens multitemporais que se caracterizam por inúmeras imagens de uma mesma região.

Há de se esperar que nuvens e sombras ocorram em apenas algumas dessas imagens. Assim,

nesse trabalho as nuvens e as sombras serão consideradas o erro fonte de ruídos nos sinais que

queremos remover.

Como veremos no Capítulo 4 – “Sinais” (p. 43), podemos extrair sinais a partir

da imagem multitemporal. Dessa forma, nesses sinais o erro aparece em forma de ruído. A

ilustração a seguir mostra um sinal real extraído de uma imagem de sensoriamento remoto

multitemporal. Os erros ou ruídos foram circulados pelas elipses vermelhas. No eixo y

mostramos o valor do pixel da imagem, no eixo x o tempo.


17

Figura 1 – Sinal extraído de uma imagem multitemporal.

Perceba que as variações bruscas na amplitude (valores do eixo y) constituem o

ruído que estamos descrevendo. Veja que enquanto o sinal percorre o tempo, existem

momentos (circulados de vermelho na ilustração) em que ocorrem variações muito acentuadas

no valor do pixel da imagem (eixo y). Nesses momentos, o sinal sobe e desce ou desce e sobe

muito rapidamente retornando logo depois a um nível relativamente próximo ao nível que ele

estava antes dessa variação. São essas bruscas mudanças que constituem o ruído proveniente

dos erros presentes nas imagens multitemporais.

Na ilustração a seguir, mostramos o mesmo sinal anterior em azul e o sinal

resultante de seu tratamento usando a ferramenta desenvolvida nesse trabalho em vermelho.

Perceba que o sinal vermelho “tenta percorrer o mesmo caminho” que o sinal azul, mas agora

já não há variações súbitas.

Figura 2 – Sinais original (em azul) e final (em vermelho).

Em suma, o problema é o erro que essas imagens apresentam. O objetivo é

remover esse erro. A metodologia é aplicar um filtro no domínio da freqüência. A matemática


18

é a Transformada de Fourier e o algoritmo é o algoritmo da Transformada Rápida de

Fourier. O resultado é uma ferramenta capaz de remover o erro de imagens multitemporais.


19

Capítulo 3 Imagens de Sensoriamento Remoto

Multitemporais

Com a evolução das ciências e da tecnologia, o homem desenvolveu inúmeras

formas de registrar o que pudesse observar. Na antiguidade, os desenhos em cavernas já eram

a forma mais intuitiva de registrar fenômenos considerados importantes. Os chineses possuem

registros do fenômeno da fixação de imagens em quartos escuros desde tempos imemoriais.

Dessa forma, os princípios de captação, registro e representação de fenômenos observáveis

evoluíram na mesma proporção que o homem desenvolvia novas tecnologias. Atualmente, o

homem consegue obter dados sobre os mais diferentes fenômenos observáveis desde imagens

de nanoestruturas passando por imagens de microorganismos, imagens de fotografias tiradas

por máquinas fotográficas comuns, imagens de fotografias aéreas e imagens obtidas por meio

de satélites artificiais. O que todos esses exemplos possuem em comum é que todos obtêm os

dados por meio de um mesmo processo: o sensoriamento remoto.

3.1 Sensoriamento Remoto

Sensoriamento remoto é definido como o processo de adquirir informações sobre

um objeto de interesse sem estar em contato físico com ele. (HAYKIN & VEEN, 2001, p. 27).

De acordo com Florenzano, o termo sensoriamento refere-se à obtenção dos dados, e remoto,

que significa distante, é utilizado porque a obtenção é feita à distância, ou seja, sem o contato

físico entre o sensor e a fonte de dados. No caso, de Imagens de Satélite, essa fonte de dados é

justamente a superfície terrestre que está sendo observada pelo sensor. Haykin e Veen

aproximam o conceito de Sensoriamento Remoto para o universo do Processamento de Sinais

ao mostrar que “[...] a aquisição de informações é realizada detectando-se e medindo-se as

mudanças que o objeto impõe ao campo circunvizinho.” Isso é importante já que mostra que
20

um sinal pode ser extraído de um campo eletromagnético, acústico, magnético ou

gravitacional, dependendo da aplicação de interesse. No caso do sensoriamento remoto feito

por satélites artificiais, estaremos interessados no campo eletromagnético cobrindo o espectro

eletromagnético inteiro.

Haykin e Veen também afirmam que “a aquisição de informações pode ser

realizada de maneira passiva, ouvindo-se o campo (sinal) que é emitido naturalmente pelo

objeto e processando-o; ou de maneira ativa, iluminando-se intencionalmente o objeto com

um campo (sinal) bem-definido e processando-se o eco (isto é, o sinal retornado) do objeto.”

[grifo deles](2001, p. 27). Um exemplo trivial de obtenção ativa de informações é o sistema

de sensoriamento do morcego: o morcego utiliza um sensoriamento remoto ativo medindo as

variações no campo acústico, isto é, ele ilumina intencionalmente o meio ao seu redor

emitindo ondas ultra-sônicas e processa o eco para localizar-se. No que concerne o

sensoriamento remoto de satélites artificiais, o sensoriamento pode ocorrer de forma ativa ou

passiva dependendo do sensor que é utilizado no satélite. Como exemplo de sensoriamento

remoto passivo, podemos citar o sensor eletrônico multiespectral TM do Satélite LANDSAT-

5 que capta dados em diferentes faixas espectrais sendo três da região do visível e quatro da

região do infravermelho. Já em relação ao sensoriamento remoto ativo, sensores denominados

Radares são responsáveis por enviar sinais e processar o eco. Como exemplo, podemos citar o

ASAR (Advanced Synthetic Aperture Radar) que opera abordo do Satélite Artificial

ENVISAT, lançado em 2002. (FLORENZANO, 2002, p. 13)

Não é preocupação, nesse trabalho, aprofundar nesses detalhes. O que nos

interessa é apenas introduzir o conceito de sensoriamento remoto para então poder explicar

como são formadas as Imagens de Satélite: principal dado de entrada e de saída no

processamento que esse trabalho se propõe a fazer. O próximo tópico fará uma breve

descrição do que são e de como são formadas essas imagens.


21

3.2 Imagens de Sensoriamento Remoto: Formação

Teresa Gallotti Florenzano resume o processo de formação de uma Imagem de

Sensoriamento Remoto com o trecho a seguir:

“A energia refletida ou emitida pela superfície terrestre e captada por sensores eletrônicos,
instalados em satélites artificiais, é transformada em sinais elétricos, que são registrados e
transmitidos para estações de recepção na Terra, equipadas com enormes antenas parabólicas.
Os sinais enviados para essas estações são transformados em dados na forma de gráficos,
tabelas ou imagens” [grifo deles]. (FLORENZANO, 2002, p. 10).
Essa forma resumida não nos é interessante já que o processamento depende de

como essas imagens são produzidas pelas estações de recepção dos sinais na Terra. Assim,

iremos nos aprofundar um pouco mais no processo descrito acima. Começaremos

descrevendo o que é essa energia que é refletida ou emitida pela superfície terrestre, falaremos

sobre os sensores que captam e registram as informações e como essas informações são

“empacotadas” pelas estações de recepção na Terra e transformadas em imagem. Veremos

que o termo “imagem” assumirá uma nova conotação muito mais abrangente do que aquela a

que estamos acostumados.

3.2.1 A radiação eletromagnética

Quando nos referimos a energia que é refletida ou emitida pela superfície terrestre

para ser captada e registrada por sensores, estamos na verdade tratando de energia na forma

de radiação eletromagnética. Radiação eletromagnética é toda forma de onda eletromagnética

que se propaga no vácuo à velocidade da luz.

Uma onda eletromagnética possui duas características que a definem. A primeira,

denominada freqüência, estabelece o número de vezes que a onda se repete por unidade de

tempo. A segunda, o comprimento de onda, é a medida da distância entre dois picos de ondas

sucessivas. Essas características da onda são complementares por que estão relacionadas entre

si e a velocidade da luz segundo a equação:


22

(3.1)

Onde,

: velocidade da luz no vácuo;

: comprimento de onda medido em unidades de metro;

: freqüência de oscilação medida em unidades de hertz;

Assim, para cada freqüência teremos um determinado comprimento de onda e

vice-versa.

Como o fator que determina uma onda eletromagnética é a sua freqüência (ou seu

comprimento de onda), cada freqüência possível determina uma onda diferente. Esse conjunto

de ondas eletromagnéticas foi classificado pelo Homem em diversas regiões que juntas

compõe o que chamamos de espectro eletromagnético. A Figura 3 ilustra isso.

Figura 3 – Espectro eletromagnético. Fonte: http://static.howstuffworks.com

Haykin e Veen dizem que:

“O espectro eletromagnético se estende das ondas de rádio de baixa freqüência às regiões de


microondas, submilimétricas, infravermelho, visíveis, ultravioleta, raios-X e raios gama do
espectro” (2001, p. 18)
23

Florenzano complementa afirmando que “[...] na região do espectro visível, o olho

humano enxerga a energia (luz) eletromagnética sendo capaz de distinguir as cores do violeta

ao vermelho” (2002, p. 11).

Dessa forma, as imagens formadas no cérebro do ser humano nada mais são do

que a percepção que o olho humano tem das ondas eletromagnéticas que chegam até ele

compreendidas na região do visível. Assim, a capacidade de perceber o mundo depende da

capacidade do sensor captar e registrar as ondas eletromagnéticas nas freqüências desejáveis.

E é sobre sensores que o próximo tópico tratará.

3.2.2 Sensores Remotos

Como foi mostrado no exemplo do morcego, sensor é qualquer aparato

responsável por captar e registrar mudanças em qualquer um campo. O olho biológico é um

sensor natural que enxerga somente uma determinada região do espectro eletromagnético. No

Homem, essa região limita-se a região da luz visível; em outros animais, ele pode alcançar

outras regiões. Mas o que nos interessa aqui não são os sensores biológicos e sim os sensores

remotos artificiais que, dependendo de suas características, “[...] podem ser instalados em

plataformas terrestres, aéreas (balões, helicópteros e aviões) e orbitais (satélites artificiais)”.

(FLORENZANO, 2002, p. 13).

“Infelizmente, um único sensor sozinho pode cobrir somente uma pequena parte do espectro
eletromagnético, sendo o mecanismo responsável pela interação onda-matéria influenciado por
um número limitado de propriedades físicas do objeto de interesse”. (HAYKIN & VEEN,
2001, p. 28).
Isto mostra que o homem desenvolveu sensores remotos para perceber quase todo

o espectro eletromagnético. Dessa forma, para cobrir uma grande parte do espectro

eletromagnético e obter várias informações diferentes sobre uma determinada região, faz-se

necessário utilizar múltiplos sensores cada qual responsável por coletar informações sobre

uma particular faixa do espectro.


24

Chamamos essa faixa do espectro de canal ou banda1. Assim, podemos ter várias

imagens de sensoriamento remoto de um mesmo local, coletadas no mesmo instante, mas

cada uma pertencente a um canal diferente, isto é, uma determinada faixa do espectro

eletromagnético diferente. Veremos mais adiante, quando discorrermos sobre as

características das imagens de sensoriamento remoto que esse conceito de canal será uma de

várias características de imagens de sensoriamento remoto.

3.2.3 Satélites Artificiais

Continuando nossa introdução, já sabemos que essa energia refletida ou emitida

pela superfície terrestre trata-se, na verdade, de ondas eletromagnéticas. Sabemos também que

são os sensores os responsáveis por registrar essa energia. Assim, para dar continuidade,

abordaremos agora um pouco sobre os Satélites Artificiais que carregam os sensores para

então, finalmente, podermos definir algumas características das imagens de sensoriamento

remoto.

Segundo Florenzano, um satélite é um objeto que se desloca em círculos (elipses),

em torno de outro objeto. Um satélite pode ser natural, como a lua que gira em torno da terra

ou artificial – construído pelo homem(2002, p. 23). Florenzano também cita os diversos tipos

de satélites artificiais: os satélites de comunicações, em maior número, os de televisão, os

científicos, espiões (para fins militares), meteorológicos e de sensoriamento remoto de

recursos terrestres. São esses últimos dois tipos de satélite que nos interessam já que são eles

que irão carregar os sensores responsáveis por coletar os dados a respeito dos recursos da

Terra.

1
Veremos mais adiante que o termo banda vai ganhar outro significado – razão pela qual vamos

preferir o termo canal para referirmos a uma faixa do espectro eletromagnético.


25

3.2.3.1 Satélites Meteorológicos

Podemos citar como exemplos de satélites meteorológicos o GOES

(Geostationary Operational Environmental Satellite) – de órbita geoestacionária2 – e o

NOAA (National Oceanic Atmospheric Administration) – de órbita polar. Como Florenzano

afirma, a órbita é o caminho que o satélite faz em volta da terra. (2002, p. 23). Quando a

órbita é geoestacionária, “o satélite mantém a mesma posição no espaço em relação a um

ponto fixo na superfície, dando a impressão que ele está estacionado no espaço.” (IDEM).

Quando polar, o satélite orbita de um pólo até o outro permitindo observar toda a superfície da

Terra. A título de exemplo, apresenta-se a seguir, informações desses dois satélites citados.

Essas informações foram retiradas do livro de Teresa Gallotti Florenzano (2002, p. 25).

GOES

Satélites da série GOES estão a 36.000 km da superfície da Terra fornecendo imagens a

cada 30 minutos. O sensor a bordo desse satélite opera em um canal visível, com uma

resolução espacial de 1 km e quatro canais no infravermelho, com uma resolução espacial 3 de

4 a 8 km.

NOAA

Satélites da série NOAA estão a uma altitude aproximada de 850 km. O sensor

AVHRR (Advanced Very High Resolution Radiometer) que opera a bordo desses satélites

operam em cinco canais fornecendo pelo menos duas imagens por dia da mesma área com

2
Na órbita geoestacionária, o satélite mantém a mesma posição no espaço em relação a um ponto

fixo na superfície, dando a impressão que ele está estacionado no espaço.


3
Diferentes tipos de resolução de imagem serão apresentados no tópico 3.3.2 – “Resolução das

Imagens de Sensoriamento Remoto” p. 31


26

resolução espacial de 1,1 km e cobrem uma área da superfície terrestre de aproximadamente

2500 por 4000 km.

3.2.3.2 Satélites de Recursos Terrestres

“Os satélites de recursos terrestres possuem uma órbita “circular, quase polar e

síncrona com o sol” (FLORENZANO, 2002, p. 25) – isso garante as mesmas condições de

iluminação para a superfície terrestre e a “passagem aproximadamente no mesmo horário

local sobre os diferentes pontos da Terra”. Dentre os vários satélites de sensoriamento remoto

dos recursos terrestres existentes, são dois os satélites que mais se destacam: O LANDSAT

(não é uma sigla), americano, e o SPOT (Satellite pour l'Observation de la Terre) francês. A

seguir, falaremos brevemente a respeito de cada um deles. Essas informações também foram

encontradas em Florenzano (2002, p. 25).

SPOT 5

O SPOT 5 possui órbita circular quase polar e síncrona com o Sol. Dentre os

principais sensores que operam no SPOT estão o HRV (Haute Résolution Visible), que opera

na região do visível com uma resolução espacial de 10 metros e no infravermelho com uma

resolução espacial de 20 metros; o HRVIR (Haute Résolution Visible ET Infra Rouge) com

canais que possibilitam capturar algumas faixas da região do visível e do infravermelho

próximo e médio; dentre outros.

LANDSAT

O LANDSAT é talvez, o mais importante satélite artificial para o Brasil, já que o

país recebe imagens dele desde 1973 através de uma antena da estação de recepção do INPE

(Instituto Nacional de Pesquisas Espaciais), localizada em Cuiabá-MT. Até o momento foram

lançados sete satélites da série LANDSAT, sendo o primeiro deles, o LANDSAT-1, lançado

em julho de 1972 pela NASA (National Aeronautics and Space Administration). A órbita dos
27

satélites da série LANDSAT é circular quase polar síncrona com o sol estando ele(s) a uma

altitude de 705 km.

A bordo do LANDSAT-1,2 e 3 estavam os sensores MSS ( Multiespectral

Scanner System) que operavam em quatro canais, sendo dois na faixa do espectro visível e

dois na faixa do espectro do infravermelho próximo.

Aos LANDSAT-4 e 5, foram adicionados um novo sensor mais avançado a bordo:

o TM (Thematic Mapper) que opera em sete canais sendo três na faixa do visível, um no

infravermelho próximo, dois no infravermelho médio e um no infravermelho termal. A

resolução espacial é de 30 metros (exceto para o canal termal, que é de 120 metros).

Os LANDSAT-1 a 5 citados até agora já ultrapassaram seu tempo de vida

deixando de operar. Em 5 de outubro de 1993, foi lançado o LANDSAT-6 que falhou em

alcançar sua órbita e foi declarado perdido. O LANDSAT-7, lançado em 15 de abril de 1999,

carrega o sensor ETM+ (Enhanced Thematic Mapper Plus) que substituiu o antigo sensor TM.

Esse sensor possui as mesmas configurações que o TM além de um canal pancromático (da

região do visível ao infravermelho próximo) com uma resolução espacial de 15 metros

(exceto o canal termal que possui uma resolução espacial de 60 metros). Ele passa sobre a

mesma superfície a cada 16 dias fornecendo imagens de 185 por 185 km.

3.3 Imagens de Sensoriamento Remoto: Características

Até agora, explicamos introdutoriamente todo o processo pelo qual o Satélite

Artificial, munido de sensores, captura determinadas faixas de ondas eletromagnéticas e as

registra na forma de dados. Esses dados são, depois, processados e podem ser apresentados na

forma de imagens digitais. Dessa forma, o passo seguinte é mostrar algumas características de

uma imagem digital de sensoriamento remoto: a estrutura e a resolução.


28

3.3.1 Estrutura das Imagens de Sensoriamento Remoto

As imagens de sensoriamento remoto fornecidas pelas estações de recepção nada

mais são do que matrizes bidimensionais de números com um número de linhas e colunas

bem definidos. Como afirma Alvaro P. Crósta, elas “são constituídas por um arranjo de

elementos sob a forma de uma malha ou grid” [grifo deles] (1993, p. 23). Cada um desses

elementos, ou seja, cada cela desse grid possui uma localização bem definida em um sistema

de coordenadas do tipo “linha e coluna”. Também podemos representar a localização desse

elemento da imagem em um sistema de coordenadas cartesianas “x e y” onde a abscissa (eixo

x) corresponde à coluna e a ordenada corresponde à linha.

Convencionou-se que a origem do grid, ou seja, a origem desse plano cartesiano

corresponde ao canto superior esquerdo da imagem. Assim, os sentidos de crescimento dos

valores de linha (y) e coluna (x) são de cima para baixo e da esquerda para a direita,

respectivamente.

A Figura 4 ilustra isso com uma imagem gerada a partir de uma imagem de

sensoriamento remoto multitemporal. As cores vistas não são as cores reais, são cores geradas

por computador. Ela mostra o Parque Nacional da Serra da Canastra onde podemos identificar

a Represa de Furnas. Note a orientação dos eixos coordenados.


29

Figura 4 – Eixos coordenados da imagem de sensoriamento remoto. 4

A esse elemento que possui uma localização bem definida damos o nome

de pixel, derivado do inglês, picture element – elemento de imagem. O pixel é o menor ponto

indivisível observável numa imagem de sensoriamento remoto e cada um deles representa

sempre uma área com as mesmas dimensões na superfície terrestre dependendo da resolução

espacial da imagem em questão5. Assim, se uma dada imagem possui, por exemplo, 850 por

850 pixels, e uma resolução espacial de 30 metros, então a área que a imagem representa

possuiria 850x30 metros por 850x30 metros que é igual a 25,5 por 25,5 quilômetros. Dessa

forma, o número de linhas e de colunas de uma imagem representa um quadrante na

superfície terrestre.

4
A imagem multitemporal que gerou a representação gráfica acima se encontra no DVD que

acompanha essa monografia. Consulte o APÊNDICE D -DVD p.150 para maiores informações.
5
Diferentes tipos de resolução de imagem serão apresentados no tópico 3.3.2 – “Resolução das

Imagens de Sensoriamento Remoto” p. 31


30

Na Figura 5 a seguir apresentamos em (a) a oitava banda de uma imagem

multitemporal. Essa banda foi obtida no centésimo sexagésimo primeiro dia do ano 2000.

Possui resolução espacial de 250 metros. Em (b) mostramos um zoom do quadrado visto em

(a). Perceba nesse zoom que cada “quadradinho” da imagem em (b) representa um pixel e,

cada pixel, por sua vez representa uma área da superfície da terra de 250 por 250 metros.

Figura 5 – Banda da imagem e respectivo zoom do quadrante mostrando os pixels.

A cada pixel, está associado um número correspondente ao nível de cinza. Crósta

mostra que:

“[...] esse nível de cinza é conhecido em inglês por DN, de „digital number‟. O DN de uma cela
representa a intensidade da energia eletromagnética (refletida ou emitida) medida pelo sensor
para a área da superfície da Terra correspondente ao tamanho do pixel. Deve ser ressaltado que
o DN de um pixel corresponde sempre à média da intensidade da energia refletida ou emitida
pelos diferentes materiais presentes nesse pixel.” [grifo deles] (1993, p. 23).
Dessa forma, quanto maior for esse número digital, mais próximo do branco é o nível

de cinza indicando maior intensidade de energia eletromagnética refletida ou emitida naquele

pixel. Quanto menor, menor será essa intensidade de energia e, portanto, mais próximo do

preto é o nível de cinza.


31

Colocado em outras palavras, se a média da intensidade da energia refletida ou emitida

pelos diferentes materiais presentes numa determinada área da superfície terrestre (o pixel)

resultar em um número próximo ao zero, mais escuro será o nível de cinza e,

conseqüentemente, podemos aferir que naquela região houve pouca reflexão ou emissão de

ondas eletromagnéticas na faixa do espectro eletromagnético percebida pelo sensor. Se esse

número crescer, mais claro, isto é, mais próximo do branco será o nível de cinza e, assim

descobre-se que naquela região, houve maior reflexão ou emissão de energia.

Um exemplo ajuda a entender esses conceitos. Suponha que tenhamos conosco uma

imagem de uma região hipotética obtida pelo sensor ETM+ do satélite artificial LANDSAT-7

no canal correspondente aos comprimentos de onda eletromagnéticos correspondentes à

região do visível da cor vermelha. Sabendo que a resolução espacial do LANDSAT-7 é de 30

metros, isto é, um pixel na imagem corresponde a uma área terrestre de 30 por 30 metros (ou

900 metros quadrados), digamos que escolhamos ao acaso uma coordenada . Se o

valor DN (ou nível de cinza) do pixel correspondente à coordenada escolhida for zero,

saberemos que naquela área de 900 metros quadrados a média da intensidade de energia

eletromagnética correspondente à cor vermelha será mínima ou nula. Assim, deve haver

muita pouca emissão dessa cor naquela região.

3.3.2 Resolução das Imagens de Sensoriamento Remoto

No exemplo anterior, já mencionamos um tipo de resolução de Imagem de

Sensoriamento Remoto: a resolução espacial. Contudo, existem mais dois tipos de parâmetros

de resolução usados em imagem de Sensoriamento Remoto: a resolução espectral e a

resolução radiométrica.

O primeiro parâmetro, a resolução espacial, é definido “pela capacidade do

sistema sensor em „enxergar‟ objetos na superfície terrestre” [grifo deles] (CRÓSTA, 1993,

p. 25). Para melhor compreender esse conceito, considere o seguinte exemplo: se dizemos que
32

uma imagem possui resolução espacial de 30 metros, isso significa que um pixel daquela

imagem representa, na realidade, um quadro de área de 30 por 30 metros. Assim, quanto

menor for o objeto possível de ser visto, maior é a resolução espacial necessária. Cada sensor

possui uma resolução específica. Os sensores dos satélites artificiais da série LANDSAT, por

exemplo, possuem resoluções espaciais de 15, 30, 60 e 120 metros.

Outro parâmetro de resolução definido é a resolução espectral. A resolução espectral é

um conceito que só se aplica às imagens multiespectrais de sensoriamento remoto. Crósta

define resolução espectral como sendo o “[...] número de bandas espectrais de um sistema

sensor e pela largura do intervalo de comprimento de onda coberto por cada banda.” [grifo

deles] (1993, p. 25). Na prática, como veremos mais adiante no tópico 3.4 – “Composição de

Imagens de Sensoriamento Remoto” - uma imagem pode ser fruto da composição de diversas

outras imagens. E é dessa composição que construímos imagens multiespectrais e imagens

temporais de sensoriamento remoto. Dessa forma, ao lidarmos com imagens multiespectrais,

quanto maior o número de bandas e menor a largura do intervalo de comprimento de ondas,

maior será a resolução espectral daquela imagem. Esse conceito se tornará mais claro no

tópico mencionado.

Por fim, a resolução radiométrica “[...] é dada pelo número de níveis digitais

representando níveis de cinza, usados para expressar os dados coletados [...]” [grifo deles]

(CRÓSTA, 1993, p. 26). Lembre-se que no tópico anterior, quando definimos o DN, não se

estabeleceu uma faixa de possíveis valores que poderiam ser assumidas. Agora podemos

complementar a definição afirmando que essa faixa vai do número zero até o número relativo

à resolução radiométrica do sensor. Assim, se dizemos que uma imagem possui resolução

radiométrica de 10 bits, por exemplo, então estamos afirmando que o conjunto de possíveis

valores que o DN pode assumir estará na faixa de zero a 1024, isso é, de 0 a .


33

Concluindo, esses três parâmetros de resolução informam sobre características da

imagem em si – características essas que serão importantes para se decidir entre uma forma de

processamento ou outra.

3.4 Composição de Imagens de Sensoriamento Remoto

Nos tópicos acima, quando falamos sobre as características de imagens de

sensoriamento remoto, o leitor pode ter notado que essas imagens são diferentes do tipo de

imagem a que estamos acostumados a lidar no cotidiano. Naturalmente, seria esperado que

tivéssemos discutido sobre muitos outros elementos de uma imagem como, por exemplo, as

cores. No entanto, o único elemento discutido que mais se aproximou do conceito de cor foi

quando discorremos sobre aquele número que corresponde a um nível de cinza. Ora! Estamos

acostumados a lidar com imagens muito mais coloridas do que imagens em tons de cinza.

Dessa forma, cabe a pergunta: “E as imagens coloridas? Como são formadas?”. Esse tópico se

destina a separar vários conceitos diferentes inerentes ao termo “imagem” a fim de responder

essa pergunta.

3.4.1 Dados ou Imagens?

O tópico 3.3 – “Imagens de Sensoriamento Remoto: Características” (p.27)

apresenta conceitos relativos às imagens de sensoriamento remoto que servirão de dado de

entrada para o processamento que esse trabalho se propõe a fazer. Entretanto, o termo

“imagem” pode ser usado com o objetivo de referenciar diferentes coisas. Assim, deseja-se

separar os diversos significados que essa palavra pode assumir na direção de evitar quaisquer

confusões. São muitos os sentidos que o termo “imagem” pode assumir, mas de todos eles,

são três o que nos interessam nesse trabalho: dados brutos, representação da realidade e

conjunto de dados.
34

3.4.1.1 Dados Brutos ou Primitivos

O primeiro diz respeito à acepção de dado bruto ou dado primitivo. De fato, as

características formuladas no tópico 3.3 – “Imagens de Sensoriamento Remoto:

Características” (p.27) trabalham no conceito de imagem de sensoriamento remoto como uma

matriz bidimensional de números correspondentes a níveis de cinza. Cada um desses números

é um dado bruto. A imagem em si é um dado bruto.

Na Figura 6 a seguir mostramos a primeira banda da imagem multitemporal que

estamos usando para exemplificar os diferentes conceitos desse capítulo. Essa banda é um

exemplo de dado bruto.

Figura 6 – Primeira banda da imagem multitemporal.

3.4.1.2 Representação Gráfica

O segundo sentido que podemos apresentar para a palavra “imagem” é o de

representação gráfica. Na verdade, esse é o sentido a que estamos mais acostumados no

cotidiano. Diversas imagens de sensoriamento remoto na qualidade de dados brutos podem

ser processadas a fim de se produzir uma representação gráfica daqueles dados. Agora sim
35

poderemos ter imagens coloridas com toda gama de cores que o homem consegue enxergar.

Pinturas, fotografias digitais são todos exemplos de representações gráficas de algum objeto.

Imagem nos sentido de representação gráfica é tudo aquilo que pode ser visto.

Podemos fazer uma representação gráfica de uma imagem na qualidade de dado bruto? Sim.

O produto final poderá ser visto, entretanto não será fácil interpretar e compreender o que está

sendo representado. Por outro lado, podemos também processar um conjunto de imagens na

qualidade de dados brutos com o objetivo de produzir uma representação gráfica melhor

interpretável e, conseqüentemente, mais fácil de ser compreendida. A Figura 7 mostra uma

representação gráfica gerado por computador ao combinarmos três bandas de uma imagem de

sensoriamento remoto multitemporal. Note que as cores foram geradas por computador e,

portanto, não representam a realidade.

Figura 7 – Representação gráfica de três bandas da imagem multitemporal.

O terceiro e último sentido que nos interessa é completamente novo para a maioria

das pessoas e será bastante importante para o desenvolvimento desse trabalho: uma imagem

de sensoriamento remoto pode na verdade se tratar de um conjunto de imagens. Expliquemos:

como vimos no Tópico 3.3.1- “Estrutura das Imagens de Sensoriamento Remoto” (p. 28)

imagens de sensoriamento remoto são constituídas de matrizes bidimensionais de pixels.


36

Essas matrizes são armazenadas no computador na forma de arquivos de computador que

seguem padrões que possibilitem manuseá-las adequadamente. Contudo, em vez de criarmos

um arquivo por imagem gerando, assim, muitos arquivos; muitas vezes é mais cômodo criar

um único arquivo contendo diversas imagens diferentes.

Dessa forma, quando nos referimos a uma imagem de sensoriamento remoto no

sentido de conjunto de imagens, estamos, na realidade, nos referindo a um único arquivo de

computador que armazena, de alguma forma, diversas matrizes bidimensionais – cada uma

correspondendo a uma imagem de sensoriamento remoto com características próprias. Cada


6
uma dessas imagens que compõe o conjunto passa a ser chamada de “banda” de forma a

evitar confusões. A única característica que deve ser igual para todas as bandas de um

conjunto de imagens é que todas elas possuam o mesmo número de linhas e colunas, isto é,

todas elas representem uma mesma porção, um mesmo quadrante da superfície terrestre.

Assim, um conjunto de imagens pode ser visto como uma matriz tridimensional de números

ou até mesmo um cubo.

Na Figura 8 a seguir mostramos um cubo representando uma imagem de

sensoriamento remoto na qualidade de conjunto de imagens. Essa imagem possui 180 bandas.

O intervalo de tempo entre cada banda é de 16 dias. Isso dá 23 cenas por ano entre os anos de

2000 a 2007.

6
O termo banda será usado, a partir de agora, como representando uma imagem específica dentre

um conjunto de imagens. Veja o tópico 3.4.2 – “Redefinindo alguns termos” p. 38


37

Figura 8 – Imagem multitemporal na qualidade de conjunto de imagens.7

Para concluir, falar em imagens no sentido de conjunto de imagens será

importante já que é a partir daqui que nasceram conceitos como imagem multiespectral e

imagem multitemporal.

3.4.2 Redefinindo alguns termos

Com tantos sentidos possíveis para uma mesma palavra, como saber quando

estamos usando a palavra “imagem” com um ou outro sentido? A forma de fazer isso é

7
A imagem multitemporal que gerou esse Cubo 3D se encontra no DVD que acompanha essa

monografia. Consulte o APÊNDICE D -DVD p.150 para maiores informações.


38

definir, agora, qual termo utilizar para cada sentido possível e passar a usar o termo adequado

daqui para frente. Então a seguir apresentamos uma lista de palavras e os significados que

serão adotados, além de exemplos quando couber.

Imagem: A palavra “imagem” será usada a partir de agora no sentido de

conjunto de bandas.

Banda: Observe que já estamos usando a palavra imagem no sentido acima

exposto. Assim, uma imagem possui várias bandas. Cada banda em si

corresponde a uma matriz bidimensional de números. Esses números

corresponderão a níveis de cinza a menos que algo mais seja dito a respeito da

natureza da banda da imagem.

Canal: O termo canal preserva seu sentido usado no tópico 3.2.2 – “Sensores

Remotos” (p.23). Vale repetir: canal é a faixa do espectro eletromagnético

que foi captada pelo sensor e registrada na forma de uma banda de imagem.

Uma imagem pode possuir mais de uma banda, cada banda da imagem possui

um canal. Várias bandas podem apresentar o mesmo canal, ou terem sido

formadas a partir de canais diferentes.

Representação Gráfica: É o resultado que é obtido a partir do

processamento de uma imagem com a finalidade de apresentar visualmente as

informações contidas numa imagem.

3.4.3 Tipo de Imagens de Sensoriamento Remoto

Recapitulando, uma imagem possui várias bandas. Cada banda possui duas

características: o canal, já explicado; e o tempo. O tempo corresponde à data que aquela banda

de imagem foi formada. Variando-se os canais e o tempo entre cada banda de uma imagem,

surgirão os tipos de imagens de sensoriamento remoto que trataremos a seguir.


39

3.4.3.1 Imagens de Sensoriamento Remoto Multiespectrais

Uma imagem de sensoriamento remoto multiespectral é aquela que possui várias

bandas, cada banda representa uma mesma região da superfície da terra, mas cada uma

pertence a um canal diferente. Aqui, o sensor a bordo do satélite registrou vários canais, cada

canal dando origem a uma banda e esse conjunto de bandas reunidas numa só imagem.

Geralmente, o sensor registra todas essas bandas ao mesmo tempo, isto é, numa mesma

“passada” do satélite. Aqui, cada pixel de cada banda representa uma mesma área da

superfície só que em canais diferentes.

3.4.3.2 Imagens de Sensoriamento Remoto Multitemporais

Uma imagem de sensoriamento remoto multitemporal é aquela que possui várias

bandas, cada banda representa uma mesma região da superfície da Terra, mas cada uma

pertence a um tempo diferente. Todas as bandas podem pertencer ao mesmo canal, a canais

diferentes ou, ainda, a combinações de canais diferentes. Aqui, o importante é cada pixel de

cada banda representar uma mesma área na superfície terrestre só que em tempos diferentes.

Nesse trabalho, daremos atenção a esse tipo de imagem de sensoriamento remoto,

pois essa será a fonte dos sinais de entrada que serão processados usando a transformada

rápida de Fourier.

Uma imagem de sensoriamente remoto multitemporal pode ser vista como uma

matriz tridimensional de números. Assim, cada elemento dessa matriz possui uma coordenada

no espaço tridimensional .

A coordenada refere-se ao número da banda. Por exemplo, se uma imagem

possui „10‟ bandas, o eixo z deverá variar discretamente nos números inteiros assumindo

valores de „0‟ até „9‟. A banda „0‟ correspondendo à primeira imagem, a banda „1‟ à segunda

e assim por diante.


40

Decerto, mantendo-se um valor constante para , por exemplo, mantendo-se

, ao variarmos as demais coordenadas restantes estaremos percorrendo uma banda

específica da imagem. Do mesmo modo, se mantermos um ponto constante, por

exemplo, e variarmos a coordenada estaremos percorrendo várias bandas da

imagem sempre num mesmo pixel, isto é, cada valor associado a cada elemento

nos dará uma informação a respeito daquela área da superfície terrestre em tempos diferentes.

Em suma, os eixos x e y são eixos espaciais e o eixo z, um eixo temporal. É

importante deixar esses conceitos bem claros, pois os mesmos serão importantes no Capítulo

6 – “Processamento de Imagens de Sensoriamento Remoto Multitemporais” (p. 81) quando

formos mostrar o procedimento que iremos adotar para processar esse tipo de imagem.

O próximo capítulo vai apresentar alguns conceitos a respeito dos sinais que

podemos extrair a partir de imagens de sensoriamento remoto multitemporais.

3.5 Imagens de Sensoriamento Remoto encontradas nesse

trabalho

Faltou apenas apresentarmos informações sobre as duas imagens de

sensoriamento remoto multitemporais que vimos até agora e servirão de exemplo para os

diversos conceitos introduzidos nesse trabalho. Esse tópico se destina a passar algumas

informações sobre essas imagens.

A primeira imagem multitemporal já foi ilustrada na Figura 4 (p.29) e foi usada

para exemplificar diversos conceitos até o momento. Como já foi mencionado na primeira vez

que essa imagem foi apresentada, trata-se de uma imagem multitemporal onde podemos

visualizar a represa de Furnas e, mais acima, a região do Parque Nacional da Serra da

Canastra.
41

A segunda imagem multitemporal também já foi apresentada pelo menos uma vez

quando exemplificamos uma imagem na qualidade de conjunto de imagens na Figura 8 (p.37).

Trata-se de uma imagem onde podemos identificar a região conhecida como Campo de

Instrução de Formosa – Goiás. Na ilustração a seguir, mostramos uma composição colorida

entre algumas bandas dessa imagem onde colocamos algumas referenciais para que o leitor

possa entender que região ela retrata.

Figura 9 – Representação gráfica: Composição colorida de três bandas da imagem multitemporal.


42

Na Figura 9, como foi dito, o círculo vermelho é a região conhecida como Campo

de Instrução de Formosa – Goiás. Também podemos visualizar parte da região leste do

Distrito Federal à esquerda desse Campo de Instrução.

O que essas duas imagens multitemporais têm em comum é que ambas se

originam do mesmo sensor chamado sensor MODIS: O sensor Moderate Resolution Imaging

Spectroradiometer (MODIS) é um espectroradiômetro com 36 bandas abrangendo as

radiações do visível e do infravermelho, permitindo a obtenção de dados relacionados à

vegetação, cobertura terrestre, nuvens e aerossóis, incidência de fogo, neve e cobertura de

gelo no mar. Este sensor está a bordo das plataformas Terra e Aqua, lançadas,

respectivamente, em 1999 e 2002. As imagens deste sensor permitem o monitoramento da

cobertura global quase em tempo real, possuindo as seguintes resoluções: espacial (250, 500 e

1000m), espectral (545 a 14385 nm) e temporal (de 1 a 2 dias) (JUSTICE & TOWNSHEND,

2002)

Dentre os produtos MODIS disponíveis, encontram-se os índices de vegetação

NDVI (Normalized Difference Vegetation Index) e EVI (Enhanced Vegetation Index)

gerados automaticamente e disponibilizados na forma de mosaicos. Esses índices estão

correlacionados com parâmetros biofísicos da vegetação, possibilitando a estimativa de

parâmetros como: índice de área foliar, biomassa vegetal, produtividade e atividade

fotossintética. (JUSTICE & TOWNSHEND, 2002).

Nesse trabalho, as duas imagens anteriormente descritas são ambas do tipo NDVI

e o intervalo de tempo entre cada banda é de 16 dias.


43

Capítulo 4 Sinais

O forte desse trabalho recai no processamento dos sinais que são extraídos das

imagens de sensoriamento remoto multitemporais. Dessa forma é importante definir o que é

um sinal e quais são suas propriedades. Então, vamos fazer uma breve descrição dos aspectos

teóricos relativos a sinais para então poder prosseguir e mostrar como processar sinais usando

a transformada de Fourier.

4.1 O que são Sinais?

Estamos cercados de sinais. Realmente, como afirmam Haykin e Veen, os sinais

constituem um ingrediente básico de nossa vida diária. Nos comunicamos através de sinais da

fala, percebemos o mundo através de sinais visuais de objetos que nos cercam. Enfim, a

primeira sensação que temos é que toda forma de informação com as quais percebemos o

mundo constituem sinais. Assim, procurando uma forma mais formal de definir o que é um

sinal, vamos citar a definição expressa por Haykin e Veen:

“Um sinal é formalmente definido como uma função de uma ou mais variáveis, a qual veicula
informações sobre a natureza de um fenômeno físico.”(2001, p. 22)
Haykin e Veen ainda completam essa definição dizendo que se essa função

depende de uma única variável, diz-se que o sinal é unidimensional e quando depende de

duas ou mais variáveis, diz-se que o sinal é multidimensional.

Dessa forma, uma imagem de sensoriamento remoto multitemporal pode ser

percebida como um sinal multidimensional – tridimensional especificamente. As coordenadas

horizontais e verticais, eixos e , constituem as duas dimensões espaciais enquanto o eixo z

constitui a dimensão temporal. De certo, podemos extrair sinais unidimensionais desse sinal

tridimensional: tudo o que temos que fazer é fixar um ponto e percorrer o eixo z e

assim obteremos um sinal unidimensional temporal.


44

Na Figura 10 a seguir mostramos um cubo 3D na qual adicionamos os eixos

coordenados e . Adicionamos também o eixo relativo às bandas da imagem e um eixo

auxiliar que perpassa a imagem através do ponto .

Figura 10 – Cubo representando uma imagem multitemporal.

Dessa forma, fixando-se um ponto e variando-se o eixo z‟, podemos

montar um sinal como ilustrado na Figura 11 a seguir. Nessa figura, o eixo z‟ aparece como o

eixo x representando as 165 bandas que essa imagem multitemporal possui. No eixo y, temos

o valor do nível de cinza do pixel .


45

Figura 11 – Sinal temporal obtido a partir da imagem multitemporal.

Resumindo, uma imagem de sensoriamento remoto multitemporal pode ser

encarado como um conjunto de sinais unidimensionais cujas amplitudes (os DNs) variam com

o tempo. Isso é muito importante pois podemos processar a imagem multitemporal inteira

processando separadamente cada um de seus sinais unidimensionais.

4.2 Propriedades dos Sinais

Um sinal possui três principais atributos que nos interessam nesse trabalho. A

partir desses atributos vamos definir classes de sinais e então poderemos restringir nosso

trabalho a preocupar-se com apenas uma dessas classes. O primeiro atributo é o domínio do

sinal. O segundo trata da periodicidade dele e o terceiro, da continuidade ou não desse sinal.

A seguir, introduzimos cada um desses casos separadamente.

4.2.1 Domínio do Sinal

Um processo físico pode ser descrito tanto no domínio do tempo pelos valores de

alguma quantidade quanto no domínio da freqüência especificando, para cada freqüência

uma amplitude (geralmente um número complexo que indica, também, a fase). (PRESS,

TEUKOLSKY, VETTERLING, & FLANNERY, 1992, p. 496).

Na definição de Haykin e Veen “um sinal é formalmente definido como uma

função” [grifo nosso] (2001). Mas não uma função qualquer, uma função na “qual veicula
46

informações sobre a natureza de um fenômeno físico” [grifo nosso] (2001). Assim, o

domínio representa a grandeza física (tempo, espaço, frequência) que é usada para medir a

informação.

Os sinais encontrados no processamento de imagens de sensoriamento remoto

multitemporais estão todos nos domínio do tempo. A transformada de Fourier será

responsável por transformar esses sinal do domínio do tempo para o domínio da frequência

(ou domínio de fourier) e vice versa.

A Figura 12 mostra um sinal no domínio do tempo. O eixo x representa as bandas.

Como cada banda está num tempo diferente, o sinal se encontra no domínio do tempo.

Figura 12 - Sinal no domínio do tempo.

Já na próxima ilustração apresentamos um sinal no domínio da freqüência. O eixo

x está no domínio da freqüência. O eixo y são os valores dos componentes de freqüência do

sinal, no Capítulo 4 veremos que esses valores serão os espectros de magnitude do mesmo.8

8
Isso será apresentado no tópico 4.4.1 “Representação de Sinais Complexos” (p.53).
47

Figura 13 – Sinal no domínio da freqüência.

4.2.2 Periodicidade do Sinal

Um sinal pode ser periódico ou não periódico. Um sinal é dito periódico quando

ele apresenta um comportamento que se repete à medida que avançamos em seu domínio.

Haykin e Veen definem um sinal temporal periódico como uma função que satisfaz a

condição , onde é a função que representa o sinal, é a variável de

tempo independente e é uma constante positiva. Assim, qualquer sinal para o qual não haja

nenhum valor de que satisfaça essa condição é chamada de sinal não-periódico ou sinal

aperiódico.

Não existe nenhuma certeza quanto à periodicidade dos sinais que poderemos

encontrar nesse projeto. Dessa forma, veremos no Tópico 5.3.2 – “Discrete Fourier

Transform: A Série de Fourier de Tempo Discreto” (p.73) que não importa se os sinais serão

periódicos ou aperiódicos. Para usar o algoritmo da transformada rápida de Fourier trataremos

todos os sinais como se fossem periódicos.

4.2.3 Sinais contínuos versus sinais discretos

Um sinal é contínuo se ele é definido para todos os valores que pode

assumir. Se um sinal possui o domínio do tempo , por exemplo, então ele será um sinal

de tempo contínuo se ele for definido para todo tempo . Estamos muito mais habituados com
48

sinais expressos no domínio do tempo, mas também podemos ter sinais expressos em outros

domínios, como o da freqüência. Se um sinal possui o domínio da freqüência então ele

será um sinal de freqüência continua, se ele for definido para toda freqüência . Mostrar esses

casos em domínios diferentes é importante porque veremos que os sinais podem ser

convertidos de um domínio para o outro e isso será importante para aplicar os filtros nesse

trabalho.

A figura a seguir ilustra um sinal contínuo.

Figura 14 - Sinal contínuo.

Por outro lado, um sinal é discreto só é definido em instantes isolados da variável

de seu domínio. Isto é, a variável independente terá somente valores discretos, os quais no

geral são uniformemente espaçados. Freqüentemente, podemos gerar sinais discretos a partir

de sinais contínuos. Esse processo, chamado de amostragem, consiste em obter os valores de

um sinal contínuo a uma taxa uniforme. Contudo, vale observar que nem todo sinal discreto é

uma amostragem de um sinal contínuo.

Ilustramos um sinal discreto com a seguinte figura:


49

Figura 15 - Sinal discreto.

Vale informar que os sinais que lidamos no processamento de imagens

multitemporais são sinais discretos.

4.3 Classes de sinais

A partir dessas três propriedades listadas no tópico anterior pode-se, portanto,

classificar um sinal em quatro classes distintas. São elas: sinais periódicos de domínio

contínuo, sinas não periódicos de domínio contínuo, sinais periódicos de domínio discreto e

sinais não periódicos de domínio discreto.

4.4 Complexidade do Sinal

A última coisa importante que falta dizer sobre sinais é de sua complexidade. Não

complexidade no sentido de o quão complicado ele pode ser, complexidade aqui se refere à

possibilidade de representar cada elemento do sinal por um número complexo.

Um número complexo é definido como um número do tipo:

(4.1)
50

Onde, é o número imaginário tal que . Dessa forma, um número complexo possui

uma parte real ( ) e uma parte imaginária ( ).

Podemos representar um número complexo de duas formas distintas: a primeira é

denominada forma retangular e a segunda, a forma polar.

A forma retangular tem esse nome porque representamos o número complexo

como vetores em um diagrama de coordenadas cartesianas. No eixo das abscissas marcamos

um ponto correspondente à parte real do número e no eixo das ordenadas, a parte imaginária.

Assim, teremos dois vetores que representarão o número complexo. No exemplo ilustrado a

seguir, mostramos a representação retangular para o número complexo

(4.2)

Figura 16 – Número complexo na forma retangular.

Outra forma de representar um número complexo é usando a forma polar de

representação. Nessa forma transformamos a parte real e imaginária do número complexo em

dois elementos chamados magnitude e ângulo de fase (ou simplesmente fase).

Considere o número onde representa a parte real e a

parte imaginária do número complexo:


51

Figura 17 - Plano cartesiano.

Definimos por magnitude ( ) o módulo do vetor que é formado ligando-se a

origem do diagrama cartesiano ao ponto que se obtêm traçando paralelas aos eixos

perpendiculares aos pontos correspondentes a parte real e imaginária. Matematicamente, a

magnitude é expressa pela fórmula:

(4.3)

A fase é definida como o ângulo entre o eixo das abscissas e o vetor

correspondente á magnitude. Matematicamente:

( 4.4)

Assim, com a par Magnitude e Fase podemos representar o número complexo

como um único vetor de módulo (ou cumprimento) igual à magnitude inclinado em relação à

horizontal de um ângulo igual à fase.


52

Figura 18 – Magnitude e Fase para N = 4 + 3i.

Figura 19 – Representação polar para N = 4 + 3i.

No caso de sinais extraídos de imagens multitemporais, não faria sentido

representar cada pixel por um número complexo visto que tratamos apenas de números reais.

Mas como veremos no Capítulo 5 “Transformadas de Fourier” (p. 66) a transformada de

Fourier de um sinal qualquer age sobre um sinal complexo retornando outro sinal, também,

complexo. Assim, para trabalharmos corretamente no domínio da freqüência, vamos precisar

usar números complexos para representar esses sinais.

Dessa forma, é conveniente trabalhar usando números complexos também no

domínio do tempo. Como fazer isso? Simples: toda vez que quisermos trabalhar com um sinal

complexo como se ele fosse real, copiamos os valores reais para a parte real do elemento

complexo e zeramos a parte imaginária desse elemento.

Resumindo, os sinais que adotaremos serão sinais formados por elementos

complexos por causa da transformada de Fourier.


53

4.4.1 Representação de Sinais Complexos

Até agora, as representações que temos feito para os sinais consistia de um

diagrama mostrando um gráfico x e y. Quando o domínio do sinal expresso era o domínio do

tempo, estávamos lidando com um Sinal Real (não complexo) onde o eixo das abscissas era o

tempo e o eixo das ordenadas era o valor do pixel de cada banda da imagem.

Por outro lado, quando o domínio do sinal era o domínio da freqüência, nada foi

dito sobre o significado do eixo das ordenadas. Qual o significado do eixo y num sinal que se

encontra no domínio de Fourier? De fato, a resposta para essa questão tem haver sobre como

representar um Sinal Complexo em um diagrama bidimensional.

Veremos no capítulo seguinte: Capítulo 5 – “Transformadas de Fourier” (p.66)

que as transformadas de Fourier agem sobre sinais complexos retornando outros sinais

complexos. Como já sabemos, sinais complexos possuem, para cada elemento do sinal, uma

parte real e uma parte imaginária. Então, como representar um sinal complexo em um

gráfico?

Nesse trabalho, trabalhamos com cinco formas distintas de representar um sinal

complexo: só a parte real, só a parte imaginária, a magnitude (ou espectro), a fase e a norma

(ou espectro de potência). Cada uma será discutida e ilustrada a seguir.

4.4.1.1 Parte Real

Representar um sinal complexo mostrando só a parte real consiste em desprezar a

parte imaginária do sinal e usar o eixo y para mostrar apenas a parte real. A ilustração a seguir
54

mostra um sinal temporal discreto na forma de um cosseno de tamanho igual a 64, período

igual a 32 unidades de tempo e fase igual a 45 graus9. A função geradora desse sinal é:

(4.5)

Variamos de 0 até 63 de uma em uma unidade na função anterior obtendo o sinal

complexo representado na Figura 20 que usaremos nas próximas seções para exemplificar

cada uma dessas cinco formas de representar sinais complexos. Veja que a Figura 20 já ilustra

a primeira forma: representa-se o sinal mostrando apenas a parte real do mesmo.

<Real> cosseno32_64_p4
cos(t*(2*p/32) + p/4) + 0 j
N = 64
1

0,5
Eixo y

-0,5

-1
[0](

[6](

[13

[21

[29

[37

[45

[53

[61
](13

](21

](29

](37

](45

](53

](61
0,0

6,0
00 0

00 0

,0 0

,0 0

,0 0

,0 0

,0 0

,0 0

,0 0
0)

0)

000

000

000

000

000

000

000
)

)
Eixo x

Figura 20 - Parte Real de um sinal no domínio do tempo.

Obviamente que essa forma de representar sinais complexos só será usada quando

a parte imaginária for desprezível. Isso ocorre, por exemplo, quando precisamos representar

sinais complexos no domínio do tempo. Quando, o sinal complexo está no domínio da

freqüência, entretanto, a parte imaginária não pode ser desprezada, assim não é adequado

representá-la mostrando apenas seus valores reais. De qualquer forma, na ilustração a seguir

mostramos a transformada direta de Fourier do sinal temporal da ilustração anterior

visualizando apenas as componentes reais do sinal complexo.

9
Esse sinal nomeado “cosseno32_64_p4.ini” se encontra no DVD que acompanha essa

monografia. Consulte o APÊNDICE D -DVD p.150 para maiores informações.


55

<Real> cosseno32_64_p4
cos(t*(2*p/32) + p/4) + 0 j
N = 64
0,35
0,3
0,25

Eixo y
0,2
0,15
0,1
0,05
0

[-32

[-24

[-16

[-8](

[0](

[7](

[15

[23

[31
](47

](55

](63
32,0

39,0
](0,0

](8,0

](16

24,0

,0 0

,0 0

,0 0
0 00

0 00
,00
000

000

000

000

000

000
00 0

0)

0)
0)

0)

0)

)
)
Eixo x

Figura 21 - Parte real de um sinal no domínio da freqüência.

4.4.1.2 Parte Imaginária

Também podemos usar o diagrama para representar no eixo das ordenadas

somente a parte imaginária do sinal complexo. Isso não é muito utilizado porque quando

estamos interessados na parte imaginária, também estamos interessados na parte real e,

portanto, utilizamos outras formas de representar o sinal complexo como a representação

por magnitude e a representação pela norma do elemento complexo. Mesmo assim, somente

como forma de ilustrar, apresenta-se a seguir a parte imaginária do sinal temporal da Figura

20. Veja que todos os valores são nulos!

<Imag> cosseno32_64_p4
cos(t*(2*p/32) + p/4) + 0 j
N = 64
Eixo y

0
[0](

[6](

[13

[21

[29

[37

[45

[53

[61
](13

](21

](29

](37

](45

](53

](61
0,0

6,0
00 0

00 0

,0 0

,0 0

,0 0

,0 0

,0 0

,0 0

,0 0
0)

0)

000

000

000

000

000

000

000
)

Eixo x

Figura 22 - Parte Imaginária do sinal no domínio do tempo.

Como era de se esperar, o sinal temporal é um sinal real. Não existe, portanto,

componentes imaginários. Por outro lado, se o sinal temporal é transformado para o domínio

da freqüência usando a transformada de Fourier, aparecerão componentes imaginários mesmo

que iguais a zero que não podem ser desprezados. Na Figura 23 a seguir elucidamos com uma

figura.
56

<Imag> cosseno32_64_p4
cos(t*(2*p/32) + p/4) + 0 j
N = 64

0,3
0,2
0,1

Eixo y
0
-0,1
-0,2
-0,3

[-32

[-24

[-16

[-8](

[0](

[7](

[15

[23

[31
](47

](55

](63
32,0

39,0
](0,0

](8,0

](16

24,0

,0 0

,0 0

,0 0
0 00

0 00
,00
000

000

000

000

000

000
00 0

0)

0)
0)

0)

0)

)
)
Eixo x

Figura 23 - Parte imaginária do sinal no domínio da freqüência.

4.4.1.3 Magnitude ou Espectro

Continuando, uma terceira forma de representar sinais complexos é usando a

Magnitude ou Espectro de cada número complexo que forma o sinal. Estamos falando da

mesma magnitude apresentada na Equação (4.3), só que em se tratando de processamento de

imagens, o termo “Espectro” é mais utilizado.

Em relação a sinais temporais, representá-los usando o Espectro não é adequado

pelo fato de sinais temporais possuírem a parte imaginária nula. Assim, a transformação de

um elemento do sinal temporal para o Espectro acaba fazendo com que todos os valores

negativos sejam transformados em positivos “rebatendo” a parte negativa do sinal para a parte

positiva.

A Figura 24 mostra o sinal temporal da Figura 20 representada usando a

magnitude. Perceba que se trata de uma cópia do sinal real com a parte negativa espelhada em

relação ao eixo x.

<Espectro> cosseno32_64_p4
cos(t*(2*p/32) + p/4) + 0 j
N = 64
1

0,8

0,6
Eixo y

0,4

0,2

0
[0](

[6](

[13

[21

[29

[37

[45

[53

[61
](13

](21

](29

](37

](45

](53

](61
0,0

6,0
00 0

00 0

,0 0

,0 0

,0 0

,0 0

,0 0

,0 0

,0 0
0)

0)

000

000

000

000

000

000

000
)

Eixo x

Figura 24 - A Magnitude ou Espectro do sinal no domínio do tempo.


57

Essa forma de representação é bem melhor empregada se utilizada para

representar sinais complexos no domínio da freqüência porque para calcular o valor da

magnitude utilizamos as duas partes do número complexo (a parte real e imaginária). Aliado a

esse fato, tornou-se prática comum representar sinais no domínio da freqüência dessa forma.

A Figura 25 mostra o sinal no domínio da freqüência representado usando a Magnitude ou

Espectro.

<Espectro> cosseno32_64_p4
cos(t*(2*p/32) + p/4) + 0 j
N = 64
0,5

0,4
0,3
Eixo y

0,2
0,1

0
[-32

[-24

[-16

[-8](

[0](

[7](

[14

[22

[30
](46

](54

](62
32,0

39,0
](0,0

](8,0

](16

24,0

,0 0

,0 0

,0 0
0 00

0 00
,00
000

000

000

000

000

000
00 0

0)

0)
0)

0)

0)

)
)

Eixo x

Figura 25 – Magnitude ou Espectro do sinal no domínio da freqüência.

4.4.1.4 Fase

Continuando as formas de representação, uma quarta forma de representar sinais

complexos é optando-se por ver o valor da fase do sinal no eixo y. A fase de um elemento é

obtida usando a Equação ( 4.4).

Novamente, representar a fase de sinais temporais não é interessante já que, como

a parte imaginária dos elementos desse sinal são todas nulas, também serão as fases. A Figura

26 elucida isso.

<Fase> cosseno32_64_p4
cos(t*(2*p/32) + p/4) + 0 j
N = 64
Eixo y

0
[0](

[6](

[13

[21

[29

[37

[45

[53

[61
](13

](21

](29

](37

](45

](53

](61
0,0

6,0
00 0

00 0

,0 0

,0 0

,0 0

,0 0

,0 0

,0 0

,0 0
0)

0)

000

000

000

000

000

000

000
)

Eixo x

Figura 26 - Fase do sinal no domínio do tempo.


58

Agora, novamente, em se tratando de sinais no domínio da freqüência, mostrar as

diversas fases de cada elemento do sinal faz mais sentido. A Figura 27 mostra a fase do sinal

no domínio da freqüência.

<Fase> cosseno32_64_p4
cos(t*(2*p/32) + p/4) + 0 j
N = 64

40

20
Eixo y

-20

-40
[-32

[-24

[-16

[-8](

[0](

[7](

[15

[23

[31
](47

](55

](63
32,0

39,0
](0,0

](8,0

](16

24,0

,0 0

,0 0

,0 0
0 00

0 00
,00
000

000

000

000

000

000
00 0

0)

0)
0)

0)

0)

)
)
Eixo x

Figura 27 - Fase do sinal no domínio da freqüência.

4.4.1.5 Norma ou Espectro de Potência

Finalmente, uma última forma de representar um sinal complexo é usando a

Norma ou Espectro de Potência. A norma de um número complexo é dada por:

(4.6)

Novamente, a norma de um sinal temporal não é interessante por motivos

semelhantes aos do espectro de sinais temporais. A Figura 28 mostra a norma do sinal.

<Pow er> cosseno32_64_p4


cos(t*(2*p/32) + p/4) + 0 j
N = 64
1

0,8

0,6
Eixo y

0,4

0,2

0
[0](

[6](

[13

[21

[29

[37

[45

[53

[61
](13

](21

](29

](37

](45

](53

](61
0,0

6,0
00 0

00 0

,0 0

,0 0

,0 0

,0 0

,0 0

,0 0

,0 0
0)

0)

000

000

000

000

000

000

000
)

Eixo x

Figura 28 - Norma do sinal no domínio do tempo.

Quanto a sinais no domínio da freqüência, a norma pode ser tão interessante

quanto a magnitude dependendo da aplicação. Mas, em se tratando de processamento de


59

imagens de sensoriamento remoto multitemporais, iremos preferir a representação por

magnitude em vez da representação por espectro de potência (ou norma).

A Figura 29 mostra a norma do mesmo sinal no domínio da freqüência usado em

todos os exemplos.

<Pow er> cosseno32_64_p4


cos(t*(2*p/32) + p/4) + 0 j
N = 64
0,25

0,2
0,15
Eixo y

0,1
0,05

0
[-32

[-24

[-16

[-8](

[0](

[7](

[14

[22

[30
](46

](54

](62
32,0

39,0
](0,0

](8,0

](16

24,0

,0 0

,0 0

,0 0
0 00

0 00
,00
000

000

000

000

000

000
00 0

0)

0)
0)

0)

0)

)
)
Eixo x

Figura 29 - Norma do sinal no domínio da freqüência.

Resumindo, sinais no domínio do tempo são melhores representados mostrando

apenas a parte real de seus elementos. Sinais no domínio da freqüência são melhores

representados usando a magnitude e a fase dos mesmos. Essas duas práticas de representação

serão adotadas deste ponto em diante a menos que declaremos explicitamente que estamos

usando alguma outra representação para os sinais que estamos mostrando.

4.4.2 Um último exemplo

Vamos apresentar nessa seção, apenas um último exemplo das representações

mostradas usando dessa vez um sinal real obtido da imagem de sensoriamento remoto

multitemporal ilustrada na Figura 10 (p.44). Nessa imagem, se escolhermos o ponto

teremos o seguinte sinal temporal:10

10
Esse sinal nomeado “NDVI_2000_2007_RP_100_100.ini” se encontra no DVD que acompanha

essa monografia. Consulte o APÊNDICE D -DVD p.150 para maiores informações.


60

<Real> D:\NDVI_RPreto\NDVI_2000_2007_RP.img
+ j
N = 165

0,8

0,6
Eixo y 0,4

0,2

0
[0](

[18

[38

[58

[78

[98

[11

[14
](18

](38

](58

](78

](98

9] (1

2] (1
0,0
00 0

,0 0

,0 0

,0 0

,0 0

,0 0

19 ,

42 ,
0)

000

000

000

000

000

000

000
)

00)

00)
Eixo x

Figura 30 - Parte real do sinal no ponto (100,100) da imagem da Figura 8.

A Figura 8 possui 180 bandas. É por isso que esse sinal discreto possui 180 pontos

ou elementos. Cada elemento é um número complexo que, por estamos no domínio do tempo,

possuem parte imaginária nula.

Como veremos no item 5.4 – “A Transformada Rápida de Fourier (FFT)” (p.76)

para podermos continuar e obter um sinal no domínio da freqüência, precisamos aumentar o

número de elementos desse sinal para a maior potência de 2 mais próxima de 180 que, nesse

caso é 256. Cada elemento que for adicionado possuirá o valor .

Fazendo isso, obtemos o sinal a seguir, ainda no domínio do tempo que agora sim

pode ser representado de todas as formas nas Figuras de 31 a 45:

<Real> D:\NDVI_RPreto\NDVI_2000_2007_RP.img
+ j
N = 256

0,8

0,6
Eixo y

0,4

0,2

0
[0](

[27

[57

[87

[12

[15

[18

[21

[24
](27

](57

](87

0] (1

5] (1

7] (0

7] (0

7] (0
0,0
00 0

,0 0

,0 0

,0 0

20 ,

55 ,

,0 0

,0 0

,0 0
0)

000

000

000

000

000

000

000

000
)

00)

00)

Eixo x

Figura 31 - Parte real completada com zeros.

Normalmente, para sinais temporais a parte real é a única representação

necessária.
61

<Imag> D:\NDVI_RPreto\NDVI_2000_2007_RP.img
+ j
N = 256

Eixo y
0

[0](

[27

[57

[87

[11

[15

[18

[21

[24
](27

](57

](87

9] (1

4] (1

6] (0

6] (0

6] (0
0,0
00 0

,0 0

,0 0

,0 0

19 ,

54 ,

,0 0

,0 0

,0 0
0)

000

000

000

000

000

000

000

000
)

00)

00)

)
Eixo x

Figura 32 - Parte imaginária.

Normalmente a parte imaginária não é mostrada por ser nula no caso de sinais

temporais.

<Espectro> D:\NDVI_RPreto\NDVI_2000_2007_RP.img
+ j
N = 256

0,8

0,6
Eixo y

0,4

0,2

0
[0](

[27

[57

[87

[12

[15

[18

[21

[24
](27

](57

](87

0] (1

5] (1

7] (0

7] (0

7] (0
0,0
00 0

,0 0

,0 0

,0 0

20 ,

55 ,

,0 0

,0 0

,0 0
0)

000

000

000

000

000

000

000

000
)

00)

00)

)
Eixo x

Figura 33 – Espectro ou magnitude.

Nesse caso, por não existirem valores negativos nesse sinal, e por se tratar de um

sinal temporal, os gráficos da Magnitude e da parte Real foram os mesmos.

<Fase> D:\NDVI_RPreto\NDVI_2000_2007_RP.img
+ j
N = 256
Eixo y

0
[0](

[27

[57

[87

[11

[15

[18

[21

[24
](27

](57

](87

9] (1

4] (1

6] (0

6] (0

6] (0
0,0
00 0

,0 0

,0 0

,0 0

19 ,

54 ,

,0 0

,0 0

,0 0
0)

000

000

000

000

000

000

000

000
)

00)

00)

Eixo x

Figura 34 – Fase.
62

<Pow er> D:\NDVI_RPreto\NDVI_2000_2007_RP.img


+ j
N = 256
0,8

0,6

Eixo y
0,4

0,2

[0](

[27

[57

[87

[12

[15

[18

[21

[24
](27

](57

](87

0] (1

5] (1

7] (0

7] (0

7] (0
0,0
00 0

,0 0

,0 0

,0 0

20 ,

55 ,

,0 0

,0 0

,0 0
0)

000

000

000

000

000

000

000

000
)

00)

00)

)
Eixo x

Figura 35 - Espectro de potência ou norma.

Para terminar esse exemplo, vamos proceder com a transformada de Fourier,

apresentada no próximo capítulo, para obtermos um sinal no domínio da freqüência e

podermos visualizá-lo usando todas as representações. A seguir mostramos ilustrações de

cada uma das representações seguidas de um zoom das mesmas para melhor visualizar os

aspectos dos diagramas.

<Real> D:\NDVI_RPreto\NDVI_2000_2007_RP.img
+ j
N = 256

0,25
0,2
0,15
Eixo y

0,1
0,05
0
-0,05
[-12

[-96

[-64

[-32

[0](

[32

[62

[90

[11
](16

](0,

](0,

9] (0
128
8](0

](32

](64

](96

00 0

00 0
,0 0

0, 0

,0 0
,00

,00

,00

,00

000

000

00)

00)

000
00 0

00 0

00 0

00 0

0)

)
)

Eixo x

Figura 36 - Parte real do sinal transformado para o domínio da freqüência.

<Real> D:\NDVI_RPreto\NDVI_2000_2007_RP.img
+ j
N = 256
0,25
0,2
0,15
Eixo y

0,1
0,05
0
-0,05
[-31

[-22

[-13

[-4]

[4](

[12

[21

[30
](14

](14

](15
(

132
](97

](10

](11

124

,0 0

0, 0

9, 0

8, 0
,00

6,0

5,0

,00

000

000

000

000
00 0

00 0

00 0

00 0

0)

0)

0)
)

0)

0)

Eixo x

Figura 37 - Zoom da parte real.

Essa forma de representação não será usada, pois esconde informação (a parte

imaginária não pode ser desprezada).


63

<Imag> D:\NDVI_RPreto\NDVI_2000_2007_RP.img
+ j
N = 256
0,1

0,05

Eixo y
0

-0,05

-0,1

[-12

[-96

[-64

[-32

[0](

[31

[61

[89

[11
](15

](0,

](0,

8] (0
128
8](0

](32

](64

](96

00 0

00 0
,0 0

9, 0

,0 0
,00

,00

,00

,00

000

000

00)

00)

000
00 0

00 0

00 0

00 0

0)

)
)

)
Eixo x

Figura 38 - Parte imaginária.

Perceba que há informação na parte imaginária que não pode ser desprezada.

<Imag> D:\NDVI_RPreto\NDVI_2000_2007_RP.img
+ j
N = 256
0,1

0,05
Eixo y

-0,05

-0,1
[-10

[-6]

[-2]

[2](

[6](

[10

[14
](13

](14
(

130

134
](11

122

126

,0 0

,0 0

8, 0

2, 0
8,0

,00

,00

000

000

000

000
00 0

00 0

00 0

0)

0)
0)

Eixo x

Figura 39 - Zoom da parte imaginária do sinal.

<Espectro> D:\NDVI_RPreto\NDVI_2000_2007_RP.img
+ j
N = 256

0,25
0,2
Eixo y

0,15
0,1
0,05
0
[-12

[-96

[-64

[-32

[0](

[32

[62

[90

[11
](16

](0,

](0,

9] (0
128
8](0

](32

](64

](96

00 0

00 0
,0 0

0, 0

,0 0
,00

,00

,00

,00

000

000

00)

00)

000
00 0

00 0

00 0

00 0

0)

)
)

Eixo x

Figura 40 - Espectro do sinal.

<Espectro> D:\NDVI_RPreto\NDVI_2000_2007_RP.img
+ j
N = 256

0,25
0,2
Eixo y

0,15
0,1
0,05
0
[-4]

[-2]

[0](

[2](

[4](
(

128

130

132
124

126

,0 0

,0 0

,0 0
,00

,00

000

000

000
00 0

00 0

)
)

Eixo x

Figura 41 - Zoom do Espectro.


64

O Espectro ou Magnitude é a forma de representação que será adotada para

representar sinais complexos no domínio de Fourier.

<Fase> D:\NDVI_RPreto\NDVI_2000_2007_RP.img
+ j
N = 256

50
Eixo y

-50
[-12

[-97

[-65

[-33

[-1]

[31

[61

[89

[11
](15

](0,

](0,

8] (0
(
8](0

](31

](63

](95

127

00 0

00 0
9, 0

,0 0
,00

,00

,00

,00

,00

000

00)

00)

000
00 0

00 0

00 0

00 0

00 0

0)

)
)

)
Eixo x

Figura 42 - Fase do sinal.

Verifique na Figura 42 que mostramos a fase de cada elemento do sinal. Como o

sinal não é um sinal controlado (gerado a partir de uma função) veja que o diagrama de fase

numa visão geral pode apresentar um aspecto “feio”, mas isso não significa que esteja

incorreto.

<Fase> D:\NDVI_RPreto\NDVI_2000_2007_RP.img
+ j
N = 256

50
Eixo y

-50
[-2]

[-1]

[0](

[1](

[2](
(

128

129

130
126

127

,0 0

,0 0

,0 0
,00

,00

000

000

000
00 0

00 0

)
)

Eixo x

Figura 43 - Zoom da fase do sinal.

Cada ponto do sinal possui uma fase. Aqui o eixo das ordenadas está em graus. A

melhor forma de representar um sinal no domínio da freqüência é usando o espectro e a fase.

Entretanto, muitas vezes o diagrama de fase é omitido deixando para ser usado somente

quando for realmente necessário.


65

<Pow er> D:\NDVI_RPreto\NDVI_2000_2007_RP.img


+ j
N = 256
0,07
0,06
0,05

Eixo y
0,04
0,03
0,02
0,01
0

[-12

[-96

[-64

[-32

[0](

[32

[62

[90

[11
](16

](0,

](0,

9] (0
128
8](0

](32

](64

](96

00 0

00 0
,0 0

0, 0

,0 0
,00

,00

,00

,00

000

000

00)

00)

000
00 0

00 0

00 0

00 0

0)

)
)

)
Eixo x

Figura 44 - Espectro de potência do sinal.

<Pow er> D:\NDVI_RPreto\NDVI_2000_2007_RP.img


+ j
N = 256
0,07
0,06
0,05
Eixo y

0,04
0,03
0,02
0,01
0
[-32

[-23

[-14

[-5]

[3](

[11

[20

[29
](13

](14

](15
(

131
](96

](10

](11

123

,0 0

9, 0

8, 0

7, 0
,00

5,0

4,0

,00

000

000

000

000
00 0

00 0

00 0

00 0

0)

0)

0)
)

0)

0)

Eixo x

Figura 45 - Zoom do espectro de potência.

Cada representação depende da aplicação, no nosso caso iremos preferir o

Espectro (magnitude) para visualizar os sinais no domínio de Fourier.

Dessa forma, finalizamos a parte referente aos sinais. Mostramos cinco diferentes

formas de representá-los e definimos aquelas que iremos adotar para cada domínio de sinal. A

seguir, falaremos sobre a transformada de Fourier – método que utilizaremos para processar

os sinais das imagens multitemporais.


66

Capítulo 5 Transformadas de Fourier

Nesse capítulo abordaremos a Transformada de Fourier, que é o método que

utilizaremos para processar os sinais extraídos das imagens de sensoriamento remoto

multitemporais.

5.1 Introdução às Transformadas

Antes de falarmos da Transformada de Fourier em si, vamos começar com uma

breve introdução do que é uma transformada. E. Oran Brigham começa seu livro sobre esse

assunto com a seguinte afirmação: “Every reader has at one time or another used transform

analysis techniques to simplify a problem solution.” (1974, p. 1) que pode ser traduzido como

“Todo leitor já deve ter usado alguma técnica de transformação para simplificar a solução de

algum problema.” De fato, um exemplo simples de transformação é a transformação

logarítmica. Por exemplo, para determinar o valor de um quociente com uma boa

aproximação e sem o auxílio de um computador, podemos seguir dois caminhos. O primeiro

caminho é dividir à mão – o que pode resultar numa conta trabalhosa. O segundo caminho é

seguir a sugestão e aplicar a transformada logarítmica: . Nesse

momento, consulta-se uma tabela com os valores dos logaritmos, realiza-se a subtração e

encontraremos o valor de . Com esse valor, aplicamos a transformada logarítmica

inversa para, finalmente, encontrar o valor de Y desejado. Esse exemplo mostra que há várias

formas de se resolver um problema. Podemos resolvê-lo analiticamente ou aplicar uma

transformação para reduzir a complexidade do problema, resolver e aplicar a transformação

inversa para encontrar a resposta.

É nesse contexto que se encaixa a transformada de Fourier. Veremos mais adiante

que a transformada de Fourier é um caso particular de uma teoria completa chamada Análise
67

de Fourier que abrange quatro formas de analisar quatro possíveis formas de sinais distintos.

Veremos que os sinais que vamos lidar nesse trabalho são todos de um tipo específico e,

portanto, tal como foi feito no exemplo da transformada logarítmica utilizaremos a

transformada de Fourier para transformá-los, “resolveremos o problema” e depois, usaremos a

transformada inversa para chegar à resposta.

A Transformada de Fourier é, portanto, uma técnica de análise bastante útil para

simplificar problemas em diversas áreas do conhecimento. A seguir, apresentamos um

histórico sobre esse excepcional cientista cuja transformada leva o nome, prosseguiremos com

um entendimento mais formal da Transformada de Fourier para podermos apresentar o

algoritmo da Transformada Rápida de Fourier (FFT, do inglês Fast Fourier Transform) que é

o principal algoritmo usado no processamento realizado nesse trabalho.

5.2 Histórico

Jean Baptiste Joseph Fourier nasceu em 1768 na

cidade de Auxerre – França. Filho de Alfaiate, Fourier se

tornou órfão muito jovem, pois sua mãe morreu quando ele

tinha nove anos e o seu pai quando ele tinha dez. Internado

na escola militar de Auxerre, ele inicialmente mostrou ter

talento para a literatura. Entretanto, aos treze anos começou a

Figura 46 - Retrato de Jean B. J.


interessar-se pela matemática.

Fourier Em 1787, Fourier decidiu seguir carreira religiosa

entrando na abadia beneditina de St. Benoit-sur-Loire.

Mesmo assim, persistiu em seu interesse pela matemática mantendo contato com seu antigo

professor de matemática de Auxerre. Em 1789 abandonou a abadia sem chegar a fazer os

votos religiosos e visitou Paris onde apresentou um artigo à Academia Real de Ciências
68

francesa sobre as suas pesquisas para a solução de equações numéricas. Em 1790 tornou-se

professor de matemática na mesma escola militar que tinha estudado.

Em 1793, seduzido pelos ideais republicanos, envolveu-se na política juntando-se

ao Comitê Revolucionário de Auxerre. Entretanto, tentou demitir-se do comitê revolucionário

depois do terror gerado pela Revolução Francesa. No entanto, a essa altura já estava muito

envolvido para poder abandonar sua atividade política e chegou a ser preso em julho de 1794

ao defender uma das facções da revolução.

Temendo pela sua vida, ainda mais depois da morte de Robespierre – um dos

principais líderes da Revolução Francesa – condenado à guilhotina, Fourier terminou por ser

libertado devido a novas mudanças políticas nessa época conturbada.

Em 1794 Fourier é nomeado para estudar na École Normale de Paris, uma

instituição que foi fundada pela república com o objetivo de ensinar professores. Nesta escola

Fourier tem como professores Joseph-Louis de Lagrange, Pierre Simon Laplace e Gaspard

Monge, os maiores físico-matemáticos da época. Lecionou no Collège de France e na École

Polytechnique sob a direção de Lazare Carnot e Gaspard Monge. Nessa época, iniciou uma

atividade mais séria em investigação matemática ao manter excelentes contatos com

Lagrange, Laplace e Monge.

Em 1797, sucedeu a Lagrange ao ser

nomeado para a cátedra de Análise e Mecânica na École

Polytechnique. Ficou conhecido pelas suas aulas

excepcionais, devido ao seu dom para a oratória que já

lhe tinha trazido reconhecimento na política.

Em 1798, juntou-se a Napoleão na sua

expedição ao Egito e foi feito governador e secretário do

Instituto Egípcio fundado por Napoleão no Cairo. Em

Figura 47 - Teoria Analítica do Calor de

Jean B. J. Fourier
69

1801, depois das vitórias inglesas e resultante capitulação francesa, Fourier voltou à França e

foi nomeado por Napoleão Prefeito de Isère, posto que manteve até a Restauração tendo mais

tarde sido nomeado prefeito de Grenoble.

Foi em Grenoble que Fourier desenvolveu a maioria do seu trabalho experimental

e teórico sobre a propagação do calor que lhe permitiu modelar a evolução da temperatura

através de séries trigonométricas. Em 1822 Fourier escreveu “Theorie analytique de la

chaleur” (Teoria Analítica do Calor, na tradução para o Português), um marco na física-

matemática. Este trabalho mostra como uma série matemática de senos e cossenos pode ser

usada para analisar a condução de calor em corpos sólidos. Essas séries de Fourier, como

ficaram conhecidas, é provavelmente a primeira aplicação sistemática de séries

trigonométricas para resolver um problema. Fourier passou o resto de sua vida trabalhando

em seu conceito e expandindo-o para incluir a integral de Fourier antes de sua morte em 1830.

(O'CONNOR & ROBERTSON, 1997)

Ambas a série de Fourier e a integral de Fourier permitem transformar sinais do

domínio do tempo para o domínio da freqüência. São ferramentas matemáticas para o que

agora chamamos de Análise de Fourier.

Hoje em dia, as aplicações da Análise de Fourier transcendem a aplicação original

de condução de calor servindo para inúmeras áreas de estudo incluindo sistemas lineares,

antenas, vibrações mecânicas, ótica, biomedicina, processamento de imagens dentre muitos

outros processos e problemas.

5.3 A Análise de Fourier

Segundo, Haykin e Veen, existem quatro representações de Fourier distintas, cada

uma aplicável a uma das classes de sinais discutidas no capítulo anterior.


70

“A série de Fourier (FS) (Fourier Series) se aplica a sinais periódicos de tempo contínuo, e a
série de Fourier de tempo discreto (DTFS) (Discrete Time Fourier Series) se aplica a sinais
periódicos de tempo discreto.” [grifo nosso] (2001, p. 165).
Ainda:

“Se o sinal for de tempo contínuo e não periódico, a representação denominar-se-a


transformada de Fourier (FT) (Fourier Transform). Se o sinal for de tempo discreto e não
periódico, será usada a transformada de Fourier de tempo discreto (DTFT) (Discrete Time
Fourier Transform).” [grifo nosso](IDEM).
Antes de prosseguirmos, precisamos fazer uma importante observação. A teoria

encontrada nesse capítulo ficou conhecida popularmente como as “Transformadas de

Fourier”. Porém, formalmente, a Transformada de Fourier (Fourier Transform – FT) seria

apenas mais uma representação de Fourier dentre as quatro existentes. Não confunda,

portanto, as Transformadas de Fourier no sentido amplo com a Transformada de Fourier em

seu sentido restrito.

Durante a elaboração desse trabalho, daríamos continuidade ao texto afirmando

que seria a Transformada de Fourier de Tempo Discreto (DTFT) aquela análise que nos

interessaria. A razão disso é evidente: Como não podemos afirmar nada a respeito da

periodicidade dos sinais extraídos de imagens multitemporais, haver-se-ia de convir que

estivéssemos tratando sinais de tempo discretos não periódicos. E que dessa forma, a DTFT

seria a escolha adequada.

Contudo, à medida que se prosseguiu com o desenvolvimento do texto, percebeu-

se que isso era um equívoco. Esse equívoco tornou-se claro ao nos depararmos com o

seguinte trecho em Haykin e Veen:

“A DTFS é a única representação de Fourier que pode ser avaliada e manipulada


numericamente em um computador.”[grifo nosso] (2001, p. 175).
Essa afirmação mostrou estar havendo uma confusão em relação à teoria

matemática que daria suporte à introdução teórica ao algoritmo da Transformada Rápida de

Fourier vista mais a frente no Tópico 5.4 – “A Transformada Rápida de Fourier (FFT)”

(p.76). Acreditávamos até então que a Transformada Rápida de Fourier se originava a partir

da Transformada de Fourier de Tempo Discreto. Além da clara semelhança entre esses


71

nomes, outro motivo que nos fez cometer esse equívoco foi a forma como outras referências

apresentavam o assunto. De certo, alguns autores apresentam a teoria relativa à DTFS sob o

título: “Discrete Fourier Transforms” e não “Discrete Fourier Series”.

Então, na Análise de Fourier, as transformadas (FT e DTFT) são para sinais não

periódicos. Já as sériers (FS e DTFS) são para sinais periódicos. Como a única delas que pode

ser avaliada e manipulada numericamente em um computador é a DTFS, será ela que vai nos

interessar.

Finalmente, um leitor atencioso deverá ter feito a seguinte observação: Como foi

dito, nada podemos afirmar sobre a periodicidade dos sinais das imagens multitemporais.

Então, como usar a DTFS – que se aplica a sinais periódicos de tempo discreto a esses sinais

que poderão ser não periódicos? A solução é bem simples: vamos tratar esses sinais como se

eles fossem periódicos!

Dessa forma, ao extrairmos um sinal de uma imagem multitemporal e adaptá-lo de

forma a usar nosso algoritmo, faremos a suposição de que aquele sinal repete-se no tempo

com período igual ao número de amostras do sinal. O que importa é que fazendo isso,

poderemos obter a representação do sinal no domínio da frequência podendo, assim, aplicar o

filtro.

5.3.1 Transformada de Fourier de Tempo Contínuo

Na literatura que trata das Transformadas de Fourier não é comum fazer a divisão

tão detalhada em representações de Fourier segundo a Análise de Fourier que Haykin e Veen

propõe. O mais comum é encontrarmos apenas dois casos: A Transformada de Fourier de

tempo Contínuo e a Transformada de Fourier de Tempo Discreto11 que se referem a como

11
Novamente, vale salientar que alguns livros mostram a Série de Fourier de Tempo Discreto sob

o nome de Transformada de Fourier de Tempo Discreto.


72

transformar funções de um domínio para o outro. Embora aquela que nos interesse seja a de

tempo discreto, vamos apresentar a contínua apenas a título de formalidade.

A transformada de Fourier de Tempo Contínuo é sintetizada no par de equações a

seguir que é comumente chamado de Par de Transformações de Fourier já que elas mostram

como levar uma função de um domínio para o outro:

(5.1)

(5.2)

As funções e podem ser entendidas como duas representações distintas

para um mesmo sinal. Enquanto é a função que representa o sinal no domínio do tempo,

é a função que representa o sinal no domínio da freqüência.

Note os termos e . O que chama atenção nesses termos é a

presença do símbolo que representa o número imaginário já definido no tópico 4.4 –

“Complexidade do Sinal” (p.49). Por isso a preocupação no Capítulo 4 – “Sinais” (p.43) de

representar os sinais usando números complexos. Ainda, „t‟ é a unidade de tempo e „f‟ a

unidade de freqüência. Se „t‟ for dado em segundos, então „f‟ será dado em Hertz.

De fato, cada uma das equações acima retornam um número complexo. Isso pode

ser compreendido valendo-se das propriedades de que:

(5.3)
73

(5.4)

Baseado nessas propriedades pode-se reescrever as equações do Par de Transformadas

de Fourier da seguinte forma:

(5.5)

(5.6)

Ou seja, as funções e serão números complexos em cada ponto

ou , respectivamente.

5.3.2 Discrete Fourier Transform: A Série de Fourier de Tempo Discreto

Segundo Press et al. (1992) a Discrete Fourier Transform se dá segundo o par de

equações a seguir:

(5.7)

(5.8)

Onde, é o valor no domínio da freqüência e é o valor no domínio do tempo.

é o número complexo. E e variam de a a completando elementos.


74

Agora, segundo Haykin e Veen a representação por Discrete Time Fourier Series

é dada por:

(5.9)

(5.10)

Onde X é o valor no domínio da freqüência e é o valor no domínio do

tempo. é o número complexo e e variam livremente desde que essa variação esteja

compreendida em valores. Ainda, Haykin e Veen afirmam que tem período

fundamental N e .

Comparando a Equação (5.7) – “Forward Discrete Fourier Transform” com a

Equação (5.9) – “DTFS Direta” e a Equação (5.8) – “Inverse Discrete Fourier Transform”

com a Equação (5.10) – “DTFS Inversa” percebemos que elas são bastante semelhantes, mas

algumas observações são necessárias.

Primeiramente, deixamos os termos “Forward Discrete Fourier Transform” e

“Inverse Discrete Fourier Transform” no idioma inglês propositadamente apara mostrar que

sua tradução para o português os confundiriam com a DTFT.

A segunda observação é que o termo que aparece na equação da inversa de

Press et al. aparece na equação da direta de Haykin e Veen. De fato, as conclusões que se

tiram ao se estudar essa teoria em diferentes livros é que cada um adota uma forma diferente.

O importante, todavia, é que esse termo exista em uma equação ou na outra. Nesse trabalho,

essa divisão por N denominada “normalização” será empregada na equação da transformada

direta assim como é usada nas equações de Haykin e Veen.


75

Terceiro, e mais importante, o valor que N assume não é apenas o número de

amostras que o sinal possui. A constante também fará o papel do período fundamental do

sinal. Lembre-se que a DTFS exige que o sinal seja periódico, e nossos sinais embora não

periódicos serão supostos que o fossem. Assim, será não só o número de amostras do sinal,

mas fará também o papel de seu período tanto no domínio do tempo quanto no da freqüência.

Assim, dado um sinal com N valores discretos, se quisermos computar a

transformada direta de Fourier, teremos que calcular para k variando de 0 até N-1.

Entretanto, para calcular cada termo precisamos fazer um somatório de N

elementos. Assim, o total de vezes que fazemos esses cálculos para transformar um vetor de N

elementos para o outro domínio é de vezes, isto é um processo O( ), ou seja, o número

de operações é da ordem de operações.

Abriremos um parêntese aqui para explicar rapidamente o que é a notação O(x)

que se diz notação “ó grande”. A notação “ó grande” é usada para determinar o quanto um

algoritmo é mais eficiente que outro. Assim, em ordem decrescente de eficiência podemos ter:

, etc.

Computacionalmente, um processo é desanimador. Por exemplo, se

possuirmos um sinal com 100 amostras de tempo, será preciso 10.000 operações para realizar

a transformada. Sabendo-se que nossas imagens multitemporais possuem em média 500x500

sinais, e cada sinal pode chegar a possuir 180 elementos, seriam necessários

operações. Isso dá mais do que bilhões de operações para se processar a imagem

inteira!

Para contornar isso, alguns cientistas desenvolveram algoritmos que aumentam a

velocidade de realização dessa transformada conseguindo complexidades iguais a

O( que são mais rápidas que as O( . No exemplo de nossa imagem, isso reduz o
76

número de cálculos para que resulta em menos do que 2 milhões

de operações. Isso são 4 mil vezes menos operações.

Esses algoritmos são conhecidos como Transformadas Rápidas de Fourier. Um

deles, aquele adotado nesse projeto, será apresentado no tópico que se segue.

5.4 A Transformada Rápida de Fourier (FFT)

Diminuir o tempo de processamento de um sinal é crucial para viabilizar um

programa de processamento de imagens digitais. A FFT (Fast Fourier Transform –

Transformada Rápida de Fourier) é uma classe de algoritmos capazes de processar a série de

tempo discreto de Fourier em menos tempo do que se fosse realizado o processamento

segundo as equações Equação (5.7) e Equação (5.8) (p.73).

5.4.1 Histórico

A existência de um algoritmo de transformada rápida só ficou conhecida no meio

da década de 60 a partir dos trabalhos dos cientistas J.W. Cooley e J.W. Tukey.

Retrospectivamente, agora nós sabemos que métodos apara computar a transformada de

tempo discreto de Fourier foi descoberta independentemente e desenvolvidos por uma dúzia

de indivíduos a começar por Gauss em 1805! (PRESS, TEUKOLSKY, VETTERLING, &

FLANNERY, 1992, p. 504).

5.4.2 O método

O algoritmo de transformada rápida de Fourier foi desenvolvido na década de 60 a

partir dos trabalhos de J.W. Cooley e J.W. Tukey (1965). Danielson e Lanczos (1942)

mostraram que a transformada discreta de Fourier de um sinal de tamanho N pode ser

reescrita como a soma de duas transformadas de Fourier, cada uma de tamanho igual a .
77

Uma delas é obtida a partir dos elementos pares do sinal, a outra, a partir dos elementos

ímpares. A prova12 é a seguinte:

(5.11)

Onde, que é uma constante. representa o -ésimo componente da

transformada de Fourier de tamanho formado pelos componentes pares (“ ” de even que

do inglês quer dizer par) da original. , por sua vez, representa o -ésimo componente da

transformada de Fourier de tamanho formado pelos componentes ímpares (“o” de odd

que do inglês quer dizer ímpar) da original.

Note que varia de até e não só até N/2. Dessa forma, as transformadas e

são periódicas em com tamanho . Assim, cada uma delas é repetida a cada dois

ciclos para obter .

A maravilha aqui é que podemos usar isso recursivamente reduzindo o problema

de calcular em calcular e . Recursivamente, porque, para calcular novamente e

12
Recomenda-se consultar Haykin e Veen (2001, p. 325) onde se encontra uma forma alternativa

de provar o método da Fast Fourier Transform.


78

, podemos submeter cada um desses cálculos a novas reduções. Por exemplo, podemos

encontrar , encontrando e , ambas de tamanho N/4, e assim por diante. A esse

processo recursivo damos o nome de Danielson e Lanczos Lemma. (PRESS, TEUKOLSKY,

VETTERLING, & FLANNERY, 1992, p. 504 e 505).

Embora, existam formas de tratar outros casos, o mais fácil deles é quando o

tamanho de N original é uma potência de 2. Nesse trabalho, portanto, o algoritmo de FFT

programado utiliza esse caso. Mas existe a questão: rara são os sinais cujo tamanho é uma

potencia de 2. O que fazer nesses casos? Nesses casos, o que é feito é aumentar o tamanho de

N até a maior e mais próxima potência de 2 completando com zeros.

Nossas imagens multitemporais possuem número de bandas da ordem de 165 a

180 bandas, ou seja, os sinais extraídos dessas imagens possuem um tamanho N original que

varia nessa faixa. Sabemos que esses números não são potencias de 2. Dessa forma, sabendo

que a maior e mais próxima potência de 2 que possuímos para essa faixa de números é igual a

256, completamos esses sinais com zeros até alcançarmos esse novo tamanho.

Com essa restrição em N, é evidente que podemos continuar aplicando o

Danielson e Lanczos Lemma continuamente reduzindo o problema em transformadas de

Fourier de sinais de tamanho , , até chegarmos a transformadas de Fourier de

tamanho 1. E o que é a transformada e Fourier de tamanho 1? Não é nada mais do que uma

operação na qual a saída e a entrada são o mesmo valor:

para algum

(5.12)

A próxima etapa é entender que valores de correspondem a qual padrão de e

. A resposta é: reverter os padrões de e assinalando =0e e teremos, em

binário o valor de . Isso funciona porque as sucessivas subdivisões dos dados em dados
79

pares e ímpares correspondem aos bits menos significativos de . A essa idéia, damos o nome

de bit reverse – do inglês – reversão de bits.

O processo de reversão de bits combinado ao Danielson e Lanczon Lemma faz a

FFT se tornar um processo prático: Primeiro rearranjamos os elementos de um sinal na ordem

bit reversa e depois um loop externo é executado vezes calculando transformadas de

tamanho 2,4,8,...,N. Para cada etapa desse loop externo há dois loops internos alinhados que

agem sobre as já computadas sub-transformações implementando o Danielson-Lanczos

Lemma. Dessa forma todo o algoritmo se torna da ordem de . (PRESS,

TEUKOLSKY, VETTERLING, & FLANNERY, 1992)

No processo descrito acima, primeiro ocorreu a reordenação dos elementos

segundo a ordem bit reversa para depois construir-se a transformada usando iterações.

A essa forma de proceder é dado o nome de decimation-in-time ou Cooley-Tukey FFT

algorithm. Contudo, podemos proceder da forma contrária, ou seja, primeiro constrói-se a

transformada para depois reordenar os elementos. Nesse caso, o nome que é dado é

decimation-in-frequency ou Sande-Tukey FFT algorithms. Nesse trabalho, optamos pelo

algoritmo de Cooley-Tukey FFT, que é apresentado no tópico seguinte.

5.4.3 O Algoritmo

O algoritmo da transformada de Fourier que programamos nesse trabalho foi

encontrado no livro de GORMAN, SAMMON, & SEUL, 2008. Como dados de entrada são

fornecidos dois vetores, um contendo os N números reais (real) e o outro, os N números

imaginários (imag) correspondentes aos N números complexos de entrada. Também é

requerido especificar o tamanho de N (npoints) que já deve ser uma potência de 2. Por fim,

requer-se também um número inteiro (inv). Se inv for igual a -1, o algoritmo retorna a

transformada direta de tempo discreto de Fourier, se inv for igual a +1, o algoritmos retorna a
80

inversa. Finalmente, vale destacar que o algoritmos é feito in place, isso é, os elementos dos

vetores de entrada de dados real e imag são substituídos pelos elementos dos vetores de saída.

O algoritmo citado pode ser encontrado no ANEXO A - “O Algoritmo da Transformada

Rápida de Fourier (FFT)” (p. 153).


81

Capítulo 6 Processamento de Imagens de

Sensoriamento Remoto Multitemporais

Nos capítulos anteriores, mostramos como as imagens de sensoriamento remoto

são formadas e como podemos obter sinais a partir delas. Mostramos também como processar

esses sinais usando a Transformada Rápida de Fourier. Continuamos esse trabalho mostrando

no que consiste processar uma imagem e como vamos proceder para realizar esse

processamento.

6.1 Introdução ao Processamento Digital de Imagens de

Sensoriamento Remoto

Crósta resume bem qual é a função primordial do processamento digital no

primeiro parágrafo de sua introdução:

“A função primordial do processamento digital é a de fornecer ferramentas para facilitar a


identificação e a extração da informação contida nas imagens, para posterior interpretação.
Nesse sentido, sistemas dedicados de computação são utilizados para atividades interativas de
análise e manipulação das imagens brutas. O resultado desse processo é a produção de outras
imagens, estas já contendo informações específicas, extraídas e realçadas a partir das imagens
brutas”. [grifo deles] (1993, p. 17).
Esse trecho é perfeito já que resume a finalidade de todo esse trabalho. Vale

destacar do trecho algumas idéias e explicá-las no ponto de vista deste trabalho.

“fornecer ferramentas” – De fato, o objetivo desse trabalho é criar uma

ferramenta computacional que vai facilitar a identificação e a extração da

informação contida em imagens de sensoriamento remoto multitemporais. Na

verdade, o objetivo intrínseco é filtrar essa imagem multitemporal de forma a

corrigir ruídos e obter uma imagem nova, filtrada e livre de ruídos.

“imagens brutas” – Tal qual foi apresentado no Capítulo 3 , imagens de

sensoriamento remoto na qualidade de dados brutos “escondem” informações.


82

O processamento digital é o responsável para realçar essas imagens

identificando as informações e facilitando a interpretação dessas imagens.

“resultado” – O resultado do processamento que será realizado nesse trabalho

também será outra imagem. Partiremos de uma imagem multitemporal como

dado de entrada e produziremos uma imagem multitemporal como dado de

saída ou resposta.

6.2 Formas de Processamento de Imagens

Existem diversas formas de se processar uma imagem dependendo do objetivo

que se quer alcançar com esse processamento. A literatura está cheia de livros sobre o assunto

e cada autor apresenta formas distintas de processamento de imagens. WOODS &

GONZALES, por exemplo, apresentam em seu livro 10 capítulos inteiros, cada um falando

sobre uma vertente de possíveis formas de se processar uma imagem. Dentre essas:

“Image Enhancement in the Spatial Domain”: Realce de Imagens no

Domínio Espacial – mostra diversas técnicas de processamento de

imagens no domínio do espaço.

“Image Enhancement in the Frequency Domain”: Realce de Imagens

no Domínio da Freqüência – apresenta conceitos referentes ao

processamento de imagens no domínio da freqüência (bem parecido com o

objetivo desse trabalho)13.

“Image Restoration”: Restauração de Imagens – introduz técnicas de

restauração de imagens.

13
Esse capítulo de WOODS & GONZALES mostra como transformar uma imagem do domínio

do espaço para o domínio da freqüência usando transformadas de Fourier. Está sendo, portanto, uma importante

referência nesse trabalho já que estamos transformando imagens do domínio do tempo para o a da freqüência.
83

“Color Image Processing”: Processamento de Imagens Coloridas –

introduz técnicas e conceitos relativos a imagens coloridas.

“Image Compression”: Compressão de Imagens – Apresenta formas de

comprimir imagens.

Já CRÓSTA, por sua vez, apresenta outras formas de processar imagens, dentre as

quais:

“Filtragem de frequências espaciais” – Apresenta alguns filtros

importantes no tratamento e processamento de imagens.

“Operações aritméticas em imagens”- Apresenta conceitos relativos a

adição, subtração e multiplicação de imagens.

“Correção Geométrica e Registro de Imagens” – Mostra técnicas de

correção de imagens distorcidas.

Enfim, cada autor mostra, em função do objetivo de seu livro, inúmeras formas de

se processar uma imagem. Porém, o mais curioso é que pouco se fala de processamento de

imagens de sensoriamento remoto multitemporais, isto é, há muito pouco na literatura sobre o

processamento de imagens de sensoriamento remoto no domínio do tempo. A razão disso é o

fato de a aplicabilidade de um processamento como esse ser bastante específico – o que torna

esse trabalho, inclusive, um trabalho pioneiro até o momento.

6.3 Razão de se processar imagens de sensoriamento remoto

multitemporais

Como já foi definido no tópico 3.4.3.2 - "Imagens de Sensoriamento Remoto

Multitemporais” (p.39), uma imagem de sensoriamento remoto multitemporal é aquela que

possui várias bandas, cada banda representando uma mesma região da superfície da Terra,
84

mas cada uma registrada em um tempo diferente. Dessa forma, as condições de tempo

ambientais que cada banda dessa imagem possui as diferem entre si.

Por exemplo, em um determinado dia quando um satélite passou para coletar

dados referentes a uma das bandas da imagem multitemporal poderia haver nuvens cobrindo

uma parte da superfície observada. Já um tempo depois, quando o satélite passou pela

segunda vez para observar aquela mesma região poderia haver nuvens tampando ou revelando

regiões distintas da banda anterior. Dessa forma, as condições atmosféricas podem interferir

na interpretação da imagem multitemporal criada. Essa interferência será considerada, nesse

trabalho, como o erro que se apresenta na forma de ruído nos sinais por causa de sua natureza

aleatória produzindo variações bruscas nos sinais extraídos da imagem multitemporal.

De certo, é importante tecer um exemplo para completar o entendimento do

conceito de erro que está sendo adotado nesse trabalho. Se na grande maioria das bandas da

imagem multitemporal houvesse uma região onde sempre existisse uma nuvem e, em algumas

outras poucas bandas essa nuvem não se apresentasse, a situação estaria invertida. Nesse caso,

o erro se daria pela ausência de nuvens e o que o software iria fazer seria “colocar” uma

nuvem naquela região para “corrigir” essas bandas que estão em desacordo com as demais

bandas. Felizmente, casos como esse constituem uma exceção já que regiões onde a presença

constante de nuvens implica tratamento especial. O mais comum é que as nuvens sejam

eventos aleatórios de baixa freqüência de ocorrência em um determinado pixel para o

universo de bandas da imagem: Quanto mais bandas, melhor!

Mas não são apenas as distorções atmosféricas as principais causadoras de erros.

Os erros podem ser causados de muitas outras formas. Wilkie e Fin (1996) apresentam nas

páginas de 107 a 122 um detalhamento de técnicas usadas para detectar e corrigir possíveis

erros em imagens de satélite. Segundo eles, as principais fontes de erros podem ser: distorções

atmosféricas (incluindo aqui desde a formação de nuvens, passando por moléculas diversas
85

suspensas no ar até partículas associadas a fumaça e poeira); erros originados pelos sensores

(como, por exemplo, a calibração relativa entre um sensor e outro) e erros originados por

distorções geométricas (como a rotação da Terra no momento da aquisição das imagens, a

curvatura da Terra, efeitos de ângulo de visualização, topografia, anomalias gravitacionais e

instabilidade da plataforma do satélite na qual o sensor está fixado).

De fato, poderíamos até mesmo melhorar o conceito encontrado no tópico 6.1-

“Introdução ao Processamento Digital de Imagens de Sensoriamento Remoto” (p.81)

inserindo a informação de que outra função do processamento de imagens é tentar corrigir os

diversos tipos de erros que podem existir numa imagem. Nesse trabalho, entretanto, o

principal tipo de erro que estaremos preocupados em tratar são aqueles decorrentes do tempo.

Portanto, dentre os erros citados os que mais nos interessa são os erros originados de

distorções atmosféricas.

Concluindo, podemos definir qual é a razão de processar imagens de

sensoriamento remoto multitemporais: corrigir erros. E a forma como escolhemos para

corrigir esses erros é a filtragem temporal nos dados de imagens de sensoriamento remoto

multitemporais usando transformadas de Fourier. Essa “forma” será discutida no Capítulo que

se segue.
86

Capítulo 7 Procedimento que iremos adotar para

processar imagens de sensoriamento remoto

multitemporais usando a Transformada Rápida de

Fourier

Haja vista esse trabalho ser relativamente novo, isso é, por existir pouca coisa na

literatura a respeito do processamento de imagens de sensoriamento remoto multitemporais,

faz-se necessário definir a nossa forma de processar imagens de sensoriamento remoto

multitemporais, isto é, o procedimento que iremos adotar para nos levar a atingir o nosso

objetivo. É sobre esse procedimento que se preocupará o próximo tópico.

7.1 Procedimento e Processos

Esse nosso procedimento para processar imagens de sensoriamento remoto

multitemporais consiste em sete processos (ou etapas) listados e comentados a seguir. Cada

etapa é ilustrada com dados de uma imagem multitemporal real.

1. Escolher uma imagem de sensoriamento remoto multitemporal como dado de

entrada. A essa imagem daremos o nome de Imagem Multitemporal Original (IMO).

A primeira coisa a fazer é escolhermos uma imagem de sensoriamento remoto

multitemporal o qual vamos querer processar. Essa imagem será o dado de entrada do qual

poderemos extrair todos os sinais que serão processados.


87

Figura 48 – Cubo de uma imagem de sensoriamento remoto multitemporal

Para ilustrar a primeira etapa escolhemos a Imagem de Sensoriamento Remoto

Multitemporal ilustrada na Figura 48. Essa imagem multitemporal vai servir de dado de

entrada para o programa.

2. Extrair um sinal no domínio do tempo da IMO;

Fixando-se um ponto da IMO e variando-se o eixo z (eixo das bandas),

podemos traçar um sinal temporal. Se a imagem possuir linhas por colunas, então o total

de possíveis sinais existentes na imagem será de sinais diferentes, cada um referente ao

um ponto diferente.
88

Figura 49 – Sinal temporal discreto extraído da imagem no ponto (100,100).14

3. Transformar esse sinal para o domínio da freqüência;

O sinal extraído na etapa anterior será transformado (usando a transformada de

Fourier) para o domínio da freqüência (ou domínio de Fourier).

Figura 50 – O sinal temporal foi transformado para o domínio da freqüência.

4. Aplicar um filtro nesse sinal

O sinal é então filtrado de alguma forma15 produzindo, assim, sinais filtrados no

domínio da freqüência. Esse processo de filtragem é o responsável por eliminar os erros

presentes na imagem. Essa é a finalidade máxima de todo esse trabalho: poder filtrar esses

sinais no domínio da freqüência.

14
Esses gráficos, embora discretos, foram representados no diagrama usando uma linha contínua para fins de

melhor visualização.
15
Os filtros utilizados nesse trabalho serão discutidos no tópico seguinte.
89

Figura 51 –Filtro passa-banda sendo aplicado ao sinal anterior.

5. Aplicar a transformada inversa nesse sinal filtrado de forma a voltar para o domínio

do tempo;

Nessa etapa, aplicaremos a transformada inversa de Fourier ao sinal filtrado no

domínio da freqüência e obteremos sinais (ainda filtrados) no domínio do tempo.

Figura 52 – Sinal original (azul) e sinal filtrado (vermelho).

6. Gravar esse sinal filtrado no domínio do tempo numa nova imagem multitemporal

filtrada de acordo com o filtro usado na etapa quatro. A essa última imagem

daremos o nome de Imagem Multitemporal Resposta (IMR).

O sinal é então gravado numa nova imagem multitemporal que é gerada a partir

da imagem original. Essa nova imagem multitemporal é o dado de saída do processamento.

7. Fazer novamente as etapas de 2 a 6, escolhendo a cada iteração um novo ponto

da IMO (e portanto, um sinal diferente) até haver percorrido todos os

pontos possíveis tomando o cuidado de aplicar sempre o mesmo filtro em todos os

sinais.
90

O processo é, portanto, iterativo, com as etapas de 2 a 6 repetindo-se para cada

pixel da imagem multitemporal original. É importante destacar que o filtro que é aplicado a

cada sinal extraído da IMO deve sempre ser o mesmo para todos os sinais. A Figura 53 a

seguir apresenta o fluxograma do processo descrito.

Figura 53 - Fluxograma do processo.


91

Figura 54 Imagem multitemporal resposta gerada a partir do filtro que foi aplicado.

Assim, a Figura 54 anterior mostra um cubo representando a imagem

multitemporal resposta. Ainda, nas ilustrações a seguir podemos ver uma mesma banda da

imagem original e da imagem resposta para fins de comparação.


92

Figura 55 - Banda antes do filtro.

Figura 56 - Banda depois do filtro.


93

7.2 Os Filtros

Uma vez estando o sinal no domínio da freqüência, temos que aplicar algum tipo

de filtro para eliminar do sinal determinadas freqüências. Estabelecer se uma freqüência é

desejável ou não é tarefa do usuário que está operando o programa que estamos

desenvolvendo, portanto, não vamos entrar nesse mérito.

Filtrar no contexto desse trabalho é o processo de anular os valores das

freqüências indesejadas e manter os valores de freqüências desejadas. Assim, nesse projeto foi

programado quatro tipos de filtros diferentes16 listados, comentados e ilustrados a seguir:

7.2.1 Filtro Passa-alta

O filtro passa-alta consiste em deixar “passar” altas freqüências e eliminar

(anular) freqüências baixas. O que determina se uma freqüência é alta ou baixa é um limite

arbitrário imposto pelo usuário do programa. Se, por exemplo, ele determinar esse limite em

, então freqüências abaixo de serão anuladas mantendo-se aquelas acima de .

Figura 57 – Filtro passa-alta.

16
No DVD encontramos um vídeo chamado “Filtros.wmv” mostrando como criar esses filtros no

programa desenvolvido. Consulte o APÊNDICE D - “DVD” p.150 para maiores informações.


94

7.2.2 Filtro Passa-baixa

O filtro passa-baixa, por sua vez, é o contrário do filtro passa-alta descrita acima.

Ele consiste em deixar “passar” baixas freqüências e eliminar (anular) freqüências altas. Se,

por exemplo, ele determinar que o limite que separa freqüências altas e baixas é de , então

freqüências acima de serão zeradas mantendo-se aquelas abaixo de .

Figura 58 - Filtro passa-baixa.

7.2.3 Filtro Passa-banda

Enquanto os filtros passa-alta e passa-baixa precisa de apenas um único parâmetro

para separar as altas das baixas freqüências, filtros passa-banda e para-banda precisam de dois

parâmetros. O filtro passa-banda consiste em deixar “passar” determinadas bandas de

freqüências eliminando-se todo o resto. Essas bandas de freqüências consistem em faixas de

freqüências determinados pelo usuário. Assim, se , por exemplo, o usuário escolhe os valores

de freqüência e , como parâmetros, então freqüências menores ou iguais que e

maiores ou iguais que serão mantidas, eliminando-se todas as demais frequências que não

pertencerem a este intervalo.


95

Figura 59 – Filtro passa-banda.

7.2.4 Filtro Para-banda

O filtro para-banda, como é de se esperar, é o contrário do filtro passa-banda. Se

valores de freqüência e , são escolhidos como parâmetros, freqüências menores ou

iguais que e maiores ou iguais que serão eliminadas, mantendo-se todas as demais

freqüências.

Figura 60 - Filtro para-banda.

Dessa forma, verificamos o quadro geral do procedimento que deverá ser

executado para cumprir com os objetivos desse trabalho bem como os filtros que foram

programados.
96

Capítulo 8 Programando o Software Científico

Até agora não nos preocupamos com relação aos aspectos do programa em si.

Apresentamos a teoria relacionada às imagens de sensoriamento remoto, a teoria relacionada à

transformada de Fourier e até mesmo discorremos sobre o algoritmo da Transformada Rápida

de Fourier. Tudo isso faz parte da esfera da engenharia.

Nesse capítulo, partiremos para a esfera da ciência da computação mostrando

formalmente o programa desenvolvido. Começaremos pelas principais estruturas de dados

utilizadas para modelar os sinais, pelas bibliotecas de funções e pelos principais algoritmos

usados e desenvolvidos. Mostraremos também como ele funciona e como usá-lo.

8.1 A Linguagem de Programação

Nesse programa escolhemos usar a Linguagem C++ para programar a ferramenta.

Desde que foi desenvolvida pelo Doutor Bjarne Stroustrup em 1980, a linguagem C++ tem

sido bastante usada por programadores profissionais para aplicações de telecomunicação,

aplicações financeiras, sistemas embarcados dentre diversas outras aplicações. A versatilidade

dessa linguagem aliada à rica literatura associada a ela foram as principais razões dessa

escolha (Rogue Wave Software, 2008).

Em 1998 a linguagem C++ foi padronizada pelas organizações ANSI (American

National Standards Institute) e pela ISO (International Standards Organization) produzindo

um documento chamado ISO/IEC 14882:2003 - International Standard for Information

Systems -- Programming Language C++, que é um padrão internacional para sistemas da

informação que utilizam a Linguagem C++ (Rogue Wave Software, 2008).


97

8.2 As Estruturas de Dados

As estruturas de dados são a forma pelo qual o programador modela no

computador o fenômeno que ele quer representar e com o qual ele quer interagir. Podemos

encontrar praticamente um conjunto idêntico de estruturas de dados em quaisquer linguagens

de programação, o que varia é basicamente a sintaxe, ou seja, a forma de escrever e definir

essas estruturas. Podemos citar como exemplo de estruturas de dados as pilhas, listas, árvores,

grafos, etc. Por outro lado, algumas linguagens também apresentam estruturas de dados

especiais.

Assim, escolheu-se usar um conjunto de estrutura de dados especiais

desenvolvidos para linguagem C++ para facilitar a construção do programa. Essas estruturas

de dados fazem parte de uma biblioteca chamada Rogue Wave implementation of the C++

Standard Library (que do inglês significa Biblioteca Padrão do C++). Em agosto de 2005 essa

biblioteca foi doada para a comunidade mundial de desenvolvimento de software através do

Apache Software Foundation que o torna livre de licenças comerciais restritivas. (Rogue

Wave Software, 2008)

Deste modo, são duas as estruturas de dados presentes nessa biblioteca que

facilitou a modelagem do programa: as estruturas de dados complex e valarray. Essas duas

estruturas de dados ou classes de dados foram usadas em conjunto para podermos modelar e

manipular os sinais que eram extraídos das imagens multitemporais.

Nos tópicos a seguir falaremos um pouco dessas duas classes e mostraremos como

os sinais foram modelados a partir dessas duas classes.

8.2.1 A classe complex

A classe complex é uma estrutura de dados usada para criar objetos para

representar e manipular números complexos. As operações definidas nessa classe admitem


98

que elas sejam utilizadas juntamente a outros tipos numéricos da linguagem C++ permitindo

que softwares numéricos sejam facilmente e naturalmente desenvolvidos. (Apache Software

Foundation, 2008).

Não é difícil imaginar porque escolher essa estrutura de dados para modelar os

sinais. No Tópico 4.4 – “Complexidade do Sinal” (p.49) definimos que nossos sinais seriam

formados por elementos complexos. Dessa forma, utilizar uma classe pronta de manipulação

de dados complexos foi uma ótima idéia.

8.2.2 A classe valarray

Sabemos que um sinal é um conjunto de elementos complexos. Entretanto, a

classe complex apresentada anteriormente só representa um único número complexo. Dessa

forma, precisamos criar vetores de números complexos para representar completamente o

sinal. É nesse contexto que utilizamos a classe valarray.

A estrutura de dados valarray é uma classe usada para representar vetores de

dados unidimensionais que serão usadas para desempenhar cálculos sem prejudicar o

desempenho do programa. Ela facilita a modelagem e manipulação de vetores de dados e

fornece a eficiência indispensável que programas numéricos requerem.

8.2.3 Modelando os Sinais

Dessa forma, usando a classe complex definiu-se um novo tipo de dado chamado

TXFloat. Dessa maneira qualquer variável declarada como TXFloat estará se tratando de um

número complexo.

Em seguida, usando a classe valarray definiu-se dois outros tipos de dados. O

primeiro, mais utilizado no programa foi chamado TXSinal. O TXSinal é um vetor de dados

complexos e representa, portanto, o sinal complexo. O segundo, definido para realizar alguns
99

testes foi chamado TFSinal. Ele representa um sinal não complexo, isto é, seus elementos são

números reais.

No APÊNDICE A -Estruturas de Dados (p.139) mostramos essas estruturas de

dados com maior detalhe.

8.3 As bibliotecas de acesso e manipulação de imagens

O Dr. Nilton Correia da Silva desenvolveu em 2003 uma biblioteca de funções

para acessar e manipular imagens de sensoriamento remoto chamada TImagem. De fato,

existem diversas formas de armazenar uma imagem em um arquivo de computador. Cada uma

dessas formas ou formatos é identificada pela extensão do arquivo. Podemos citar os

seguintes formatos de arquivo de imagem para computadores: img, tif, bmp, gif, jpg, ras, sgi,

pcx, tga e led.

Cada um desses formatos de arquivo possui suas características únicas e, portanto,

logísticas próprias de acesso e manipulação de seus dados. Assim, a função da biblioteca

TImagem é fornecer ao programador uma forma de acessar e manipular os dados de qualquer

um desses formatos de forma transparente. Ela fornece um conjunto de funções que cria um

nível de abstração onde o programador consegue acessar e manipular os dados sem precisar se

preocupar com a logística inerente a cada formato de arquivo.

Dessa forma, nesse trabalho, o desenvolvimento limitou-se ao que foi proposto,

isso é, realizar um filtro temporal em imagens de sensoriamento remoto. O acesso e a

manipulação dessas imagens foram providos usando as funções dessa biblioteca. Essa

biblioteca é explorada com maior detalhe no ANEXO B - “A Biblioteca TImagem” (p.156).


100

8.4 Os Algoritmos Desenvolvidos

Para que o programa funcione corretamente é necessário programar diversos

algoritmos responsáveis pelas mais diversas funcionalidades dentro do programa. Além das

funções de tratamento dos sinais os transformando de um domínio para o outro, ainda temos

que nos preocupar com a forma como vamos visualizá-los para o usuário, enfim, como o

usuário dará entrada e como o programa dará saída nos dados.

Assim, para organizar o código fonte, os diversos algoritmos foram divididos em

seções e subseções. Nesse contexto, os algoritmos usados para controle de janelas do

programa não é importante uma vez que você pode encontrar informações sobre isso em

literaturas específicas sobre o assunto. Então, focalizaremos nos algoritmos de processamento

dos sinais e imagens.

Dividimos os algoritmos em duas seções diferentes: Algoritmos relativos às

transformadas dos sinais e os algoritmos relativos ao processamento da imagem. É importante

destacar que esses algoritmos apresentados aqui são o básico fundamental do programa que

possui mais de trinta funções (sem contar as funções das bibliotecas que ele utiliza).

8.4.1 Transformadas dos sinais

Os algoritmos relativos às transformadas dos sinais são três:

void __fastcall fft(int npoints, TFSinal *real,TFSinal *imag,int inv);

void __fastcall fourier(TXSinal *XSinal, int isign);

void __fastcall ordena(TXSinal *XSinal);

O primeiro já foi discutido no Tópico - 5.4.3 “O Algoritmo” (p.79). Trata-se do

algoritmo da Transformada Rápida de Fourier (FFT) apresentado no ANEXO A - “O

Algoritmo da Transformada Rápida de Fourier (FFT)” (p.153). Entretanto, o algoritmo que

apresentamos nesse anexo é o algoritmo original. Vale destacar que o mesmo foi adaptado
101

para a Linguagem C++ usando as estruturas de dados que adotamos. Além do mais, uma

importante alteração foi feita no algoritmo: Originalmente, ele faz a “normalização”

referenciada no Tópico 5.3.2 – “Discrete Fourier Transform: A Série de Fourier de Tempo

Discreto” (p.73) ao executar a transformada inversa. Mas a convenção que adotamos foi a de

executar essa normalização na transformada direta. Assim, tivemos que mudar o algoritmo

para que isso fosse atingido. Veja o APÊNDICE B - “Algoritmos Desenvolvidos:

Transformada” (p.140) que mostrará esse algoritmo adaptado comentando aonde foi feita essa

alteração.

O segundo algoritmo é responsável por servir de “ponte” entre a modelagem de

dados do programa e o algoritmo da FFT discutido no parágrafo anterior. Veja que dessa

forma, nunca fazemos uma chamada diretamente à função fft(...). Quando quisermos

transformar um sinal, utilizamos a função fourier(...) que por sua vez irá chamar a fft(). O

APÊNDICE B - também apresenta essa função.

O terceiro algoritmo também é um algoritmo auxiliar que só é chamado pela

função fourier(...) acima exposta. Seu papel é fazer a inversão dos valores das freqüências do

sinal de forma a ordenar as freqüências da menor para a maior. O APÊNDICE B - também

apresenta essa função.

8.4.2 Processamento da Imagem

Os principais algoritmos relativos ao processamento das imagens são quatro:

void __fastcall pegaSinal();

void __fastcall trataSinal();

void __fastcall gravaSinal();

void __fastcall Execute();


102

O último algoritmo é aquele responsável por todo o processamento da imagem e

geração de uma imagem nova. Os três primeiros algoritmos são algoritmos auxiliares

chamados pela função Execute (). Note que apenas os nomes dessas três funções auxiliares

revelam o processamento descrito no Tópico 7.1 – “Procedimento e Processos” (p.86).

Basicamente o algoritmo Execute () é responsável por criar a nova imagem pegando

sucessivamente sinais da imagem original, tratando-os segundo o filtro e gravando os sinais

filtrados na nova imagem. Esses algoritmos são mostrados e comentados no APÊNDICE C -

“Algoritmos Desenvolvidos: Processamento” (p.145).

8.5 Processando Imagens Multitemporais

De fato, o leitor pode ter percebido que muitas ilustrações encontradas até agora

são capturas de tela de algum programa de computador em execução. De fato, trata-se do

programa final fruto da aplicação de toda a teoria encontrada até agora nessa monografia.

A seguir mostramos passo a passo como proceder para realizar o processamento

de uma imagem de sensoriamento remoto multitemporal filtrando-a e gerando uma nova

imagem.17

Figura 61- Janela Principal do programa em execução.

17
No DVD encontramos o vídeo “ProcessandoImagens.wmv” mostrando como usar o programa

para realizar esse processamento. Consulte o APÊNDICE D - “DVD” p.150 para maiores informações.
103

Primeiramente, você deve executar o aplicativo. A Figura 61 anterior mostra a

primeira janela que aparece. Trata-se a janela principal do programa com o seguintes menus:

Arquivo: Basicamente usado para carregar e gerar imagens.

Visualizar: Visualizar as ferramentas.

Sinais: Laboratório de Sinais para testes.

Créditos: Informações sobre o programa.

Figura 62 - Menu Arquivo.

Acessando o menu arquivo procedemos acessando o sub-menu “Carregar

Imagem” para carregar uma imagem.

Figura 63 - Abrir uma imagem multitemporal. Nesse exemplo abrimos pnsc_ndvi.img.


104

Agora, escolhemos o arquivo da imagem multitemporal que queremos processar.

Para exemplificar abrirmos o arquivo pnsc_ndvi.img. Essa imagem está na pasta Imagens do

CD que acompanha esse trabalho.

Figura 64 - Janela Inicial mostrando os dados da imagem escolhida.

Após abrir a imagem, veja que os dados referentes a essa imagem são carregados

na janela principal do programa.

Figura 65 - Menu Visualizar.

Carregada uma imagem, o menu “Visualizar” está agora habilitado. Você pode

usá-lo para visualizar diversas ferramentas. Perceba as teclas de atalho ao lado dos sub-

menus. Pressionar qualquer dessas teclas de atalho com o foco em qualquer janela do

programa principal executa a ação correspondente. Tente, por exemplo, pressionar Ctrl + A e

você verá a janela de Visualização da Imagem se abrir.


105

Figura 66 - Janela visualizando a banda da imagem carregada.

Perceba que todas as janelas são independentes uma das outras. Assim, você pode

arrastar e redimensionar cada janela da forma como desejar. Caso você acidentalmente feche

ou simplesmente perca a janela de vista, você pode pressionar a tecla de atalho

correspondente para mostrar a janela escondida.

Figura 67 - Alternando entre as bandas da imagem.


106

Na ilustração anterior, rearranjamos as posições das janelas e ainda chamamos a

janela de “Visão Geral” usando o atalho Ctrl + S. Depois, chamamos a janela principal com o

atalho Ctrl + R e abrimos a lista de bandas. Veja que ao mudar as bandas, a visualização da

imagem muda automaticamente.

Figura 68 – Sinal temporal extraído da imagem multitemporal na coordenada escolhida.

Continuando, ao mover o mouse na janela “Visualizar Imagem” perceba que a

coordenada da posição do mouse é mostrada no canto inferior esquerdo dessa janela.

Ao dar um duplo clique sobre a imagem, a posição é marcada com dois traços vermelhos.

Ainda, o perfil Z desse pixel pode ser mostrado ao abrir a janela “Domínio do Tempo” usando

o atalho Ctrl + Q.

A janela do “Domínio do Tempo” mostra o sinal que é extraído em tempo real da

imagem multitemporal. No eixo x, mostramos as bandas de 0 a N. No eixo y, mostramos o

valor daquele pixel em cada banda.

Perceba que a janela “Domínio do Tempo” pode ser redimensionada para o

tamanho que você desejar. Você também pode navegar pelo gráfico apertando o botão
107

esquerdo do mouse e arrastando. Ainda, você pode dar um zoom no gráfico ao clicar com o

botão direito do mouse e desenhando um retângulo na região que você quer aproximar.

Retângulos desenhados da esquerda para a direita avançam o zoom, retângulos desenhados da

direita para a esquerda retornam o gráfico para o zoom original.

Verifique, finalmente, que ao mudar o pixel na imagem, o “Domínio do Tempo” é

automaticamente atualizado para aquela posição.

Figura 69 - Visualização do filtro, e do sinal no domínio do tempo e da frequência.

Prosseguindo, a Ilustração anterior mostra duas novas janelas: As janelas

“Domínio da Freqüência” e “Filtro”. A janela “Domínio da Freqüência” se comporta

exatamente como a janela “Domínio do Tempo” com a diferença de que na primeira o sinal já

foi convertido para o domínio de Fourier.

A janela “Filtro” apresenta a interface usada para criar os filtros desejados.

Figura 70 - Janela "Filtro".


108

Podemos construir a partir dessa interface qualquer um dos quatro filtros

discutidos no Tópico 7.2 – “Os Filtros” (p.93).

Figura 71 – Filtro configurável em tempo real.

Verifique que ao configurar o filtro, um novo gráfico vermelho aparece em cada

janela do “Domínio do Tempo” e na janela do “Domínio da Freqüência”. Enquanto o gráfico

azul das duas janelas mostra o sinal original, os gráficos vermelhos mostram, em tempo real,

o resultado da filtragem nos dois domínios.

Note também que quando uma configuração de filtro é criada, pode-se mudar a

coordenada do pixel de interesse que todos os sinais atualizam-se para o novo sinal.

Dessa forma, cabe ao usuário analisar em tempo real qual será a melhor

configuração de filtro para a nova imagem que o programa está prestes a gerar. Uma vez que

uma configuração de filtro tiver sido escolhida, tudo o que o usuário deverá fazer é ir na

janela principal (Ctrl+R), selecionar “Arquivo” e “Gerar” ou simplesmente pressionar o

atalho “Ctrl + G”.


109

Figura 72 - Após ter definido o filtro, encontramos a opção "Gerar" na janela principal.

Figura 73 - Diálogo pedindo o nome e o local onde a nova imagem resposta será salva.

Após o usuário tiver mandando o programa gerar a nova imagem baseada no filtro

configurado, o programa abrirá uma janela pedindo um local e um nome para a nova imagem

que será gerada. Nesse exemplo, o nome que escolhemos foi pnsc_ndvi_novo.img.
110

Figura 74 - A nova imagem está sendo criada.

Ao mandar “Salvar”, o programa entra no início do processamento que consiste

em clonar a estrutura da imagem original, isso é, criar uma nova imagem com as mesmas

dimensões e números de bandas da imagem original. Essa fase demora cerca de alguns

minutos dependendo da capacidade de processamento do computador que está rodando o

programa.

Entenda que nenhum processamento real está sendo feito nessa fase. O programa

está apenas preparando um novo arquivo no qual ele irá armazenar os sinais filtrados da

imagem original compondo, assim, uma nova imagem multitemporal.


111

Figura 75 - A nova imagem está sendo criada.

A próxima fase é o processamento propriamente dito. Nessa fase o programa está

lendo cada posição da imagem original, extraindo um sinal temporal, transformando para o

domínio da freqüência, aplicando o filtro configurado, transformando de volta para o domínio

do tempo e, finalmente, gravando o sinal filtrado no novo arquivo de imagem criado na fase

anterior. Verifique a barra de progresso que mostra quanto por cento da imagem já foi

processada e quanto ainda falta processar.

Figura 76 - A nova imagem foi criada com sucesso,


112

Quando o processamento termina, a janela da ilustração anterior aparece

anunciando o fim do processamento e que a imagem foi processada com sucesso. Perceba que

mostramos também o tempo decorrido entre o momento que o usuário clica em “Salvar” até o

momento final de todo o processamento.

Concluindo, o programa apresenta uma interface bastante intuitiva e dinâmica

para analisar os sinais, configurar o filtro e gerar a nova imagem.

8.6 Laboratório de Sinais

Além de todas as interfaces mostradas no tópico anterior usadas para processar as

imagens de sensoriamento remoto, também foi desenvolvida uma ferramenta para produzir e

visualizar sinais controlados para fins de testar o programa. Chamamos essa ferramenta de

“Laboratório de Sinais” e mostramos uma captura de tela da mesma na Figura 77 a seguir.

Figura 77 - Interface principal do Laboratório de Sinais.

Nessa interface podemos visualizar ao mesmo tempo até quatro sinais

inicialmente chamados de Sinal A, Sinal B, Sinal C e Sinal D. Para cada sinal, possuímos seis
113

botões que executam ações nesses sinais. Os botões e a descrição de suas ações são os

seguintes:

Abrir – Abre um sinal a partir de um arquivo INI. Originalmente,

arquivos INI são usados para guardar configurações de programas.

Entretanto, primando pela facilidade de manipulação desses arquivos,

escolhemos usá-los para salvar e restaurar os dados referentes a sinais

produzidos por esse programa.

Salvar – Salva o sinal em um arquivo INI.

Zero Pad – Sabemos que o algoritmo da Transformada Rápida de Fourier

usada nesse programa só consegue ser executada em sinais cujo número de

amostras N seja uma potência de dois. Isto é, para algum número

p inteiro positivo. Dessa forma, se quisermos aplicar a transformada de

Fourier direta ou inversa em algum sinal cujo N não seja uma potência de

2, precisamos primeiro adicionar zeros (Zero Pad) até que o número de

amostras seja igual ao número potência de 2 mais próximo. Por exemplo,

se o N do sinal original for igual a 12, “Zero Pad” irá adicionar quatro

zeros gerando um sinal com 16 amostras: .

Fourier – Ao pressionar o botão “Fourier” o programa vai transformar o

sinal usando a transformada direta ou inversa de Fourier. A escolha entre a

transformada direta ou inversa é feita escolhendo um dos dois tipos no

radiogroup “Fourier” que mostra duas opções possíveis: “Direto” e

“Inverso”.

Filtrar – O botão “Filtrar” abre a interface de filtro permitindo que o

usuário visualize filtros feitos no sinal. Vale destacar que só há sentido

usar o botão “Filtrar” quando o sinal está no domínio do tempo. Se o sinal


114

estiver no domínio de Fourier, o programa vai tratar esse sinal como se

estivesse no domínio do tempo e vai produzir uma “transformada da

transformada”.

Mostrar – O botão mostrar é usado para criar uma janela independente e

mais rica em detalhes do sinal que está sendo visualizado. O groupbox

“Ao mostrar” possui dois radiogroups usados para configurar a janela que

será visualizada. O radiogroup “tipo” permite que você escolha dentre as

cinco possíveis representações do sinal (Espectro, Espectro de Potência,

Parte Real, Parte Imaginária e Fase). O radiogroup “Eixo X” permite que

você escolha apenas a ordem dos valores da legenda do eixo x do gráfico

que será mostrado. Naturalmente, quando o sinal que será mostrado está

no domínio do tempo, prefere-se mostrar o eixo x na forma de números

inteiros positivos crescentes a partir do zero. Quando o sinal está no

domínio da freqüência, o correto seria mostrá-lo usando os valores de x

(freqüência) negativos e positivos.

Além desses botões, podemos notar também os botões “Fechar” que é usado para

fechar essa interface e o botão “Gerar Sinais”. Clicando nesse último, abrimos a interface

“Gerar Sinais”. Usamos essa última para gerar sinais que serão salvos no formato adequado

para posterior manipulação no “Laboratório de Sinais”.18

18
Um vídeo exemplo mostrando como gerar sinais usando o programa pode ser encontrado no

DVD sob o nome “LabSinaisEx1.wmv”. Consulte o APÊNDICE D - “DVD” p.150.


115

Figura 78 - Interface Gerar Sinais

Nessa interface o usuário pode produzir sinais discretos complexos amostrando

funções. Algumas considerações importantes são necessárias:

As funções disponíveis são a função seno, cosseno, tangente e exponencial

identificadas como sen(x), cos(x), tan(x) e exp(x) respectivamente.

O usuário pode optar dentre as seguintes letras: x, t ou k para referenciar à

variável independente. O programa não as diferencia, assim se o usuário

escreve, por exemplo, sen(x) + x ou sen(t) + t ou ainda sen(x) + t, o programa

vai apresentar o mesmo resultado.


116

A letra “p” é reservada e utilizada como valendo 3,14159.

O programa usa aproximação para 5 casas decimais.

Os valores de inicio e o passo podem ser decimais. Você pode até mesmo usar

a constante “p” para criar valores de passo.

O valor Total deve ser um número inteiro positivo maior do que 2.

O usuário ainda pode definir algumas expressões no grupo de Testes para ver

qual o resultado do processamento.

Todas as funções de manipulação de expressões foram desenvolvidas pelo

autor desse trabalho, embora se criou um poderoso manipulador capaz de

calcular expressões complexas definidas pelo usuário, alguns avisos devem ser

feitos:

o Cuidado ao multiplicar uma constante por uma função. Em vez de

multiplicar direto, ex.: , utilize parênteses, ex.: ,

ou .

o Cuidado ao usar o sinal de negativo como operador e não como

operação. Em vez de digitar utilize um zero antes:

o Funções compostas de mais de uma função podem produzir resultados

inesperados. Ex.: Não utilize esse tipo de expressão.


117

Capítulo 9 Validando os Resultados

Esse capítulo se destina a validar os resultados encontrados com o algoritmo da

Transformada Rápida de Fourier que foi programado ao utilizá-la para analisar sinais

controlados.

9.1 Primeiro Exemplo: Função Exponencial

No capítulo 9 de BRIGHAM pág 132, encontramos um exemplo no qual o autor

analisa a transformada de um sinal obtido pela amostragem de uma função exponencial a

seguir. Vamos repetir esse exemplo tecendo comentários pertinentes. 19

(9.1)

Nesse exemplo, essa função será amostrada em N=32 amostras com intervalo de

amostragem ∆ igual a 0,25. Ainda, escolhemos = 0. Dessa forma, varia na faixa de 0 até

19
No DVD encontramos o vídeo “LabSinaisExp” mostrando esse exemplo. Consulte o

APÊNDICE D - “DVD” p.150 para maiores informações.


118

7,75 com passo igual a 0,25. Considere a Figura 79 a seguir gerada pelo programa.20

<Real> Exponencial
exp(0-t) + 0 j
N = 32
[0](0,00000) 1
1 [1](0,25000) 0,779
0,95 [2](0,50000) 0,607
0,9 [3](0,75000) 0,472
[4](1,00000) 0,368
0,85
[5](1,25000) 0,287
0,8 [6](1,50000) 0,223
0,75 [7](1,75000) 0,174
0,7 [8](2,00000) 0,135
[9](2,25000) 0,105
0,65
[10](2,50000) 0,082
0,6 [11](2,75000) 0,064
0,55 [12](3,00000) 0,05
Eixo y

0,5 [13](3,25000) 0,039


[14](3,50000) 0,03
0,45 [15](3,75000) 0,024
0,4 [16](4,00000) 0,018
0,35 [17](4,25000) 0,014
[18](4,50000) 0,011
0,3
[19](4,75000) 0,009
0,25 [20](5,00000) 0,007
0,2 [21](5,25000) 0,005
0,15 [22](5,50000) 0,004
[23](5,75000) 0,003
0,1
[24](6,00000) 0,002
0,05 [25](6,25000) 0,002
0 [26](6,50000) 0,002
[27](6,75000) 0,001
[0](

[3](

[6](

[9](

[12

[15

[18

[21

[24

[27

[30
[28](7,00000) 0,001
](3,

](3,

](4,

](5,

](6,

](6,

](7,
0,0

0,7

1,5

2,2

[29](7,25000) 0,001
00 0

50 0

00 0

50 0

00 0

75 0

50 0

25 0

00 0

75 0

50 0
[30](7,50000) 0,001
0)

0)

0)

0)

00)

00)

00)

00)

00)

00)

00)
[31](7,75000) 0,000
Eixo x

Figura 79 - Gráfico da Amostra da Exponencial.

O próximo passo é proceder com a Transformada Direta de Fourier.

20
Esse sinal pode ser encontrado no DVD sob o nome “ValidandoResultados_Exponencial.ini”.

Consulte o APÊNDICE D - “DVD” p.150.


119

<Real> Exponencial
exp(0-t) + 0 j
N = 32
0,14 [-16](0,00000) 0,018
[-15](0,25000) 0,018
0,135 [-14](0,50000) 0,018
0,13 [-13](0,75000) 0,018
0,125 [-12](1,00000) 0,018
[-11](1,25000) 0,018
0,12
[-10](1,50000) 0,018
0,115 [-9](1,75000) 0,019
0,11 [-8](2,00000) 0,019
0,105 [-7](2,25000) 0,02
[-6](2,50000) 0,022
0,1 [-5](2,75000) 0,024
0,095 [-4](3,00000) 0,028
0,09 [-3](3,25000) 0,035
[-2](3,50000) 0,052
0,085
[-1](3,75000) 0,094
0,08 [0](4,00000) 0,141
0,075 [1](4,25000) 0,094
Eixo y

[2](4,50000) 0,052
0,07
[3](4,75000) 0,035
0,065 [4](5,00000) 0,028
0,06 [5](5,25000) 0,024
0,055 [6](5,50000) 0,022
[7](5,75000) 0,02
0,05 [8](6,00000) 0,019
0,045 [9](6,25000) 0,019
0,04 [10](6,50000) 0,018
[11](6,75000) 0,018
0,035
[12](7,00000) 0,018
0,03 [13](7,25000) 0,018
0,025 [14](7,50000) 0,018
0,02 [15](7,75000) 0,018

0,015
0,01
0,005
0
[-16

[-13

[-10

[-7]

[-4]

[-1]

[2](

[5](

[8](

[11

[14
](6,

](7,
(

4,5

5,2

6,0
](0,

](0,

](1,

2,2

3,0

3,7

00 0

50 0

00 0

75 0

50 0
000

750

500

500

000

500

0)

0)

0)

00)

00)
00 )

00 )

00 )

0)

0)

0)

Eixo x

Figura 80 – Parte real da transformada de Fourier da exponencial.

<Imag> Exponencial
exp(0-t) + 0 j
N = 32 [-16](0,00000) 0
0,06 [-15](0,25000) 0,002
0,055 [-14](0,50000) 0,003
0,05 [-13](0,75000) 0,005
0,045 [-12](1,00000) 0,006
0,04 [-11](1,25000) 0,008
0,035 [-10](1,50000) 0,01
0,03 [-9](1,75000) 0,012
0,025 [-8](2,00000) 0,015
0,02 [-7](2,25000) 0,018
0,015 [-6](2,50000) 0,022
0,01 [-5](2,75000) 0,027
0,005 [-4](3,00000) 0,034
Eixo y

0 [-3](3,25000) 0,043
-0,005 [-2](3,50000) 0,056
-0,01 [-1](3,75000) 0,06
-0,015 [0](4,00000) 0
-0,02 [1](4,25000) -0,06
-0,025 [2](4,50000) -0,056
-0,03 [3](4,75000) -0,043
-0,035 [4](5,00000) -0,034
-0,04 [5](5,25000) -0,027
-0,045 [6](5,50000) -0,022
-0,05 [7](5,75000) -0,018
-0,055 [8](6,00000) -0,015
-0,06 [9](6,25000) -0,012
[10](6,50000) -0,01
[-16

[-13

[-10

[-7]

[-4]

[-1]

[2](

[5](

[8](

[11

[14

[11](6,75000) -0,008
](6,

](7,
(

4,5

5,2

6,0
](0,

](0,

](1,

2,2

3,0

3,7

[12](7,00000) -0,006
00 0

50 0

00 0

75 0

50 0
000

750

500

500

000

500

[13](7,25000) -0,005
0)

0)

0)

00)

00)
00 )

00 )

00 )

0)

0)

0)

[14](7,50000) -0,003
Eixo x [15](7,75000) -0,002

Figura 81 - Parte imaginária da transformada de Fourier da exponencial.


120

Se o leitor puder consultar BRIGHAM para fins de comparação, atente para o fato

de que esse autor não mostra seu resultado na forma convencional que seria de até .

Essa forma convencional está sendo adotada aqui.

A seguir, continuamos fazendo a inversa da transformada direta que obviamente

deverá resultar num sinal igual ao sinal original no domínio do tempo.

<Real> Exponencial
exp(0-t) + 0 j
N = 32 [0](0,00000) 1
1 [1](0,25000) 0,779
0,95 [2](0,50000) 0,607
0,9 [3](0,75000) 0,472
[4](1,00000) 0,368
0,85
[5](1,25000) 0,287
0,8 [6](1,50000) 0,223
0,75 [7](1,75000) 0,174
0,7 [8](2,00000) 0,135
[9](2,25000) 0,105
0,65
[10](2,50000) 0,082
0,6 [11](2,75000) 0,064
0,55 [12](3,00000) 0,05
Eixo y

0,5 [13](3,25000) 0,039


0,45 [14](3,50000) 0,03
[15](3,75000) 0,024
0,4
[16](4,00000) 0,018
0,35 [17](4,25000) 0,014
0,3 [18](4,50000) 0,011
0,25 [19](4,75000) 0,009
[20](5,00000) 0,007
0,2
[21](5,25000) 0,005
0,15 [22](5,50000) 0,004
0,1 [23](5,75000) 0,003
0,05 [24](6,00000) 0,002
0 [25](6,25000) 0,002
[26](6,50000) 0,002
[0](

[3](

[6](

[9](

[12

[15

[18

[21

[24

[27

[30
[27](6,75000) 0,001
](3,

](3,

](4,

](5,

](6,

](6,

](7,
0,0

0,7

1,5

2,2

[28](7,00000) 0,001
00 0

50 0

00 0

50 0

00 0

75 0

50 0

25 0

00 0

75 0

50 0
[29](7,25000) 0,001
0)

0)

0)

0)

00)

00)

00)

00)

00)

00)

00)
[30](7,50000) 0,001
Eixo x [31](7,75000) 0,000

Figura 82 - Transformada inversa da transformada direta de fourier.

Concluindo, os resultados que o programa produz está de acordo com os

resultados presentes num exemplo idêntico de um dos livros do referencial bibliográfico.

9.2 Segundo Exemplo: Função Cosseno

Prosseguindo com a validação dos resultados, vamos resolver um exemplo

proposto por Haykin e Veen (2001, p. 171). 21

21
No DVD encontramos o vídeo “LabSinaisCos.wmv” mostrando esse exemplo. Consulte o

APÊNDICE D - “DVD” p.150 para maiores informações.


121

Esse exemplo consiste em encontrar a representação por DTFS para o sinal

discreto a seguir:

(9.2)

A solução que Haykin e Veen (2001) apresentam para o referido exercício é

descrito a seguir:

O período fundamental de é N = 16. Consequentemente, . Dessa

forma, escrevemos:

(9.3)

Comparando isso com a DTFS da Equação 5.10 (p.74) reescrita abaixo usando-se

um índice inicial k = -7:

(9.4)

E igualando os termos da Equação 9.3 e Equação 9.4, tendo freqüências iguais,

, resulta em:

(9.5)
122

Uma vez que tem período N = 16, temos e

similarmente com todos os outros valores de iguais a

zero. Ainda, a magnitude (ou espectro) de é igual á magnitude de que vale 0,5

para qualquer ângulo de fase . Isso é facilmente verificado fazendo:

(9.6)

Aqui, . Da Equação (4.3 (p.51) a magnitude

será expressa por:

(9.7)

Haykin e Veen resolveram esse exercício por meio de inspeção matemática em

função de . Para resolvê-lo usando o programa, precisamos definir um valor para .

Arbitrariamente, escolhemos = radianos que corresponde a um ângulo de fase igual a

graus. Assim, precisaremos alimentar o programa com esses dados na direção de resolvê-lo –

dessa vez – usando nosso software para validá-lo ao verificar os mesmos resultados.

Então, primeiramente, produzimos um sinal de entrada adequado. Note na

Equação (9.2 que o período fundamental N vale 16 uma vez que . Portanto como
123

N = 16, produziremos um sinal com 16 amostras da função .

Escolheremos igual a 0 e ∆ (passo) = 1.22

Na Figura 83 mostramos o sinal gerado.

<Real> Cosseno
cos(t*(p/8)+p/4) + 0 j
N = 16 [0](0,00000) 0,707
1 [1](1,00000) 0,383
[2](2,00000) 0
0,8 [3](3,00000) -0,383
[4](4,00000) -0,707
0,6 [5](5,00000) -0,924
[6](6,00000) -1
0,4
[7](7,00000) -0,924
0,2 [8](8,00000) -0,707
[9](9,00000) -0,383
Eixo y

0 [10](10,00000) 0
[11](11,00000) 0,383
-0,2 [12](12,00000) 0,707
[13](13,00000) 0,924
-0,4
[14](14,00000) 1
-0,6 [15](15,00000) 0,924

-0,8

-1
[0](

[2](

[4](

[6](

[8](

[10

[12

[14
](10

](12

](14
0,0

2,0

4,0

6,0

8,0
00 0

00 0

00 0

00 0

00 0

,0 0

,0 0

,0 0
0)

0)

0)

0)

0)

000

000

000
)

)
Eixo x

Figura 83 - Parte real do sinal cosseno gerado.

A seguir prosseguimos realizando a transformada direta de Fourier. A Figura 84

mostra o gráfico encontrado.

<Espectro> Cosseno
cos(t*(p/8)+p/4) + 0 j [-8](0,00000) 0
N = 16 [-7](1,00000) 0
0,5 [-6](2,00000) 0
[-5](3,00000) 0
0,4
[-4](4,00000) 0
0,3 [-3](5,00000) 0
Eixo y

[-2](6,00000) 0
0,2 [-1](7,00000) 0,5
[0](8,00000) 0
0,1 [1](9,00000) 0,5
0 [2](10,00000) 0
[3](11,00000) 0
[-8]

[-6]

[-4]

[-2]

[0](

[2](

[4](

[6](

[4](12,00000) 0
(

8,0

10,

12,

14,
0,0

2,0

4,0

6,0

[5](13,00000) 0
00 0

00 0

00 0

00 0
000

000

000

000

[6](14,00000) 0
0)

00)

00)

00)

[7](15,00000) 0
0)

0)

0)

0)

Eixo x

Figura 84 - Espectro (Magnitude) da transformada do sinal.

Verifique que o resultado está de acordo com a resposta dada por Haykin e Veen.

De fato, quando k = , a componente espectral de freqüência é 0,5 com todos os outros

22
Esse sinal pode ser encontrado no DVD sob o nome “ValidandoResultados_Cosseno.ini”.

Consulte o APÊNDICE D - “DVD” p.150.


124

valores de iguais a zero. Verifique isso na Figura 85 a seguir que apresenta um zoom da

Figura 84 anterior.

<Espectro> Cosseno
cos(t*(p/8)+p/4) + 0 j [-8](0,00000) 0
N = 16 [-7](1,00000) 0
0,55 [-6](2,00000) 0
[-5](3,00000) 0
0,5 [-4](4,00000) 0
[-3](5,00000) 0
Eixo y

0,45 [-2](6,00000) 0
[-1](7,00000) 0,5
0,4 [0](8,00000) 0
[1](9,00000) 0,5
[2](10,00000) 0
0,35
[3](11,00000) 0
[-1]

[0](

[1](
[4](12,00000) 0
(

8,0

9,0
7,0

[5](13,00000) 0

00 0

00 0
000

[6](14,00000) 0

0)

0)
[7](15,00000) 0
0)

Eixo x

Figura 85 - Zoom do espectro.

Traçamos agora o gráfico da Fase da transformada do sinal. Verifique que a fase

do sinal está de acordo com aquela escolhida. Resolvemos colocar o eixo y na unidade de

graus para facilitar a análise do gráfico.

<Fase> Cosseno
cos(t*(p/8)+p/4) + 0 j
[-8](0,00000) 0
N = 16
[-7](1,00000) 0
40 [-6](2,00000) 0
[-5](3,00000) 0
30 [-4](4,00000) 0
20 [-3](5,00000) 0
[-2](6,00000) 0
10
[-1](7,00000) -45
Eixo y

0 [0](8,00000) 0
-10 [1](9,00000) 45
[2](10,00000) 0
-20 [3](11,00000) 0
-30 [4](12,00000) 0
[5](13,00000) 0
-40
[6](14,00000) 0
[7](15,00000) 0
[-8]

[-6]

[-4]

[-2]

[0](

[2](

[4](

[6](
(

8,0

10,

12,

14,
0,0

2,0

4,0

6,0

00 0

00 0

00 0

00 0
000

000

000

000

0)

00)

00)

00)
0)

0)

0)

0)

Eixo x

Figura 86 - Fase da transformada. O eixo y foi colocado em graus.

Por fim, verifique o zoom de um dos elementos do sinal no domínio de Fourier.


125

<Fase> Cosseno
cos(t*(p/8)+p/4) + 0 j
[-8](0,00000) 0
N = 16
[-7](1,00000) 0
50
[-6](2,00000) 0
45 [-5](3,00000) 0
40 [-4](4,00000) 0
35 [-3](5,00000) 0
30 [-2](6,00000) 0
25 [-1](7,00000) -45
Eixo y

20 [0](8,00000) 0
15 [1](9,00000) 45
[2](10,00000) 0
10
[3](11,00000) 0
5
[4](12,00000) 0
0 [5](13,00000) 0
-5 [6](14,00000) 0
[7](15,00000) 0
[0](

[1](

[2](
8,0

9,0

10,
00 0

00 0

00 0
0)

0)

00)
Eixo x

Figura 87 - Zoom da fase.

Dessa forma, o programa produz resultados de acordo com a teoria.

9.3 Terceiro Exemplo: Cosseno e Seno

Considere o seguinte sinal23:

(9.8)

No programa esse sinal foi gerado amostrando a função:

(9.9)

Com variando de 0 a 63 com passo igual a um. Dessa forma, geramos o seguinte

gráfico:

23
Esse sinal pode ser encontrado no DVD sob o nome “ValidandoResultados_CossenoSeno.ini”.

Consulte o APÊNDICE D - “DVD” p.150.


126

<Real> Validacao_Slides
3*cos(t*p/32) + sen(t*p/16) + 0 j
N = 64
3,5
3
2,5
2
1,5
1
0,5

Eixo y
0
-0,5
-1
-1,5
-2
-2,5
-3
-3,5
[-32

[-27

[-21

[-15

[-9](

[-4](

[1](

[6](

[11

[17

[22

[28
](43

](49

](54

](60
33,0

38,0
](0,0

](5,0

](11

](17

23,0

28,0

,0 0

,0 0

,0 0

,0 0
0 00

0 00
,00

,00
000

000

000

000

000

000

000

000
00 0

00 0

0)

0)
0)

0)

0)

0)

)
)

)
Eixo x

Figura 88 - Sinal exemplo gerado pelo programa.

Para este sinal temos:

(9.10)

(9.11)

Como dois ciclos completos da segunda parcela terminam onde termina o

primeiro ciclo da primeira parcela o período fundamental será .

Então:

(9.12)

Onde,

(9.13)

e . Neste caso teremos:


127

Considere e percebemos que os coeficientes de

Fourier serão tais que:

(9.14)

Agora, lembrando que:

(9.15)

Tentaremos reescrever o sinal de tal forma que seja possível compará-lo com

a Equação (9.14). Deste modo ficaremos com:

(9.16)

Agora, ordenando teremos:

(9.17)

Comparando com a Equação (9.14), podemos concluir que:


128

(9.18)

Note que estes coeficientes não são reais e assim o espectro de fase não será todo

nulo. Primeiramente escrevemos X[k] na forma polar e teremos:

(9.19)

Assim, o espectro de magnitude será:

(9.20)

Cujo gráfico é apresentado a seguir:


129

Figura 89 - Gráfico do Espectro de Magnitude gerado por outro software.24

Usando o programa, o gráfico do espectro de magnitude foi:

<Espectro> Validacao_Slides
3*cos(t*p/32) + sen(t*p/16) + 0 j
N = 64
1,5
1,4
1,3
1,2
1,1
1
0,9
Eixo y

0,8
0,7
0,6
0,5
0,4
0,3
0,2
0,1
0
[-32

[-27

[-22

[-16

[-10

[-4](

[1](

[6](

[11

[16

[21

[26

[31
](43

](48

](53

](58

](63
33,0

38,0
](0,0

](5,0

](10

](16

](22

28,0

,0 0

,0 0

,0 0

,0 0

,0 0
0 00

0 00
,00

,00

,00
000

000

000

000

000

000

000

000
00 0

00 0

00 0

0)

0)
0)

0)

0)

)
)

Eixo x

Figura 90 - Gráfico do Espectro de magnitude gerado pelo programa.

Note que os gráficos das figuras Figura 89 e Figura 90 são os mesmos.

Já o espectro de fase será:

(9.21)

E isto dará como gráfico (fase em radianos):

24
O software usado para gerar esses gráficos alternativos foi o GeoGebra. Acesse o site:

http://www.geogebra.org/cms/ para maiores informações.


130

Figura 91 - Gráfico do espectro de fase gerado por outro software.25

Usando o programa, o gráfico do espectro de fase será (fase em graus):

<Fase> Validacao_Slides
3*cos(t*p/32) + sen(t*p/16) + 0 j
N = 64
90
80
70
60
50
40
30
20
10
Eixo y

0
-10
-20
-30
-40
-50
-60
-70
-80
-90
[-32

[-27

[-22

[-16

[-10

[-4](

[1](

[6](

[11

[16

[21

[26

[31
](43

](48

](53

](58

](63
33,0

38,0
](0,0

](5,0

](10

](16

](22

28,0

,0 0

,0 0

,0 0

,0 0

,0 0
0 00

0 00
,00

,00

,00
000

000

000

000

000

000

000

000
00 0

00 0

00 0

0)

0)
0)

0)

0)

)
)

Eixo x

Figura 92 - Gráfico do Espectro de Fase gerado pelo programa.

Note que os gráficos das figuras Figura 91 e Figura 92 são os mesmos (lembre-se

que o eixo y da primeira está em radianos enquanto na segunda, em graus). Agora, para

completar esse último exemplo vamos calcular a transformada inversa.

Lembrando que para qualquer número complexo vale:

(9.22)

Teremos,

25
O software usado para gerar esses gráficos alternativos foi o GeoGebra. Acesse o site:

http://www.geogebra.org/cms/ para maiores informações.


131

(9.23)

Observando os dois gráficos das figuras Figura 89 e Figura 91 podemos concluir

sem dificuldades que:

(9.24)

Agora, como teremos e assim,

(9.25)

Ou seja,

(9.26)

E então teremos:
132

(9.27)

Reagrupando nos dá:

(9.28)

Agora, usando a Equação (9.15) teremos:

(9.29)

Por fim,

(9.30)

Assim, a função geradora original é:

(9.31)
133

Então, o que os gráficos de espectro de magnitude e espectro de fase realmente

mostram são as componentes de Fourier do sinal original. A transformada de Fourier

decompõe o sinal original em um somatório de senos e cossenos cujas amplitudes,

freqüências naturais e ângulos de fase são mostrados nos gráficos.


134

Capítulo 10 Conclusão

10.1 Conclusões

Nesse trabalho, utilizamos a Série de Tempo Discreto de Fourier sintetizada no

algoritmo da Transformada Rápida de Fourier para programar um software científico capaz de

processar qualquer imagem de sensoriamento multitemporal produzindo novas imagens

segundo o filtro configurado pelo usuário. Dependendo das configurações desse filtro, o

usuário pode, agora, remover erros presentes nas imagens. Assim, podemos constatar que

alcançamos completamente o Objetivo Geral enunciado no Tópico 1.2 – “Objetivo Geral”

(p.13).

Quanto aos Objetivos Específicos enunciados no Tópico 1.3 – “Objetivos

Específicos” (p.13), o Capítulo 4 – “Sinais” (p.43) e o Capítulo 5 – “Transformadas de

Fourier” (p.66) contribuíram para compreender e adaptar a teoria presente na Análise de

Fourier de forma a empregá-lo no processamento de imagens de sensoriamento remoto

multitemporais.

Já no Capítulo 7 – “Procedimento que iremos adotar para processar imagens de

sensoriamento remoto multitemporais usando a Transformada Rápida de Fourier” (p.86),

Capítulo 8 – “Programando o Software Científico” (p.96) e no Capítulo 9 – “Validando os

Resultados” (p.117), encontramos a modelagem computacional do problema, as estruturas de

dados necessárias à programação do software científico e a validação do programa de acordo

com a teoria.

Nos demais capítulos, explicamos todo o referencial teórico indispensável para o

completo entendimento do problema e da solução apresentada.


135

Dessa forma, pode-se dizer que alcançamos integralmente todos os objetivos

específicos desse trabalho solucionando completamente o problema apresentado no Capítulo

2 – “Apresentação do Problema” (p.16).

10.2 Sugestões para trabalhos futuros

Seguem-se três sugestões de trabalhos que podem ser desenvolvidos tomando esse

trabalho como referência:

Processamento usando as Transformadas de Fourier no Domínio Espacial -

Nesse trabalho, focalizamos o processamento de imagens no domínio do tempo. Uma

sugestão é efetuar esse processamento no domínio do espaço. Certamente já existem

softwares que efetuam filtros processando-se a imagem no domínio do espaço, mas a idéia

não deixa de ser boa para um trabalho em nível de monografia.

Processamento Temporal usando Análise por Wavelets – Existe outra teoria

matemática denominada de Análise por Wavelets ou simplesmente “Wavelets” onde podemos

aproximar um sinal para um somatório de funções de outras bases. Isso geraria muitos outros

filtros e constituiria um bom trabalho.

Análise de confiabilidade – Uma das críticas que esse trabalho recebeu foi que

não foi feita uma medição adequada que comparasse as imagens antes e depois dos filtros

mostrando o quanto melhorou ou o quanto mudou. Entretanto, essa análise requer fazer um

levantamento dos parâmetros que se quer medir e escolher e programar um dentre muitos

algoritmos existentes com essa função. Com certeza, esse trabalho não seria simples e daria

origem a um novo projeto final.

Com certeza, a primeira sugestão é a mais fácil de todas em razão de já existir

trabalhos semelhantes. A segunda sugestão possui um nível de médio para difícil já que, como

foi feito com a teoria das Transformadas de Fourier nesse trabalho, o autor teria de
136

compreender a teoria de Wavelets para poder fazer a modelagem computacional da mesma.

Por fim a última sugestão complementaria bastante esse trabalho. Em suma, são três boas

sugestões que produziriam três bons trabalhos.


137

Referências

Apache Software Foundation. (25 de 10 de 2008). Apache C++ Standard Library


(STDCXX). Acesso em 25 de 10 de 2008, disponível em Apache C++ Standard Library
(STDCXX): http://stdcxx.apache.org/
ARONOFF, S. (2005). Remote Sensing for GIS Managers. California: ESRI.
BRIGHAM, E. O. (1974). The Fast Fourier Transform. New Jersey: Prentice
Hall.
CARVALHO JUNIOR, O. A., HERMUCHE, P. M., & GUIMARÃES, R. F.
(2006). Identificação regional da floresta decidual na bacia do rio PARANÃ (GO/TO) a partir
da análise multitemporal de imagens MODIS. Revista Brasileira de Geofísica , 24, 319-332.
COOLEY, J. W., & TUKEY, J. W. (1965). An algorithm for machine calculation
of complex Fourier series (Vol. 19). Math Computation.
CRÓSTA, A. P. (1993). Processamento Digital de Imagens de Sensoriamento
Remoto. Campinas: Unicamp.
DANIELSON, G. C., & LANCZOS, C. (1942). Some improvements in practical
Fourier analysis and their application to X-ray scattering from liquids (Vol. 233). J. Franklin
Inst.
FLORENZANO, T. G. (2002). Imagens de Satélite para Estudos Ambientais. São
Paulo: Oficina de Textos.
Geogebra. (s.d.). Geogebra. Acesso em 30 de Outubro de 2008, disponível em
Geogebra: http://www.geogebra.org/cms/
GONÇALVES, L. A. (2004). Um estudo sobre a Transformada Rápida de
Fourier e seu uso em processamento de imagens. Porto Alegre.
GORMAN, L., SAMMON, M. J., & SEUL, M. (2008). Practical Algorithms for
Image Analysis (2 ed.). New York: Cambridge University Press.
HAYKIN, S., & VEEN, B. V. (2001). Sinais e Sistemas. (A. Laschuk, Ed., & J. C.
Santo, Trad.) Porto Alegre: Bookman.
JUSTICE, C. O., & TOWNSHEND, J. R. (2002). Special issue on the moderate
resolution imaging spectroradiometer (MODIS): a new generation of land surface monitoring.
Remote Sensing of Environment , 1-2.
MASTERS, T. (1995). Neural, Novel & Hybrid Algorithms for Time Series
Prediction. New York: John Wiley & Sons.
O'CONNOR, J. J., & ROBERTSON, E. F. (1997, January). Jean Baptiste Joseph
Fourier. Retrieved 10 10, 2008, from The MacTutor History of Mathematics archive:
http://www-history.mcs.st-andrews.ac.uk/Biographies/Fourier.html
PRESS, W. H., TEUKOLSKY, S. A., VETTERLING, W. T., & FLANNERY, B.
P. (1992). Numerical Recipes in C The Art of Scientific Computing (2 ed.). Cambridge, New
York, Port Chester, Melbourne, Sydney: Press Syndicate of the University of Cambridge.
RAMIREZ, R. W. (1985). The FFT Fundamentals and Concepts. New Jersey,
Englewood Cliffs: Prentice Hall.
Rogue Wave Software. (25 de 10 de 2008). C++ Standard Library. Acesso em 25
de 10 de 2008, disponível em RogueWave.com:
http://www.roguewave.com/products/sourcepro/standard-library.php
WILKIE, D. S., & FIN, J. T. (1996). Remote Sensing Imagery for Natural
Resources Monitoring – A GUIDE FOR FIRST TIME USERS. New York: Columbia
University.
138

WOODS, R. E., & GONZALES, R. C. (2001). Digital Image Processing (2 ed.).


New Jersey: Prentice Hall.
139

APÊNDICE A - Estruturas de Dados


Descrição: Nesse apêndice vamos apresentar alguns tipos de dados definidos usando as
estruturas de dados complex e valarrays definidas na C++ Standard Library. Abaixo
mostramos parte do header principal do programa onde as estruturas de dados principais
foram definidas. Comentamos esse código fonte sempre que necessário.

Início da Amostra de Código Fonte

#include <complex>
using std::complex;
#include <valarray>
using std::valarray;

typedef complex<float> TXFloat; //Tipo Float Complexo


typedef valarray<TXFloat> TXSinal;//Tipo Sinal de Float Complexo
typedef valarray<float> TFSinal;//Tipo Sinal de Float

typedef struct Sinal_stru{


TXSinal XSinal; //XSinal se for preciso
TFSinal FSinal; //FSinal se for preciso

//Em Relação ao Sinal


String Nome; //Nome do Sinal
//Em Relação à Imagem de Onde Ele foi Retirado
AnsiString FileName; //Caminho do Arquivo de Imagem do Qual o Sinal Foi Gerado
int px,py; //Localização da coordenada na imagem do qual o sinal foi extraído
//Em Relação as Posicoes Importantes
//Posição do Vetor onde ocorrem essas posicoes importantes
struct Pos_stru{
int mfn; //Menor (ou Maior) Frequencia Negativa (ou Positiva) mfn (cooresponde ao //0
do vetor ordenado)
int pnDe,pnAte; //Parte Negativa pnDe, pnAte
int fz; //Frequencia = 0 fz
int ppDe, ppAte; //Parte Positiva ppDe, ppAte
}pos;
}TSinal;

Final da Amostra de Código Fonte


140

APÊNDICE B - Algoritmos Desenvolvidos:


Transformadas
Algoritmo:void __fastcall fft(int npoints, TFSinal *real,TFSinal *imag,int inv);

Descrição: Algoritmo que executa a transformada inversa ou direta de Fourier adaptada da


original para a Linguagem C++, as estruturas de dados que definimos e na
convenção de “normalização” que adotamos.

Entrada: npoints com o número N de elementos do sinal; dois ponteiros para vetores do
tipo TFSinal onde um vai conter a parte real do sinal (*real) e o outro vai
conter a parte imaginária do sinal (*imag); inv contendo o código para
transformada direta ou inversa. Se igual a -1, o algoritmo executa a
transformada direta, se igual a +1, o algoritmo executa a transformada inversa.

Saída: Como o algoritmo é feito in place, os vetores *real e *imag são substituídos
pela resposta.

Início do Algoritmo
void __fastcall TFRppSFLib::fft(int npoints, TFSinal *real,TFSinal *imag,int inv){

register int i, index, swapindex, j, k;


register float tr, ti, angle, wr, wi;

/* SWAP THE INPUT ELEMENTS FOR THE DECIMATION IN TIME ALGORITHM. */


for (index = 1, swapindex = 0; index < npoints; index++)
{
k = npoints;
do
k /= 2;
while ((swapindex + k) >= npoints);
swapindex = (swapindex % k) + k;
if (swapindex <= index)
continue;
tr = real->operator[](index);
real->operator[](index) = real->operator[](swapindex);
real->operator[](swapindex) = tr;
ti = imag->operator[](index);
imag->operator[](index) = imag->operator[](swapindex);
imag->operator[](swapindex) = ti;
}

/*
* DO THE BUTTERFLY COMPUTATIONS.
* stage index: k = 1, 2, 4, 8 . . .
* For npoints = 8, for example, there will
* be three stages of butterfly computations.
* b'fly indices: i and j will be separated by a distance
* dependent on the current stage.
141

* k is used as the separation constant.


*/

for (k = 1; k < npoints; k *= 2)


for (index = 0; index < k; index++)
{
angle = (float) M_PI *((float) index * inv) / ((float) k);
wr = (float) cos (angle);
wi = (float) sin (angle);
for (i = index; i < npoints; i += 2 * k)
{
j = i + k;
tr = (wr * (real->operator[](j))) - (wi * (imag->operator[](j)));
ti = (wr * (imag->operator[](j))) + (wi * (real->operator[](j)));
real->operator[](j) = real->operator[](i) - tr;
imag->operator[](j) = imag->operator[](i) - ti;
real->operator[](i) += tr;
imag->operator[](i) += ti;
}
}

/* for inverse transform, scale output by 1/N */


if (inv == -1) //Ronie: Alterei aqui. Vou adotar a convenção do Haykin
for (i = 0; i < npoints; i++)
{
real->operator[](i) = real->operator[](i) / npoints;
imag->operator[](i) = imag->operator[](i) / npoints;
}
}
Final do Algoritmo
142

Algoritmo:void __fastcall fourier(TXSinal *XSinal, int isign);

Descrição: Algoritmos que serve de “ponte” entre as estruturas de dados da modelagem e


o algoritmo da fft adaptado.

Entrada: É fornecido um ponteiro para o vetor complexo do tipo TXSinal (*XSinal)


contendo o sinal que quer se transformar. Fornece-se também o isign que é um
código. Se isign for igual a +1, executamos a transformada direta e se for igual
a -1 executa-se a inversa. Perceba que aqui esse código é o contrário do código
da fft(..). Isso foi feito porque o programador achou que seria mais lógico usar
essa codificação. É claro que essa mudança é observada no código fonte.

Saída: O sinal complexo transformado é substituído no lugar do vetor complexo do


sinal de entrada.

Início do Algoritmo
void __fastcall TFRppSFLib::fourier(TXSinal *XSinal, int isign){
int nM,i;
TFSinal sReal;
TFSinal sImag;

isign = isign*(-1); //Corrige o isign para a codificação do fft

//Se for fazer a inversa, ordena o sinal para voltar para o sinal nativo
if (isign > 0)
ordena(XSinal);

nM = XSinal->size();
sReal.resize(nM,0);
sImag.resize(nM,0);

for (i=0;i<nM;i++){
sReal[i] = XSinal->operator[](i).real();
sImag[i] = XSinal->operator[](i).imag();
}

fft(nM,&sReal,&sImag,isign);

for (i=0;i<nM;i++){
XSinal->operator[](i)._M_re = sReal[i];
XSinal->operator[](i)._M_im = sImag[i];
}

//Se tiver feito a direta, ordena o sinal para ficar em ordem crescente
if (isign < 0)
ordena(XSinal);
}
Final do Algoritmo
143

Algoritmo:void __fastcall ordena(TXSinal *XSinal);

Descrição: Usado para ordenar o sinal complexo que está no domínio da freqüência em
ordem crescente de freqüência.

Entrada: Um ponteiro para o sinal complexo.

Saída: O sinal complexo ordenado.

Início do Algoritmo
//Ordena Sinal: Coloca da Menor Frequencia Até a Maior
//Se for usada novamente, faz o inverso (coloca na forma nativa)
void __fastcall TFRppSFLib::ordena(TXSinal *XSinal){
int nM,n,cont;
float aux;
int nDe,nAte, nM2;
nM = XSinal->size();

TXSinal sxCp(*XSinal);//Faz uma cópia do Sinal Original

//Frequencias Mínima e Máxima (são iguais)


aux = nM/2;
nM2 = ceil(aux);

//Zera o Contador
cont = 0;

//##################################
//Menor Frequencia Negativa
XSinal->operator[](cont) = sxCp[nM2];
cont++;

//Parte Negativa
//De N/2 + 1
aux = nM/2 + 1;
nDe = ceil(aux);
//Ate N - 1
nAte = nM - 1;
for (n = nDe; n <= nAte; n++){
XSinal->operator[](cont) = sxCp[n];
cont++;
}

//Frequencia = 0
XSinal->operator[](cont) = sxCp[0];
cont++;

//Parte Positiva
//De 1
144

nDe = 1;
//Ate N/2 - 1
aux = nM/2 - 1;
nAte = ceil(aux);
for (n = nDe; n <= nAte; n++){
XSinal->operator[](cont) = sxCp[n];
cont++;
}

//Maior Frequencia Positiva (Omite)


//XSinal->operator[](cont) = sxCp[nM2];
//cont++;
//##################################
}
Final do Algoritmo
145

APÊNDICE C - Algoritmos Desenvolvidos:

Processamento

Algoritmo:void __fastcall pegaSinal();

Descrição: Essa função auxiliar será usada na função Execute () com objetivo de percorrer
um determinado ponto da imagem extraindo um sinal da imagem que será
processado.
Início do Algoritmo
void __fastcall thCriaImagem::pegaSinal(){
int i;
FRppSFLib->sxNSinal = FRppSFLib->sxLimpo; //Limpa Sinal Antigo
for (i = 0; i < thqtband; i++){
FRppSFLib->sxNSinal[i]._M_re = FRppSFLib->Img-
>pixel2(&i,&thNLINHA,&thNCOLUNA);
FRppSFLib->sxNSinal[i]._M_im = 0;
}
}
Final do Algoritmo
146

Algoritmo:void __fastcall trataSinal();

Descrição: Essa função auxiliar tem o objetivo de processar o sinal extraído da imagem
usando a função pegaSinal () anterior. Aqui procede-se com a transformação
direta, o filtro e a transformação inversa retornando um sinal filtrado já no
domínio do tempo.
Início do Algoritmo
void __fastcall thCriaImagem::trataSinal(){
int i;
//Cria o Fourier
FRppSFLib->fourier(&FRppSFLib->sxNSinal,1);
//Aplica o Filtro
if (FRppSFLib->FILTRO_nCk == 2){
//Caso Passa Alta e Passa Baixo
for (i = 0; i < thpow2;i++)
if (FRppSFLib->FILTRO_bExclui){
if ( (i >= FRppSFLib->FILTRO_nDe) && (i <= FRppSFLib->FILTRO_nAte)){
FRppSFLib->sxNSinal[i]._M_re = 0;
FRppSFLib->sxNSinal[i]._M_im = 0;
}
}
else
{
if ( (i <= FRppSFLib->FILTRO_nDe) || (i >= FRppSFLib->FILTRO_nAte)){
FRppSFLib->sxNSinal[i]._M_re = 0;
FRppSFLib->sxNSinal[i]._M_im = 0;
}
}
}
else
{//Só sobrou o caso FRppSFLib->FILTRO_nCk == 1
for (i = 0; i < thpow2;i++)
if (FRppSFLib->FILTRO_bExclui){
if (i <= FRppSFLib->FILTRO_nDe){
FRppSFLib->sxNSinal[i]._M_re = 0;
FRppSFLib->sxNSinal[i]._M_im = 0;
}
}
else
{
if (i >= FRppSFLib->FILTRO_nDe){
FRppSFLib->sxNSinal[i]._M_re = 0;
FRppSFLib->sxNSinal[i]._M_im = 0;
}
}
}
//Cria o Tempo Filtrado
FRppSFLib->fourier(&FRppSFLib->sxNSinal,-1);
}
Final do Algoritmo
147

Algoritmo:void __fastcall gravaSinal();

Descrição: Essa última função auxiliar tem por objetivo gravar o sinal já filtrado no
domínio do tempo resultante da função trataSinal () na nova imagem que está
sendo gerada pelo programa.
Início do Algoritmo

void __fastcall thCriaImagem::gravaSinal(){


int i;
float vY;
for (i = 0; i < thqtband; i++){
vY = FRppSFLib->sxNSinal[i].real();
FRppSFLib->NImg->setpixel(&i,&thNLINHA,&thNCOLUNA,&vY);
}
}
Final do Algoritmo
148

Algoritmo:void __fastcall Execute();

Descrição: Essa é a função principal responsável por criar a nova imagem e proceder com
todo o processamento. Ela utiliza as funções apresentadas anteriormente. O
usuário já deve ter escolhido a imagem original que será processada e já deve
ter configurado um filtro.
Início do Algoritmo

void __fastcall thCriaImagem::Execute()


{
int nLinha,nColuna;

//Largura = x = Colunas = nColunas


//Altura = y = Linhas = nLinhas

bool pok;

//Final de Tudo
Synchronize(tempoStart);

//Prepara Imagem Resposta


pok = FRppSFLib->NImg->novo_img(thFilename,"Filtro",DateToStr(Date()), thqtband,
thlargura, thaltura, 0, 4, FRppSFLib->Img->bandanomes,
FRppSFLib->Img->bandadatas,FRppSFLib->Img->classes,FRppSFLib->Img-
>georef,FRppSFLib->Img->bandacomp);

//Imagem Resposta Preparada


Synchronize(WaitBoxImagemCriada);

//Processa Imagem Original e Cria Imagem Resposta


for (nLinha = 0; nLinha < thaltura; nLinha++){
//Faz alguma coisa a cada Linha Terminada ANTES
for (nColuna = 0; nColuna < thlargura; nColuna++){
//Processamento
thNLINHA = nLinha;
thNCOLUNA = nColuna;

Synchronize(pegaSinal);
Synchronize(trataSinal);
Synchronize(gravaSinal);

//Fim do Processamento
}/*fim for nColuna*/
//Faz alguma coisa a cada Linha Terminada DEPOIS
Synchronize(atualizaProgresso);
if (!bCont)
break;
}/*fim for nLinha*/
149

//Fechar arquivo gerado


Synchronize(finaliza);

//Final de Tudo
Synchronize(WaitBoxImagemProcessada);
}
Final do Algoritmo
150

APÊNDICE D - DVD

Nesse apêndice iremos descrever os recursos encontrados no DVD que

acompanha essa monografia. Esses recursos são basicamente: O aplicativo de instalação do

programa FiltroTemporal.exe; exemplos de imagens de sensoriamento remoto multitemporais

originais e filtradas; exemplos de sinais controlados e de sinais obtidos a partir das referidas

imagens e uma re-compilação do Tópico 8.5 – “Processando Imagens Multitemporais”

(p.102) e 8.6 – “Laboratório de Sinais” (p.112) em um arquivo PDF para servir de guia na

utilização do programa.

Desse modo, a seguir comentaremos cada arquivo ou conjunto de arquivos

incluídos no DVD.

Ao inserir o DVD no drive de DVD-ROM de seu computador ele deverá inicar a

instalação do software automaticamente mostrando a janela ilustrada na Figura 93 a seguir.

Caso isso não aconteça você pode executar Setup.exe ou FiltroTemporal.msi a partir do DVD.

Figura 93 - Tela inicial da instalação.

O progresso de instalação é o padrão. Note apenas que o usuário pode escolher a

instalação Típica que inclui todos os exemplos, a instalação Mínima que inclui apenas o

programa ou escolher quais itens irá querer instalar usando a instalação Customizada. As

explicações que se seguem valem-se da premissa de que a instalação Típica foi escolhida.
151

Após a instalação, haverá três atalhos na Área de Trabalho do usuário. Um deles é

um atalho para o programa. O outro é um atalho para o PDF citado. O terceiro é um atalho

para a pasta contendo os exemplos de imagens e de sinais. A seguir comentaremos cada

arquivo desses exemplos e seu conteúdo.

Pasta Imagens – Imagens de Exemplo

o Originais – Contem três imagens multitemporais (.img). Essas são

as imagens usadas ao longo dessa monografia para os diversos

exemplos utilizados.

o Filtradas – Contem algumas imagens filtradas geradas por esse

programa.

Pasta Sinais – Sinais de Exemplo

o Controlados – Sinais controlados usados nessa monografia.

o DeImagens – Sinais obtidos a partir de imagens. Seu nome está na

forma nome_X_Y em que nome representa de qual imagem aquele

sinal foi extraído e X e Y são as coordenadas do ponto de onde o

sinal foi obtido.

Pasta Vídeos – Vídeos de Exemplo

o VisãoGeral.wmv – Visão geral do programa introduzindo as

principais janelas.

o Filtros.wmv – Como criar os quatro filtros usando a interface de

Filtros do programa.

o ProcessandoImagens.wmv – Vídeo mostrando o passo a passo para

se filtrar uma imagem.

o LabSinaisExp.wmv – Vídeo mostrando o exemplo do Tópico 9.1 –

“Primeiro Exemplo: Função Exponencial” (p.117).


152

o LabSinaisCos.wmv – Vídeo mostrando o exemplo do Tópico 9.2 –

“Segundo Exemplo: Função Cosseno” (p.120).

o LbSinaisEx1.wmv – Mais um exemplo do uso do “Laboratório de

Sinais”: como gerar sinais.

o labSinaisEx2 – Mais outro exemplo do uso do “Laboratório de

Sinais”: visualizar vários sinais ao mesmo tempo.

Pasta Adicionais – Arquivos adicionais

o MonografiaRoniePP.pdf – Cópia dessa monografia em formato

pdf.

o klcodec431s.exe – Pacote de CODECs para visualizar os vídeos.

É importante observar que o formato dos vídeos é o WMA/WMV. Se o seu

computador não reproduzi-los, talvez seja necessário instalar alguns CODECS

(Codificadores/Decodificadores) para esse formato de vídeo. Nesse caso, incluímos no DVD

um pacote de CODECS chamado K LITE que pode ser encontrado na pasta “Adicionais” sob

o nome “klcodec431s.exe”. Informações sobre esse pacote de CODECS pode ser encontrado

no site: http://www.codecguide.com/features_standard.htm.
153

ANEXO A - O Algoritmo da Transformada Rápida de


Fourier (FFT)

Descrição: O algoritmo da transformada de Fourier que programamos nesse trabalho foi


extraído do livro de GORMAN, SAMMON, & SEUL, 2008. Como dados de entrada são
fornecidos dois vetores, um contendo os N números reais (real) e o outro, os N números
imaginários (imag) correspondentes aos N números complexos de entrada. Também é
requerido especificar o tamanho de N (npoints) que já deve ser uma potência de 2. Por fim,
requer-se também um número inteiro (inv). Se inv for igual a -1, o algoritmo retorna a
transformada direta de tempo discreto de Fourier, se inv for igual a +1, o algoritmos retorna a
inversa. Finalmente, vale destacar que o algoritmos é feito in place, isso é, os elementos dos
vetores de entrada de dados real e imag são substituídos pelos elementos dos vetores de saída.

Início do Algoritmo
/*
* fft.c
*
* Practical Algorithms for Image Analysis
*
* Copyright (c) 1997, 1998, 1999 MLMSoftwareGroup, LLC
*/

#define PI 3.14159265358979

/*
* fft()
* DESCRIPTION:
* Uses time decomposition with input bit reversal. The Cooley/Tookey
* Fortran scheme for doing recursive odd/even decimation without really
* doing bit reversal is used. The computation is done in place, so the
* output replaces the input. The contents of the arrays are changed
* from the input data to the FFT coefficients.
* ARGUMENTS:
* npoints(int) the number of points in the FFT. Must be a power of 2.
* real, imag(float *) pointers to arrays of floats for input and output.
* inv(int) inv = 1 for inverse transform
* inv = -1 for forward transform
* RETURN VALUE:
* none
*/

void
fft (npoints, real, imag, inv)
int npoints, inv;
float *real, *imag;
{
register int i, index, swapindex, j, k;
register float tr, ti, angle, wr, wi;
154

double sin (), cos ();

/* SWAP THE INPUT ELEMENTS FOR THE DECIMATION IN TIME ALGORITHM. */


for (index = 1, swapindex = 0; index < npoints; index++)
{
k = npoints;
do
k /= 2;
while ((swapindex + k) >= npoints);
swapindex = (swapindex % k) + k;
if (swapindex <= index)
continue;
tr = real[index];
real[index] = real[swapindex];
real[swapindex] = tr;
ti = imag[index];
imag[index] = imag[swapindex];
imag[swapindex] = ti;
}

/*
* DO THE BUTTERFLY COMPUTATIONS.
* stage index: k = 1, 2, 4, 8 . . .
* For npoints = 8, for example, there will
* be three stages of butterfly computations.
* b'fly indices: i and j will be separated by a distance
* dependent on the current stage.
* k is used as the separation constant.
*/

for (k = 1; k < npoints; k *= 2)


for (index = 0; index < k; index++)
{
angle = (float) PI *((float) index * inv) / ((float) k);
wr = (float) cos (angle);
wi = (float) sin (angle);
for (i = index; i < npoints; i += 2 * k)
{
j = i + k;
tr = (wr * (real[j])) - (wi * (imag[j]));
ti = (wr * (imag[j])) + (wi * (real[j]));
real[j] = real[i] - tr;
imag[j] = imag[i] - ti;
real[i] += tr;
imag[i] += ti;
}
}

/* for inverse transform, scale output by 1/N */


if (inv == 1)
155

for (i = 0; i < npoints; i++)


{
real[i] = real[i] / npoints;
imag[i] = imag[i] / npoints;
}
}
Final do Algoritmo
156

ANEXO B - A Biblioteca TImagem


Descrição: O Dr. Nilton Correia da Silva desenvolveu em 2003 uma biblioteca de funções
para acessar e manipular imagens de sensoriamento remoto chamada TImagem. Nesse anexo
mostraremos apenas os métodos disponíveis nessa classe que foram realmente utilizados pelo
programa comentando brevemente cada um. Essa biblioteca é propriedade intelectual e,
portanto, não podemos mostrar os algoritmos desses métodos.

Início dos Métodos

//Declaração de uma variável da classe TImagem


TImagem *Img;

//Carregar header ou imagens tipo bitmaps


bool carrega_imagem(AnsiString nome, AnsiString extensao);
 Método usado para carregar imagens passando como parâmetros o caminho
completo do arquivo (nome) e a sua extensão (extensão).

//Fecha uma imagem


void Fecha();
 Método usado para fechar uma imagem previamente carregada.

//Carrega uma das bandas da imagem atual em uma estrutura


//Graphics::TBitmap de 8 bits (256 tons de cinza)
Graphics::TBitmap *carrega_bitmap(int pbanda);
 Métodos usados para visualizar alguma banda da imagem previamente carregada.

//Atualiza histograma
//pdlin,pdcol = intervalos de leitura de valores (subamostragem)
void atualiza_histograma(int pbanda, int pdlin, int pdcol, int ptipo, float ppercI, float
ppercF);
 Método usado para gerar o histograma da imagem antes de carregar seu bitmap.

//Cria nova imagem


bool novo_img(AnsiString pnomarq, AnsiString pdescricao, AnsiString pdtimg, int
pqtband,int pqtcol, int pqtlin, int ptseqpix,int ptdn, AnsiString *pnomes, AnsiString
*pdatas, TClasses *pclas,TProje *pgref, AnsiString *pcomp);
 Método usado para criar uma nova imagem.

//Retorna o valor do pixel


float __fastcall pixel2(int *b, int *y, int *x );
 Método usado para receber o valor float do pixel que está na banda b na
coordenada (x,y).

Final dos Métodos


157

CENTRO UNIVERSITÁRIO DE BRASÍLIA

RONIE PAULUCIO PORFIRIO

PROCESSAMENTO DE IMAGENS DE SENSORIAMENTO REMOTO


MULTITEMPORAIS USANDO A TRANSFORMADA RÁPIDA DE FOURIER

FILTRO TEMPORAL

Brasília
2008