56
Antonio Escaño Scuri Filtros Interativos para Imagens Digitais no Domínio da Freqüência Dissertação de Mestrado Departamento de Informática Pontifícia Universidade Católica do Rio de Janeiro Rio de Janeiro, 14 de Setembro de 1994.

Fast Fourier Transform

Embed Size (px)

DESCRIPTION

Introdução de conceitos e demonstrações das técnicas de DFT e FFT.

Citation preview

  • 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.

  • III

    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.1Os Filtros...............................................................................................................15

    4. Implementao.................................................................................................................20

    4.1 O SPID..........................................................................................................................20

    4.1.1Arquitetura Interna................................................................................................24

    4.2 As Mscaras..................................................................................................................28

    5. Exemplos.........................................................................................................................31

    6. Concluso........................................................................................................................42

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

    8. Bibliografia......................................................................................................................46

  • IV

    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

  • VFigura 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).

  • 2A 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

  • 3processo 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.

  • 5Como as funes desenvolvidas paramanipulao 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.

  • 6Procuramos tambm informaes emsistemas 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:

    ( )

    -

    =

    -

    =

    +-

    =1

    0

    1

    0

    2

    ),(1

    ),(M

    x

    N

    y

    yvxuN

    i

    eyxfNM

    vuFp

    Equao 3-1

    Por sua vez a transformada inversa:

    ( )

    -

    =

    -

    =

    ++

    =1

    0

    1

    0

    2

    ),(1

    ),(M

    u

    N

    v

    yvxuN

    i

    evuFNM

    yxfp

    Equao 3-2

    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

    NF u y ex

    iN

    yv

    y

    N

    ( , ) ( , )= -

    =

    -

    12

    0

    1 p

    Equao 3-3

    onde,

    ( )F u y

    Mf x y ex

    iN

    xu

    x

    M

    ( , ) ( , )= -

    =

    -

    12

    0

    1 p

    Equao 3-4

  • 8ou 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 F u u v vi

    Nu x v y

    ( , ) ( , )( )

    - -+

    2

    0 0

    0 0p

    Equao 3-5

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

    f x y F uN

    vNx y( , )( ) ( , )- - -+1

    2 2Equao 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

  • 9Quando 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:

    F e f

    e f e f

    e f W e f

    F W F

    k

    ijkN

    jj

    N

    ik jN

    j

    ik jN

    jj

    N

    j

    N

    ikjN

    jk

    ikjN

    jj

    N

    j

    N

    ke k

    ko

    =

    = +

    = +

    = +

    =

    -

    +

    +

    +=

    -

    =

    -

    + +=

    -

    =

    -

    2

    0

    1

    2 2

    2

    2 2 1

    2 10

    2 1

    0

    2 1

    22

    2

    22

    2 10

    2 1

    0

    2 1

    p

    p p

    p p

    ( ) ( )//

    / ///

    Equao 3-10

    onde W definido como:

    W eki

    N2p

    Equao 3-11

  • 11

    e Fke e Fk

    o 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:

    F fkeoeoeoeoeoeoeoeooee

    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

    ConjuntoOriginal

    ndice ConjuntoReordenado

    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, assume-

    se 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 uH u H N u

    =+ -2 2

    2Equao 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:

    f x y k i j f x iK

    y jK

    i

    K

    j

    K

    ( , ) ( , ) ,= + - + -

    ==

    2 200Equao 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 vice-

    versa. 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

    ImagemOriginalFiltrada

    ImagemOriginal FFT IFFTX

    Imagemdo Filtro

    Figura 3-10 Seqncia Completa de Filtragem

  • 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.64732 / 4

    unsigned long integer 0 ; 4.294.967.295 32 / 4

    IEEE floating point 3,4x10-38 ; 3,4x10+38 32 / 4

    IEEE floating pointdouble 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.

    1 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... A

    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

    matriz

    matriz_xbits

    matriz_elemento

    imagem_binaria

    imagem_4bits

    imagem

    imagem_rgb_complexa

    imagem_cinza

    imagem_rgb

    imagem_rgb_palette

    byte

    imagem_cinza_complexa

    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, 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.

    2 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 far com que o mtodo OpGlobal da

    classe imagem_cinza seja chamado.

    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. Se uma

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

    imagem* Im = imagem_cinza(Linhas, Colunas);...teste Op(Param);imagem* NewIm = Im->OpGlobal(Op);

    Figura 8-2 Trecho do Programa Principal

  • 27

    determinada operao no tem sentido para um determinado tipo de imagem, o mtodo Apply

    respectivo deve retornar NULL.

    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 imagem{...virtual imagem* OpGlobal(operador_global&) =

    0;...};

    template class imagem_cinza: public matriz, public imagem

    {...imagem* OpGlobal(operador_global&);...};

    template imagem* OpGlobal(operador_global& Op)

    {return Op.Apply(*this);}

    Figura 8-3 Mtodo OpGlobal da Classe imagem

    class operador_global{...virtual imagem* Apply(const imagem_cinza&) = 0;...};

    class teste: public operador_global{teste(tipo_param_teste param);...imagem* Apply(const imagem_cinza&);...};

    Figura 8-4 Mtodo Apply da Classe operador_global

  • 28

    13. Classes de Arquivos

    arquivo_binario arquivo_imagem arquivo_tiff

    arquivo_pic

    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.

    4 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 copi-

    las para outra imagem, apag-las, duplic-las, etc...

    A CrossCursor tambm permite modificar a posio e o tamanho de uma anotao. Deve-

    se 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 , e com que a elipse seja um crculo

    pressionando-se as teclas e 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

    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

    5 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.

    6 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 16-

    10, 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

    256 Tons de Cinza

    486 DX/2 66 MHz486 DX 33 Mhz

    128x128 0,7s 0,7s

    256x256 1,5s 2,5s

    512x512 5,5s 9,5s

    1024x1024 25s 45s

    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