Você está na página 1de 56

Antonio Escao Scuri

Filtros Interativos para Imagens Digitais


no Domnio da Freqncia
Dissertao de Mestrado
Departamento de Informtica
Pontifcia Universidade Catlica do Rio de Janeiro

Rio de Janeiro, 14 de Setembro de 1994.

Antonio Escao Scuri


Filtros Interativos para Imagens Digitais no
Domnio da Freqncia
Dissertao apresentada ao Departamento de Informtica da
PUC-Rio como parte dos requisitos para obteno do ttulo
de Mestre em Informtica: Computao Grfica.
Orientador: Bruno Feij - INF / PUC-Rio
Co-orientador: Sidnei Paciornik - D.C.M.M. / PUC-Rio

Departamento de Informtica
Pontifcia Universidade Catlica do Rio de Janeiro

Rio de Janeiro, 14 de Setembro de 1994.

a meu pai.

Meus agradecimentos,

- a Sidnei Paciornik pela amizade, pacincia e ensinamentos.


- a Marcelo Gattass pelos inestimveis conselhos e provocaes.
- A Bruno Feij pela cooperao com o D.C.M.M..
- a todo o Grupo Integrado de Materiais (GIM).
- a todos os colegas do ICAD e do TECGRAF que ajudaram direta ou indiretamente.
- a Ulrich Dahmen e Roar Kilaas, pela oportunidade e recepo acolhedora no Lawrence
Berkeley Laboratory, como tambm a Laurent Normand pela grande idia da visita.

- a Noemi Rodriguez e Roberto Ierusalimschy pela ateno.


- Jonas de Miranda pelos ensinamentos.
- a lvaro de Miranda Filho e Ivan Melo de Carvalho pelas oportunidades indiretas de
desenvolvimento do meu trabalho.

- ao Conselho Nacional de Desenvolvimento Cientfico e Tecnolgico (CNPq), pela ajuda


financeira recebida durante o curso.

- a meus pais pela pacincia.


- aos amigos Maurcio, Carla, George, Elisa e Carim, por algo muito precioso nesse nosso
pequeno mundo.

- a Laura pela maravilhosa companheira que .

RESUMO
A grande difuso de ambientes interativos, assim como o desenvolvimento de poderosas
interfaces grficas, proporcionam a utilizao de novas solues para antigos problemas. Na rea de
Processamento de Imagens Digitais, isto de grande utilidade, como na tcnica de filtragem
espacial no domnio da freqncia. Com esta tcnica, a Transformada Rpida de Fourier (FFT) de
uma imagem obtida e ento editada para manter ou rejeitar regies especficas, em seguida a
Transformada Rpida Inversa de Fourier (IFFT) da FFT editada fornece a imagem filtrada
resultante. Este trabalho estuda a utilizao de elementos de interface para criar mscaras grficas
que funcionem como filtros, e prope a combinao destes filtros de forma a permitir extrema
flexibilidade na tcnica de filtragem. A criao dos filtros e a implementao dos algoritmos de
FFT foram feitas em um prottipo que utiliza um novo sistema de processamento de imagens,
SPID, que est sendo estruturado como uma plataforma de desenvolvimento para Processamento de
Imagens no ambiente grfico Microsoft Windows.

ABSTRACT
The widespread use of interactive environments as well as the development of powerful
Graphical User Interfaces have made it possible to reach new solutions to old problems. In the field
of Digital Image Processing this can be very useful, as for the technique of spatial filtering in the
frequency domain. With this technique the Fast Fourier Transform (FFT) of an image is obtained
and then edited to preserve or reject specific regions, and then the Inverse Fast Fourier Transform
(IFFT) of the edited FFT provides the resulting filtered image. The present work studies the use of
interface elements to create graphical masks that function as filters, and proposes the combination of
these filters so as to provide great flexibility to the filtering technique. The creation of the filters
and the implementation of the FFT algorithms were done in a prototipe of a new image processing
system, SPID, which is under development as a platform for Image Processing applications under
the Microsoft Windows graphical enviroment.

SUMRIO
LISTA DE ILUSTRAES .....................................................................................................IV
LISTA DE TABELAS ...............................................................................................................V
1.

Introduo ..........................................................................................................................1

2.

Histrico ............................................................................................................................4

3.

Apresentao Terica ........................................................................................................7


3.1 Transformada de Fourier.................................................................................................7
3.2 Transformada Rpida de Fourier ..................................................................................10
3.3 Filtragem no Domnio da Freqncia ...........................................................................14
3.3.1 Os Filtros...............................................................................................................15

4.

Implementao.................................................................................................................20
4.1 O SPID ..........................................................................................................................20
4.1.1 Arquitetura Interna ................................................................................................24
4.2 As Mscaras ..................................................................................................................28

5.

Exemplos .........................................................................................................................31

6.

Concluso ........................................................................................................................42

7.

Referncias bibliogrficas ...............................................................................................44

8.

Bibliografia......................................................................................................................46

III

LISTA DE ILUSTRAES
Figura 3-1 Imagem Replicada em um Plano Infinito. .................................................................9
Figura 3-2 Comparao entre Filtragem no Domnio Real e no da Freqncia........................14
Figura 3-3 Setor Circular Centrado na Origem.........................................................................16
Figura 3-4 Retangular Vertical..................................................................................................16
Figura 3-5 Retangular Horizontal .............................................................................................16
Figura 3-6 Oval No Centrada na Origem ................................................................................17
Figura 3-7 Oval Peridica .........................................................................................................17
Figura 3-8 Setor Angular ..........................................................................................................17
Figura 3-9 Retangular Inclinado Centrado na Origem..............................................................18
Figura 3-10 Seqncia Completa de Filtragem.........................................................................19
Figura 4-1 Classes de Imagens..................................................................................................24
Figura 4-2 Trecho do Programa Principal.................................................................................26
Figura 4-3 Mtodo OpGlobal da Classe imagem ...................................................................27
Figura 4-4 Mtodo Apply da Classe operador_global ...........................................................27
Figura 4-5 Classes de Arquivos de Imagem..............................................................................28
Figura 5-1 FFT de um Crculo ..................................................................................................31
Figura 5-2 FFT de um Quadrado ..............................................................................................32
Figura 5-3 FFT de um Grid.......................................................................................................32
Figura 5-4 Filtragem de Baixas e Altas Freqncias ................................................................33
Figura 5-5 Eliminao da Cruz Central ....................................................................................33
Figura 5-6 Filtragem de um Rudo com Periodicidade Horizontal...........................................34
Figura 5-7 Filtragem de Linhas Diagonais em um Chip...........................................................35
Figura 5-8 Filtragem de Curvas Sobre Grid Confuso. ..............................................................36
IV

Figura 5-9 Filtragem de tomos de Ouro sobre um Substrato Amorfo....................................38


Figura 5-10 Filtragem de uma Estrutura Atmica ....................................................................40
Figura 5-11 Visualizao da Fase .............................................................................................40

LISTA DE TABELAS
Tabela 3-1 Reordenao Usando a Inverso de Bits.................................................................12
Tabela 4-1 Tipos de Pixel .........................................................................................................21
Tabela 6-1 Teste de Performance Usando a FFT......................................................................42

1. INTRODUO
A rea de processamento de imagens (PI) um excelente exemplo de interdisciplinaridade.
As diversas tcnicas originalmente desenvolvidas para tratamento de sinais unidimensionais foram,
em primeiro lugar, adaptadas para tratamento de imagens obtidas de satlites e de naves espaciais.
Posteriormente, com o rpido avano das opes de hardware e software, estas mesmas tcnicas
passaram a ser aplicadas em inmeros domnios tais como medicina, cincia dos materiais,
microscopia, artes, etc...
A caracterstica interdisciplinar fica ainda mais realada no desenvolvimento de aplicativos
especficos.

Neste caso os recursos da Engenharia de Computao se aliam a problemas e

especificaes de outras reas para gerar solues difceis de serem alcanadas de forma
independente.
O campo de Cincia dos Materiais e Microscopia (tica e eletrnica) um caso prottipo
deste tipo de interao. O presente trabalho se prope a utilizar recursos modernos de computao,
tais como orientao por objetos e conceitos de portabilidade, assim como tcnicas de tratamento de
sinais para tratar problemas da rea de materiais, mais especificamente em microscopia eletrnica
de transmisso (MET).

(Embora sua aplicao imediata seja em MET, o enfoque de

desenvolvimento ser genrico possibilitando outras reas tomarem partido do mesmo.)


Neste tipo de aplicao imagens de alta resoluo so obtidas de diferentes tipos de amostras
visando elucidar sua estrutura atmica. Este tipo de estudo vital para a previso das propriedades
estruturais de novos materiais.

Estas imagens em geral se compem de diferentes estruturas

geomtricas superpostas, correspondendo s diferentes estruturas cristalinas ou no cristalinas que


formam a amostra em estudo. A distino destas diversas estruturas vital para a compreenso das
propriedades do material e tcnicas de PI so extensivamente utilizadas para isso.
Uma das tcnicas mais poderosas para anlise de estrutura atmicas a filtragem espacial da
Transformada de Fourier (FT) das imagens. Neste caso, a imagem original transformada atravs
de um algoritmo de Transformada Rpida de Fourier (FFT), mscaras so aplicadas sobre a imagem
da transformada, selecionando regies que sero mantidas ou eliminadas e, finalmente, a imagem
filtrada obtida atravs da FFT inversa (IFFT).

2
A utilizao da transformada justificada pela periodicidade bem determinada destas
estruturas atmicas. No domnio da freqncia esta periodicidade aparece isolada, podendo-se
realizar uma distino das estruturas a partir da regio de freqncia de cada uma.
As mscaras aplicadas sobre a imagem da transformada devem portanto refletir
caractersticas da imagem no domnio da freqncia, para que ento se possa isol-las.
O cerne deste trabalho a especificao destas mscaras. Foram identificadas diversas
caractersticas de imagens no domnio da freqncia que definiram o formato de vrias mscaras.
A maneira mais fcil de aplic-las sobre a imagem faz-lo diretamente sobre as imagens.
Para tanto necessitamos de um ambiente grfico interativo para o nosso prottipo. Escolheu-se o
Microsoft Windows pela sua grande aceitao no mercado e pela disponibilidade de ferramentas
para desenvolvimento neste ambiente.
Como suporte para processamento de imagens utilizou-se o sistema SPID, que mesmo em
desenvolvimento, permitiu a incluso das mscaras no seu escopo.
Convm lembrar que algumas mscaras so baseadas em mscaras semelhantes
implementadas no Digital Micrograph, um programa para Macintosh dedicado aplicaes em
microscopia eletrnica.
A utilizao de Processamento de Imagens digitais na PUC-Rio vem ocorrendo h alguns
anos.

Embora adotada por diversos departamentos, tomou um carter mais genrico no

Departamento de Cincia dos Materiais e Metalurgia, mais especificamente no Grupo Integrado de


Materiais (GIM). O percurso de PI pelo GIM descrito no captulo 1. Erro! Auto-referncia de
indicador no vlida..
A transformada de Fourier, a transformada rpida e a metodologia de filtragem no domnio
da freqncia so descritas no captulo 2. Histrico. Na seo 7 Os Filtros so deduzidas as
mscara a partir dos fenmenos respectivos.
No captulo 3. Apresentao Terica apresentado o SPID como uma plataforma para
desenvolvimento de aplicativos para processamento de imagens, como tambm so descritos
detalhes sobre o funcionamento das mscaras.
muito difcil prever que tipo de mscara ser usado para uma determinada imagem. A
melhor maneira calcular a FFT e tentar identificar na imagem alguma caracterstica conhecida
qual se adeque um certo tipo de mscara. Assim, o captulo 8. Implementao mostra todo o

3
processo de filtragem para algumas imagens bastante didticas, com o objetivo de demonstrar o
potencial de vrias mscaras.
Questes de performance e qualidade dos resultados so discutidos no captulo 16.
Exemplos. Neste captulo tambm so feitas consideraes a respeito de melhorias imediatas para o
SPID e do seu futuro como base para desenvolvimento em PI.

2. HISTRICO
Em meio a um projeto na rea de Litografia por Feixe de Eltrons e a partir da aquisio de
um digitalizador de sinal de vdeo em 1988, iniciou-se paralelamente um trabalho na rea de
processamento de imagens que se chamaria Imago, [GALUCIO 90].
O hardware e o sistema operacional de desenvolvimento trouxeram diversas limitaes ao
Imago. Embora possusse uma simulao de memria virtual, o programa era limitado aos 640Kb
fornecidos aos programas pelo sistema operacional, no caso o MS-DOS.
A imagem fornecida pelo digitalizador de sinal de vdeo possuia apenas 64 tons de cinza.
Isto direcionou a implementao do sistema para apenas este tipo de imagem.
A visualizao das imagens tambm era limitada a placas de vdeo de baixa resoluo ou a
duas marcas de placa de vdeo de alta resoluo.
Estas limitaes se tornaram mais evidentes com a necessidade de manipular imagens
maiores em novas placas de vdeo disponveis no mercado.
Em janeiro de 1991, iniciou-se um projeto de um sistema de processamento de imagens,
onde suas rotinas bsicas tivessem caractersticas que facilitassem principalmente sua
portabilidade e expanso. Para isso, optou-se pela utilizao de tcnicas de orientao a objetos,
associadas a uma linguagem portvel e voltada para software bsico. A escolha de C++ como
linguagem de desenvolvimento foi considerada como a melhor opo naquele momento.
No final deste mesmo ano surge o primeiro prottipo destas idias: o programa PINTA
[SCURI 91]. Este programa tem como funo a leitura de arquivo e visualizao de imagens
digitais monocromticas em um monitor, acessado atravs de uma placa grfica Super VGA, com
resoluo at 800 x 600 e 64 tons de cinza. Nesta etapa houve um grande aprendizado e foi dado o
pontap inicial para atingir as melhorias desejadas.
Tambm no final deste mesmo ano comeava a despontar no mercado um ambiente grfico
lanado pela Microsoft Corporation em maio de 1990, o Windows 3.0. At ento ferramentas
para desenvolvimento neste ambiente eram escassas. Em 1992, tudo acontece. Surge a nova verso
do ambiente, o Windows 3.1, e chegam nossas mos ferramentas poderosas de desenvolvimento
para este ambiente.

Isso possibilitaria uma melhor utilizao do hardware que j estava

disposio, sem custos adicionais.

5
Como as funes desenvolvidas para

manipulao de imagens so portveis,

nada mais natural do que propor uma verso do programa para o ambiente Microsoft Windows 3.1.
Surge o programa PIXIE no final de 1992 [ALEGRETTE 92]. Neste programa foram includas
rotinas para leitura de imagens gravadas em arquivo no padro BMP (do prprio Windows) e no
padro TIFF (um dos mais bem aceitos padres de arquivo da rea de processamento de imagens).
No ano de 1993, tudo foi reestruturado e muito se evoluiu. O programa PIXIE amadureceu
e ganhou um novo nome: SPID (Sistema de Processamento de Imagens Digitais) [SCURI 93].
No ambiente DOS, o programa PINTA ganhou uma verso em modo protegido, chamado
MOSTRA. Este programa no tem a limitao da rea de memria do DOS, chamada de barreira
dos 640Kb, utilizando, portanto, toda memria disponvel no micro. Um outro recurso acrescentado
foi o acesso a qualquer tela Super VGA atravs do padro VESA (Video Electronics Standard
Association), o que permitiu o programa atingir resolues maiores, com uma velocidade
considerada bastante alta.
Em 1994, o SPID ganha novos recursos grficos com a chegada de uma nova ferramenta de
desenvolvimento. E sofre uma migrao para uma plataforma de 32 bits portvel para Windows
3.1 + Win32s, Windows NT e futuramente o Windows 4.0 (nome cdigo Chicago).
Esta migrao proporcionou um enorme ganho de velocidade e a eliminao de alguns dos
problemas do Windows 3.1. A verso para Windows NT d muita flexibilidade ao SPID,
principalmente porque a Microsoft promete verses deste ambiente para outras mquinas alm do
tradicional PC (Intel x86), tais como MIPS R4000 e DEC Alpha.
O SPID encontra-se em fase de desenvolvimento, onde a base do projeto est toda pronta e
esto sendo acrescentadas funes de processamento de imagens.
Todo esse crescimento veio de experincias com diversos sistemas de processamento de
imagens. Principalmente, com o Aldus PhotoStyler, o Adobe PhotoShop e o Corel PhotoPaint,
no ambiente Microsoft Windows e com o Digital Micrograph, no ambiente Macintosh. Os
programas para Windows mencionados so voltados para a rea de desktop publishing, embora
ricos neste sentido, no possuem suporte para imagens cientficas, nem funes de reconhecimento
de padres.

J o Digital Micrograph justamente voltado para a rea cientfica, mais

especificamente a microscopia eletrnica.

6
Procuramos

tambm

informaes

em

sistemas mais antigos, aos quais no

temos acesso, mas algumas referncias, ver [SCURI 92].


Alguns programas mais especficos na rea cientfica tambm foram consultados, tais como
CRISP e Global Lab Image, ambos para Windows e o Image para Macintosh.

3. APRESENTAO TERICA
4. Transformada de Fourier
Joseph Fourier deixou para a matemtica um rico legado: a transformada que leva o seu
nome utilizada em diversas reas da cincia e tecnologia hoje em dia. Sua aplicao em PI tem
relevada importncia, desde a simples filtragem at a utilizao na compresso de arquivos de
imagem.
Esta transformada uma das maneiras de realizar uma mudana de domnio espacial em
espectral (onde um sinal fica caracterizado por suas componentes de freqncia).
Para imagens digitais (uma funo bidimensional discreta), utiliza-se a Transformada de
Fourier Discreta (DFT - Discrete Fourier Transform), que definida como:
F (u , v) =

M 1 N 1

M N

f ( x, y ) e

2i
( xu + yv )
N

Equao 3-1

x =0 y =0

Por sua vez a transformada inversa:


f ( x, y ) =

M 1 N 1

1
M N

F (u, v) e

+2i
( xu + yv )
N

Equao 3-2

u = 0 v =0

Estas duas equaes representam um par de transformadas. Pode-se obter outros pares
trocando o sinal das exponenciais ou ento realizando a multiplicao pela constante apenas na
transformada inversa. Inclusive esta ltima sugesto recomendada para a implementao do
algoritmo pois reduz o nmero de operaes a serem realizadas.
O termo exponencial nas equaes visivelmente separvel. Fazendo com que o somatrio
em x possa conter todos os termos em x, assim a equao 3-1 fica:
F ( u, v ) =

1
N

N 1

Fx (u, y ) e

2 i
( yv )
N

Equao 3-3

y =0

onde,
Fx ( u, y ) =

1
M

M 1

x =0

f ( x, y ) e

2 i
( xu )
N

Equao 3-4

8
ou seja, chegamos a duas trasformadas unidimensionais, uma para as colunas e outra para as
linhas (a inversa tem demonstrao equivalente). Esta propriedade permite com que a DFT seja
calculada em duas etapas: uma para as colunas e outra para as linhas obtidas com a etapa anterior.
Os somatrios nas equaes vistas so aproximaes de integrais, que por sua vez fornecem
uma medida da densidade da freqncia u ou v ao longo de todo o domnio de , porm no nos
d informao sobre a localizao dessa freqncia no domnio da funo.
Existem outras transformadas que nos levam a outros modelos espectrais, tais como a
Transformada Cosseno e a Transformada de Wavelets.
A imagem complexa resultante da DFT possue a freqncia (0, 0) no pixel de coordenada (0,
0). Neste ponto a imagem atinge o seu maior valor, pois nele computada justamente a menor
freqncia presente na imagem e pode-se deduzir que este o valor mdio da imagem. Sabendo-se
que a DFT peridica com perodo N, este ponto ir se repetir em (N, N). Estamos observando o
incio e o fim de um perodo. Contudo para fins de anlise mais conveniente que observemos de N/2 at +N/2, colocando a freqncia zero no centro da imagem.
A centralizao da imagem da transformada feita de maneira muito simples, j que:
f ( x, y ) e

2 i
( u0 x + v0 y )
N

F ( u u0 , v v0 )

Equao 3-5

e quando u0 = v0 = N/2, ten-se ei ( x + y ) = ( 1)x + y , e


f ( x , y )( 1)x + y F ( u

N
N
,v )
2
2

Equao 3-6

Portanto, durante o clculo da primeira etapa podemos realizar esta multiplicao e


automaticamente obter a imagem da transformada j centrada. O problema com esta multiplicao
est no fato de que quando calcularmos a inversa obteremos a imagem original com as
multiplicaes efetuadas. Assim, necessrio que estas multiplicaes sejam desfeitas no algoritmo
da transformada inversa.
A mudana da origem se torna ainda mais interessante quando constatamos que a maior
parte de nossas imagens a serem processadas pela DFT so imagens reais. A DFT neste caso exibe
uma caracterstica peculiar de simetria, onde:
F (u, v ) = F * ( u, v )

Equao 3-7

9
Quando visualizamos o mdulo da transformada temos:
| F (u, v )| =| F ( u, v )|

Equao 3-8

ou seja, observamos uma imagem simtrica em relao origem. As imagens complexas


com esta caracterstica so chamadas de hermitianas. Esta propriedade nos ajuda a reduzir o tempo
de clculo de transformada (basta calcular a metade), e define uma das caractersticas dos filtros
deste trabalho, descritos adiante.
A DFT de uma imagem essencialmente uma representao em srie de Fourier de uma
funo bidimensional.

Sendo assim, para ser vlida esta funo precisa ser peridica.

Essa

periodicidade obtida considerando que a imagem se repete em um plano infinito como na Figura
3-1:

Figura 3-1 Imagem Replicada em um Plano Infinito.


Esta considerao para a validade da operao justifica o aparecimento de uma cruz central
passando pela origem da imagem da transformada. So falsas freqncias espaciais ao longo dos
eixos, necessrias para a representao da imagem dentro de uma rea limitada. Estas freqncias
no so prejudiciais reconstruo, pelo contrrio so necessrias para reconstruir as bordas da
imagem.

Naturalmente isso s acontece para imagens que possuam bordas laterais com

intensidades diferentes, provocando uma descontinuidade aps a replicao.


Caso se deseje eliminar a cruz central para uma melhor visualizao das freqncias
presentes na imagem, uma soluo aplicar uma mscara que suavize a proximidade da borda at
que o valor do pixel na mesma seja zero, eliminando a descontinuidade.

10
A principal propriedade da FT dada pelo Teorema da Convoluo, que diz que a
convoluo entre duas funes no domnio real tem como transformada a multiplicao das
transformadas das duas funes no domnio da freqncia, ou seja:
f ( x ) g ( x ) F ( u ) G( u )

Equao 3-9

Quando consideramos g(x) como uma funo que modifica f(x), a operao de convoluo
no domnio real pode ser compreendida como uma filtragem. Uma operao de multiplicao
muito mais simples do que uma operao de convoluo. Mas, para realizarmos a mesma filtragem
no domnio da freqncia temos que calcular a FT das duas funes, multiplic-las e calcular a IFT
da imagem resultante, o que aparentemente no nos d muita vantagem. Uma comparao mais
interessante feita na seo 6 Filtragem no Domnio da Freqncia.

5. Transformada Rpida de Fourier


A primeira divulgao de forma ampla do algoritmo de transformada rpida de Fourier (FFT
- Fast Fourier Transform) ocorreu atravs do trabalho de J. W. Cooley e J. W. Tukey em 1960,
[BRIGHAM 74]. Mas, pelo menos 20 anos antes, Danielson e Lanczos formularam uma das
derivaes mais claras do algoritmo, [PRESS 89].
Eles mostraram que a DFT pode ser reescrita como a soma de duas outras DFTs, cada uma
de tamanho N/2. Uma delas formada pelos ponto pares e a outra pelos pontos mpares do conjuto
inicial. A prova simples:
N 1 2ijk
N

Fk = e

fj

j=0

N / 2 1

2ik ( 2 j )
N

j=0

N / 2 1

j=0

f2 j + +

2ikj

N / 2 1

e N / 2 f2 j + + W k

2ik ( 2 j +1)
N

j=0

N / 2 1

j=0

f 2 j +1

Equao 3-10

2ikj

e N / 2 f 2 j +1

= F +W F
e
k

o
k

onde W definido como:


W e
k

2i
N

Equao 3-11

11
e Fke e Fko correspondem a k-sima componente da DFT de comprimento N/2 formada com
os componentes pares e mpares, respectivamente, do conjunto inicial. A grande idia por trz desta
propriedade que pode ser usada recursivamente at o ponto em que temos uma transformada de
apenas 2 termos, que possue clculo trivial.
Assim, durante o clculo da FFT teremos uma progressiva mudana de dimenso da
transformada: 2, 4, 8, ..., N. Obviamente N aqui uma potncia de 2, sendo esta a maior restrio
deste algoritmo. Como isto tambm vlido para M, vamos impor que M=N, pois simplificar o
tratamento algoritmico. O fato de M e N serem potncias de 2 enfatiza a diferena entre eles e na
prtica acabariamos trabalhando quase sempre com imagens quadradas.
O principal problema aqui saber como combinar as transformadas de ordem 2, depois as de
ordem 4, etc...
A situao mais simples que poderamos ter combinar pares adjacentes de elementos,
depois combinar elementos resultantes em pares tambm adjacentes e assim por diante. Para tanto,
temos que reordenar os elementos dessa maneira.
Aplicando sucessivas divises entre pares e mpares at obtermos uma transformada de 1
termo, chegamos ao seguinte:
Fkeoeoeoeoeoeoeoeo...oee = f n

Equao 3-12

onde fn no depende de k (obs: e - even, o - odd), nos resta agora descobrir quem n no
conjunto original. Se substituirmos os es e os os por 0s e 1s, respectivamente, obtemos um
nmero binrio. O valor de n exatamente este nmero com a ordem dos bit invertida. Isto
verdade porque as subdivises sucessivas em pares e mpares so testes sucessivos de bits de baixa
ordem de n.
Para exemplificar isso tomemos uma transformada de 8 pontos {f(0), f(1), f(2), f(3), f(4),
f(5), f(6), f(7)}. A primeira diviso entre pares e mpares nos fornece dois conjuntos {f(0), f(2), f(4),
f(6)} e {f(1), f(3), f(5), f(7)}. Na segunda diviso temos quatro conjuntos {f(0), f(4)}, {f(2), f(6)},
{f(1), f(5)} e {f(3), f(7)}. Escrevendo esta ordem na tabela podemos comparar os ndices e a ordem
dos bits dos mesmos.

12
Conjunto
Original

ndice

Conjunto
Reordenado

ndice

f(0)

000

f(0)

000

f(1)

001

f(4)

100

f(2)

010

f(2)

010

f(3)

011

f(6)

110

f(4)

100

f(1)

001

f(5)

101

f(5)

101

f(6)

110

f(3)

011

f(7)

111

f(7)

111

Tabela 3-1 Reordenao Usando a Inverso de Bits.


Portanto, o algoritmo da FFT dividido em duas partes.

Na primeira os dados so

reordenados (Bit Reversal Section) e em seguida para cada potncia de 2 computam-se os valores
das subtransformadas.
Este algoritmo no nem um pouco trivial. Sua vantagem reside justamente no tempo de
processamento muitas vezes menor que o mtodo de clculo direto.

Isto pode ser melhor

evidenciado atravs do conceito de Complexidade Algoritmica.


Tomando em considerao o nmero de multiplicaes complexas, a equao 3-1 possui
NxN multiplicaes, que so realizadas para todos os elementos da imagem, ou seja, NxN pontos.
Portanto, a complexidade da DFT obviamente O(N4). No caso da FFT, continuamos possuindo
NxN pontos. Mas, a subdiviso sucessiva possue complexidade O(logN), resultando para a FFT
O(N2xlogN), um resultado que valida todo o esforo de se implementar o algoritmo. No fundo
estamos aplicando aqui o conceito de dividir para conquistar em um conjunto de N pontos
(colunas), o que d O(NxlogN), repetido para as N linhas, totalizando O(N2xlogN).
Embora tenhamos passado por todas as etapas do algoritmo, na prtica no utilizada a
recurso e a implementao se torna complexa. Dentre os algoritmos pesquisados existem diversas
pequenas diferenas, a literatura apenas explica o funcionamento de cada um e no como se chegou
ao mesmo. Portanto, acaba-se por copiar algum algoritmo implementado, entendendo-se como
funciona mas no como deduzi-lo.
O algoritmo de FFT feito in-place, ou seja, sobre o prprio conjunto de dados complexos,
no caso de imagens reais preencheramos o conjunto complexo com a parte imaginria nula e

13
realizaramos o clculo.

Mas, podemos ainda utilizar um truque para o clculo das colunas,

utilizando a parte imaginria como se fosse uma diviso entre pares e mpares, ou seja, coloca-se os
termos pares do conjunto real na parte real do conjunto complexo e os termos mpares na parte
imaginria. Estamos ento utilizando uma transformada complexa de N pontos para calcular duas
tambm de N pontos. Aps o clculo temos que separar o resultado utilizando o fato de que a
transformada de um conjunto real complexa hermitiana.
Existem ainda diversas variaes do algoritmo de FFT. Quando se realiza os clculos
primeiro e depois a reordenao o algoritmo tem o codnome de Sande-Tukey, onde antes era
Cooley-Tukey. Tambm pode-se acelerar o processo de clculo forando N a ser uma potncia de 4
ou 8, neste caso so chamados de FFT de ordem 4, 8 (quando a ordem no especificada, assumese ordem 2). Existem ainda algoritmos para N=n1 x n2 x n3 ... onde os ns so nmeros primos.
Nestes dois ltimos casos preciso saber balancear a complexidade de implementao do algoritmo
com o ganho de performance obtido.
A DFT tambm pode ser obtida a partir de uma outra transformada, a de Hartley [ONEILL
88]. Utilizando um algoritmo semelhante ao da FFT a FHT (Fast Hartley Transform) mais rpida
e consome menos recursos que a FFT, pois transforma dados reais em dados tambm reais. A DFT
obtida usando as equaes a seguir:
F ( u ) = ( H ( u ) + H ( N u)) + ( H ( u ) H ( N u ))i

Equao 3-13

O mdulo da DFT pode ser obtido usando:


| F ( u)| =

( H ( u )2 + H ( N u )2 )
2

Equao 3-14

Infelizmente a FHT no foi aproveitada neste trabalho. Mas convm ser mencionado para
futuros melhoramentos.
Vimos nesta seo as diversas facetas do algoritmo de FFT e seu uso em imagens digitais.
Agora que j conseguimos chegar at a imagem complexa no domnio da freqncia, podemos
introduzir as tcnicas de filtragem.

14

6. Filtragem no Domnio da Freqncia


Como explicado anteriormente, a tcnica da filtragem no domnio da freqncia muito
simples, pois equivale a uma multiplicao. Na Figura 3-2 podemos ver uma seqncia inteira de
filtragem, tanto no domnio real, como no domnio da freqncia. Na primeira parte vemos uma
senide modelada com um rudo tambm senoidal. Como a freqncia do rudo maior que a da
senide, este se manifesta como os dois impulsos mais externos no domnio da freqncia. Para
remov-los basta aplicar um passa baixa no domnio da freqncia, que de volta ao domnio real
obteremos a senide sem o rudo.

Domnio Real

Domnio da Freqncia

Figura 3-2 Comparao entre Filtragem no Domnio Real e no da Freqncia


Mas, surge um outro problema: estamos trabalhando com uma funo discretizada e com a
DFT e no a FT. Como vimos a DFT uma aproximao para a FT. Ao aplicarmos algum tipo de
filtragem com um filtro semelhante ao da Figura 3-2 (ideal), a transformada inversa fornecer uma
imagem com um fenmeno chamado ringing (anelamento). Visualmente este efeito identificado

15
por anis (tambm chamados de artefatos) que surgem nas bordas dos objetos da imagem. Este
fenmeno acontece devido a descontinuidade imposta pelo filtro ideal.
Para evitar a introduo de artefatos aps a filtragem os filtros devem ter sua borda
suavizada por uma funo com derivada contnua e faixa de decaimento controlada. muito
comum o uso de uma gaussiana ou de um cosseno para tal. O controle da faixa de decaimento
permite o balanceamento entre a existncia de artefatos e o quanto o filtro permitir passar outras
freqncias que no aquelas sob o mesmo.
preciso ento saber balancear at que ponto a filtragem no domnio real vantajosa em
relao ao domnio das freqncias. A convoluo no domnio real definida como:
K
K

f ( x , y ) = k ( i, j ) f x + i , y + j

2
2
j=0 i=0
K

Equao 3-15

onde k uma matriz quadrada de K2 elementos.


Usando novamente o conceito de Complexidade Algoritmica, vemos que a Equao 3-15
possue complexidade O(K2N2).

A filtragem no domnio da freqncia exige um FFT, uma

multiplicao pelo filtro e uma IFFT. Assim, a complexidade resultante O(N2xlogN) + O(N2) +
O(N2xlogN) = O(N2xlogN), ou seja comparvel a convoluo no domnio real. claro que o
conceito de complexidade esconde diversas constantes que se tornam relevantes na prtica. Mas, de
qualquer maneira isso mostra que o tamanho da matriz de convoluo K no pode ser muito grande.
Na prtica K assume valores 3, 5, 7 e 9, e a filtragem no domnio da freqncia permite uma
seleo mais precisa de que elementos se deseja filtrar. Pois, a filtragem espacial no deixa de ser
uma mdia ponderada da vizinhana de um determinado pixel, em contraste com uma viso global
fornecida pela FT.
7. Os Filtros
Como dito anteriormente, vrios dos fenmenos ocorridos no domnio da freqncia so
simples de serem modelados.
A filtragem mais bsica de todas e tambm a mais conhecida o filtro passa faixa. Quando
este est prximo origem chamado de passa baixa. Quando est afastado chamado de passa
alta. No domnio bidimensional este filtro representado por dois anis concntricos e centrados na
origem, Figura 3-3.

16

Figura 3-3 Setor Circular Centrado na Origem.


Dois casos particulares do filtro anterior acontecem quando queremos isolar apenas
freqncias horizontais ou apenas verticais, como visto na Figura 3-4 e Figura 3-5, respectivamente.
Repare que para isolar freqncias horizontais necessitamos de um retngulo vertical, e viceversa. Tambm pode-se ver dois retngulos simtricos em relao origem, isto necessrio pois
estamos supondo que a imagem complexa no domnio da freqncia proveio de uma imagem real
no domnio espacial. Sendo assim, os filtros devem obedecer o fato das imagens complexas em
questo serem hermitianas. Assim, quando calcularmos a transformada inversa obteremos uma
imagem complexa com parte imaginria nula (prxima de zero), ou melhor, uma imagem real.

Figura 3-4 Retangular Vertical

Figura 3-5 Retangular Horizontal

17
Quando a imagem possue freqncias espaciais muito bem determinadas em ambas as
direes estas freqncias se manifestam no domnio da freqncia atravs de pontos brilhantes, ou
melhor, uma regio brilhante ao redor de um ponto mais intenso, um pico. Para isolar estes picos
necessitamos de um filtro que envolva os mesmos, o filtro da Figura 3-6 cumpre exatamente esse
papel. Observe tambm sua caracterstica hermitiana.

Figura 3-6 Oval No Centrada na Origem


Estes picos comumente se manifestam de forma peridica. O filtro da Figura 3-7 simplifica
o trabalho de repetirmos o filtro anterior para cada um dos picos presentes na imagem.

Figura 3-7 Oval Peridica


Algumas imagens podem ter freqncias distribudas ao longo de uma direo inclinada.
Estas freqncias aparecem com o formato de um setor angular como na Figura 3-8.

Figura 3-8 Setor Angular

18
Quando se deseja incluir toda informao prxima origem, utiliza-se o filtro da figura
Figura 3-9.

Figura 3-9 Retangular Inclinado Centrado na Origem


Portanto, vimos que os mais conhecidos fenmenos podem ser modelados por filtros simples
de serem criados e manipulados, pois podem ser utilizados objetos geomtricos bem conhecidos.
Naturalmente, todos devem poder possuir uma borda suave durante a aplicao sobre a imagem.
Matematicamente, a combinao de um ou mais filtros implica na unio da rea delimitada pelos
mesmos.

A rea demilitada pela combinao dos filtros pode sobrepor a imagem durante a

aplicao, atuando como um filtro que passa freqncias, ou o complemento desta rea sobrepe,
atuando como um filtro que rejeita freqncias.
O mtodo de filtragem com estes filtros o mesmo descrito na Figura 3-2. A imagem
original no domnio da freqncia multiplicada pela imagem formada pelo uso de um ou mais
filtros sobre a mesma.

A seqncia completa de filtragem pode ser vista na Figura 3-10.

Deve-se aplicar a

transformada de Fourier direta sobre a imagem que se deseja filtrar, criar e combinar os filtros que
melhor isolem o fenmeno desejado, aplic-los sobre a imagem complexa, calcular a transformada
de Fourier inversa e por fim obtem-se a imagem original filtrada.

19

Imagem
do Filtro

Imagem
Original

FFT

IFFT

Figura 3-10 Seqncia Completa de Filtragem

Imagem
Original
Filtrada

8. IMPLEMENTAO
9. O SPID
O SPID um sistema de processamento de imagens digitais dedicado aplicaes
cientficas. Isto significa que o tratamento quantitativo da imagem preferencial ao tratamento
qualitativo. Portanto, no se encontrar nele funes de manipulao de imagens coloridas que
prezem pela fidelidade na representao da cor, ou seja, cor ou tom de cinza, no nosso caso,
apenas uma representao visual para a informao contida na imagem.
Assim, uma imagem digital essencialmente uma matriz de pixels, onde cada elemento
contm um valor numrico. Temos agora que balancear a preciso numrica desejada com o
tamanho em bits do pixel. Afinal, imagens digitais consomem uma boa quantidade de memria.
A Tabela 8-1 mostra os tipos de pixel disponveis e seus respectivos tamanhos. Para
imagens coloridas so utilizados trs valores respectivos s componentes de vermelho (red), verde
(green) e azul (blue) da cor (RGB). Este o nico modelo de cor utilizado. No se leva em
considerao o referencial do sistema de coordenada de cor.
Multiplicando os valores em bytes por 3 para imagens coloridas RGB podemos chegar a
imagens bem grandes. Portanto preciso saber escolher muito bem o tipo de pixel com que se ir
trabalhar.
O SPID classifica os tipos de imagem com que trabalha de maneira mais intuitiva. As
imagens podem ser coloridas usando o padro RGB ou em tons de cinza. Cada componente ou o
tom pode ter uma preciso inteira, inteira positiva, ponto flutuante e complexa, onde um nmero
complexo visto como dois nmeros de ponto flutuante. A preciso inteira, com ou sem sinal,
pode ter 8, 16 ou 32 bits por pixel. A preciso de ponto flutuante pode ter 32 ou 64 bits por pixel.

21
Nome

Domnio

Bits / Bytes

byte integer

-128 ; 127

8/1

unsigned byte integer

0 ; 255

8/1

integer

-32.768 ; 32.767

16 / 2

unsigned integer

0 ; 65.535

16 / 2

long integer

-2.147.483.648 ; 2.147.483.647

32 / 4

unsigned long integer

0 ; 4.294.967.295

32 / 4

IEEE floating point

3,4x10-38 ; 3,4x10+38

32 / 4

IEEE floating point


double precision

1,7x10-308 ; 1,7x10+308

64 / 8

complex

(real, real)

64 / 8

double complex

(double real, double real)

128 / 16

Tabela 8-1 Tipos de Pixel


As imagens devem ser visualizadas em algum dispositivo grfico.

Os dipositivos

disponveis trabalham somente com pixels do tipo unsigned byte integer, ou inteiro positivo de 8
bits por pixel.
Como um dispositivo colorido RGB necessita de uma grande quantidade de memria, foram
criados dispositivos coloridos indexados. Nestes dispositivos o valor do pixel um ndice para uma
tabela de valores RGB. A partir disso criaram-se as imagens coloridas com palette de 256 e 16
cores.
Alguns dispositivos mais antigos s permitiam a utilizao de duas cores, estas imagens so
chamadas de binrias.
As imagens que podem ser visualizadas diretamente em dispositivos grficos so
classificadas no SPID como bitmaps. As que no o so, possuem um mecanismo de varredura de
valores mximo e mnimo para serem utilizados pela normalizao durante a obteno de um
bitmap para visualizao. Estas imagens so chamadas cientficas.
O mecanismo de varredura chamado de survey e possue trs tipos: nenhum ( realizado o
clipping de cor), uma cruz central ou toda a imagem. Estas variaes permitem um survey mais
rpido.
No caso de imagens complexas existe ainda um outro problema que consiste na converso
de complexo para real antes do survey. Esta converso est disponvel de vrias maneiras no SPID.

22
Podem ser observados: o logaritmo da magnitude, a magnitude ao quadrado, a magnitude, a fase1, a
parte real1 e a parte imaginria1.
Conhecidas as imagens com que iremos trabalhar necessrio um modo de armazenamento
para as mesmas. Adotou-se o padro TIFF, ver [ALDUS 92], que vem se estabelecendo no mercado
como o padro mais adotado por sistemas de processamento de imagens cientficos ou no. Devido
a sua especficao genrica, o TIFF permite o armazenamento de todos os tipos de imagens
mencionados com excesso da imagem complexa. Mas, sua versatilidade tal que pudemos
acrescentar uma definio ao TAG 339 - Data Sample Format, onde ValueOffset igual a 10 indica
um valor complexo composto por dois valores IEEE floating point, o primeiro representando a parte
real e o segundo representando a parte imaginria. Uma outra opo seria usar SamplesPerPixel
igual a 2, mas isto invalidaria o uso de uma imagem colorida RGB complexa.
A FFT exige que a imagem seja quadrada com lados uma potncia de 2.

Tambm

imporemos a condio de que a imagem seja cientfica.


O SPID permite a converso entre os diversos tipos de imagem disponveis e permite a
seleo de uma rea de operao sobre a imagem. Esta rea pode ser forada a um quadrado como
tambm um quadrado com lados uma potncia de 2. A operao de FFT automaticamente identifica
que h uma selao na imagem e s utiliza aquela parte da imagem original para criar a imagem da
transformada.
Como todos esses recursos o SPID possue um ambiente pronto e adequado para o
processamento desejado neste trabalho. Nos resta apenas a criao e manipulao das mscaras,
explicadas no tpico 15 As Mscaras. Aqui o termo mscara utilizado no lugar de filtro, pois este
nome mais adequado para o contexto de um ambiente interativo, onde o que se est fazendo
aplicando uma mscara sobre a imagem.
Em sendo um programa para o ambiente Microsoft Windows, o SPID possue diversos
recursos comuns a programas deste ambiente. O mais importante destes recursos talvez seja o fato
do SPID ser um aplicativo MDI (Multiple Document Interface), isso permite com que sejam
abertas vrias imagens ao mesmo tempo, possibilitando a comparao visual entre elas.

Aqui estamos falando do mdulo do valor, pois a FFT possue um problema de oscilao do sinal do valor.

Teramos que na verdade tambm dispor de uma outra opo sem o mdulo.

23
O Windows tambm possue um gerenciador de hipertextos dedicado a implementao de
um On-line Help. Este hipertexto pode ser acessado de dentro do SPID de quatro maneiras: a partir
de algum item do menu de Help; a partir da tecla F1 pressionada sobre algum menu; a partir do
HelpCursor; ou a partir do boto de Help de algum dilogo.
Pode-se abrir uma ou mais imagens de uma s vez de duas maneiras: atravs do dilogo de
FileOpen, onde tambm pode-se obter informaes sobre o arquivo antes de abri-lo e pode ser visto
um Preview da imagem; ou atravs do mecanismo de Drag & Drop atravs do FileManager.
Tambm pode-se abrir uma imagem atravs do uso do Clipboard ou associando a extenso do
arquivo no FileManager ao SPID e executando um double-click sobre o nome do arquivo.
A imagem visualizada no SPID pode sofrer um aumento ou reduo (zoom) apenas visual
para um melhor enquadramento da mesma. Existem 16 nveis de zoom in e 16 de zoom out. Esta
mesma visualizao pode ser enviada para a impressora, onde a imagem aparecer no centro do
papel.
As operaes no SPID podem ser feitas sobre a imagem original ou sempre criando uma
nova imagem. Quando a operao feita sobre a imagem original o SPID possue o recurso de
Undo, ou seja, desfazer a ltima operao.

Aproveitando a informao do Undo aps este

realizado, fica disponvel a operao de Redo, que refaz a ltima operao.


Alm do menu, como elemento de interface com o usurio existem ainda cinco janelas que
facilitam a operao do programa.
A SpeedBar, localizada no topo ou nas laterais da rea cliente da janela principal, fornece
botes para o acesso mais rpido a itens do menu.
A StatusBar, localizada na parte de baixo da rea cliente, usada de duas maneiras. A
primeira para dicas sobre o item de menu selecionado ou sobre o boto abaixo do cursor do mouse
na SpeedBar. A segunda para o contador da porcentagem de processamento de uma determinada
operao sendo realizada, ao lado do contador um texto indica qual a operao.
As outras trs janelas ficam localizadas em qualquer posio e no so limitadas rea
cliente da janela principal. A ToolBox fornece ferramentas de manipulao da imagem atravs do
uso do mouse, tais como a criao das mscaras, a seleo de uma rea, o zoom, etc...

InformationWindow fornece dados sobre a imagem abaixo do cursor do mouse, tais como: tipo de
pixel, posio, valor do pixel, dimenses e posio de um objeto. A ResultWindow possue um

24
editor de texto independente de qualquer imagem para onde podem ser enviadas informaes
textuais, que podem ento ser editadas livremente. Um exemplo a obteno da intensidade de
pontos da imagem atravs de um right click sobre a mesma.
10. Arquitetura Interna
O SPID dividido em duas grandes partes: gerenciamento e operaes de imagens; e
interface.

A parte de interface naturalmente limitada para uso em ambiente Microsoft

Windows. J a primeira parte pode ser portada para outros sistemas operacionais, contanto que
possuam um compilador de C++ que inclua templates.
11. Classes de Imagens

imagem_cinza_complexa<cpx<T>>

imagem

imagem_cinza<T>

imagem_rgb_complexa<rgb<cpx<T>>>
matriz_elemento<T>

imagem_rgb<rgb<T>>
byte

matriz

imagem_rgb_palette

matriz_xbits

imagem_binaria
imagem_4bits

Figura 8-1 Classes de Imagens


Imagens so objetos simples. No entanto, devido ao fato de termos vrios tipos de imagens,
a manipulao destas se torna complicada se no houver uma disponibilidade de classes adequada.
O processo de criao da Figura 8-1 vai nos ajudar a entender porque chegamos a uma
rvore de herana to singular.

25
Em primeiro lugar, como j dito, imagem uma matriz, onde cada elemento representa a cor
numa determinada coordenada. Surge a classe matriz, ainda sem a definio de qual tipo de pixel
estamos tratando. Portanto, uma classe virtual.
Em um computador a menor unidade que podemos alocar um byte. Portanto, surge a
necessidade de duas classes: a matriz_elemento<elemento>, para gerenciar uma matriz com
elementos2 mltiplos de um byte; e a matriz_xbits, para gerenciar uma matriz com elemento menor
que 8 bits. Observe as linhas tracejadas na figura indicando uma herana virtual. Isso ser
necessrio para o que pretendemos.
A partir da matriz_xbits chegamos imagem_4bits, que gerencia uma imagem com 16 tons
de cinza ou 16 cores indexadas, e imagem_binaria, que gerencia uma imagem com pixel
possuindo apenas dois valores, preto e branco.
As classes imagem_cinza e imagem_rgb gerenciam todos os tipos de imagens, exceto as
complexas, em tons de cinza e coloridas rgb, respectivamente. A herana da classe matriz feita
diferenciadamente para a classe imagem_rgb pois cada elemento agora so trs. Para isso criou-se
a classe rgb que tambm recebe um template possibilitando esta simplicidade. As classes
imagem_cinza_complexa e imagem_rgb_complexa so colocadas em separado para que no haja
conflito dentro dos membros das classes imagem_cinza e imagem_rgb. Tambm foi criada a
classe cpx tambm paramtrica, simplificando a criao das classes de imagens complexas.
A classe imagem_rgb_palette s necessita de um byte para o elemento da matriz pois as
cores so indexadas. Assim, colocada em separado.
E por fim, para em tempo de execuo escolhermos com que tipo de imagem iremos
trabalhar, vem a necessidade da classe virtual imagem. Novamente, esta classe herda propriedades
da classe virtual matriz. Assim, completamos o ciclo de herana virtual mostrado na Figura 8-1,
que a base que sustenta todo este trabalho. A classe imagem tambm contm inmeros elementos
comuns a todos os tipos de imagem, tais como nmero de bits por pixel, preciso, descrio,
resoluo, escala.

O tipo passado como parmetro na criao do template para a classe matriz deve possuir operaes

aritmticas e atribuio.

26
Para o gerenciamento de todos esses tipos de imagem foi criada a classe ImageManager,
que possue funes para criao e converso de imagens. A partir de uma descrio3 genrica o
ImageManager realiza a escolha da classe de imagem adequada aquela descrio. A converso
entre imagens separada em trs blocos: converso entre bitmaps; converso rgb-cinza e vice-versa;
mudana de preciso. Durante a converso rgb-cinza o pixel mantm a sua preciso; a mudana de
preciso pode ser feita entre quaisquer dos tipos bsicos vistos na Tabela 8-1; a converso mais
complexa entre bitmaps, pois os algoritmos de converso rgb 24 bits para 256 e 16 cores, e os de
binarizao no so imediatos e nicos.
12. Operaes
A metodologia de operao sobre imagens um pouco mais complicada. Principalmente
por combinar os mecanismos de ligao dinmica (dinamic binding) e mtodos virtuais. A idia
aqui foi separar as operaes dos mtodos das classes. Para isso foi quebrado o conceito de
encapsulamento. Mas dessa maneira pode-se concentrar a implementao de uma determinada
operao.
A Figura 8-2 mostra o ponto de partida para a execuo de uma determinada operao. O
fato de Im ter sido criada como uma imagem_cinza<byte> far com que o mtodo OpGlobal da
classe imagem_cinza<byte> seja chamado.
imagem* Im = imagem_cinza<byte>(Linhas, Colunas);
...
teste Op(Param);
imagem* NewIm = Im->OpGlobal(Op);

Figura 8-2 Trecho do Programa Principal


Na Figura 8-3 vemos que OpGlobal chama o mtodo Apply da classe operador_global. Mas
como esse mtodo declarado virtual, o mtodo Apply da classe teste, que foi passada como
parmetro originalmente, chamado (Figura 8-4).
O mtodo Apply da classe teste finalmente realiza a operao e retorna uma nova imagem
como resultado.

Em resumo, a implementao de uma operao nova requer apenas que

implementemos os mtodos Apply para cada um dos tipos de imagem existentes.

A descrio inclue: rgb ou cinza, preciso, nmero de bits por pixel, palette se existente.

Se uma

27
determinada operao no tem sentido para um determinado tipo de imagem, o mtodo Apply
respectivo deve retornar NULL.
class imagem
{
...
virtual imagem* OpGlobal(operador_global&) =
0;
...
};
template <class elemento>
class imagem_cinza: public matriz, public imagem
{
...
imagem* OpGlobal(operador_global&);
...
};
template <class elemento>
imagem* OpGlobal(operador_global& Op)
{
return Op.Apply(*this);
}

Figura 8-3 Mtodo OpGlobal da Classe imagem


No mtodo Apply muito comum a utilizao de templates para simplificar a
implementao da operao. Mas, para algumas imagens bitmaps isso pode no ser possvel e a
operao implementada no prprio mtodo Apply.
class operador_global
{
...
virtual imagem* Apply(const imagem_cinza<byte>&) = 0;
...
};
class teste: public operador_global
{
teste(tipo_param_teste param);
...
imagem* Apply(const imagem_cinza<byte>&);
...
};

Figura 8-4 Mtodo Apply da Classe operador_global

28
13. Classes de Arquivos
arquivo_pic
arquivo_binario

arquivo_imagem

arquivo_tiff
arquivo_bmp

Figura 8-5 Classes de Arquivos de Imagem


Arquivos que contm imagens so normalmente arquivos binrios e possuem uma estrutura
interna bem determinada. As classes mais direita na Figura 8-5 correspondem aos padres
mencionados anterormente. A classe arquivo_imagem necessria para a escolha do tipo de
arquivo em tempo de execuo.
14. Interface
Utilizou-se a biblioteca de classes OWL4 para o ambiente Microsoft Windows, que foi
fornecida com o compilador utilizado, o Borland C++ 4.0 [BORLAND 93].
A partir de classes da OWL criam-se as classes especficas do SPID. Este trabalho ainda
simplificado utiizando-se um recurso do compilador chamado ApplicationExpert, que cria todo o
esqueleto do programa, com relao a interface.
Estas classes criadas so atualizadas atravs do ClassExpert, que tambm permite a criao
de novas classes de interface, sempre baseadas em classes da OWL.

15. As Mscaras
Como visto, as mscaras so criadas a partir de uma ferramenta da ToolBox.

Aps

selecionar a ferramenta o usurio executa um click & drag sobre a imagem e a mscara
automaticamente criada e acrescentada lista de anotaes. Uma anotao qualquer objeto que
possa ser colocado sobre a imagem. As mscaras so um tipo de anotao.

Object Windows Library

29
Logo aps a criao de uma anotao a ToolBox retorna ao seu estado default, a
CrossCursor. Com esta ferramenta o usurio pode selecionar uma ou mais anotaes para copilas para outra imagem, apag-las, duplic-las, etc...
A CrossCursor tambm permite modificar a posio e o tamanho de uma anotao. Devese observar o estado do cursor para identificar que tipo de operao pode ser realizada: resize ou
move. Cada anotao reagir de acordo com o seu formato. Os valores de posio e tamanho de
uma anotao podem ser dados manualmente aps a execuo de um right-click sobre a mesma.
As anotaes sobre uma determinada imagem podem ser salvas em um arquivo texto usando
uma descrio suscinta para cada uma.

Esta mesma descrio pode ser enviada para a

ResultWindow. Da mesma forma pode-se ler um arquivo texto com esta descrio para criar as
anotaes desejadas sobre uma imagem.
As mscaras foram escolhidas a partir dos estudos do tpico 7 Os Filtros.
O Setor Circular Centrado na Origem (band mask) descrito pelos raios interno e
externo.

Tanto o crculo externo quanto o interno podem ser manipulados.

Mas ambos

permanecero centrados na origem. A operao de mover a mscara far com que o setor circular se
mova mantendo a largura de banda constante e os dois crculos centrados na origem.
A Oval No Centrada na Origem (twin oval mask) descrita pela posio do centro da
elipse, e pelo tamanho dos semi-eixos vertical e horizontal. As ovais (elipses) podem navegar
vontade pela imagem. Embora, sejam dependentes entre s devido simetria da imagem complexa
hermitiana. Assim, quando uma se move numa direo, a outra realiza o movimento simtrico.
Seus eixos podem ser modificados independentemente.

Pode-se forar com que os eixos

mantenham sua proporcionalidade pressionado-se a tecla <Ctrl>, e com que a elipse seja um crculo
pressionando-se as teclas <Ctrl> e <Shift> simultaneamente ao modific-la.
A Oval Peridica (Periodic mask) descrita pela peridiocidade, pela posio do centro da
elipse de manipulao, e pelo tamanho dos eixos vertical e horizontal desta elipse. Naturalmente
todas as elipses so dependentes entre s. A peridiocidade modificada pressionando-se a tecla
<Alt> e movendo a mscara. As outras caractersticas seguem o caso anterior.
A Retangular Vertical (horizontal band pass mask) descrita pelas posies das verticais
externa e interna.

As duas faixas verticais so naturalmente dependentes.

Pode-se mov-las

30
mantendo-se a largura de banda constante ou pode-se manipular a vertical externa ou a vertical
interna para modificar o tamanho.
A Retangular Horizontal (vertical band pass mask) similar a anterior, s que descrita
pelas posies das horizontais externa e interna. A manipulao da mscara equivalente
anterior.
A Retagular Inclinada Centrada na Origem (diagonal band pass mask) descrita pela
largura da banda e pelo ngulo que a reta que passa pela origem faz com o eixo horizontal. Neste
caso ao mover a mscara o ngulo da faixa retangular ser modificado. A lateral da faixa tambm
pode ser modificada para aumentar ou reduzir a banda.
O Setor Angular (wedge mask) descrito pelos ngulos externo e interno do setor angular.
Neste caso, ao mover a mscara estar-se- modificando o ngulo do setor angular em relao aos
eixos. O ngulo interno pode ser modificado movendo-se uma das laterais do setor.

16. EXEMPLOS
As figuras 5-1, 5-2 e 5-3 foram includas com o objetivo de demonstrar a corretude da FFT
utilizada e de mostrar algumas propriedades da imagem obtida com a Transformada de Fourier. As
figuras seguintes exemplificam a metodologia de filtragem usando alguns dos filtros propostos.
Um pulso bidimensional pode ser representado de vrias maneiras. Apresentamos duas
delas, a primeira com durao igual em todas as direes a partir da origem e a segunda com
durao igual ao longo de cada eixo, ou seja, um crculo (Figura 16-1) e um quadrado (Figura 16-2),
respectivamente. Sabemos que a FT de um pulso uma funo sinc5, como visto na Figura 3-2. Na
FT da imagem com o crculo a sinc se manifestar em todas as direes. J na FT da imagem com o
quadrado, a sinc se manifestar apenas na direo vertical e na horizontal. No caso bidimensional
estamos observando a funo de um ponto de vista superior, como se a imagem estivesse no plano
X-Y e estivessemos sobre o eixo Z olhando para baixo.

Figura 16-1 FFT de um Crculo

Lembre-se de que estamos observando a magnitude do valor complexo, o que faz com que a sinc parea ter

mais picos positivos do que deveria.

32

Figura 16-2 FFT de um Quadrado


A Figura 16-3 mostra um grid e sua transformada. O grid pode ser interpretado como um
trem de impulsos bidimensional, desconsiderando a linha contnua de freqncia zero. Sendo assim
sua transformada tambm um trem de impulsos (parte imaginria zero, uma funo, ou melhor
imagem real), mas com uma periodicidade diferente.

interessante observar que as linhas

contnuas so de certa maneira consideradas ao observarmos que os valores da cruz central so


maiores que os valores internos aos quadrantes.

Figura 16-3 FFT de um Grid

33

Figura 16-4 Filtragem de Baixas e Altas Freqncias


Utilizando um filtro passa baixa bidimensional, como visto na Figura 16-4, obtemos uma
imagem borrada, ou seja ocorre uma perda de detalhes que so compostos de altas freqncias.
Aplicando o inverso deste filtro explicitamos os detalhes perdidos na imagem anterior.

Figura 16-5 Eliminao da Cruz Central

34
Como visto na seo 4 Transformada de Fourier a transformada de uma imagem com bordas
distintas gera a cruz central vista na Figura 16-5. Aplicando-se uma mscara na imagem original
que elimina essa discontinuidade, obtemos uma imagem complexa da trasnformada sem a cruz
central, o que permite uma melhor visualizao dos fenmenos ocorridos no domnio da freqncia.
Este procedimento pouco usado pois necessrio uma interferncia na imagem original muitas
vezes no desejada.

Figura 16-6 Filtragem de um Rudo com Periodicidade Horizontal


Esta imagem foi capturada de um digitalizador de sinal de vdeo quando a imagem no vdeo
no estava bem posicionada gerando um rudo horizontal com uma periodicidade bem definida. A
escolha do filtro feita percebendo-se esta periodicidade e aplicando um filtro retangular vertical
(horizontal band pass). A imagem resultante da filtragem vista sem o rudo em questo.

35

Figura 16-7 Filtragem de Linhas Diagonais em um Chip


A imagem do chip vista na figura possue inmeras linhas diagonais em duas direes, que se
manifestam no domnio da freqncia como o X visto na imagem da transformada. Cada um dos
traos corresponde a um grupo de linhas diagonais. Isolando apenas um dos grupos e preservando o
resto da imagem complexa, obtemos a imagem original sem aquele conjunto de linhas diagonais.
Esta filtragem pode ser usada para um deteo de bordas especfica para linhas retas na
imagem.

36

Figura 16-8 Filtragem de Curvas Sobre Grid Confuso.

37
A imagem inicial na seqncia da Figura 16-8 foi capturada atravs de um scanner e embora
possua uma boa resoluo a cpia original em papel no era bem definida gerando a imagem vista.
O nosso interesse sobre esta imagem isolar as duas classes de curvas que fornecem informaes de
clculo, que uma vez no computador podem ser utilizadas por programas tornando o processo
automtico.
O grid, mesmo confuso, parece ter alguma propriedade peridica. Ao calcularmos a FT da
imagem original observamos trs manifestaes distintas: linhas verticais que provavelmente
provem do grid, uma linha inclinada muito bem definida e uma regio esparsa em um setor
angular. Isolamos as duas ltimas regies e obtivemos o contorno das curvas desejadas.
A curva que possue tranformada uma linha inclinada bem definida, observando-se melhor,
muito semelhante a uma reta inclinada (uma linha diagonal), que como vimos na Figura 16-7 pode
ser isolada. J a outra curva se manifesta como se existissem diversas linhas diagonais6 que
combinadas formam a curva, por isso a formao da regio esparsa em um setor angular.

Pode-se at pensar em termos das derivadas ou das tangentes curva em questo.

38

Figura 16-9 Filtragem de tomos de Ouro sobre um Substrato Amorfo

A Figura 16-9 mostra uma seqncia de processamento de uma imagem de nano-partculas


de ouro sobre um substrato de carbono amorfo. A estrutura cristalina facilmente identificada na

39
imagem da transformada atravs dos pontos brilhantes de alta freqncia isolados da regio de baixa
freqncia.
Isolando todos os pontos vemos que o fundo amorfo praticamente desapareceu e que uma
das partculas que no estava bem ntida tambm desapareceu.
Na segunda filtragem isolamos apenas os picos mais intensos e obtemos uma imagem
semelhante mas com uma estrutura atmica bem diferente da anterior.
Isto nos indica que a escolha dos pontos a serem isolados bastante crtica neste caso,
devemos ento tentar outras possibilidades at encontrar uma que realmente reflita a periodicidade
desejada da imagem original.
Portanto, aparecero casos em que a regio a ser isolada na imagem da transformada no
trivial de ser encontrada, mesmo manifestando uma caracterstica conhecida.
A imagem resultante, neste caso, pode ser utilizada para se reconstituir a estrutura atmica
de uma parte da partcula. Recortando-se a imagem na regio peridica de interesse e aplicando
algoritmos especficos pode-se gerar padres que reproduzam esta periodicidade. Escolhe-se
visualmente o melhor padro que se encaixa na imagem e com este padro gera-se uma imagem
sinttica. Esta imagem comparada com outras imagens sintticas obtidas teoricamente. Isto
permite definir melhor as propriedades das estruturas atmicas.

40

Figura 16-10 Filtragem de uma Estrutura Atmica


Este caso semelhante ao anterior s que a estrutura pde ser isolada com muito mais
simplicidade. Foram utilizadas 5 mscaras twin oval sobre os picos mais intensos. A imagem
resultante poderia ser melhorada se aplicassemos a periodic, pois estaramos isolando um nmero
maior de componentes que formam a estrutura peridica da imagem original.

Figura 16-11 Visualizao da Fase

41
interesante mostrar aqui uma outra visualizao da imagem da transformada da Figura 1610, no caso a fase vista na Figura 16-11. Pois, uma das pouca fases que possuem uma informao
visual distinguvel, embora ainda no saibamos como interpret-la, convm mencion-la. Poucos
autores tentam fazer alguma anlise sobre a fase da FT, pode se ver algo sobre o assunto em
[CASTLEMAN 79].

17. CONCLUSO
Uma vez conhecidas as mscaras que seriam implementadas, o desenvolvimento deste
trabalho decorreu em duas etapas.
Na primeira o SPID foi construdo. Esta etapa foi naturalmente a mais longa e mais difcil
levando em conta que deveramos dar suporte para diversos tipos de imagem, acessar arquivos de
imagem com padro TIFF e criar uma metodologia de operao para imagens.

Alm disso,

especificar uma inteface coerente com os diversos aplicativos para Windows, tornando seu uso o
mais simples possvel, dentro das qualidades e limitaes deste ambiente.
Na segunda etapa foram efetivamente implementadas as mscaras, onde surgiram problemas
especficos da criao das mesmas, mas que tomou um tempo muitas vezes menor.
Portanto, a criao do SPID foi muito bem aproveitada atingindo o seu objetivo de dar
suporte para o desenvolvimento de aplicaes em Processamento de Imagens. A partir de agora
reduz-se a carga de desenvolvimento para criao de novas operaes e simplifica-se a avaliao
das mesmas.
O SPID foi testado em diversas mquinas do tipo IBM-PC compatvel e obteve-se a Tabela
17-1, usando-se a FFT como padro de medida. Os tempos incluem o fato de haver um contador no
SPID, portanto, os tempos menores so mais influenciados pelo tempo de display da porcentagem
de processamento e possuem menor preciso na tabela.
Imagem

486 DX/2 66 MHz

486 DX 33 Mhz

128x128

0,7s

0,7s

256x256

1,5s

2,5s

512x512

5,5s

9,5s

1024x1024

25s

45s

256 Tons de Cinza

Tabela 17-1 Teste de Performance Usando a FFT


Todos os tempos visto so bastante aceitveis para um trabalho dirio gerando inmeras
FFTs com uma resposta ao usurio satisfatria.
No captulo 8. Implementao todas as imagens de transformadas foram obtidas com o
SPID. Foram ainda realizados dois outros testes importantes: a IFFT(FFT(imagem original)) deve

43
ser igual a imagem original e aplicando-se esta seqncia repetidamente este fato deve-se manter.
Nos dois testes o SPID se mostrou correto e no caso em que aplicada uma mscara a utilizao de
uma borda suave se mostrou essencial para evitar artefatos.
Embora satisfaa nossas necessidades algumas melhorias imediatas ao SPID sero
necessrias. Um melhor algoritmo de converso de imagens coloridas de 24 bits para imagens
coloridas indexadas com 256 cores para substituir o algoritmo atual que tende a perder cores escuras
na imagem. O algoritmo de Median Cut proposto por Paul Heckbert uma excelente sugesto,
[HECKBERT 82].
Com o tratamento de grandes imagens a compresso do arquivo passa a ser necessria. O
padro TIFF 6.0 inclue alm dos conhecidos LZW e RLE, o padro JPEG para compresso de
imagens.
Quando se possue um hardware grfico com profundidade de cor limitada, no caso somente
256 cores, a utilizao de uma palette comum para todas as imagens pode melhorar a qualidade da
comparao entre imagens coloridas. Com o tempo este recurso deve cair em desuso.
O fato da FFT s aceitar imagens com determinados tamanhos, pede tambm a criao de
imagens com uma cor de fundo para servirem de base para uma imagem a ser colocada sobre a
mesma.
As anotaes no SPID no podem ser movidas todas ao mesmo tempo e algumas possuem
uma manipulao ainda difcil. Deve-se melhorar de maneira a facilitar o uso ao mximo.
Ainda faltam muitas operaes para o SPID se tornar um sistema de Processamento de
Imagens prtico e independente.

Este trabalho teve como objetivo maior demonstrar a

potencialidade do SPID de se tornar um sistema completo. Portanto, existe uma trilha grande a ser
percorrida, mas onde os primeiros passos j foram dados e uma direo clara e concisa foi tomada.
Resta agora que outros tenham interesse na mesma rea e utilizem a especificao do SPID [SCURI
94] para complet-lo e estend-lo.

18. REFERNCIAS BIBLIOGRFICAS


[ALDUS 92]

Aldus Corporation TIFF Revision 6.0 Final - June 3, 1992 Aldus


Developers Desk, 1992.

[ALEGRETTE 92]

R. Alegrette Pixie - Programa para Visualizao de Imagens Digitais em


Ambiente Microsoft Windows Trabalho de Fim de Curso (graduao),
Departamento de Engenharia de Computao, PUC-Rio, 1992.

[BORLAND 93.1]

Borland International Inc. ObjectWindows for C++ 2.0, Programmers


Guide 1993.

[BORLAND 93.2]

Borland International Inc. Borland C++ for Windows 4.0, User's Guide
1993.

[BORLAND 93.2]

Borland International Inc. Borland C++ for Windows 4.0, Programmers


Guide 1993.

[BRIGHAM 74]

E. O. Brigham The Fast Fourier Transform Englewood Cliffs, Prentice


Hall, 1974.

[CASTLEMAN 79]

K. R. Castleman Digital Image Processing Prentice-Hall, Inc., Englewood


Cliffs, 1979.

[GALUCIO 90]

E. G. Galucio, S. Paciornik e R. A. Nunes Descrio do Sistema IMAGO


para Processamento Digital de Imagens Anais do II Simpsio Brasileiro de
Computao Grfica e Processamento de Imagens, SIBGRAPI III, 1990.

[HECKBERT 82]

P. Heckbert Color Image Quantization for Frame Buffer Display


Computer Graphics, July, vol. 10, #3, 1982.

[ONEILL 88]

M. A. ONeill Faster Than Fast Fourier BYTE, April pgs. 293-300,


1988.

[SCURI 91]

A. E. Scuri Pinta - Utilitrio Genrico para Apresentao de Imagens em


Telas Grficas Trabalho de Fim de Curso (graduao), Departamento de
Engenharia Eltrica, PUC-Rio, 1991.

[SCURI 92]

A. E. Scuri Sistemas de Processamento de Imagens Estudo Orientado,


Departamento de Informtica, PUC-Rio, 1992.

45
[SCURI 93]

A. E. Scuri SPID - Conversor de Imagens Digitais Trabalho de Final de


Programao (mestrado), Departamento de Informtica, PUC-Rio, 1993.

[SCURI 94]

A. E. Scuri SPID - Um Sistema de Processamento de Imagens - Manual


Tcnico Documentao Interna, ICAD, PUC-Rio, 1994.

46

19. BIBLIOGRAFIA
[BALDNER 92]

J. H. Baldner e D. C. Muchaluat Processamento de Imagems Coloridas


Trabalho do Curso de Introduo ao Processamento de Images Digitais,
D.C.M.M., PUC-Rio, 1992.

[BARKAKATI 92]

N. Barkakati Object Oriented Programming in C++ SAMS, 1991.

[BORLAND 92]

Borland International Inc. Help Compiler 1992.

[CHAVES 91]

E. O. C. Chaves Multimdia - Conceituao, Aplicaes e Tecnologia


People Computao Ltda., 1991.

[DERRAIK 92]

A. L. B. Derraik e Y. N. Nasser Compresso de Arquivos de Imagem


Trabalho do Curso de Introduo ao Processamento de Images Digitais,
D.C.M.M., PUC-Rio, 1992.

[EZZELL 92]

B. Ezzell Windows 3.1 Graphics Programming Ziff-Davis Press, 1992.

[FOLEY 90]

J. Foley, A. van Dam, S. Feiner e J. Hughes Computer Graphics: Principles


and Practice Addison-Wesley, 1990.

[GATTASS 92]

M. Gattass e F. Celes Computao Grfica Interativa com o GKS


Departamento de Engenharia Civil, PUC-Rio, 1992.

[GONZALEZ 87]

R. C. Gonzalez & P. Wintz Digital Image Processing Addison Wesley,


1987.

[HP 89]

Hewlett Packard Co. An Introduction to Computer Graphics 1989.

[NORTON 92]

P. Norton & P. Yao Programando em Borland C++ para Windows


Berkeley, 1992.

[PACIORNIK 91]

S. Paciornik Introduo ao Processamento Digital de Imagens e suas


Aplicaes D.C.M.M. PUC-Rio, 1991.

[PETZOLD 92]

C. Petzold Programando para Windows 3 Markon Books, 1992.

[PRESS 89]

W. H. Press, B. P. Flannery, S. A. Teukolsky e W. T. Vetterling Numerical


Recipes - The Art of Scientific Computing Cambrige University Press,
1989.

47
[PRATT 78]

W. K. Pratt Digital Image Processing John Wiley & sons Inc, 1978.

[SCHEIER 93]

B. Scheier Color Models Dr. Dobbs Journal, #202 July, pg 38-43, 1993.

[SCURI 93]

A. E. Scuri Introduo ao Processamento de Imagens Digitais


Documentao Interna, ICAD, PUC-Rio, 1992.

[STROUSTRUP 86]

B. Stroustrup The C++ Programming Language Addison-Wesley


Publishing Company, 1986.

[STROUSTRUP 91]

B. Stroustrup e M. A. Ellis The Annotated C++ Reference Manual


Addison-Wesley Publishing Company, 1990.

48
Filtros Interativos para Imagens Digitais no Domnio da Freqncia
Dissertao de Mestrado apresentada por Antonio Escao Scuri em 14 de Setembro de 1994
ao Departamento de Informtica da PUC-Rio, e aprovada pela Comisso Julgadora, formada pelos
seguintes professores:

prof. Bruno Feij (Orientador)


Depto Informtica / PUC-Rio

prof. Sidnei Paciornik (Co-orientador)


D.C.M.M. / PUC-Rio

prof. Marcelo Gattass


Depto Informtica / PUC-Rio

prof. Roberto Ierusalimschy


Depto Informtica / PUC-Rio

Visto e permitida a impresso.


Rio de Janeiro, ____ de ____________ de 1994.

prof. Luiz Fernando Gomes Soares


Coordenador dos Programas de Ps-graduao
do Centro Tcnico Cientfico