U NIVERSIDADE F EDERAL DE C AMPINA G RANDE
D EPARTAMENTO DE S ISTEMAS E C OMPUTAÇÃO
G RADUAÇÃO EM C IÊNCIA DA C OMPUTAÇÃO
P ROJETO EM C OMPUTAÇÃO
P ROCESSAMENTO D IGITAL DE I MAGENS
NO D OMÍNIO DA F REQÜÊNCIA
E LLOÁ B. G UEDES DA C OSTA
O DILON F RANCISCO
DE
L IMA J R
(A LUNOS )
J OSEANA M ACÊDO F ECHINE
J OSÉ E USTÁQUIO R ANGEL DE Q UEIROZ
(O RIENTADORES )
C AMPINA G RANDE
M ARÇO - 2009
Conteúdo
1
2
3
Introdução
3
1.1
Processamento Digital de Imagens . . . . . . . . . . . . . . . . . . . . . .
3
1.2
Sistema Típico para o Processamento Digital de Imagens . . . . . . . . . .
4
1.3
Conceitos Fundamentais do Processamento Digital de Imagens . . . . . . .
5
1.3.1
Pixel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.3.2
Resolução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.3.3
Dimensão da Imagem . . . . . . . . . . . . . . . . . . . . . . . .
7
1.3.4
Profundidade de Bits . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.3.5
Faixa Dinâmica (Dynamic Range) . . . . . . . . . . . . . . . . . .
8
1.3.6
Compressão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
Java no Contexto do Processamento Digital de Imagens
10
2.1
Característica Gerais da Linguagem Java . . . . . . . . . . . . . . . . . . .
10
2.2
Java no Processamento Digital de Imagens . . . . . . . . . . . . . . . . . .
11
2.3
Java Advanced Imaging . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.3.1
Representação de Imagens . . . . . . . . . . . . . . . . . . . . . .
12
2.3.2
Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
Processamento Digital de Imagens no Domínio do Espaço
14
3.1
Conceito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.2
Filtragem Espacial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.3
Morfologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.3.1
Dilatação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.3.2
Erosão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
i
4
5
6
Processamento Digital de Imagens no Domínio da Freqüência
23
4.1
Conceito de Freqüência em uma Imagem . . . . . . . . . . . . . . . . . .
23
4.2
Transformada de Fourier no Processamento Digital de Imagens . . . . . . .
24
Transformada de Fourier
25
5.1
Introdução à Transformada de Fourier . . . . . . . . . . . . . . . . . . . .
25
5.2
A Transformada Discreta de Fourier Bidimensional . . . . . . . . . . . . .
26
5.2.1
Importância da fase e magnitude . . . . . . . . . . . . . . . . . . .
27
5.2.2
Propriedades da Transformada Bidimensional de Fourier . . . . . .
27
Transformada Rápida de Fourier
30
6.1
Definição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
6.1.1
Raízes complexas de unidade . . . . . . . . . . . . . . . . . . . .
31
6.1.2
A idéia do algoritmo da FFT . . . . . . . . . . . . . . . . . . . . .
31
Algoritmo de Cooley-Tukey . . . . . . . . . . . . . . . . . . . . . . . . .
33
6.2
A Estrutura deste documento
35
B Imagens
36
B.1 Processamento Digital de Imagens no Domínio do Espaço . . . . . . . . .
ii
36
Apresentação
Os primeiros computadores poderosos o suficiente para lidar com tarefas relativas ao processamento digital de imagens surgiram nos anos 60. O nascimento do conceito de Processamento Digital de Imagens (PDI) pode ser traduzido na viabilidade destas máquinas e nas
primeiras aplicações daquele período em promoverem melhorias e alterações em imagens.
Então, neste período que há também o surgimento dos primeiros conceitos e técnicas para
manipulação de imagens.
Apesar de ser recente, é uma área que possuiu uma rápida e efetiva consolidação. Uma
das razões, em particular, é pela existência de um grande número de técnicas para a manipulação de imagens já desenvolvidas. Uma destas técnicas que merece destaque é o processamento digital de imagens no domínio da freqüência, na qual, com a utilização da Transformada de Fourier, é possível obter resultados e informações relevantes a partir da imagem
original.
Ao passo que é uma área bastante consolidada e existe uma vasta quantidade de materiais didáticos, há também a preocupação com os alunos que possuam interesse nesta área de
pesquisa, sejam estes jovens pesquisadores ou alunos de disciplinas de Processamento Digital de Imagens dos cursos de Ciência da Computação. Esta preocupação reside em tornar
a fundamentação teórica mais interativa e atrativa, de modo que possa ser acompanhada de
uma parte prática na qual o aluno possa executar os algoritmos estudados verificar como esta
execução é dada e qual o seu resultado.
Visando atender a esta proposta, foi desenvolvida a ferramenta SImPLe (Software for
Image Processing Learning) [Queiroz and Gomes 2005], sob a orientação do Professor Eustáquio Rangel (DSC/UFCG). Esta ferramenta se caracteriza por um software que implementa
diversas técnicas de processamento digital de imagens no domínio do espaço e possui o intuito de se tornar uma ferramenta didática que ilustre a aplicação dos conceitos nela aborda1
2
dos fazendo com que isto reforce o aprendizado dos mesmos.
Dado o perfil da ferramenta SImPLe, se identificou como necessidade para a melhoria
deste software o desenvolvimento de algoritmos para o processamento digital de imagens
no domínio da freqüência. A demanda pela implementação de técnicas de processamento
digital de imagens no domínio da freqüência é oriunda do grande número de técnicas que
esta forma de processamento abrange e da relevância na aplicação das mesmas, tornando-se
essencial em uma ferramenta de cunho didático.
Deste modo, o projeto em questão visa a implementação de um módulo que contenha
técnicas para o processamento digital de imagens no domínio da freqüência e a incorporação
deste módulo ao SImPLe, fazendo com que esta ferramenta adquira novas funcionalidades e
se torne mais abrangente no domínio que se refere.
Capítulo 1
Introdução
O Processamento Digital de Imagens (PDI) consiste em uma área de pesquisa relevante no
cenário atual da Computação. Seu estudo permite o desenvolvimento de técnicas e procedimentos aplicáveis à diversas áreas, desde jogos até a manipulação de imagens médicas. Neste
capítulo apresentaremos em que consiste essa área da Computação e alguns dos conceitos
introdutórios fundamentais para a compreensão da mesma.
1.1
Processamento Digital de Imagens
O Processamento Digital de Imagens tem início com a captura da imagens, que corresponde
à iluminação refletida na superfície dos objetos, adquirida através de um sistema de aquisição (câmera, scanner, etc.). Após esta captura, uma imagem precisa ser representada de
forma apropriada para tratamento computacional, podendo ser representadas em duas ou
mais dimensões [Queiroz and Gomes 2005].
Os primeiros computadores poderosos o suficiente para lidar com tarefas relativas ao
processamento digital de imagens surgiram nos anos 60. O nascimento do conceito de PDI
pode ser traduzido na viabilidade destas máquinas e nas primeiras aplicações daquele período
em promoverem melhorias e alterações em imagens. Então, neste período que há também o
surgimento dos primeiros conceitos e técnicas para manipulação de imagens.
No escopo deste projeto, é possível definir uma imagem como uma função bidimensional
f (x, y), onde x e y são pontos no plano, e a amplitude de f como um par de coordenadas
(x, y) denominada intensidade do nível de cinza no determinado ponto da imagem. Quando
3
1.2 Sistema Típico para o Processamento Digital de Imagens
4
os valores de x,y e da amplitude f são finitos e discretos, dizemos que esta é uma imagem
digital. A área do processamento digital de imagens se refere ao processamento digital de
imagens em termos de um computador digital. Note que a imagem digital é composta por
um número finito de elementos, onde cada qual possui uma localização particular e um valor.
De um modo geral, é comum levar em consideração apenas os resultados do PDI que
possuem algum significado para a percepção humana. A segunda maior aplicação de técnicas de processamento digital de imagens está em resolver problemas ligados à percepção de
máquina. Neste escopo, há foco em procedimentos para extrair de uma imagem informações
para o processamento computacional. Normalmente, esta informação possui alguma relação
com a forma com que os humanos fazem para interpretar o conteúdo de uma imagem. Problemas típicos na área de percepção de máquina (ou visão computacional) são rotinas para
reconhecimento automático de caracteres, processamento automático de impressões digitais,
exibição de raios-X, interpretação de imagens de satélite, etc.
Não existe um consenso sobre onde o processamento digital de imagens pára e outras
áreas, a exemplo da análise de imagens e visão computacional, começam. Algumas vezes a
distinção é feita através da definição do processamento digital de imagens como a área em
que a entrada e a saída do processo são imagens [Gonzalez and Woods 2001].
1.2
Sistema Típico para o Processamento Digital de Imagens
O primeiro passo em um sistema típico para o processamento digital de imagens é a captura
da luz refletida por um objeto, que em termos práticos é o mesmo que a captura da imagem.
Esta etapa é denominada “aquisição”. Nesta etapa dois elementos são relevantes:
1. O dispositivo físico sensível à faixa de energia irradiada pelo alvo de interesse; e
2. O dispositivo conversor da saída do dispositivo físico em um formato digital.
O hardware especializado para o processamento digital de imagens consiste de um digitalizador integrado a um hardware destinado à execução de outras operações primitivas, a
exemplo de unidades lógico-aritméticas (ULA) que realizam o processamento à medida que
as imagens são digitalizadas.
1.3 Conceitos Fundamentais do Processamento Digital de Imagens
5
Considerado o âmbito do processamento, o processamento digital de imagens pode ocorrer em um computador sem hardware especializado. Porém, para tanto, necessita de software
especializado para processamento de imagens que consiste, em geral, de módulos destinados
à realização de tarefas específicas, a exemplo de operações de processamento radiométrico
e/ou geométrico de imagens monocromáticas ou coloridas, mono ou multiespectrais, dentre
outras.
O armazenamento de imagens digitais também é de interesse de estudo, seguindo três
possibilidades:
1. Armazenamento de curta duração: É utilizado durante o armazenamento das imagens
de interesse em diferentes etapas do processamento;
2. Armazenamento online ou de massa: Típico em operações relativamente rápidas ligadas à recuperação de imagens;
3. Arquivamento de imagens: Objetivando o acesso esporádico ao arquivo e à recuperação quando solicitado.
Por fim, considerando a saída do sistema, duas alternativas são comuns:
1. Visualização da imagem: Requer tipicamente monitores de vídeo coloridos e preferencialmente de tela plana, que recebem dados de placas gráficas comerciais ou dedicadas;
2. Impressão da imagem: Costuma utilizar diferentes dispositivos de impressão de pequeno, médio e grande porte – impressoras e/ou traçadores gráficos (plotters) de jato
de tinta, sublimação de cera ou laser.
A figura 1.2 ilustra o sistema típico para o processamento digital de imagens que foi
caracterizado:
1.3
Conceitos Fundamentais do Processamento Digital de
Imagens
Os conceitos fundamentais são necessários para a compreensão dos procedimentos e técnicas
aplicados no PDI. São relativos desde como nós, seres humanos, compreendemos uma imagem, até como o computador manipula a mesma. Os tópicos a seguir abrangem os conceitos
1.3 Conceitos Fundamentais do Processamento Digital de Imagens
6
Rede
Hardware de
Visualização
Sensores de
Imagem
Hardware para
Processamento
de Imagens
Computador
Hardware de
impressão
Software para
Processamento
de Imagens
Armazenamento
Figura 1.1: Ilustração de um sistema típico para o processamento digital de imagens
[Queiroz and Gomes 2005].
fundamentais e introdutórios. Nas outras seções e capítulos outros conceitos importantes
continuam a serem introduzidos.
1.3.1
Pixel
Pixel, palavra formada da aglutinação das palavras inglesas “Picture” e “Element”, denota o menor elemento em um dispositivo de exibição ao qual é possível atribuir uma cor
[Russ 2007]. De uma forma mais sintética, poderíamos dizer que pixel é a unidade atômica
de composição de uma imagem.
A cada pixel é atribuída uma tonalidade (branco, preto, tonalidades de cinza ou de cor),
as quais são representadas na notação binária. Os bits para cada pixel são armazenados em
uma seqüencia por computador e normalmente vinculados à uma representação matemática
(compressão). Os bits então são lidos e interpretados para produzir uma imagem análoga
para visualização e impressão [Cornell University Library 2003].
1.3 Conceitos Fundamentais do Processamento Digital de Imagens
7
Figura 1.2: Exemplo de pixels que compõe uma imagem e dos valores das tonalidades associados à cada pixel.
1.3.2
Resolução
Resolução é a habilidade de distinguir pequenos detalhes espaciais. A freqüência espacial
na qual uma imagem é mostrada é um bom indicador da sua resolução. A resolução indica
quantos pontos ou pixels por polegada existem na imagem.
1.3.3
Dimensão da Imagem
São as medidas verticais e horizontais de uma imagem expressas em termos de pixel. As
dimensões podem ser determinadas pela multiplicação da largura e altura pela quantidade de
pontos por polegada (dpi).
1.3.4
Profundidade de Bits
A profundidade de bits é determinada pelo número de bits utilizados para definir cada pixel.
Quanto maior a profundidade de bits, maior será o número de tons representados, em escala
de cinza ou cor. Imagens digitais podem ser representadas em preto e branco, escala de cinza
ou cor.
A figura 1.3 ilustra a mesma imagem com diferentes profundidades de bits. A imagem
mais à esquerda é uma imagem com profundidade de bits igual 1, a segunda é uma imagem
em escala de cinza, cuja profundidade é de 8 bits e a terceira imagem, colorida, possui
1.3 Conceitos Fundamentais do Processamento Digital de Imagens
8
profundidade de 24 bits.
Figura 1.3: Exemplo de uma mesma imagem com diferentes valores de profundidade de bits.
1.3.5
Faixa Dinâmica (Dynamic Range)
Faixa dinâmica é a largura da faixa de tons entre a luz mais clara e mais escura em uma
imagem. Quanto mais larga é este faixa, maior é o potencial de sombras que podem ser
representados, embora a faixa dinâmica não se relacione automaticamente ao número de
tons produzidos.
A figura 1.4 ilustra um exemplo de imagem onde a faixa dinâmica foi propositalmente
aumentada. Neste caso, a intenção é aumentar a possibilidade de valores de níveis encontrados em cenas reais, indo da luz direta do sol até à sombras.
1.3.6
Compressão
A compressão é utilizada para reduzir o tamanho da imagem a ser armazenada, visto que
o tamanho das imagens digitais podem ser muito grandes, em virtude das dimensões das
imagens e da profundidade de bits.
Todas as técnicas de compressão de imagens abreviam uma string de código binário da
1.3 Conceitos Fundamentais do Processamento Digital de Imagens
9
Figura 1.4: Exemplo de imagem cujo intervalo dinâmico foi propositalmente acentuado.
imagem original, segundo algoritmos matemáticos de relativa complexidade, de caráter livre
ou proprietário.
Capítulo 2
Java no Contexto do Processamento
Digital de Imagens
O processamento digital de imagens é comumente realizado na linguagem C, pelo fato desta
ser uma linguagem consolidada, compilada e assim poder resultar em geração de código e
resultados de processamento de uma forma mais rápida.
Porém, esta realidade está sendo modificada com o avanço de outras linguagens de programação. A fim de ilustrar esta modificação, este capítulo trata da utilização da linguagem
Java no contexto do processamento digital de imagens.
2.1
Característica Gerais da Linguagem Java
Java é uma linguagem de programação de computadores proposta pela Sun Microsystems.
Além da sintaxe e semântica da linguagem, Java contém um conjunto de tecnologias aliadas
ao desenvolvimento e execução, ou seja, a linguagem Java é apenas um dos componentes
das tecnologias Java.
O diferencial em relação à suas precursoras é o fato da mesma ser executada em uma
máquina virtual, denominada Java Virtual Machine (JVM). O código em Java gerado pelo
programador é interpretado para bytecodes, uma linguagem intermediária que serve de entrada para a JVM a qual é capaz de executá-los em linguagem de máquina. Desse modo, a
execução depende apenas da JVM e não de detalhes implementados pelo programador. Isto
resulta em uma das grandes vantagens de Java em relação às demais linguagens: o código
10
2.2 Java no Processamento Digital de Imagens
11
gerado não é dependente de plataforma [Deitel and Deitel 2006].
Além desta vantagem, Java apresenta um grande suporte à documentação . Cada ponto
de funcionalidade implementado (classes, métodos, etc. ) é capaz de ser documentado, ou
seja, o programador escreve um texto sobre qual a funcionalidade daquele trecho de código.
Do resultado desta etapa é possível gerar o Javadoc, ou seja, a documentação Java. O Javadoc
gerado resulta em uma API – Application Programming Interface – conjunto de arquivos que
descrevem os componentes de código, qual a sua funcionalidade, seus parâmetros, inclusive
dados de quem é o autor do código. Isto facilita o reuso.
O fácil reuso pode ser citado como uma dos grandes motivadores da utilização da linguagem Java. Além da fácil geração de bibliotecas, o processo de incorporação de funcionalidades desenvolvidas por terceiros é simples, podendo consistir tanto da importação de
bibliotecas quanto de frameworks.
Java também é vista com destaque nos dias atuais, pois com a grande demanda por aplicações Web, é uma das poucas linguagens que possui uma estrutura bem consolidada de
frameworks desenvolvidos para este fim.
2.2
Java no Processamento Digital de Imagens
O Processamento Digital de Imagens é uma tarefa de central interesse na Web. Em um meio
onde vários formatos de dados são bastante utilizados – texto, áudio, imagens – as imagens
costumam ser parte de uma grande porção do tráfego de dados. Em virtude disto, existe uma
demanda por processamento de imagens.
Novos formatos de imagens são criados a cada dia. Os browsers (navegadores da Web)
crescem em tamanho e complexidade por razão da necessidade da instalação de plugins aptos
para a codificação, processamento e decodificação destas imagens. Uma forma de diminuir
este overhead é através do processamento de imagens via Web. Como citado anteriormente,
Java facilita o reuso de código, simplificando a construção de plugins e também possibilita que o processamento destas imagens seja realizado via Web, ou seja, suprindo as duas
maiores deficiências ligadas ao PDI nos dias atuais [Lyon 1999].
2.3 Java Advanced Imaging
2.3
12
Java Advanced Imaging
A API Java Advanced Imaging (JAI) proporciona um conjunto de funcionalidades relacionadas ao processamento digital de imagens. Desenvolvida pela Sun Microsystems, é livre
de royalties, portável e se constitui por uma alternativa flexível para a implementação de
aplicações com processamento digital de imagens desenvolvidas com a linguagem Java.
Nas subseções a seguir, serão apresentadas características gerais desta API, baseadas no
tutorial de Santos [Santos 2004].
2.3.1
Representação de Imagens
Os algoritmos de processamento de imagens requerem a manipulação de pixels. Em virtude
desta necessidade, a JAI apresenta o devido suporte à representação de imagens, sejam elas
bidimensionais ou multidimensionais, levando em conta a possibilidade de manipulação de
diversos formatos existentes, de diferentes modelos de cores, etc.
• PlanarImage: Classe básica para a representação de imagens no JAI. Permite o modo
somente leitura, ou seja,deve ser criada e os valores dos pixels podem ser acessados de
diversas maneiras, mas não podem ser alterados.
• TiledImage: Subclasse de PlanarImage, a qual pode ser usada para leitura e escrita dos
dados da imagem.
• RenderedOp: Mais uma subclasse de PlanarImage, a qual representa um nó em um
processo de renderização. Um processo de renderização de imagens é um conceito
interessante e poderoso do JAI, que permite o processamento de imagens segundo
uma série de passos (operadores e parâmetros), que podem ser aplicados a uma ou
mais imagens.
Além destas representações de imagens, a JAI dá suporte ao processamento independente
de partes de uma mesma imagem. Isto permite um maior eficiência no processamento de
imagens grandes e proporciona maior mobilidade na aplicação de filtros em uma mesma
imagem.
2.3 Java Advanced Imaging
2.3.2
13
Operadores
A API do JAI contém muitos operadores de imagens que podem ser aplicados sem muito
esforço para programação. Estes operadores seguem o conceito de que um operador pode
ser definido como um conjunto de passos aplicado à uma imagem dada.
Estes operadores são especificados de uma forma simplificada: primeiro instancia-se um
ParameterBlock (vetor de dados que será usado para a operação) e a partir deste é obtido um
RenderOp, que pode ser manipulado como uma PlanarImage. Alternativamente, é possível
adicionar uma imagem à instância do ParameterBlock, passando-a como parâmetro.
Um operador é acessado pela JAI através de uma chamada a JAI.create. Os principais
operadores definidos na JAI são:
• Filestore: Define qual o formato que a imagem será salva: JPG,PNG, etc.;
• Fileload: Responsável pela abertura de uma imagem e retorno da mesma segundo uma
PlanarImage;
• Invert: Inverte os bits de uma imagem passada como entrada;
• Rotate: Rotaciona uma imagem de acordo com os graus fornecidos em radianos;
• Convolte: Realiza a convolução de uma imagem com um dado kernel;
• Add: Adiciona os bits de duas imagens;
• Subtract: Realiza a subtração de duas imagens passadas como parâmetro.
• Multiply: Multiplica os valores dos pixels de duas imagens;
• Divide: Divide os valores dos pixels de uma imagem pelos de outra imagem passada
como parâmetro.
De um modo geral, a JAI facilita e simplfica o desenvolvimento de aplicações Java
que realizam o processamento digital de imagens.
Existe um conjunto vasto de ou-
tras funcionalidades providas por esta que podem ser consultadas no site oficial da Sun
[Sun Microsystems 2008].
Capítulo 3
Processamento Digital de Imagens no
Domínio do Espaço
O PDI no domínio do espaço refere-se ao conjunto de técnicas mais conhecidas para a manipulação de imagens. Operações bastante realizadas neste domínio são as operações de
filtragem. Neste capítulo será conceituado o processamento digital de imagens no domínio
do espaço e a apresentação dos principais filtros utilizados neste domínio.
3.1
Conceito
O termo “espacial” se refere à própria imagem plana, ou seja, possui relação com a localização direta dos pixels. De fato, as técnicas de processamento digital de imagens no domínio
do espaço condizem com a manipulação direta de um pixel ou de sua vizinhança.
As técnicas do domínio do espaço são denotadas pela expressão:
g(x, y) = T [f (x, y)]
(3.1)
em que f (x, y) é a imagem de entrada, g(x, y) é a imagem resultante, oriunda de um
processo, e T é um operador sobre f , definido, por exemplo, sobre uma determinada vizinhança do ponto (x, y). Pode-se dizer ainda que T pode operar sobre um conjunto de
imagem, a exemplo do processo de adição de um conjunto de imagens para redução de ruído
[Gonzalez and Woods 2002].
14
3.1 Conceito
15
A principal abordagem que define esta vizinhança de um ponto (x, y) é uma área quadrada ou retangular centrada em (x, y). O operador T é aplicado à cada (x, y) derivando
o valor da função g para este ponto. Visto que T é uma operação local, a filtragem espacial é uma transformação dependente do contexto em que se insere cada pixel considerado
[Queiroz and Gomes 2005].
Levando em consideração um pixel p de coordenadas (i, j), existem dois tipos de vizinhos associados:
1. Vizinhos mais próximos: pixels de coordenadas (i+1, j), (i−1, j), (i, j+1) e (i, j−1);
2. Vizinhos mais distantes: pixels de coordenadas (i−1, j −1), (i−1, j +1), (i+1, j −1)
e (i + 1, j + 1).
Existem tipos de vizinhanças comumente utilizadas em operações locais: as vizinhanças
4-conectada, 6-conectada e 8-conectada. A figura 6.1 ilustra os vizinhos de um pixel, estas
vizinhança e a ligação entre estes e uma operação no domínio do espaço.
P1 P2 P3
P4 P5 P65
P7 P8
P9
Transformação
Parâmetros
Figura 3.1: Exemplo de uma operação no domínio do espaço. Além do conceito de operação
e dos parâmetros da mesma, estão denotados os pixels que compõem a vizinha do pixel no
qual a operação é realizada.
3.2 Filtragem Espacial
3.2
16
Filtragem Espacial
O primeiro passo efetivo do processamento digital de imagens é comumente conhecido como
pré-processamento. Normalmente, esta etapa envolve a filtragem de ruídos e distorções geométricas introduzidos pelos sensores de captura das imagens. consistindo da forma mais
básica do tratamento de imagens.
Alguns operadores de vizinhança trabalham com valores de pixels da imagem da vizinhança e os valores correspondentes de uma sub-imagem que possui as mesmas dimensões
desta vizinhança. À esta sub-imagem denominamos “filtro”, “máscara” ou “kernel”. O processo de filtragem consiste na movimentação do filtro da máscara ponto a ponto na imagem.
Para cada (x, y), o resultado do filtro é calculado utilizando uma relação pré-definida. Para
a filtragem linear, a resposta é dada pela soma dos produtos dos coeficientes do filtro o os
pixels correspondentes da área abrangida pelos filtros da máscara.
A figura 3.2 ilustra um exemplo de aplicação de filtro. Neste caso, uma imagem colorida
é convertida em escala de cinza de acordo com vários níveis de intensidade diferentes. Podemos ilustrar o conceito definido na equação 3.1 da seguinte forma: f (x, y) o pixel colorido
a ser transformado, T a função que converte a cor desse pixel em escala de cinza e g(x, y) o
pixel anterior com nova cor (tom de cinza).
Figura 3.2: Exemplo de utilização de filtro para conversão em escala de cinza. A intensidade
do filtro é modificada em cada exemplo, onde temos a seguinte seqüência: 10, 25, 50, 75 e
80, respectivamente.
Podemos listar alguns dos filtros espaciais mais utilizados:
• Filtros de Suavização
– Filtro da Média de ordem n: Produz como valor do pixel processado a média
aritmética dos valores dos pixels (i, j) de uma vizinhança contendo n pixels. A
figura 3.3 ilustra a aplicação deste filtro.
3.2 Filtragem Espacial
17
Figura 3.3: Exemplo de utilização do filtro da média. Foi aplicada à figura da direita uma
máscara um filtro da Média de ordem 3. O resultado desta operação é a imagem da esquerda.
– Filtro da Mediana de ordem n: produz como valor do pixel de saída a mediana dos valores dos pixels da imagem de entrada em uma vizinhança de (i, j)
contendo n pixels. A figura 3.4 ilustra a aplicação deste filtro.;
Figura 3.4: Exemplo de utilização do filtro da mediana. Foi aplicada à figura da direita
uma máscara um filtro da Mediana de ordem 3. O resultado desta operação é a imagem da
esquerda.
– Filtro da Moda de ordem n: Produz como valor do pixel de saída a moda dos
valores dos pixels da imagem de entrada em uma vizinhança de (i, j) contendo n
pixels. A figura 3.5 ilustra a aplicação deste filtro.
• Filtros operadores de gradiente: Produzem a acentuação ou aguçamento de regiões de
uma imagem nas quais ocorrem variações significativas de níveis de cinza;
– Operador de Roberts: Executa o gradiente cruzado, ou seja, o cálculo das diferenças dos níveis de cinza é executado em uma direção rotacionada de 45o ;
3.2 Filtragem Espacial
18
Figura 3.5: Exemplo de utilização do filtro da mediana. Foi aplicada à figura da direita
uma máscara um filtro da Mediana de ordem 3. O resultado desta operação é a imagem da
esquerda.

Gx = 

1
0
0 −1


Gy = 

0 −1
1

0
A figura 3.6 ilustra a aplicação do operador em questão.
Figura 3.6: Exemplo de utilização do operador de Roberts. Este operador foi aplicado à
imagem do lado esquerdo tendo como resultado a imagem do lado direito.
– Operador de Prewitt: Suaviza a imagem, atenuando o ruído;



1
1
1
−1 0 1






Gy =  0
Gx =  −1 0 1 
0
0



−1 −1 −1
−1 0 1





3.2 Filtragem Espacial
19
A imagem 3.7 ilustra a utilização do operador de Prewitt a uma imagem.
Figura 3.7: Exemplo de utilização do operador de Prewitt. Este operador foi aplicado à
imagem do lado esquerdo tendo como resultado a imagem do lado direito.
– Operador de Sobel: Difere do operador de Prewitt apenas no tocante aos pesos
conferidos aos vizinhos mais próximos não nulos do pixel central;


−1 0 1


Gx =  −2 0 2

−1 0 1






1
2
1


Gy =  0
0
0

−1 −2 −1




A figura 3.8 ilustra a aplicação do operador de Sobel a uma imagem.
Figura 3.8: Exemplo de utilização do operador de Sobel. Este operador foi aplicado à
imagem do lado esquerdo tendo como resultado a imagem do lado direito.
3.3 Morfologia
3.3
20
Morfologia
A Morfologia Matemática (MM) é uma teoria e técnica para a análise e o processamento
de estruturas geométricas, baseada em teoria dos conjuntos, topologia,funções randômicas,
dentre outros.
Os conceitos topológicos e geométricos do espaço contínuo tais como espaço, forma, conectividade, dentre outros, passam a ser caracterizados por MM em espaços discretos ou contínuos. A MM também é base para o processamento morfológico de imagens, que consiste
de um conjunto de operadores de transformação de imagens de acordo com determinadas
caracterizações.
A morfologia de uma imagem refere-se ao contexto de morfologia matemática, na qual
a análise morfológica é uma ferramenta para extrair componentes da imagens que são de
interesse na representação e descrição de regiões tais como bordas, áreas, etc. Além desta
utilidadade, existem técnicas relacionadas à morfologia tais como filtragem, poda, etc. que
são de grande interesse no Processamento Digital de Imagens [Gonzalez and Woods 2002].
Inicialmente o processamento morfológico de imagens foi desenvolvidos para imagens binárias e depois estendido para imagens com maior profundidade de bits.
A idéia básica da morfologia binária é examinar uma imagem como uma simples e prédeterminada forma, desenhando as conclusões em como esta forma se encaixa ou não na
imagem na imagem original. Este elemento examinado é determinado “elemento estruturante” e se caracteriza por ser uma imagem binária.
Dentre os procedimentos morfológicos para o processamento digital de imagens,
destacam-se a erosão e a dilatação. Várias técnicas de mesmo caráter costumam utilizar
tais procedimentos que envolvem erosão, dilatação ou combinações destas duas técnicas.
3.3.1
Dilatação
A dilatação é uma operação que “aumenta” ou “diminui” objetos em uma imagem binária
[Russ 2007].
A dilatação de uma imagem A por uma imagem B é denotada A ⊕ B e definida por
n
o
b z ∩ A 6= ∅
A ⊕ B = z|(B)
(3.2)
3.3 Morfologia
21
em que ∅ é conjunto vazio e B é o elemento estruturante. Tal definição é equivalente
a dizer que a dilatação de A por B é o conjunto consistindo de todos os elementos estruturantes originalmente originalmente localizados que foram refletidos e transladados e que
sobrepõem, pelo menos, alguma porção de A [Gonzalez and Woods 2001]. A figura 3.9
ilustra esta operação.
Figura 3.9: Exemplo de utilização de dilatação. A imagem mais à esquerda é a imagem original. A dilatação foi aplicada com duas intensidades diferentes, de 4 e 8, respectivamente.
3.3.2
Erosão
A erosão remove pixels de áreas contínuas em uma imagem. De modo equivalente, “desliga” pixels que estiveram originalmente “ligados”. O objetivo da erosão é remover pixels
indesejados em certas regiões. O exemplo mais simples de erosão é a remoção de pixels que,
em um processamento anterior, ficaram na imagem mas não são de interesse porque não se
localizam em grandes áreas com determinada característica de interesse, o que significa que
estes pixel podem ser oriundos de ruído, por exemplo. A figura 3.10 ilustra um exemplo de
operação de erosão.
A erosão de uma imagem A pelo elemento estruturante B é definida por:
A ª B = {z ∈ E|Bz ⊆ A}
(3.3)
em que Bz é a translação de B sobre o vetor z, isto é Bz = {b + z|b ∈ B}, ∀z ∈ E.
Quando o elemento estruturante B possui um centro (por exemplo, um disco ou um
quadrado) e o seu centro é localizado na origem E, então a erosão de A por B pode ser
compreendida como o conjunto de pontos alcançados pleo centro de B quando este move-se
dentro de A.
Uma forma alternativa de denotar a erosão de A por B é denotada pela expressão:
3.3 Morfologia
22
Figura 3.10: Exemplo de utilização de erosão. A imagem mais à esquerda é a imagem original. A erosão foi aplicada com duas intensidades diferentes, de 4 e 8, respectivamente.
Esta intensidade indica o número de vizinhos levados em consideração. É interessante observar as diferenças entre a imagem original e as diferentes intensidades do procedimento
realizado.
AªB =
\
b∈B
A−b .
(3.4)
Capítulo 4
Processamento Digital de Imagens no
Domínio da Freqüência
O processamento digital de Imagens no domínio da freqüência refere-se à uma área do processamento digital de imagens que engloba a análise e operações com imagens levando em
consideração as variações de valores de intensidade no domínio do espaço. O estudo desta
vertente do PDI é de grande interesse pois além de possibilitar uma ampliação no número de
técnicas que podem ser empregadas para o processamento de uma imagem, permite a melhor
compreensão de conceitos relacionados ao processamento no domínio do espaço.
4.1
Conceito de Freqüência em uma Imagem
A saída de uma imagem no espaço transformado pode ser analisada, interpretada e posteriormente processada para a implementação de diversas tarefas do processamento de imagens.
Tais transformações são bastante utilizadas, pois a partir dos resultados obtidos, é possível
expressar uma imagem como a combinação de um conjunto de sinais básicos, conhecidos
como funções básicas.
Um domínio de grande interesse é o domínio da freqüência. A representação de imagens
neste domínio parte do pressuposto de que qualquer sinal espacial ou temporal possui uma
representação equivalente no domínio da freqüência. Considerando uma imagem digital, a
freqüência significa a variação sofrida ao longo de uma imagem dos valores associados aos
pixels [Rossin 2006].
23
4.2 Transformada de Fourier no Processamento Digital de Imagens
4.2
24
Transformada de Fourier no Processamento Digital de
Imagens
A compreensão da formação e análise de sinais bidimensionais, a exemplo de imagens, têm
sido possível graças ao advento das várias transformações ortogonais. A transformada de
Fourier é uma das ferramentas mais importante e vem sendo amplamente utilizada não somente para a compreensão da natureza de uma imagem e sua formação, mas também no seu
processamento.
No caso da Transformada de Fourier de uma imagem, os sinais básicos são senóides de
diferentes períodos, descrevendo as freqüências espaciais de uma imagem. Isto implica que
uma imagem é decomposta em senóides, utilizando a Transformada de Fourier, e as diferentes amplitudes constituem o espectro de freqüências de uma imagem . Assim, dado que uma
imagem é um sinal bidimensional no domínio do espaço, a utilização da Transformada de
Fourier possibilita a análise desta imagem como um conjunto de senóides em várias direções,
onde cada uma delas possui uma freqüência precisa [Acharya and Ray 2005].
Os capítulos 5 e 6 apresentam a Transformada de Fourier Discreta e Rápida, que são
utilizadas para o processamento digital de imagens em computadores digitais.
Capítulo 5
Transformada de Fourier
A Transformada de Fourier é uma importante ferramenta no processamento de sinais utilizada para decompor um sinal em componentes de seno e cosseno.
5.1
Introdução à Transformada de Fourier
Seja f (x) uma função contínua de uma variável real x. A transformada de Fourier de f (x)
denotada por “F(x)”, é definida pela equação
Z
∞
F (u) =
onde j =
√
f (x) exp−j2πux dx
(5.1)
−∞
−1
Dado F (u), f (x) pode ser obtida através da transformada inversa de Fourier
Z
∞
f (x) =
F (u) expj2πux du
(5.2)
−∞
A variável u que aparece na transformada de Fourier é denominada variável de freqüência. Esse nome deriva da expressão do termo exponencial, exp [−jπ2ux], usando a fórmula
de Euler, na forma [Gonzalez and Woods 2001]
exp [−j2πux] = cos 2πux − j sin 2πux
(5.3)
Na imagem 5.1 tem-se uma interpretação geométrica da fórmula de Euler (equação 5.3).
Onde ϕ representa o vetor rotativo (fasor).
25
5.2 A Transformada Discreta de Fourier Bidimensional
26
Figura 5.1: Interpretação geométrica da fórmula de Euler.
5.2
A Transformada Discreta de Fourier Bidimensional
Como é do nosso interesse apenas a aplicação da transformada em processamento de imagens, nós iremos dar maior ênfase na discussão da Transformada Discreta de Fourier Bidimensional(Discret Fourier Transform – DFT).
A DFT é uma amostra da Transformada de Fourier e, portanto, não contém todas as
freqüências que formam uma imagem, mas apenas um conjunto de amostras que é grande
o suficiente para descrever completamente o domínio espacial da imagem. O número de
freqüências corresponde ao número de pixels no domínio espacial da imagem, isso significa
que a imagem no domínio do espaço e da freqüência são do mesmo tamanho.
F (u, v) =
M −1 N −1
−j·2 ux vy
1 XX
f (x, y) · exp π ( M + N )
M · N x=0 y=0
f (x, y) =
M
−1 N
−1
X
X
2·j
F (u, v) · exp π
( ux
+ vy
)
M
N
(5.4)
(5.5)
u=0 v=0
Note que f (x, y) é a imagem e é real, mas F (u, v) é a Transformada de Fourier da
imagem e geralmente é complexa, isto é
F (u, v) = R(u, v) + jI(u, v)
(5.6)
Onde R(u, v) e I(u, v) são os componentes real e imaginário de F (u, v) respectivamente.
Normalmente é conveniente expressar a equação 5.6 na forma exponencial, isto é
5.2 A Transformada Discreta de Fourier Bidimensional
F (u, v) =| F (u, v) | expjΦ(u,v)
em que
| F (u, v) |=
p
27
(5.7)
R(u, v)2 + I(u, v)2
(5.8)
I(u, v)
]
R(u, v)
(5.9)
e
Φ(u, v) = tan [
A função magnitude | F (u, v) | é chamada espectro de Fourier de f (x, y) e Φ(u, v) é o
ângulo da fase.
A magnitude descreve o “quanto” de uma determinada componente de freqüência está
presente e a fase descreve “onde” a componente de freqüência está na imagem.
5.2.1
Importância da fase e magnitude
A Transformada de Fourier produz como saída uma imagem no domínio da freqüência que
pode ser visualizada com duas imagens, ou com as partes real e imaginária, ou com magnitude e fase. Em processamento de imagem geralmente é apresentado apenas a magnitude,
uma vez que contém a maior parte da informação geométrica da estrutura da imagem no domínio espacial. No entanto, se queremos re-transformar a imagem no domínio da freqüência
em sua correspondente no domínio do espaço corretamente, temos de assegurar a preservação tanto da magnitude quanto da fase da imagem no domínio de Fourier.
5.2.2
Propriedades da Transformada Bidimensional de Fourier
Separabilidade
A propriedade de separabilidade pode ser descrita como o cálculo de uma transformada ndimensional como uma sucessão de n transformadas unidimensionais.
Em se tratando de processamento digital de imagens, é possível restringir para duas dimensões, ou seja, efetuar o cálculo de uma transformada bi-dimensional é equivalente à
sucessão de duas transformadas uni-dimensionais. Podemos ilustrar este caso através da
seguinte relação:
5.2 A Transformada Discreta de Fourier Bidimensional
#
"
N −1
M −1
2·i·π·wy ·y
2·i·π·wx ·x
1 X
1 X
√
F[f (x, y)] ≡ F (wx , wy ) = √
e N
f (x, y) · e M
n x=0
M y=0
28
(5.10)
ou, de modo equivalente:
F (wx , wy ) = F[F (x, wy )]
(5.11)
onde F (x, wy ) denota a transformada unidimensional de f (x, y) sobre a coordenada y,
mantendo-se se x fixo.
Translação
A translação é uma propriedade da transformada de Fourier e possui aplicações em 3 domínios:
1. Translação espacial;
2. Translação em duas dimensões;
3. Translação em freqüência.
A translação que nos interessa é a translação em freqüência, pois é de nosso interesse
analisar uma imagem no domínio da freqüência. Esta translação é definida por:
F[e2·i·π·w0 ·x f (x)] = F (w − w0 )
(5.12)
De um modo geral, a translação denota uma rotação. No caso da translação em freqüência
denota-se uma rotação de acordo com a freqüência da função em questão.
Periodicidade e Simetria Conjugada
A periodicidade é decorrente da definição da Transformada de Fourier. A transformada de
uma função qualquer é uma função periódica com período N em u e M em v:
F (wx , wy ) = F (wx + N, wy ) = F (wx , wy + M ) = F (wx + N, wy ) + F (wx , wy + M (5.13)
5.2 A Transformada Discreta de Fourier Bidimensional
29
Desta propriedade se pode ver que é possível caracterizar uma função no domínio de
freqüências completamente, especificando-se os valores dentro destes períodos, N e M .
Considerando o caso em que os sinais de f (x, y) são reais, tem-se a propriedade de simetria:
|F (wx , y)| = |F (−wx , y)| = |F (wx , −wy )| = |F (−wx , −wy )|
Convolução e Correlação
(5.14)
Capítulo 6
Transformada Rápida de Fourier
A transformada rápida de Fourier (Fast Fourier Transform – FFT) é um algoritmo eficiente
para computar a Transformada Discreta de Fourier e a sua inversa. A FFT é de grande importância para uma variedade de aplicações, a citar o processamento digital de imagens, a
resolução de equações diferenciais parciais e também algoritmos para multiplicação rápida
de números inteiros muito grandes. Este capítulo visa conceituar a FFT e apresentar o algoritmo de Cooley-Tukey, que a implementa.
6.1
Definição
Através da utilização da Transformada Rápida de Fourier (FFT), a qual tira proveitos de
propriedades especiais das raízes complexas de unidade1 , é possível computar a DFT em
tempo Θ(n · lgn), em oposição ao tempo Θ(n2 ) utilizado pela DFT [Cormen et al. 2002].
O algoritmo de Cooley-Tukey aqui apresentado segue a estratégia de divisão e conquista,
com execução bastante similar à do conhecido algoritmo de ordenação Merge-Sort. A figura bla ilustra como este algoritmo fraciona a entrada em instâncias menores do problema,
recombinadas com a utilização de somas, graças à propriedade da similaridade da Transformada de Fourier.
1
Complex roots of unity
30
6.1 Definição
31
...
...
...
...
...
...
...
...
Figura 6.1: Exemplo da estratégia de divisão e conquista implementada pelo algoritmo de
Cooley-Tukey. O problema é dividido até chegar no caso base, de tamanho 1, e a partir deste
ponto as soluções são recombinadas com a utilização de somas.
6.1.1
Raízes complexas de unidade
A n-ésima raiz complexa da unidade é um número complexo ω tal que:
ωn = 1
isso significa que existem exatamente n complexos que são raízes da unidade: e
(6.1)
2·π·i·k
n
para k = 0, 1, . . . , n − 1. Para interpretar esta fórmula, basta utilizar a definição do expoente
de um número complexo:
ei·u = cos(u) + i · sin(u)
(6.2)
A figura 6.2 mostra as n raízes complexas da unidade. Tais raízes são igualmente espaçadas ao longo de uma circunferência de raio unitário com origem no plano complexo
[Cormen et al. 2002].
6.1.2
A idéia do algoritmo da FFT
O algoritmo da FFT emprega a estratégia de divisão e conquista, separando os indíces ímpares e pares dos coeficientes do polinômio A(x) com o intuito de definir os polinômios
6.1 Definição
32
Figura 6.2: Os valores de ω80 , ω81 , . . . , ω87 no plano complexo, onde ω = e
2·i·π
8
é a principal
8a raiz da unidade.
A[0](x) e A[1](x) de grau de abrangência
n
2
em relação ao polinômio inicial. Ou seja, defi-
nimos A[0](x) e A[1](x) da seguinte forma:
n
A[0](x) = a0 + a2 · x + a4 · x2 + . . . + an−2 · x 2 −1
n
A[1](x) = a1 + a3 · x + a5 · x2 + . . . + an−1 · x 2 −1
Observe que A[0] contém todos os coeficientes de índices ímpares (cuja representação binária termina em 0) e A[1] contém todos os coeficientes de índices pares (cuja representação
binária termina em 1), de modo que voltamos ao polinômio inicial de modo trivial:
A(x) = A[0](x) + A[1](x)
(6.3)
O problema então passa a ser definido segundo dois aspectos:
1. Aplicar o mesmo procedimento de divisão e conquista para os polinômios A[0](x) e
A[1](x) até os casos-base:
(ωn0 )2 , (ωn1 )2 , . . . , (ωnn−1 )2
2. Combinar as soluções resultando na equação 6.3
(6.4)
6.2 Algoritmo de Cooley-Tukey
6.2
33
Algoritmo de Cooley-Tukey
O algoritmo mais popular para a Transformada Rápida de Fourier é o algoritmo de CooleyTukey [Cooley and Tukey 1965], que utiliza a idéia de divisão e conquista. A origem deste
algoritmo é baseada no trabalho proposto Carl Friedrich Gauss por volta de 1805.
Para valores ímpares de n, o k-ésimo elemento da Transformada de Fourier é:
F[a]k =
n−1
X
ax z xk
x=0
n
=
−1
2
X
ax z
xk
+
n
=
ax z xk
x= n
2
x=0
−1
2
X
n
X
ax z
x=0
xk
+
n
X
x= n
2
n
ax+ n2 z (x+ 2 )k
n
−1 ³
2
´
X
kn
(lef t)
(right)
2
ax
+ z ax
z xk
=
(6.5)
x=0
onde z = eσ
i·2·π
n
e σ = ±1 é o sinal da transformada e k ∈ {0, 1, . . . , n − 1}.
Na prática porém, é preciso uma uma definição mais geral que seja abrangente para
números pares e ímpares. Deste modo, é possível estender a definição acima. Para tanto,
ao invés de considerar k ∈ 0, 1, . . . , n − 1, é necessário utilizar a representação de k dada
através da seguinte equação:
k =2·j+δ
(6.6)
onde j ∈ {0, 1, . . . , n2 − 1} e δ ∈ {0, 1}. É importante observar que apesar da representação ser diferenciada, a equivalência com a definição anteriormente proposta é mantida.
Assim, a relação 6.5 pode ser expressa da seguinte forma:
n−1
X
x=0
n
ax z x(2·j+δ) =
−1
2
X
¡
¢ x·(2·j+δ)
n
t)
+ z (2·j+δ) 2 a(right)
z
a(lef
x
x
x=0
(6.7)
 Pn ³
´
−1
(lef t)
(right)
2
 x=0
ax
+ ax
z 2·x·j Para δ = 0
³
´
=
n
t)
(right)
 P 2 −1 z x a(lef
+ ax
z 2·x·j Para δ = 1
x
x=0
6.2 Algoritmo de Cooley-Tukey
onde z = (2 · j + δ) ·
n
2
34
= e±i·π·δ é igual a mais ou menos um para δ = 0 ou δ = 1,
correspondendo aos casos em que k é ímpar ou par.
As duas equações resultantes do desenvolvimento da equação 6.7 podem ser escritas de
modo compacto, como mostram as equações 6.8 e 6.9:
n
F[a](pares) = 2 F[a(lef t) + a(right) ]
h 1¡
¢i
n
F[a](ímpares) = 2 F S 2 a(lef t) + a(right)
(6.8)
(6.9)
O resultado do algoritmo de Cooley-Tukey é idêntico ao da aplicação da Transformada
Discreta de Fourier, diferenciando-se deste apenas pelo modo de cálculo para a obtenção dos
valores da transformada [Arndt 2006].
Apêndice A
Estrutura deste documento
35
Apêndice B
Imagens
Este apêndice ilustra de forma visual alguns dos conceitos apresentados neste material. A
proposta é que por meio deste, a compreensão dos conceitos seja facilitada, visto que são
utilizados exemplos visuais e que através deles é possível ter melhor conhecimento do resultado direto da aplicação da técnica e também possibilitar suporte para a decisão de qual
técnica é mais adequada para uma dada situação.
B.1 Processamento Digital de Imagens no Domínio do Espaço
As imagens ilustradas nesta seção referem-se aos exemplos e técnicas ilustradas no capítulo
3.
Em alguns casos, a aplicação dos filtros de média, mediana ou moda podem ter efeitos
destrutivos na imagem. Um caso comum, é o de imagens que possuem um grande número
de tonalidades e com o aumento das dimensões do filtro utilizado, as tonalidades resultantes
diferem consideravelmente da inicial. Esta situação é ilustrada na figura B.1.
Em situações em que a distribuição de tonalidades em uma imagem é aproximadamente
uniforme, os efeitos dos filtros de média, mediana e moda podem ser bastante similares. Esta
situação é ilustrada na figura B.2.
Os operadores de Roberts, Sobel e Prewitt são de grande interesse na detecção de bordas.
De um modo geral, esta é a função destes três operadores, que diferem em termos de como
36
B.1 Processamento Digital de Imagens no Domínio do Espaço
37
esta borda é determinada. Esta característica é ilustrada na figura B.3
A
B
D
E
C
Figura B.1: A imagem A é a imagem original. As demais correspondem à aplicação do filtro
da média de dimensões de 3, 5, 7 e 9, respectivamente.
A
B
C
D
Figura B.2: A imagem A é a imagem original. As imagens B, C e D correspondem à
aplicação dos filtros de média, mediana e moda, respectivamente, de dimensão 3 × 3.
B.1 Processamento Digital de Imagens no Domínio do Espaço
A
B
C
D
38
Figura B.3: Exemplo de aplicação dos operadores de Roberts (B), Prewitt (C) e Sobel
(D) a uma imagem (A). É interessante observar como as bordas da imagem original são
acentuadas após a aplicação destes operadores.
Bibliografia
[Acharya and Ray 2005] Acharya, T. and Ray, A. K. (2005). Image Processing - Principles
and Applications. John Wiley & Sons.
[Arndt 2006] Arndt, J. (2006). Algorithms for programmers – ideas and source code.
[Cooley and Tukey 1965] Cooley, J. W. and Tukey, J. W. (1965). An algorithm for the machine calculation of complex Fourier series. Math. Comput, 19:297–301.
[Cormen et al. 2002] Cormen, T. H., Leiserson, C. E., Rivest, R. L., and Stein, C. (2002).
Algoritmos - Teoria e Prática. Elsevier.
[Cornell University Library 2003] Cornell
ving
theory
into
pratice
-
University
digital
image
Library
tutorial.
http://www.library.cornell.edu/preservation/tutorial/contents.html.
(2003).
Disponível
Acessado
Moem
em
10/06/2007.
[Deitel and Deitel 2006] Deitel, H. M. and Deitel, P. J. (2006). Java - Como Programar.
Pearson.
[Gonzalez and Woods 2002] Gonzalez, R. and Woods, P. (2002). Digital Image Processing
Using Matlab. Prentice Hall.
[Gonzalez and Woods 2001] Gonzalez, R. C. and Woods, R. E. (2001). Digital Image Processing, volume 2. Prentice Hall.
[Lyon 1999] Lyon, D. A. (1999). Image Processing in Java. Prentice Hall.
[Queiroz and Gomes 2005] Queiroz, J. E. R. and Gomes, H. M. (2005). Introdução ao processamento digital de imagens. In Revista de Informática Teórica e Aplicada.
39
BIBLIOGRAFIA
40
[Rossin 2006] Rossin, P. (2006). Image processing in the frequency domain. Disponível em
www.cse.lehigh.edu/˜spletzer.
[Russ 2007] Russ, J. C. (2007). The image processing handbook. Taylor & Francis Group.
[Santos 2004] Santos, R. (2004). Java advanced imaging api: A tutorial. Rita - Revista de
Informática Teórica e Aplicada, 11:93–124.
[Sun Microsystems 2008] Sun Microsystems (2008).
cation programming interface.
Java advanced imaging appli-
Disponível em http://java.sun.com/products/java-
media/jai/forDevelopers/jai-apidocs/index.html.
Download

UNIVERSIDADE FEDERAL DE CAMPINA GRANDE