Professional Documents
Culture Documents
Departamento de Informtica
Pontifcia Universidade Catlica do Rio de Janeiro
a meu pai.
Meus agradecimentos,
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.
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.
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
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.
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).
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.
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.
5
Como as funes desenvolvidas para
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.
6
Procuramos
tambm
informaes
em
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
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
N
N
,v )
2
2
Equao 3-6
Equao 3-7
9
Quando visualizamos o mdulo da transformada temos:
| F (u, v )| =| F ( u, v )|
Equao 3-8
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:
Naturalmente isso s acontece para imagens que possuam bordas laterais com
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.
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
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
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.
13
realizaramos o clculo.
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
( 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
Domnio Real
Domnio da Freqncia
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
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
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.
18
Quando se deseja incluir toda informao prxima origem, utiliza-se o filtro da figura
Figura 3-9.
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.
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
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
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
0 ; 4.294.967.295
32 / 4
3,4x10-38 ; 3,4x10+38
32 / 4
1,7x10-308 ; 1,7x10+308
64 / 8
complex
(real, real)
64 / 8
double complex
128 / 16
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
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.
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.
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
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);
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);
}
28
13. Classes de Arquivos
arquivo_pic
arquivo_binario
arquivo_imagem
arquivo_tiff
arquivo_bmp
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.
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.
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.
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.
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.
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.
Lembre-se de que estamos observando a magnitude do valor complexo, o que faz com que a sinc parea ter
32
33
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.
35
36
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.
38
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
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 33 Mhz
128x128
0,7s
0,7s
256x256
1,5s
2,5s
512x512
5,5s
9,5s
1024x1024
25s
45s
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.
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.
[ALEGRETTE 92]
[BORLAND 93.1]
[BORLAND 93.2]
Borland International Inc. Borland C++ for Windows 4.0, User's Guide
1993.
[BORLAND 93.2]
[BRIGHAM 74]
[CASTLEMAN 79]
[GALUCIO 90]
[HECKBERT 82]
[ONEILL 88]
[SCURI 91]
[SCURI 92]
45
[SCURI 93]
[SCURI 94]
46
19. BIBLIOGRAFIA
[BALDNER 92]
[BARKAKATI 92]
[BORLAND 92]
[CHAVES 91]
[DERRAIK 92]
[EZZELL 92]
[FOLEY 90]
[GATTASS 92]
[GONZALEZ 87]
[HP 89]
[NORTON 92]
[PACIORNIK 91]
[PETZOLD 92]
[PRESS 89]
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]
[STROUSTRUP 86]
[STROUSTRUP 91]
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: