Prévia do material em texto
Fundamentos de Processamento
Digital de Imagens
Solomon CadZeroPDFG.indd 1 11.06.13 16:06:34:10
O GEN | Grupo Editorial Nacional reúne as editoras Guanabara Koogan, Santos, Roca,
AC Farmacêutica, Forense, Método, LTC, E.P.U. e Forense Universitária, que publicam nas
áreas cientí�ca, técnica e pro�ssional.
Essas empresas, respeitadas no mercado editorial, construíram catálogos inigualáveis,
com obras que têm sido decisivas na formação acadêmica e no aperfeiçoamento de
várias gerações de pro �ssionais e de estudantes de Administração, Direito, Enferma-
gem, Engenharia, Fisioterapia, Medicina, Odontologia, Educação Física e muitas outras
ciências, tendo se tornado sinônimo de seriedade e respeito.
Nossa missão é prover o melhor conteúdo cientí�co e distribuí-lo de maneira �exível e
conveniente, a preços justos, gerando benefícios e servindo a autores, docentes, livrei-
ros, funcionários, colaboradores e acionistas.
Nosso comportamento ético incondicional e nossa responsabilidade social e ambiental
são reforçados pela natureza educacional de nossa atividade, sem comprometer o cres-
cimento contínuo e a rentabilidade do grupo.
Solomon CadZeroPDFG.indd 2 11.06.13 16:06:34:10
Fundamentos de Processamento
Digital de Imagens
Uma Abordagem Prática com
Exemplos em Matlab
Chris Solomon
School of Physical Sciences, University of Kent, Canterbury, UK
Toby Breckon
School of Engineering, Cranfield University, Bedfordshire, UK
Tradução e Revisão Técnica
J. R. Souza, Ph.D.
Professor Adjunto da Universidade do Estado do Rio de Janeiro
Solomon CadZeroPDFG.indd 3 11.06.13 16:06:34:10
CIP-BRASIL. CATALOGAÇÃO-NA-FONTE
SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ
S674f
Solomon, Chris
Fundamentos de processamento digital de imagens : uma abordagem prática com exemplos
em Matlab / Chris Solomon e Toby Breckon ; tradução José Rodolfo Souza. – 1. ed. – Rio de
Janeiro : LTC, 2013.
il. ; 24 cm.
Tradução de: Fundamentals of digital image processing: a practical approach with examples in Matlab
Inclui bibliografia e índice
ISBN 978-85-216-2347-2
1. Matlab (Programa de computador). 2. Processamento de imagem – Técnicas digitais I.
Breckon, Toby. II. Título.
13-00953. CDD: 006.7
CDU: 004.032.06
Os autores e a editora empenharam-se para citar adequadamente e dar o devido crédito a todos os detentores dos
direitos autorais de qualquer material utilizado neste livro, dispondo-se a possíveis acertos caso, inadvertidamente,
a identificação de algum deles tenha sido omitida.
Não é responsabilidade da editora nem dos autores a ocorrência de eventuais perdas ou danos a pessoas ou bens que
tenham origem no uso desta publicação.
Apesar dos melhores esforços dos autores, do tradutor, do editor e dos revisores, é inevitável que surjam erros no
texto. Assim, são bem-vindas as comunicações de usuários sobre correções ou sugestões referentes ao conteúdo
ou ao nível pedagógico que auxiliem o aprimoramento de edições futuras. Os comentários dos leitores podem ser
encaminhados à LTC – Livros Técnicos e Científicos Editora pelo e-mail ltc@grupogen.com.br.
Traduzido de
FUNDAMENTALS OF DIGITAL IMAGE PROCESSING: A PRACTICAL APPROACH WITH
EXAMPLES IN MATLAB, FIRST EDITION
Copyright © 2011 by John Wiley & Sons, Ltd
All Rights Reserved. Authorized translation from the English language edition published by John Wiley & Sons
Limited. Responsibility for the accuracy of the translation rests solely with LTC – Livros Técnicos e Científicos
Editora Ltda., and is not the responsibility of John Wiley & Sons Limited. No part of this book may be reproduced in
any form without the written permission of the original copyright holder, John Wiley & Sons Limited.
Esta edição é uma publicação por acordo com a Blackwell Publishing Limited, Oxford.
Traduzida pela LTC – Livros Técnicos e Científicos Editora Ltda. da versão original na língua inglesa. A
responsabilidade pela exatidão da tradução é somente da LTC – Livros Técnicos e Científicos Editora Ltda., não tendo
a Blackwell Publishing Limited nenhuma responsabilidade.
MATLAB® é marca registrada da empresa The MathWorks, Inc. e é utilizada com autorização. A MathWorks não
garante a precisão do texto ou dos exercícios contidos neste livro. O uso deste livro ou das discussões sobre o software
MATLAB® ou relacionadas aos produtos não são endossadas ou garantidas pela The MathWorks no que se refere à
abordagem pedagógica especial ou ao uso especial do software MATLAB®.
Direitos exclusivos para a língua portuguesa
Copyright 2013 by
LTC __ Livros Técnicos e Científicos Editora Ltda.
Uma editora integrante do GEN | Grupo Editorial Nacional
Reservados todos os direitos. É proibida a duplicação ou reprodução deste volume, no todo
ou em parte, sob quaisquer formas ou por quaisquer meios (eletrônico, mecânico, gravação, fotocópia,
distribuição na internet ou outros), sem permissão expressa da editora.
Travessa do Ouvidor, 11
Rio de Janeiro, RJ __ CEP 20040-040
Tels.: 21-3543-0770 / 11-5080-0770
Fax: 21-3543-0896
ltc@grupogen.com.br
www.ltceditora.com.br
Editoração Eletrônica:
Solomon CadZeroPDFG.indd 4 11.06.13 16:06:35:10
Sumário
Prefácio viii
1 Representação 1
1.1 O que é uma imagem? 1
1.1.1 Layout de uma imagem 1
1.1.2 Cor de imagens 2
1.2 Resolução e quantização 3
1.2.1 Decomposição em plano de bit 4
1.3 Formatos de imagens 5
1.3.1 Tipos de dados de imagens 6
1.3.2 Compressão de imagens 8
1.4 Espaços de cor 8
1.4.1 RGB 9
1.4.1.1 Conversão de imagens RGB em escala de cinza 10
1.4.2 Espaço de cor perceptual 12
1.5 Imagens em Matlab 13
1.5.1 Leitura, escrita e exame de imagens 13
1.5.2 Exibição básica de imagens 14
1.5.3 Acesso a valores de pixel 15
1.5.4 Conversão entre tipos de imagem 16
2 Formação 19
2.1 Como uma imagem é formada? 19
2.2 Matemática da formação de imagens 20
2.2.1 Introdução 20
2.2.2 Sistemas lineares de captura de imagens 21
2.2.3 Integral de superposição linear 21
2.2.4 Função delta de Dirac ou função impulso 23
2.2.5 Função de espalhamento de ponto 25
2.2.6 Sistemas lineares invariantes sob translação e integral de convolução 26
2.2.7 Convolução: importância e significado 27
2.2.8 Convoluções múltiplas: N elementos de captura de imagens em um
sistema linear invariante sob translação 31
2.2.9 Convolução digital 31
2.3 Engenharia da formação de imagens 34
2.3.1 A câmera 34
Solomon CadZeroPDFG.indd 5 11.06.13 16:06:35:10
vi sumário
2.3.2 Processo de digitalização 36
2.3.2.1 Quantização 36
2.3.2.2 Hardware para digitalização 38
2.3.2.3 Resolução versus desempenho 39
2.3.3 Ruído 40
3 Pixels 44
3.1 O que é um pixel? 44
3.2 Operações em pixels 46
3.2.1 Operações aritméticas em imagens 46
3.2.1.1 Adição e subtração com imagens 46
3.2.1.2 Multiplicação e divisão com imagens 48
3.2.2 Operações lógicas com imagens 49
3.2.3 Aplicação de limiar 50
3.3 Operações em imagens baseadas em pontos 52
3.3.1 Transformação logarítmica 52
3.3.2 Transformação exponencial 54
3.3.3 Transformação em lei de potência (gama) 55
3.3.3.1 Aplicação: correção gama 56
3.4 Distribuições de pixels: histogramas 58
3.4.1 Histogramas para a seleção de limiares 60
3.4.2 Aplicação adaptativa de limiar 61
3.4.3 Alongamento de contraste 62
3.4.4 Equalização de histogramas 64
3.4.4.1 Teoria de equalização de histogramas 64
3.4.4.2 Teoria de equalização de histogramas: caso discreto 65
3.4.4.3 Equalização de histogramas na prática 66
3.4.5 Casamento de histogramas 67
3.4.5.1 Teoria de casamento de histogramas 68
3.4.5.2 Teoria de casamento de histogramas: caso discreto 69
3.4.5.3 Casamento de histogramas na prática 70
3.4.6 Equalização adaptativa de histograma 71
3.4.7 Operações em histogramas de imagens em cores 74
4 Realce 78
4.1 Por que aplicar realce? 78
4.1.1 Realce por meio da filtragem de imagens 78
4.2 Vizinhanças de pixels 79
4.3 Núcleos de filtros e a mecânica de filtragem linear 80
4.3.1 Filtragem espacial não linear 82
4.4 Filtragem para remoção de ruído 83
4.4.1 Filtragem pela médianos per-
mitirá raciocinar matematicamente, usando o conhecimento das condições em que a imagem foi
originada.
2.2.1 Introdução
De um ponto de vista matemático geral, podemos ver a formação de uma imagem como um processo
que transforma uma distribuição de entrada em uma distribuição de saída. Assim, uma simples lente
pode ser vista como um ‘sistema’ que transforma uma distribuição espacial de luz em um domínio
(plano do objeto) em uma distribuição em outro plano (plano de imagem). De modo similar, um
sistema de captura de imagens médicas de ultrassom transforma um conjunto de valores de refle-
xões acústicas espacialmente distribuídos em um correspondente conjunto de sinais de intensidade
que são exibidos visualmente como uma imagem de intensidade em escala de cinza. Seja qual for a
natureza física específica das distribuições de entrada e de saída, o conceito de mapeamento entre
uma distribuição de entrada (aquilo que desejamos investigar, ver ou visualizar) e uma distribuição
de saída (o que efetivamente medimos ou produzimos com nosso sistema) continua válido. A abor-
Figura 2.1 Visão geral do ‘sistema’ de formação de uma imagem e o efeito da PSF.
Solomon 02PDFG.indd 20 21.05.13 11:12:55:10
Formação 21
dagem de teoria de sistemas é uma forma simples e conveniente de conceituar o processo de captura
de imagens. Qualquer dispositivo de captura de imagens é um sistema, ou uma ‘caixa preta’, cujas
propriedades são definidas pelo modo em que uma distribuição de entrada é mapeada em uma dis-
tribuição de saída. A Figura 2.2 resume este conceito.
O processo segundo o qual um sistema de captura de imagens transforma a entrada na saída pode
ser visto de uma perspectiva alternativa; especificamente, a de Fourier ou do domínio da frequência.
Segundo esta perspectiva, imagens consistem na superposição de funções harmônicas de diferentes
frequências. Sistemas de captura de imagens atuam, portanto, sobre o conteúdo de frequência espa-
cial da entrada para produzir uma saída com conteúdo de frequência espacial modificado. Métodos
do domínio da frequência são poderosos e de grande valia no processamento de imagens, e serão
discutidos no Capítulo 5. Primeiro, devotemos algum tempo buscando entender os fundamentos
matemáticos do processamento de imagens.
2.2.2 Sistemas lineares de captura de imagens
Sistemas e operações lineares são extremamente importantes no processamento de imagens, pois, na
vida real, a maioria dos sistemas de captura de imagens pode ser bem aproximada por sistemas line-
ares. Ademais, existe um extenso e bem conhecido corpo de teoria sobre sistemas lineares. A teoria
não linear não é tão desenvolvida e entendida como a linear e, na prática, desvios da linearidade são
geralmente tratados por meio de técnicas aproximadas que exploram métodos lineares.
Um sistema de captura de imagens descrito por um operador S é linear se, para quaisquer duas
distribuições de entrada X e Y e quaisquer dois escalares a e b, tivermos
(2.2)
Em outras palavras, a aplicação do operador linear a uma soma ponderada de duas entradas produz
o mesmo resultado que a aplicação do operador a cada uma das entradas separadamente seguida
da soma ponderada das saídas. Para uma ilustração concreta deste conceito, consideremos as duas
simples distribuições de entrada ilustradas na Figura 2.3, que consistem em um círculo e em uma
cruz. Estas distribuições radiam um fluxo arbitrário (de fótons, raios X, onda ultrassônica ou de ou-
tra natureza qualquer), que é imperfeitamente capturado por nosso sistema linear. A primeira linha
da Figura 2.3 mostra as duas entradas, a soma das mesmas e o resultado da aplicação do operador
linear (desfocalização) à soma. A segunda linha mostra o resultado da aplicação do operador a cada
distribuição separadamente e a soma das correspondentes saídas. Nos dois casos, o resultado final é
o mesmo. O operador aplicado na Figura 2.3 é uma convolução com desfocalização (blur) gaussiana,
um tópico que exploraremos mais adiante.
2.2.3 Integral de superposição linear
Consideremos a Figura 2.4, em que temos uma função de entrada genérica bidimensional f(x′, y′) em
um domínio de entrada (x′, y′) e a resposta 2D g(x, y) do sistema de captura de imagens no domínio
de saída (x, y). No caso mais geral, devemos admitir a possibilidade de que cada ponto do domínio
Figura 2.2 Abordagem de sistema ao processo de captura de imagens. O processo é visto como um operador
S que atua sobre a distribuição de entrada I para produzir a saída O.
Solomon 02PDFG.indd 21 21.05.13 11:12:56:10
22 Capítulo 2
de entrada possa, de alguma forma, contribuir para a saída. Se o sistema for linear, as contribuições
à saída final devem se combinar linearmente. Portanto, a formação de uma imagem linear é descrita
por um operador integral, chamado de integral de superposição linear:
(2.3)
Na verdade, esta integral expressa algo muito simples. Para entender isto, consideremos um ponto
arbitrário no domínio de saída, com coordenadas (x, y). Desejamos determinar g(x, y), a resposta
de saída no ponto em questão. Para facilitar o entendimento da integral de superposição linear, a
desmembramos em três passos:
(1) Tomar o valor da função de entrada f em algum ponto no domínio de entrada (x′, y′) e multi-
plicá-lo por um algum peso h, que determina a parcela contribuída pelo fluxo de entrada neste
ponto particular ao ponto de saída.
(2) Repetir o passo anterior para cada ponto válido no domínio de entrada e, a cada vez, multiplicar
por um peso apropriado.
(3) Somar (ou seja, integrar) todas as contribuições para obter a resposta g(x, y).
Figura 2.3 Demonstração da ação de um opera-
dor linear S. Aplicação do operador (neste caso,
uma desfocalização [blur]) às entradas e a sub-
sequente combinação linear dos resultados pro-
duz a mesma saída que a combinação linear das
entradas e subsequente aplicação do operador.
Figura 2.4 Princípio de superposição linear.
Cada ponto na saída é dado por uma soma
ponderada (integral) de todos os pontos na
entrada. A função de ponderação é chamada
função de espalhamento de ponto e especifica
a contribuição de cada um e de todos os pon-
tos na entrada a cada um e todos os pontos
na saída.
Solomon 02PDFG.indd 22 21.05.13 11:12:57:10
Formação 23
Fica claro que é a função de ponderação h que determina o comportamento básico do sistema de
captura de imagens. Essa função nos informa a contribuição específica feita por cada ponto infinite-
simal no domínio de entrada ao resultante domínio de saída. No caso mais geral, essa é uma função
de quatro variáveis, pois devemos ter em mente que a contribuição de um dado ponto (x′, y′) no
espaço de entrada a um particular ponto (x, y) no espaço de saída depende da localização exata dos
dois pontos. No contexto de captura de imagens, a função de ponderação h é referida como função de
espalhamento de ponto (PSF − Point-Spread Function). A razão para esta denominação será explicada
em breve. Primeiro, apresentaremos um importante conceito no processamento de imagens: a fun-
ção delta (de Dirac) ou função impulso.
2.2.4 Função delta de Dirac ou função impulso
No processamento de imagens, a função delta ou impulso é usada para representar matematicamente
uma fonte de intensidade luminosa que ocupa uma região muito pequena (infinitesimal) no espaço.
Essa função pode ser modelada de diferentes maneiras,1 mas, sem dúvida, o mais simples consiste
em considerá-la como a forma limite de uma função retangular, cuja amplitude é o inverso da largu-
ra, quando a largura tende a zero. A função retangular 1D é definida como
(2.4)
Assim, as funções delta 1D e 2D podem ser definidas como
(2.5)
A Figura 2.5 ilustra o comportamento da função retangular à medida que a → 0. Vemos que:
À medida que a → 0, o suporte da função (região não zero) tende a uma região infinitamente
pequena, nos dois lados de x = 0.
À medida que a → 0, a altura da função tende a infinito, mas a área total soba função permanece
igual à unidade.
δ (x) é, portanto, uma função que é zero em todos os pontos, exceto em x = 0. Neste ponto, a fun-
ção tende a um valor infinito, mas a área sob a função permanece área finita (unitária).
Logo,
(2.6)
(2.7)
1Um modo alternativo é a forma limite de uma função gaussiana com desvio-padrão σ → 0.
Solomon 02PDFG.indd 23 21.05.13 11:12:58:10
24 Capítulo 2
Uma função delta deslocada, correspondente a um ponto infinitesimal localizado em x = x0, é defi-
nida exatamente da mesma forma:
(2.8)
Estes resultados se estendem naturalmente a duas ou mais dimensões:
(2.9)
(2.10)
Contudo, a propriedade mais importante da função delta é definida por sua ação sob o sinal de inte-
gral: a chamada propriedade de amostragem. O teorema da amostragem diz que
(2.11)
Isto significa que, sempre que a função delta aparece em uma integral, o resultado da mesma é igual
à parte restante do integrando avaliada nas coordenadas nas quais a função delta é não zero.
Figura 2.5 A função delta de Dirac ou impulso pode ser modelada como a forma limite de uma função re-
tangular cuja amplitude é o inverso da largura, quando a largura tende a zero. Notar que a área sob a função
delta é igual à unidade.
Solomon 02PDFG.indd 24 21.05.13 11:12:59:10
Formação 25
Em resumo, a função delta é formalmente definida por suas três propriedades: singularidade
(Equação (2.6)), área unitária (Equação (2.10)) e propriedade de amostragem (Equação (2.11)).
As funções delta são largamente empregadas em óptica e no processamento de imagens como
representação idealizada de fontes pontuais ou filamentares (aberturas):
(2.12)
2.2.5 Função de espalhamento de ponto
A função de espalhamento de ponto de um sistema de captura de imagens é definida como a resposta
do sistema a uma distribuição de entrada que consiste em um ponto muito pequeno de intensidade.
No limite, quando esse ponto se torna infinitesimal em tamanho, podemos representar a função de
entrada como uma função delta de Dirac f(x′, y′) = d(x′−x0, y′−y0). No caso de um sistema linear,
podemos substituir essa representação na integral de superposição linear, Equação (2.3), obtendo
(2.13)
A aplicação do teorema da amostragem, Equação (2.11), fornece a resposta g(x, y) da entrada pon-
tual:
(2.14)
Em outras palavras, a resposta à entrada pontual (às vezes denominada resposta ao impulso ou res-
posta impulsional) é exatamente igual a h. No entanto, no contexto de processamento de imagens, a
função de ponderação na integral de superposição h(x, y; x′, y′) recebe a denominação de função de
espalhamento de ponto ou PSF (Pont-Spread Function), pois mede o espalhamento na resposta de
intensidade de saída devido a um ponto infinitesimal (ou seja, infinitamente preciso) de entrada.
Por que, então, a PSF é uma medida importante? Admitamos, por um momento, que qualquer
distribuição de entrada possa ser considerada como consistindo em uma coleção muito grande
(→ ∞) de pontos muito pequenos (→ infinitesimal) de intensidade variável. A PSF nos informa
como cada um destes pontos aparecerá na saída; assim, devido à linearidade do sistema, a saída é
dada pela soma das respostas PSF. Fica, então, aparente que a PSF de um sistema linear de captura de
imagens (na ausência de ruído) descreve totalmente as propriedades de captura de imagens do sistema
e, portanto, tem importância essencial na especificação do comportamento do sistema.
Do que dissemos até aqui, também fica claro que um sistema ideal de captura de imagens possui-
ria uma PSF que seria exatamente igual à função delta de Dirac para todas as combinações das coor-
denadas de entrada e de saída (ou seja, todas as combinações válidas das coordenadas (x, y, x′, y′)).
Um sistema deste tipo mapearia cada ponto individual na distribuição de entrada a um correspon-
dente ponto infinitesimal na distribuição de saída. Não haveria desfocalização ou perda de detalhes,
e a imagem seria ‘perfeita’. Na verdade, a física básica da difração eletromagnética diz que tal sistema
ideal jamais pode ser obtido na prática; no entanto, é um conceito teórico útil. Em consequência,
um bom ou ‘preciso’ sistema de captura de imagens tem, em geral, uma PSF estreita, enquanto um
sistema pobre tem uma PSF larga, que tem o efeito de sobrepor as respostas de saída correspondentes
a pontos de entrada vizinhos. Esta ideia é ilustrada na Figura 2.6, onde a imagem de um grupo de
pontos é sucessivamente capturada por sistemas com PSF cada vez mais pobre (larga).
Solomon 02PDFG.indd 25 21.05.13 11:13:0:10
26 Capítulo 2
2.2.6 Sistemas lineares invariantes sob translação e integral de convolução
Até aqui, assumimos que a PSF do sistema pode depender das localizações absolutas dos dois pontos nos
domínios de entrada e de saída. Em outras palavras, ao escrever a PSF como uma função de quatro variá-
veis na Equação (2.3), permitimos explicitamente que a resposta no ponto, digamos, x1, y1 no domínio de
saída devido a um ponto x′1, y′1 no domínio de entrada possa ser bem diferente da resposta em algum outro
ponto x2, y2. Se, na prática, isto fosse verdade para todos os pares de pontos de entrada e de saída, a especi-
ficação da PSF do sistema seria uma tarefa muito trabalhosa. Como exemplo, consideremos a discretiza-
ção dos domínios de entrada e de saída com um modesto número de pixels, 128 × 128. Como cada pixel
na entrada pode, em princípio, contribuir para cada ponto na saída de modo diferente, seriam necessários
1284 ≈ 268,4 milhões de valores para especificar completamente o comportamento do sistema.
Felizmente, a maioria dos sistemas de captura de imagens (pelo menos, em uma boa aproxima-
ção) possui uma propriedade denominada invariância sob translação ou isoplanatismo. Um sistema
invariante sob translação é caracterizado por uma PSF que depende somente da diferença entre as
coordenadas nos domínios de entrada e de saída, e não de seus valores absolutos. Assim, uma PSF
invariante sob translação em um sistema de captura de imagens 2D tem uma forma funcional que a
torna dependente não de quatro variáveis, mas de apenas duas:
(2.15)
Invariância sob translação tem uma interpretação física simples. Consideremos uma fonte pontual no
domínio de entrada, nas coordenadas x′, y′. Se movermos esta fonte para diferentes posições no domí-
nio de entrada, alterando os valores de x′, y′, a correspondente resposta (ou seja, sua forma funcional)
no domínio de saída permanecerá a mesma, mas sofrerá translação correspondente no domínio de
saída. Em outras palavras, uma translação na entrada produz uma correspondente translação na saída. A
Figura 2.72 apresenta uma simulação de um sistema limitado por fótons, em que fótons no domínio de
entrada são emitidos de forma aleatória e capturados por um sistema linear invariante sob translação.
A figura mostra claramente o modo em que a imagem é construída como a superposição ponderada de
respostas invariantes sob translação, considerando um crescente número de entradas pontuais.
No caso de sistemas lineares invariantes sob translação (SLIT), a integral linear de superposição,
Equação (2.3), se reduz a uma forma mais simples e importante − uma integral de convolução:
(2.16)
Reparemos que os limites infinitos são usados para indicar que a integração deve ser feita sobre todos
os valores para os quais o produto das funções é não zero. A saída g(x, y) representa a convolução da
2O código Matlab que produziu a Figura 2.7 encontra-se disponível no site da LTC Editora.
Figura 2.6 Efeito da PSF do sistema de captura de imagem. À medida que a PSF se torna cada vez mais larga,
pontos na distribuição de entrada original se tornam mais largos e se sobrepõem.
Solomon 02PDFG.indd 26 21.05.13 11:13:1:10
Formação 27
entrada f(x, y) com a PSF h(x, y). A correspondente forma para a convolução de funções 1D segue
naturalmente:
(2.17)
Integrais de convolução são tão importantes e comuns que, geralmente, são escritasem uma for-
ma abreviada:
(2.18)
em que os asteriscos denotam a operação de convolução da função de entrada f com a PSF do sistema
h. Em geral, a função h nas integrais de convolução é denominada núcleo (kernel).
2.2.7 Convolução: importância e significado
É difícil exagerar a importância de convolução no processamento de imagens. Há duas razões para isto:
(1) Um grande número de processos de formação de imagens (e, também, processos de medição
em geral) é bem descrito por meio da convolução. Na verdade, se um sistema for linear e inva-
riante sob translação, a formação de imagem é necessariamente descrita pela convolução.
(2) O teorema da convolução (que discutiremos em breve) nos permite visualizar e entender o pro-
cesso de convolução no domínio da frequência espacial. Esta formulação equivalente no domí-
nio da frequência oferece uma poderosa estrutura matemática para aumentar o entendimento
da formação e do processamento de imagens. Esta estrutura será desenvolvida no Capítulo 5 e
corresponde a uma parcela importante do Capítulo 6.
Primeiro, tentemos entender o mecanismo do processo de convolução. Uma integral de convolu-
ção é um tipo de integral de ‘superposição’; a Figura 2.8 mostra uma representação gráfica de como
convoluções ocorrem e são calculadas. Basicamente, uma versão refletida de uma das funções é siste-
maticamente deslocada e a integral do produto das duas funções (área da superposição) é calculada
Figura 2.7 Cada imagem na linha superior mostra pontos arbitrários no domínio de entrada (o número de
pontos cresce da esquerda para a direita); as imagens na linha inferior mostram a resposta de um SLIT da
correspondente entrada. A imagem final no canto inferior direito consiste na superposição ponderada das
respostas aos pontos de entrada, que têm forma matemática similar.
Solomon 02PDFG.indd 27 21.05.13 11:13:2:10
28 Capítulo 2
em cada posição de deslocamento. O intervalo da convolução é definido por todas as coordenadas
de deslocamento para as quais a área de superposição é não zero.
Ainda cabe a pergunta: por que o processo físico de formação de imagens é frequentemente des-
crito por meio da convolução? Esta questão é mais facilmente entendida por meio de um simples
exemplo (Figura 2.9a−c). Raios gama têm energia demasiadamente grande para serem focados, de
modo que os primeiros detectores de raios gama usados em diagnósticos médicos por imagem atra-
vés de nuclídeo radioativo consistiam em um cristal de cintilação sensível a raios gama, encapsulado
por um espesso colimador de chumbo com uma abertura de dimensões finitas para permitir que fó-
tons gama de incidência normal pudessem penetrar e ser absorvidos no cristal. Varredura matricial
(raster-scan)* é obtida com o deslocamento do detector sobre o paciente a uma velocidade uniforme;
desse modo, o sinal produzido é proporcional à atividade gama que emana da região do corpo em
contato com a abertura. É necessário que a abertura tenha dimensões finitas, pois a redução do tama-
nho da abertura a um ponto infinitesimal permitiria que frações infinitamente pequenas de fótons
emitidos atingissem o detector, o que, para fins de diagnósticos, seria inútil.
Recordemos, primeiro, que, em geral, a integral de superposição linear permite a possibilidade de
que cada ponto no domínio de entrada f(x′) possa, em princípio, contribuir para a resposta do detec-
tor em um dado ponto x e o faça através da PSF h(x, x′); assim, o resultado g(x) 5 ∫ f(x9)h(x,x9)dx9
é completamente geral. Consideremos, então, a Figura 2.9a, onde, por simplicidade, ilustramos um
detector 1D e uma fonte de intensidade 1D. A abertura infinitesimal idealizada pode ser aproximada
por uma função delta d(x′). Fica claro que, se o detector permanecesse estacionário e a abertura var-
*O termo raster-scan (ou raster-scanning) também é traduzido como varredura vetorial, varredura rastreada, varredura por rastreio, varredura
com rastro, varredura de quadriculação ou simplesmente varredura. (N.T.)
Figura 2.8 Cálculo de uma integral de convolução 1D.
Solomon 02PDFG.indd 28 21.05.13 11:13:3:10
Formação 29
Figura 2.9 (a) Um detector do tipo impulsional vê o perfil de uma fonte de intensidade através de uma aber-
tura infinitesimal de varredura. A imagem resultante é a convolução da fonte com a PSF da abertura. Em prin-
cípio, isto reproduz o perfil da fonte, de modo que g(x) = f(x); contudo, esta resposta idealizada não é capaz de
descrever um sistema real. (b) Aqui, um detector do tipo impulsional vê o perfil de uma fonte de intensidade
através de uma abertura de varredura de dimensões finitas. A imagem resultante é a convolução da fonte com a
PSF da abertura. Todos os sistemas reais exibem tais efeitos de abertura de varredura de dimensões finitas. (c)
Um detector de dimensões finitas vê o perfil de uma fonte de intensidade através de uma abertura de varredura
de dimensões finitas. A imagem resultante é a convolução da fonte com as PSFs da abertura e do detector. Em
geral, se N elementos invariantes sob translação estiverem envolvidos no processo de formação da imagem, a
imagem resultante será descrita pela convolução da fonte com a PSF correspondente a cada elemento.
Solomon 02PDFG.indd 29 21.05.13 11:13:4:10
30 Capítulo 2
resse o eixo x′, obteríamos resposta não zero g(x) do detector apenas na coordenada de deslocamento
x′ = x. Esta situação é, portanto, descrita pela superposição linear g(x) 5 ∫ f(x9)d(x2x9)dx9.3
Se, agora, considerarmos uma abertura de dimensões finitas, como na Figura 2.9b, fica claro que
muitos pontos no domínio de entrada passarão a contribuir para a resposta do detector g(x) e que
outros, não. Na verdade, fica claro que somente os pontos no domínio de entrada para os quais a
diferença x− x′ esteja abaixo de certo limite podem contribuir. Reparemos que a PSF para essa aber-
tura de varredura é determinada puramente pela geometria e que a resposta do detector, portanto,
independe da posição absoluta x′ da abertura − a dependência em relação a x′ advém apenas de como
a f(x′) de entrada se altera.
Por fim, consideremos a Figura 2.9c. Agora, ilustramos um detector de dimensões finitas e uma
abertura de varredura de dimensões finitas, o que resulta em uma situação mais complicada. Contu-
do, esta situação é descrita com facilidade por uma convolução adicional, de modo que a intensidade
registrada no detector de dimensões finitas passe a ser dada por I(x) 5 ∫ g(x9)hd(x2x9)dx9, em que
g(x′) é a intensidade em algum ponto no detector e hd (x′ ) é a resposta do detector (PSF). Essa situa-
ção pode ser entendida como ilustrado na Figura 2.10. Basicamente, dividimos o problema em duas
partes: primeiro, calculamos a resultante intensidade em um ponto fixo no detector; em seguida,
consideramos como todas essas contribuições formam a intensidade final registrada. Na Figura 2.10,
o detector tem uma resposta hd(x′) com referência na origem. Estamos interessados na intensidade
total registrada por este detector I(x′) ao ser deslocado de alguma distância x da origem. A contri-
buição dI à intensidade registrada no ponto exato de ordenada x′ é dada pelo produto da intensidade
incidente no ponto g(x′) pela resposta deslocada hd(x−x′); logo, dI = g(x′)hd(x−x′). A intensidade total
registrada no detector é, portanto, dada por todas as contribuições dI para as quais a ordenada x′
está dentro da região ocupada pelo detector (ou seja, dI = g(x′)hd(x−x′) ≠ 0). Assim, obtemos I(x) 5
∫ dI 5
2
∫
g(x9)hd(x2x9)dx9.
3A rigor, isto supõe que a efetiva área sensível do detector seja infinitesimal, o que é bem aproximado por uma resposta delta − isto ocorrerá
quando o detector for infinitamente pequeno ou a abertura de varredura estiver muito próxima a ele.
Figura 2.10 A resposta de um detector de dimensões finitas com função de resposta hd(x) a um campo de
intensidade incidente g(x) é dada pela convolução das duas funções. Consideramos a contribuição à intensi-
dade total registrada pelodetector em alguma ordenada x′, quando o detector é deslocado por algum valor x.
Isto é dado por dI 5 g(x′)hd(x−x′). Ao integrar todas as contribuições na superfície do detector, obtemos a
integral de convolução.
Solomon 02PDFG.indd 30 21.05.13 11:13:5:10
Formação 31
2.2.8 Convoluções múltiplas: N elementos de captura de imagens em um sistema
linear invariante sob translação
Na Figura 2.9c, consideramos um sistema de captura de imagens em que duas funções de abertura
descrevem as propriedades da imagem: h(x) e hd(x). Nessas circunstâncias, vimos que a intensidade
registrada I(x) é dada por sucessivas convoluções da entrada f(x) com a PSF da abertura de varredura
h(x) e com a PSF do detector hd(x). Simbolicamente, denotamos isto por I(x) = f(x)∗ h(x)∗hd(x). Des-
de que as hipóteses de linearidade e invariância sob translação permaneçam válidas, este resultado se
estende naturalmente a um sistema arbitrário de N elementos de captura de imagens (por exemplo,
uma sequência de lentes em um sistema óptico de captura de imagens). Assim, em geral, qualquer
sequência de processamento em que N elementos lineares e invariantes sob translação atuem sobre
a entrada é descrita por uma sequência de N convoluções da entrada com as respectivas PSFs dos
elementos. Isto é resumido na Figura 2.11.
2.2.9 Convolução digital
Em sistemas digitais de processamento de imagens, os sinais não são contínuos, mas discretizados.
Nessas condições, a convolução de duas funções é efetuada por meio da discretização da integral de
convolução. No caso simples 1D, temos
(2.19)
em que os índices j e i correspondem a valores discretos de x e x′, respectivamente.
Em duas dimensões, a discretização da integral de convolução pode ser escrita como
(2.20)
em que os índices k e l correspondem a x e y e os índices i e j, a x′ e y′, respectivamente. Esta equação
mascara um pouco a simplicidade do mecanismo envolvido. O núcleo do filtro h é não zero somente
quando as duas coordenadas de deslocamento k − i e l − j forem suficientemente pequenas para es-
tarem na faixa espacial ocupada por h (ou seja, hk−i,l−j é não zero). Assim, embora a imagem fij tenha
grande extensão espacial, o núcleo do filtro hk−i,l−j, quando corresponde a uma PSF, tem uma extensão
espacial muito menor. A função resultado da convolução ou filtragem é, portanto, dada por uma
combinação ponderada de todos os pixels que se encontram sob o núcleo do filtro (Figura 2.12).
O Exemplo 2.1 ilustra o cálculo de uma simples convolução 1D discreta em Matlab, enquanto o
Exemplo 2.2 ilustra alguns cálculos simples de convoluções 2D em Matlab. Vale notar que o cálculo
da convolução 2D de duas funções que têm grande extensão espacial tem eficiência computacional
Figura 2.11 A saída de um sistema linear invariante sob translação caracterizado por N componentes, cada
um com uma PSF hi(x), é a convolução repetida da entrada com cada PSF.
Solomon 02PDFG.indd 31 21.05.13 11:13:6:10
32 Capítulo 2
Figura 2.12 Convolução discreta. O pixel central do núcleo e o pixel-alvo na imagem são indicados pela sombra em
cinza-escuro. O núcleo é ‘colocado’ na imagem, de modo que o pixel central e o pixel-alvo coincidam. O valor filtrado
do pixel-alvo é, então, dado por uma combinação linear dos pixels vizinhos, cujos pesos específicos são determina-
dos pelos valores do núcleo. Neste exemplo, o pixel-alvo, de valor original 35, passou a ter um valor filtrado de 14.
Exemplo 2.1
Código Matlab O que está sendo feito?
f5ones(64,1); f5f./sum(f); %Define sinal retangular f e o normaliza
g5conv(f,f); g5g./sum(g); %Efetua convolução de f com ele próprio, resultando em
%g, e normaliza
h5conv(g,g); h5h./sum(h); %Efetua convolução de g com ele próprio, resultando em
%h, e normaliza
j5conv(h,h); j5j./sum(j); %Efetua convolução de h com ele próprio, resultando em
%j, e normaliza
subplot(2,2,1),plot(f,'k-'); axis square;
axis off;
subplot(2,2,2),plot(g,'k-'); axis square;
axis off;
subplot(2,2,3),plot(h,'k-'); axis square;
axis off;
subplot(2,2,4),plot(j,'k-'); axis square;
axis off;
Comentários
Funções de Matlab: conv.
Este exemplo ilustra a convolução repetida de um sinal uniforme 1D com ele próprio. O sinal re-
sultante rapidamente se aproxima da forma da distribuição normal, ilustrando o teorema central da
estatística.
muito maior quando efetuado no domínio de Fourier. Discutiremos isto posteriormente, no Capítu-
lo 5, quando tratarmos do teorema da convolução. As Figuras 2.13 e 2.14 resultam dos códigos nos
Exemplos 2.1 e 2.2.
Solomon 02PDFG.indd 32 21.05.13 11:13:6:10
Formação 33
Exemplo 2.2
Código Matlab O que está sendo feito?
A5imread('trui.png'); %Lê a imagem
PSF5fspecial('gaussian',[5 5],2); %Define núcleo gaussiano para convolução
h5fspecial('motion',10,45); %Define o filtro movimento (motion)
B5conv2(PSF,A); %Efetua a convolução da imagem com o núcleo
C5imfilter(A,h,'replicate'); %Efetua a convolução da PSF do filtro movimento (motion)
%com função alternativa
D5conv2(A,A); %Autoconvolução − movimento (motion) desfocalizado com
%original
subplot(2,2,1),imshow(A); %Exibe imagem original
subplot(2,2,2),imshow(B,[]); %Exibe imagem filtrada
subplot(2,2,3),imshow(C,[]); %Exibe imagem filtrada
subplot(2,2,4),imshow(D,[]); %Exibe convolução da imagem com ela própria (autocorrelação)
Comentários
Funções de Matlab: conv2, imfilter.
Este exemplo ilustra o cálculo de convolução 2D. Os primeiros dois exemplos mostram a convolução
da imagem com um núcleo gaussiano, usando as duas funções de Matlab relacionadas. A imagem final
mostra a autocorrelação da imagem dada pela convolução da função com ela própria.
Figura 2.13 Convolução repetida de um sinal retangular 1D. A saída rapidamente se aproxima da forma da
distribuição normal, ilustrando o teorema do limite central da estatística.
Solomon 02PDFG.indd 33 21.05.13 11:13:7:10
34 Capítulo 2
2.3 Engenharia da formação de imagens
Após a consideração da matemática da formação de imagens, podemos, agora, considerar brevemen-
te aspectos da engenharia deste processo. Não é possível considerar todas as possibilidades, de modo
que nos limitamos aos cenários mais comuns e, portanto, mais práticos de captura de imagens.
2.3.1 A câmera
Consideremos que nosso dispositivo de captura de imagens seja uma câmera. A imagem de uma
cena captada pela câmera é essencialmente uma projeção do mundo 3D (ou seja, a cena) em uma
representação 2D (a imagem). A maneira em que é feita esta projeção de 3D em 2D é central à capa-
cidade de análise de imagens digitais.
Se assumirmos que um objeto ou cena é iluminado por uma fonte de luz (possivelmente, múlti-
plas fontes), alguma parcela da luz será refletida em direção à câmera e capturada como uma imagem
digital. Assumindo que tenhamos uma câmera convencional, a luz refletida que incide na lente forma
uma imagem no plano de imagem da câmera, com base no modelo de projeção da câmera. O modelo
de projeção da câmera transforma coordenadas do mundo em 3D (X, Y, Z) em coordenadas de ima-
gem 2D (x, y) no plano de imagem. A quantização espacial da projeção do plano de imagem em uma
grade discretizada de pixel transforma as coordenadas de imagem 2D (x, y) no plano de imagem em
uma posição de pixel (c, r). A maioria das imagens de cenas com que tratamos é capturada com o uso
de uma projeção em perspectiva.
Projeção em perspectiva: Em geral, a projeção em perspectiva (Figura 2.15) pode ser enunciada como:
(2.21)
Uma posição (X, Y, Z) na cena (profundidade Z) é reproduzida na posição (x, y) no plano de imagem
determinado pela distancia focal f da lente da câmera (distância entre a lente e o plano de imagem).
A projeção em perspectiva tem as seguintes propriedades (ilustradas na Figura 2.16):
Figura 2.14 Esquerda superior: imagem original; direita superior: após convolução com núcleo gaussiano;
esquerda inferior: após convolução com núcleo gaussiano; direita inferior: após convolução da imagem com
ela própria.
Solomon02PDFG.indd 34 21.05.13 11:13:8:10
Formação 35
• Escorço (foreshortening) Os tamanhos de objetos na imagem capturada dependem das distâncias
entre os mesmos e o visor. Assim, objetos mais afastados do visor parecerão menores na ima-
gem.
• Convergência Retas que são paralelas na cena parecerão convergir na imagem resultante. Isto é
conhecido como distorção de perspectiva; o(s) ponto(s) em que as retas paralelas parecem se
encontrar recebe(m) a denominação de ponto(s) de fuga da cena.
Para sermos mais precisos, este é o modelo de projeção em perspectiva da abertura infinitesimal,
pois assumimos que todos os raios de luz passam por um único ponto e, em consequência, a cena
é invertida (horizontal e verticalmente) no plano da imagem (Figura 2.15, à esquerda). Na prática,
empregamos uma lente, o que complica as coisas ainda mais, pois introduzimos distorção de lente
(afetando f), mas questões relacionadas à óptica estão além do escopo deste livro. Com a lente, a
imagem da cena continua invertida, de cabeça para baixo (e de trás para a frente), mas, em geral,
isto é tratado pela câmera e, para todos os propósitos práticos, pode ser ignorado. Vale ressaltar que
a projeção em perspectiva não é facilmente desfeita a partir de apenas uma imagem − ou seja, dadas
a posição (x, y) na imagem 2D e a distância focal f da câmera, não é possível recuperar (X, Y, Z).
Contudo, dada a posição (X, Y) na cena (medida em relação à posição da câmera), a recuperação da
profundidade de posição Z pode ser possível (sujeita a ruído e distorção). No entanto, posições (X,
Y) precisas em relação à exata posição da câmera são de difícil obtenção e raramente registradas no
instante de captura da imagem.
Figura 2.16 Efeitos do modelo de projeção em perspec-
tiva sobre a geometria da cena na imagem.
Figura 2.15 Modelos de projeção de câmeras: em perspectiva (à esquerda) e paralelo/afim (à direita).
Solomon 02PDFG.indd 35 21.05.13 11:13:9:10
36 Capítulo 2
Projeção ortográfica: Um modelo de projeção de câmeras alternativo ao de projeção em perspec-
tiva é o de projeção ortográfica (ou paralela). Esse modelo é usado em alguns instrumentos especia-
lizados de captura de imagens; por exemplo, um scanner de plataforma plana produz uma projeção
ortográfica de um documento; um scanner médico produz uma projeção ortográfica do corpo huma-
no. A projeção ortográfica é denotada simplesmente como
A projeção ortográfica é uma transformação afim − as relações geométricas relativas são mantidas,
pois os planos de cena e de imagem são paralelos. Assim, as características da imagem não são in-
vertidas (Figura 2.15, à direita), mas toda informação associada à profundidade da cena é perdida.
Em uma projeção ortográfica, o tamanho independe da distância ao visor e retas paralelas são pre-
servadas. A projeção pode ter um fator de escala m, de modo que x = mX e y = mY, mas isto está
relacionado à aplicação comum de zum (zoom) ou redução à imagem e preserva estas propriedades.
Em geral, podemos assumir que imagens capturadas a curtas distâncias (ou seja, fotografia com cur-
ta distância focal ou em macroescala) ou de alvos planos tenham projeção ortográfica, pois, nestes
casos, os efeitos da projeção em perspectiva são desprezíveis.
Além do modelo de projeção, a câmera tem várias outras características que determinam a ima-
gem final formada da cena. Principalmente, toda câmera tem resolução espacial fixa (número de
pixels que formam uma imagem) e tem uma profundidade fixa por pixel (número de bits usados para
representar cada pixel) (Seção 2.1). Essas duas características são discutidas na próxima seção sobre
o processo de digitalização de imagens. Além disso, toda câmera tem uma característica individual
de distorção de lente, associada a diferenças de fabricação (referidas como parâmetros intrínsecos
da câmera) que, juntamente com diferenças sutis no próprio sensor de imagens, torna impossível a
captura de duas imagens digitais idênticas com uma dada câmera − duas imagens jamais são iguais.
2.3.2 Processo de digitalização
Após a discussão de como uma imagem é formada pela câmera por meio de uma transformação proje-
tiva de 3D em 2D (Seção 2.3.1), passamos agora à questão da discretização da imagem em uma imagem
de resolução finita constituída de pixels. O conceito fundamental na digitalização é o de quantização: o
mapeamento do sinal contínuo da cena em um número discreto de pontos organizados espacialmente
(pixels), cada um com uma capacidade finita de representação (profundidade de pixel).
2.3.2.1 Quantização
Na captura digital de imagens, a quantização ocorre de duas maneiras: quantização espacial e quan-
tização de cor.
A quantização espacial corresponde à amostragem da brilhância da imagem em um número de
pontos. Em geral, uma malha retangular C × R é usada, embora, em sensores especializados, outras
disposições possam ser usadas. A quantização resulta em uma matriz de números que forma uma
aproximação ao sinal analógico que entra na câmera. Cada elemento desta matriz é referido como
um pixel − um elemento da imagem. A questão fundamental é: Como esta matriz quantizada apro-
xima o sinal analógico original? Notemos que
(1) Se n2 amostras forem tomadas a intervalos regulares (amostragem uniforme, imagem n × n) em
um quadrado limitado, a aproximação melhora à medida que n aumenta. Quando a resolução
espacial aumenta, também aumenta a qualidade da imagem em termos da redução de erros de
aproximação entre as imagens original e digitalizada.
(2) Em geral, desde que amostras suficientes sejam tomadas, uma imagem quantizada espacial-
mente é tão boa quanto a imagem original (para os propósitos desejados, ou seja, para um dado
nível de detalhes).
Solomon 02PDFG.indd 36 21.05.13 11:13:9:10
Formação 37
A resposta precisa à pergunta é dada pelo teorema da amostragem (também conhecido como teorema
da amostragem de Nyquist ou teorema da amostragem de Shannon). O teorema da amostragem, no
contexto da captura de imagens, diz o seguinte: uma imagem analógica pode ser reconstruída exa-
tamente a partir de sua forma digital desde que a frequência de amostragem (número de amostras
por dimensão linear) seja pelo menos o dobro da maior frequência (variação por dimensão linear)
presente na imagem. Assim, exigimos:
(2.22)
em que
frequência de Nyquist 5 2 3 (Máxima frequência na imagem)
O teorema da amostragem diz respeito ao número de amostras necessárias à recriação da ima-
gem original, mas não à adequação da digitalização a qualquer tipo particular de processamento ou
representação. No que diz respeito à implementação em hardware de digitalização, o intervalo de
amostragem é determinado por:
• ∆t (intervalo de tempo entre amostras) em um processo de captura de imagem baseado em varre-
dura, em que um sensor varre uma região ou cena (por exemplo, um scanner de bandeja plana);
• distribuição espacial do dispositivo com acoplamento por carga (CCD − Charge-Coupled Devi-
ce) ou de elementos semicondutores de óxido metálico complementar (CMOS − Complementary
Metal-Oxide Semicondutor) no próprio dispositivo de captura (Seção 2.3.2.2).
A quantização espacial da imagem causa a ocorrência de mascaramento (aliasing) nas bordas e em
características da imagem (Figura 2.17, à esquerda), e diferentes quantizações espaciais podem afetar
o nível de detalhes aparente na imagem (Figura 2.17, à direita).
Além da amostragem espacial, devemos considerar a amostragem de cor ou intensidade − efeti-
vamente, quantização de intensidade. Para cada ponto de amostragem (pixel) capturado a uma dada
resolução espacial, obtemos uma leitura de tensão no sensor de imagem (CCD/CMOS ou conversor
analógico-digital (AD)) que está relacionada à intensidade e comprimento de onda da luz projetada
através da lente da câmera ao ponto no plano de imagem. Dependendo da sensibilidade do sensor a
dados níveis e comprimentos de onda da luz, esses sinais analógicos de tensão podem ser divididos
(ou seja,discretizados) em um certo número de intervalos de valores (bins), cada um representando
um nível específico de intensidade − valores de pixel. Para um sensor em escala de cinza de 8 bits,
essa tensão contínua é dividida em 28 intervalos de valores, resultando em 256 possíveis valores de
pixel e na representação de uma escala de cinza que varia de 0 (preto) a 255 (branco).
Figura 2.17 Efeitos da quantização espacial em imagens digitais.
Solomon 02PDFG.indd 37 21.05.13 11:13:10:10
38 Capítulo 2
Diferentes níveis de quantização de intensidade resultam em diferentes níveis de qualidade de
cor de imagem, como ilustrado na Figura 2.18. Em particular, uma significativa redução no nível de
quantização pode ser feita (256 → 16) antes que efeitos reais possam ser percebidos. No caso de sen-
sores de cores, os canais vermelho, verde e azul são igualmente quantizados em uma representação
de N bits (tipicamente 8 bits por canal, resultando em uma imagem em cores de 24 bits). No total,
cor de 24 bits permite 16,7 milhões de possíveis combinações de cores. Embora tais representações
possam parecer limitadas, tendo em vista a atual capacidade de computação, vale notar que o sistema
visual humano é capaz de, no máximo, diferenciar ~40 diferentes níveis de cinza e um número de
cores distintas estimado em 7−10 milhões. Isto é ilustrado na Figura 2.18, onde uma diferença na
qualidade de cor é percebida apenas após uma mudança significativa de 256 → 16 níveis. Essa limi-
tação da visão humana afeta “o que podemos alcançar” com algoritmos de compressão de imagens
(Seção 1.3.2). Notemos que, embora o sistema visual humano não seja capaz de perceber a diferença
entre tais níveis, o mesmo nem sempre é verdade no caso de processamento de imagens. Uma peque-
na profundidade de cor (quantização de baixa intensidade) pode fazer com que diferentes objetos/
características apareçam no mesmo nível de quantização, apesar de serem visualmente distintos em
termos de cor. Portanto, pode ocorrer mascaramento (aliasing) na quantização de intensidade (por
exemplo, a ilustração de 16 níveis de cinza na Figura 2.18).
2.3.2.2 Hardware para digitalização
As duas formas de quantização, espacial e de intensidade, são executadas quase que simultaneamente
no hardware de digitalização.
Tradicionalmente, a captura de imagens era baseada em câmeras de vídeo analógicas conectadas
a um sistema computacional via conversor analógico-digital (A/D). O conversor requeria memória
suficiente para armazenar uma imagem e uma interface de alta velocidade ao computador (em geral,
PCI direto ou interface SCSI). Quando sinalizado pelo computador, o capturador de quadro digi-
talizava um quadro e armazenava o resultado em sua memória interna. Os dados armazenados na
memória de imagem (ou seja, a imagem digital) podiam, então, ser lidos no computador, através da
interface de comunicação. O diagrama em blocos desse sistema seria algo como ilustrado na Figura
2.19, onde vemos um enlace analógico da câmera ao sistema computacional; a digitalização é, essen-
cialmente, interna à unidade de hardware onde o processamento é efetuado.
Tais sistemas são cada vez mais raros e usados principalmente em aplicações industriais de alta
velocidade ou aplicações especializadas de medicina/engenharia. Os mais modernos sistemas de
captura de quadros são diretamente integrados na câmera, e a conversão A/D é feita no nível de
sensor, na eletrônica do sensor CCD ou CMOS no interior da câmera (ou seja, captura digital, Figura
2.20). Nesse caso, leituras analógicas de tensão feitas diretamente no próprio sensor, em resposta à
luz projetada através da lente da câmera sobre a superfície do sensor, são convertidas em uma forma
Figura 2.18 Efeitos da quantização de intensidade em imagens digitais.
Solomon 02PDFG.indd 38 21.05.13 11:13:10:10
Formação 39
amostrada digitalmente. A digitalização é efetuada in situ, no próprio sensor, antes do enlace de
transporte digital ao computador. As modernas interfaces periféricas de computador, como USB/
FireWire (IEEE 1394)/GigE, oferecem adequadas interfaces digitais de alta velocidade para tornar
possíveis a digitalização no nível de sensor e a transmissão em tempo real ao computador. O sistema
de captura de imagens na Figura 2.19 é basicamente reduzido ao próprio dispositivo de captura, re-
tendo somente a imagem ‘viva’ mais recente para atender solicitações do computador (por exemplo,
webcams) ou, no caso de dispositivos de captura baseados no armazenamento, retendo até N imagens
digitalizadas na armazenagem interna (por exemplo, câmeras/vídeo digital). Conceitualmente, isso é
similar ao que acreditamos acontecer no olho humano, no qual supõe-se que o ‘processamento’ bási-
co da imagem ocorra na retina, antes da transmissão ao cérebro por meio do nervo óptico. O advento
de processamento embutido tem facilitado cada vez mais o processamento de imagens internamente
nas chamadas câmeras inteligentes. Essa tendência na captura e processamento de imagens deve
prosseguir no futuro próximo.
2.3.2.3 Resolução versus desempenho
Consideremos uma observação final a respeito da resolução espacial de uma imagem. Um erro comum
é que uma resolução maior sempre é algo bom. O processamento de imagens é, pela própria natureza,
uma tarefa de grande demanda computacional. Na análise computacional tradicional, para um dado
algoritmo que opere em n termos, avaliamos o tempo de execução segundo O(n); em processamento de
imagens, consideremos uma imagem (n 3 n) (cuja generalização é o caso R 3 C).
Figura 2.19 Diagrama em blocos
de um sistema baseado em cartão
de captura.
Figura 2.20 Exemplo de sensor CCD em uma câmera de vídeo digital.
Solomon 02PDFG.indd 39 21.05.13 11:13:11:10
40 Capítulo 2
No processamento serial, qualquer operação com todos os pixels de imagem (mais comum) é
inerentemente quadrática no tempo de execução, O(n2). Assim, o número de operações aumenta
rapidamente à medida que o tamanho da imagem aumenta. Aqui, vemos a limitação do aumento da
resolução da imagem para alcançar melhores resultados para o processamento de imagens − veloci-
dade. Portanto, a eficiência é uma grande preocupação no projeto de algoritmos de processamento
de imagens, e é especialmente importante no caso de sistemas que requeiram o processamento de
dados de vídeo com alta resolução temporal em tempo real. Para combater essa alta demanda com-
putacional e atender a crescente demanda por sistemas de processamento de imagens em tempo
real, as facilidades de computação paralela têm sido tradicionalmente empregadas para tarefas de
processamento de imagens. O hardware especializado para PCs convencionais, como placa de pro-
cessamento de imagens, também se tornou comum e, basicamente, executava tarefas de processa-
mento de imagens definidas pelo usuário usando implementações de hardware de alta velocidade
que independiam do próprio PC.
Com o atual aumento do poder de processamento de imagem em equipamentos pessoais (lei de
Moore), a adaptação de processadores a tarefas especializadas multimídia, como processamento de
imagem (por exemplo, tecnologias MMX da Intel), e com o advento de sistemas pessoais multipro-
cessadores (por exemplo, Intel Core-Duo), houve uma redução no uso de hardware especializado
na indústria de processamento de imagens. Embora o hardware especializado ainda seja utilizado
em aplicações industriais, esse cenário deve ser alterado nos próximos anos, devido ao advento de
tecnologia embutida em PCs e de robustos sistemas operacionais com capacidade de processamento
de imagens. O hardware reconfigurável e programável, como matrizes de portas programáveis por
campo (FPGA – Field Programmable Gate Arrays), e o uso de unidades de processamento de imagens
(GPU − Graphics Processing Units) (processamento de imagens no processador da placa gráfica do
PC) também oferecem alguns dos benefícios de uma solução baseada em hardware, com a flexibili-
dade adicional de desenvolvimento/testebaseado em software.
PCs modernos são capazes de executar tarefas de processamento de imagens em tempo real e dis-
põem de capacidade de memória que excede o tamanho de qualquer imagem isolada. O mesmo nem
sempre é verdade no caso do processamento de vídeo stream; avaliação e otimização de desempenho
ainda são objetos de pesquisa.
2.3.3 Ruído
O principal obstáculo ao eficiente processamento de imagens e de sinal é, em geral, o ruído. Ruído
significa uma pequena variação (aleatória) sofrida pelo sinal em torno de seu verdadeiro valor devi-
do a fatores externos ou internos durante o processamento da imagem. Esses fatores não podem ser
(facilmente) controlados e, portanto, introduzem elementos aleatórios ao processo. Ruído é o prin-
cipal problema em 99% dos casos em que as técnicas de processamento de imagens falham ou pro-
cessamento adicional se torna necessário para a obtenção do resultado desejado. Em consequência,
uma grande parte do domínio de processamento de imagens e de qualquer sistema de processamento
de imagens é dedicada à redução e à remoção do ruído. Um sistema robusto de processamento de
imagens deve ser capaz de lidar com ruído. O ruído é introduzido em cada estágio do processamento,
captura e amostragem de imagens (Figura 2.21).
Em imagens digitais, o ruído pode originar-se de diferentes fontes:
• Ruído de captura pode resultar de variações na iluminação, temperatura do sensor, ruído elétrico
no sensor, não uniformidade do sensor, poeira no ambiente, vibração, distorção da lente, limita-
ções de foco, saturação do sensor (luz em demasia), subexposição (deficiência de luz).
• Ruído de amostragem Como discutido anteriormente (Seção 2.3.2), limitações na amostragem e
na quantização de intensidade são fontes de ruído na forma de mascaramento (aliasing) de repre-
Solomon 02PDFG.indd 40 21.05.13 11:13:12:10
Formação 41
sentação. A imagem digital amostrada não é uma verdadeira representação da imagem analógica,
mas um mascaramento do original.
• Ruído de processamento Limitações na precisão numérica (números em ponto flutuante), overflow
de inteiros e aproximações matemáticas (por exemplo, π = 3,142...) são possíveis fontes de ruído
no próprio processamento.
• Ruído de codificação de imagem Muitas técnicas modernas de compressão de imagens (por exem-
plo, JPEG usado intrinsecamente pelas modernas câmeras digitais) são técnicas de compressão
com perda. Nesse caso, ruído significa que a imagem é comprimida com a remoção de informação
visual que representa detalhes, em geral, não perceptíveis ao olho humano. O problema é que essa
perda de informação devido à compressão prejudica as técnicas de processamento de imagens que
dependam dessa informação. A perda de detalhes é referida como a aparição de artefatos de com-
pressão na imagem. Em geral, perda = artefatos de compressão = ruído. Modernos formatos de
imagens, como PNG, oferecem compressão sem perda para resolver essa questão (Seção 1.3.2).
• Oclusão de cena Na tarefa de reconhecimento de objetos, muitas vezes, esses são obscurecidos por
outros. Isto é conhecido como oclusão, e representa um grande problema para sistemas computa-
cionais de visão, pois não podemos conhecer o que não podemos ver. Podemos ser capazes de infe-
rir o reconhecimento a partir de uma vista parcial do objeto, mas isto nunca é tão robusto como o
reconhecimento baseado na vista completa. Isto limita a informação disponível sobre a imagem.
Ignorando o ruído sistemático associado a uma causa específica (como iluminação não uniforme), o
ruído em imagens pode ser caracterizado de diferentes formas. As duas principais caracterizações de
ruído usadas no processamento de imagens são:
• Ruído sal e pimenta Causado pela introdução aleatória de pixels puramente brancos ou pretos (in-
tensos/fracos) na imagem (Figura 2.21). Isso é menos comum nos modernos sensores de captura
Figura 2.21 Exemplos de efeito de ruído em imagens digitais.
Solomon 02PDFG.indd 41 21.05.13 11:13:13:10
42 Capítulo 2
de imagens, embora possa ser visto na forma de falhas em sensores de câmeras (pixels quentes,
que sempre têm intensidade máxima, ou pixels mortos, que são sempre pretos). Esse tipo de ruído
também é conhecido como ruído impulsivo.
• Ruído gaussiano Neste caso, a variação aleatória do sinal de imagem em torno de seu valor espe-
rado segue a distribuição gaussiana ou normal (Figura 2.21). Este é o modelo de ruído usado com
maior frequência no processamento de imagens e é capaz de descrever a maioria dos ruídos alea-
tórios encontrados durante o processamento de imagens. Este tipo de ruído também é conhecido
como ruído aditivo.
Em resumo, nenhuma imagem digital é uma representação perfeita da cena original: ela é limitada
em resolução e contém ruído. Um dos principais objetivos no processamento de imagens é limitar os
efeitos desses aspectos na visualização e análise de imagens.
Exercícios
Os exercícios a seguir foram elaborados para reforçar e desenvolver os conceitos e exemplos de Mat-
lab apresentados neste capítulo. Informação adicional sobre todas as funções de Matlab represen-
tadas neste capítulo e nestes exercícios pode ser obtida no próprio Matlab, através do navegador de
ajuda a funções (basta teclar doc na janela de comando de Matlab, em que é a função desejada).
Funções de Matlab: rand(), fspecial(), filter2(), imresize(), tic(), toc(), imapprox(), rgb2ind(),
gray2ind(), imnoise(), imtool(), hdrread(), tonemap(), getrangefromclass().
Exercício 2.1 O Exemplo 2.3 ilustra a construção de uma imagem coerente a partir de um número
limitado de amostras pontuais por meio do conceito de PSF introduzido na Seção 2.1:
Exemplo 2.3
Código Matlab O que está sendo feito?
A5imread('cameraman.tif '); %Lê a imagem
[rows dims]5size(A); %Obtém dimensões da imagem
Abuild5zeros(size(A)); %Constrói imagem zero com as mesmas dimensões
%Efetua amostragem aleatória de apenas 1% dos pontos e calcula convolução com PSF gaussiana
sub5rand(rows.*dims,1)empregando as funções tic()/toc() de Matlab.)
Exercício 2.3 Além da resolução espacial, a engenharia da formação de uma imagem também
impõe limites no número de níveis de quantização (cor ou escala de cinza) em uma dada imagem.
Usando a função imapprox() de Matlab, podemos aproximar uma dada imagem representada em um
certo espaço de cores (por exemplo, RGB ou escala de cinza, Seção 1.4.1.1) com um menor número
de cores. Esta função opera em uma imagem indexada (basicamente, uma imagem com uma tabela
de referência de consulta para cada um de seus valores, conhecida como mapa de cores) − consulte
‘indexed images’ na Ajuda de Matlab. Uma imagem convencional (por exemplo, ‘peppers.png’ de Ma-
tlab) pode ser convertida em uma imagem indexada e associada ao mapa de cores de referência atra-
vés da função rgb2ind() de Matlab (ou da função gray2ind(), no caso de imagens em escala de cinza).
Explore o uso de imapprox() e rgb2ind()/gray2ind() para reduzir o número de cores em imagens em
cores e em escala de cinza. Experimente diferentes níveis de redução de cor. Como suas observações
se relacionam à discussão sobre a percepção de cores por humanos feita na Seção 2.3.2.1?
Exercício 2.4 A função imnoise() de Matlab pode ser usada para adicionar ruído a imagens. Con-
sulte o Exemplo 4.3 para saber detalhes do uso desta função e explore-a como sugerido no Exercício
4.1.
Exercício 2.5 A função imtool() de Matlab nos permite exibir uma imagem e nela executar diferen-
tes operações interativas. Use tal função para carregar o exemplo de imagem mostrado na Figura 2.16
(disponível como ‘railway.png’) e meça o comprimento em pixels dos dormentes na frente e no fundo
da imagem. Com base na discussão da Seção 2.3.1, o que você pode dizer sobre a distância relativa
dos dois dormentes à câmera? Assumindo que o comprimento padrão de um dormente seja 2,5 m,
que informação adicional é necessária para determinar as distâncias absolutas entre esses dois itens
e a câmera? Como isto pode ser aplicado a outras áreas, como estimativa de distância entre pessoas
ou carros e a câmera?
Exercício 2.6 Grande faixa dinâmica (HDR − High Dynamic Range) é uma nova metodologia para
captura (formação) de imagens em que a imagem é digitalizada com um número muito maior de ní-
veis de quantização (Seção 2.3.2.1) entre os níveis mínimo e máximo de cor. Matlab suporta a técnica
HDR por meio da função hdrread(). Use essa função para carregar o exemplo de imagem HDR de
Matlab, ‘office.hdr’, e use a função tonemap() de Matlab para convertê-la à convencional represen-
tação RGB para visualização (com imshow()). Use as funções getrangefromclass() e imshow() de
Matlab para explorar as faixas dinâmicas dessas duas versões da imagem HDR.
Exemplos e exercícios adicionais estão disponíveis no site da LTC Editora.
Solomon 02PDFG.indd 43 21.05.13 11:13:13:10
3
Pixels
Neste capítulo, discutiremos a base de todo o processamento de imagens: o pixel. Analisaremos os
tipos de informação tangível contida em cada pixel e discutiremos operações sobre pixels individuais
(transformações pontuais) e sobre distribuições de pixels (transformações globais).
3.1 O que é um pixel?
O termo pixel resulta da aglutinação das palavras inglesas ‘picture element’ ou elemento de imagem. Inde-
xado como uma posição (x, y) ou coluna-linha (c, r) a partir da origem da imagem, um pixel representa o
menor elemento constituinte de uma imagem digital e contém um valor numérico que é a unidade básica
de informação sobre a imagem, para uma dada resolução espacial e correspondentes níveis de quantiza-
ção. Em geral, pixels contêm a resposta de cor ou intensidade da imagem na forma de pequenas amostras
pontuais de luz colorida da cena. Contudo, nem todas as imagens contêm informação estritamente visual.
Uma imagem é simplesmente um sinal 2D digitalizado como uma malha (grade) de pixels, cujos valores
podem estar relacionados a outras propriedades que não sejam cor ou intensidade da luz. O conteúdo de
informação de pixels pode variar consideravelmente, dependendo do tipo de imagem em processamento:
• Imagens em cor/escala de cinza Imagens comumente encontradas contêm informação relativa à
intensidade de cor ou da escala de cinza em um dado ponto na cena ou imagem.
• Infravermelho (IR − Infrared) O espectro visível é apenas uma parcela do espectro eletromagné-
tico. IR nos oferece a capacidade de capturar imagens com base somente na refletância da luz IR
ou na radiação IR emitida pela cena. A radiação IR é emitida proporcionalmente ao calor gerado/
refletido por um objeto e, por isso, a captura IR de imagens também é referida como captura
térmica de imagens. Como a luz IR é invisível ao olho humano nu, a iluminação IR e sistemas de
captura IR de imagens oferecem um método poderoso de vigilância dissimulada (por exemplo,
sistemas de captura IR de imagens em geral formam a base de sistemas de visão noturna).
• Sistemas de captura de imagens médicas Muitas imagens médicas contêm valores que são proporcionais
às características de absorção de tecidos em relação a um sinal projetado sobre o corpo. Os tipos mais
comuns são tomografia computadorizada (TC) e ressonância magnética (RM). Imagens de TC, como
as de raios X convencionais, representam valores que são diretamente proporcionais à densidade do
tecido pelo qual passou o sinal. Imagens de ressonância magnética, por sua vez, exibem mais detalhes e
não têm uma relação direta com nenhuma propriedade quantificável do tecido. Em TC e RM, o formato
de imagens 2D é, em geral, estendido a um volume 3D, que é basicamente uma pilha de imagens 2D.
• Sistemas de captura de imagens de radar/sonar Uma imagem de radar ou de sonar representa uma
seção reta de um alvo, em proporção à distância entre o sensor e à ‘refletividade’ do alvo. O radar
é comumente usado na navegação aérea, embora também seja usado em aplicações com veículos
terrestres. O monitoramento climático via radar e baseado em satélites se tornou comum, assim
Solomon 03PDFG.indd 44 21.05.13 12:21:44:10
Pixels 45
como o emprego de sonares na maioria das modernas embarcações marítimas. Sistemas de radar
para captura de imagens do solo têm tido uso crescente em arqueologia e em ciências forenses.
• Sistemas de captura de imagens 3D Com o emprego de técnicas específicas de sensores 3D, como
fotografia estéreo ou varredura laser 3D, podemos capturar dados de objetos no mundo à nossa
volta e representá-los em sistemas computacionais como imagens 3D. Em geral, imagens 3D cor-
respondem a mapas de profundidade em que cada posição de pixel contém a distância do ponto
de imagem ao sensor. Nesse caso, temos informação 3D explícita e não apenas uma projeção de
3D, como na convencional captura de imagens 2D. Dependendo da tecnologia de captura, pode-
mos ter somente informação de profundidade 3D ou 3D e cor para cada posição de pixel. O mapa
de profundidade da imagem pode ser reprojetado de modo a fornecer uma vista parcial do objeto
3D capturado (esse tipo de dado às vezes é referido como 2½D).
• Sistemas de captura de imagens científicas Muitos ramos da ciência usam formato discreto 2D (ou
3D) para a captura de dados e análise de resultados. Os valores de pixels podem, na verdade, cor-
responder a densidade de amostras químicas ou biológicas, impedâncias acústicas, intensidade
sônica etc. Apesar da diferença no conteúdo de informação, os dados são representados na mesma
forma, ou seja, uma imagem 2D. Técnicas de processamento digital de imagens podem, então, ser
aplicadas a diferentes ramos da análise científica.
A Figura 3.1 mostra alguns exemplos de imagens com diferentes tipos de informação de pixel.
Estes são apenas alguns exemplos da variedade de imagens digitais em uso e da vasta escala de do-
mínios de aplicações de processamento digital de imagens. Nas imagens em cor/escala de cinza que
consideraremos neste livro, os pixels, em geral, terão valores inteiros em uma dada faixa de quantiza-
ção (por exemplo, 0 a 255,imagens de 8 bits); contudo, em outras formas de informação de imagem
(por exemplo, médicas, 3D, científicas), valores de pixel em ponto flutuante são comuns.
Figura 3.1 Diferentes tipos de informação de pixel.
Solomon 03PDFG.indd 45 21.05.13 12:21:45:10
46 Capítulo 3
3.2 Operações em pixels
O tipo mais básico de operação de processamento de imagens é uma transformação pontual, que
mapeia os valores em pontos individuais (pixels) na imagem de entrada a pontos correspondentes
(pixels) na imagem de saída. No sentido matemático, esta é uma transformação funcional biunívoca
da entrada para a saída. Os exemplos mais simples de tais transformações de imagens são operações
aritméticas ou lógicas com imagens. Cada uma é executada como uma operação entre duas imagens
IA e IB ou entre uma imagem e um valor constante C:
(3.1)
Nos dois casos, os valores em posições individuais de pixel (i, j) na imagem de saída são mapeados
da seguinte forma:
(3.2)
Para efetuar a operação sobre toda a dimensão da imagem C 3 R, simplesmente iteramos em todos
os índices da imagem: no caso geral, (i, j) 5 {0, ..., C−1, 0, ..., R−1} (Nota: Em Matlab, índices de
pixel são {1, ..., C, 1, ..., R}).
3.2.1 Operações aritméticas em imagens
Operações aritméticas básicas podem ser efetuadas rápida e facilmente em pixels de imagem, para
uma variedade de efeitos e aplicações.
3.2.1.1 Adição e subtração com imagens
A adição de um valor a cada valor de pixel de imagem pode ser usada para alcançar os seguintes
efeitos (Figura 3.2):
• Ajuste de contraste A adição de um valor positivo constante C a cada posição de pixel aumenta o
valor do pixel e, portanto, sua brilhância.
• Mistura A adição de imagens produz uma imagem composta das duas imagens de entrada. Adi-
ção ponderada pode ser usada para produzir efeitos de mistura (blending).
O Exemplo 3.1 mostra como adição pode ser efetuada em imagens, em Matlab.
Exemplo 3.1
Código Matlab O que está sendo feito?
A5imread('cameraman.tif '); %Lê a imagem
subplot(1,2,1), imshow(A); %Exibe a imagem
B5imadd(A, 100); %Soma 100 a cada valor de pixel na imagem A
subplot(1,2,2), imshow(B); %Exibe a resultante imagem B
continua
Solomon 03PDFG.indd 46 21.05.13 12:21:46:10
Pixels 47
A subtração de um valor constante de cada posição de pixel (como a adição) também pode ser
usada como forma básica de ajuste de contraste. A subtração de uma imagem de outra nos mostra a
diferença entre as duas imagens. Se subtrairmos duas imagens em uma sequência de vídeo, obtemos
uma imagem de diferença (assumindo uma câmera estática) que mostra os movimentos ou mudan
ças que ocorreram entre os quadros na cena (Figura 3.3). Isso pode ser usado como forma básica de
detecção de mudança/movimento em sequências de vídeo. O Exemplo 3.2 mostra como a subtração
de imagens pode ser efetuada em Matlab.
Exemplo 3.2
Código Matlab O que está sendo feito?
A5imread('cola1.png'); %Lê a 1a imagem
Figura 3.2 Ajuste de contraste e mistura de imagens através de adição aritmética.
Comentários
Em geral, para que seja possível efetuar adição e/ou subtração em imagens, elas devem ter as mesmas •
dimensões e ser do mesmo tipo (por exemplo, inteira de 8 bits).
Ao efetuar operações de adição, devemos estar atentos à possibilidade de • overflow de inteiro. Uma ima
gem inteira de 8 bits pode somente conter valores inteiros entre 0 e 255. As funções de Matlab imadd,
imsubtract e imabsdiff evitam esse problema truncando ou arredondando valores de overflow.
continuação
continua
Solomon 03PDFG.indd 47 29.05.13 11:13:27:10
48 Capítulo 3
Uma variação útil da subtração é a diferença absoluta Isaída 5 |IA − IB| entre imagens (Exemplo 3.3).
Isso evita o potencial problema de overflow de inteiro quando a diferença se torna negativa.
3.2.1.2 Multiplicação e divisão com imagens
Multiplicação e divisão podem ser usadas como meios simples de ajuste de contraste e como exten-
são à adição/subtração (por exemplo, redução de contraste em 25% 5 divisão por 4; aumento de
contraste em 50%5 multiplicação por 1,5). Às vezes, esse procedimento é referido como ajuste de
cor de imagens (image colour scaling). Do mesmo modo, a divisão pode ser usada para discriminar
uma imagem de outra; a divisão de uma imagem por outra tem 1,0 como resultado quando os valores
de pixel são idênticos, e um resultado distinto de 1,0 quando ocorrem diferenças. No entanto, a dis-
criminação de imagens via subtração é computacionalmente mais eficiente. O Exemplo 3.4 mostra
como multiplicação e divisão podem ser efetuadas em imagens, em Matlab.
Figura 3.3 Diferença entre imagens usando subtração aritmética.
B5imread('cola2.png'); %Lê a 2a imagem
subplot(1,3,1), imshow(A); %Exibe a 1a imagem
subplot(1,3,2), imshow(B); %Exibe a 2a imagem
Output 5 imsubtract(A, B); % Subtrai uma imagem da outra
subplot(1,3,3), imshow(Output); % Exibe o resultado
Exemplo 3.4
Código Matlab O que está sendo feito?
Output 5 immultiply(A,1.5); %Multiplica a imagem por 1,5
subplot(1,3,3), imshow(Output); %Exibe o resultado
Output 5 imdivide(A,4); %Divide a imagem por 4
subplot(1,3,3), imshow(Output); %Exibe o resultado
Exemplo 3.3
Código Matlab O que está sendo feito?
Output 5 imabsdiff(A, B); %Subtrai uma imagem da outra
subplot(1,3,3), imshow(Output); %Exibe o resultado
continuação
continua
Solomon 03PDFG.indd 48 21.05.13 12:21:47:10
Pixels 49
Para todas as operações aritméticas com imagens, devemos assegurar que os resultantes valores
de pixel permaneçam dentro da faixa de inteiros correspondente ao tipo de dados/tamanho. Por
exemplo, uma imagem de 8 bits (ou imagem em cores de três canais de 24 bits) pode representar 256
valores em cada posição de pixel. Um valor inicial de pixel de 25 multiplicado por uma constante
(ou valor de pixel de outra imagem) igual a 12 excede a faixa de valores 0−255. Ocorrerá overflow
de inteiro e o valor resultante será, em geral, “dobrado” em um valor menor. Isto é conhecido como
saturação no espaço da imagem: o valor excede a capacidade de representação da imagem. Uma so-
lução consiste em detectar este overflow e evitá-lo fixando todos estes valores iguais ao valor máximo
na representação da imagem (por exemplo, truncamento a 255). Este método de lidar com overflow é
implementado nas funções de Matlab imadd, imsubtract, immultipli e imdivide, discutidas aqui. De
modo similar, também devemos estar atentos a valores negativos de pixel resultantes de subtração e
lidar com eles de forma apropriada; em geral, são fixados em zero. Para imagens RGB de três canais
(ou outras imagens que têm vetores como elementos de pixel), a operação aritmética é efetuada se-
paradamente em cada canal de cor.
3.2.2 Operações lógicas com imagens
Podemos efetuar operações lógicas convencionais, como NOT, OR, XOR e AND, entre imagens.
Em geral, uma operação lógica é efetuada entre bits correspondentes à representação da imagem em
pixels (ou seja, operação bit a bit).
• NOT (inversão) Esta operação inverte a representação da imagem. No caso mais simples de uma
imagem binária, os pixels de fundo (preto) se tornam frontais (brancos) e vice-versa. No caso de
imagens em escala de cinza ou em cores, o procedimento consiste em substituir cada valor de
pixel Ientrada(i, j) da seguinte forma:
(3.3)
em que MAX é o máximo valor possível na dada representação da imagem. Assim, para uma
imagem em escala de cinza de 8 bits (ou para canais de 8 bits de uma imagem em cores), MAX 5
255.
O Exemplo 3.5 mostra como esta operação pode ser efetuada em Matlab.
Comentários
A multiplicação e a divisão de uma imagem por outra não são operações comuns no processamento
de imagens.
Exemplo 3.5
Código Matlab O que está sendo feito?
A5imread('cameraman.tif '); %Lê a imagem
subplot(1,2,1), imshow(A); %Exibe a imagem
B5imcomplement(A); %Inverte a imagem
subplot(1,2,2), imshow(B); %Exibe a resultante imagem B
continuação
Solomon 03PDFG.indd 49 21.05.13 12:21:48:10
50 Capítulo 3
• OR/XOR OR (e XOR)lógico é útil no processamento de imagens de valores binários (0 ou 1), para
detectar objetos que se moveram entre quadros. Em geral, objetos binários são produzidos por
meio da aplicação de limiar a uma imagem em escala de cinza. Aplicação de limiar é discutida na
Seção 3.2.3.
• AND A operação AND lógico é comumente usada para detectar diferenças em imagens, ressaltar
regiões-alvo com uma máscara binária ou produzir planos de bit de uma imagem, como discutido
na Seção 1.2.1 (Figura 1.3). O Exemplo 3.6 ilustra como estas operações podem ser efetuadas em
Matlab.
Exemplo 3.6
Código Matlab O que está sendo feito?
A5imread('toycars1.png'); %Lê a 1a imagem
B5imread('toycars2.png'); %Lê a 2a imagem
Abw5im2bw(A); %converte a binário
Bbw5im2bw(B); %converte a binário
subplot(1,3,1), imshow(Abw); %Exibe a 1a imagem
subplot(1,3,2), imshow(Bbw); %Exibe a 2a imagem
Output5xor(Abw, Bbw); %xor imagens
subplot(1,3,3), imshow(Output); %Exibe o resultado
Comentários
notemos que as imagens são, primeiro, convertidas a binário com a função de Matlab im2bw (com •
limiar automático − Seção 3.2.3).
notemos que as imagens que resultam da função im2bw e da operação lógica xor são do tipo ‘• logical’
[lógico] de Matlab.
o operador para AND é ‘&’ e o operador para OR é ‘|’; esses operadores são aplicados na forma da •
notação infixa (são escritos entre os operandos), como A & B, A | B.
Operadores combinados, como NAND, NOR e NXOR, também podem ser aplicados como ope-
radores de processamento de imagens.
3.2.3 Aplicação de limiar
Outra transformação pontual básica é a aplicação de limiar (thresholding).* Esta transformação pro-
duz uma imagem binária a partir de uma imagem em escala de cinza ou em cores: valores de pixel
são limitados a 1 ou 0 dependendo se estão acima ou abaixo do valor de limiar. Isso é comumente
usado para separar ou segmentar uma região ou objeto em uma imagem com base nos valores de
pixel, como ilustrado na Figura 3.4.
*Também referido como limiarização. (N.T.)
Solomon 03PDFG.indd 50 21.05.13 12:21:48:10
Pixels 51
Em sua forma básica, a aplicação de limiar funciona da seguinte maneira:
Em Matlab, essa operação pode ser efetuada com a função im2bw e um limiar no intervalo 0 a 1,
como no Exemplo 3.7.
Exemplo 3.7
Código Matlab O que está sendo feito?
I5imread('trees.tif '); %Lê a imagem
T5im2bw(I, 0.1); %Aplicação de limiar
subplot(1,3,1), imshow(I); %Exibe imagem original
subplot(1,3,2), imshow(T); %Exibe imagem após aplicação de limiar
A função im2bw automaticamente converte imagens em cores (como a entrada no exemplo ante-
rior) em escala de cinza e aplica um fator de escala ao valor do limiar fornecido (de 0 a 1) segundo a
faixa de quantização da imagem em processamento. Um exemplo é mostrado na Figura 3.5.
Para imagens em escala de cinza, cujos pixels contêm apenas um valor de intensidade, um único
valor de limiar deve ser escolhido. Para imagens em cores, valores separados de limiar podem ser
definidos para cada canal de cor (correspondendo a uma cor particular ou a partes isoladas de cada
canal). Em muitas aplicações, por simplicidade, imagens em cores são convertidas em escala de cinza
antes da aplicação de limiar. Variações comuns à simples de aplicação de limiar são:
• uso de dois valores de limiar para separar valores de pixel em um dado intervalo;
Figura 3.4 Aplicação de limiar para identificação de objetos.
Solomon 03PDFG.indd 51 21.05.13 12:21:49:10
52 Capítulo 3
• uso de múltiplos valores de limiar, resultando em uma imagem rotulada, com porções rotuladas
de 0 a N;
• retenção da informação de pixel original apenas para valores selecionados (ou seja, acima/abaixo
de limiares); outros valores são fixados em preto.
A aplicação de limiar é o operador ‘cavalo de batalha’ para a separação das partes frontal e de fundos
de uma imagem. Uma questão pendente é a da seleção de um bom limiar. Este tópico é abordado no
Capítulo 10, onde tratamos de segmentação de imagens.
3.3 Operações em imagens baseadas em pontos
A faixa dinâmica de uma imagem é definida como a diferença entre os valores mínimo e máximo de
pixel na imagem. Podemos definir certas transformações funcionais ou mapeamentos que alteram
o efetivo uso da faixa dinâmica. Tais transformações são principalmente aplicadas para melhorar
o contraste da imagem. A melhora é alcançada pela alteração da relação entre a faixa dinâmica da
imagem e os valores em escala de cinza (ou em cores) usados para representá-los.
Em geral, assumiremos uma faixa de 8 bits (0 a 255) em escala de cinza, tanto para a imagem de
entrada como para a resultante imagem de saída. Contudo, as técnicas apresentadas podem ser gene-
ralizadas para outras faixas de entrada e canais individuais de imagens em cores.
3.3.1 Transformação logarítmica
A faixa dinâmica de uma imagem pode ser comprimida com a substituição de cada valor de pixel da
imagem por seu logaritmo: Isaída(i, j) 5 ln Ientrada(i, j), em que I(i, j) é o valor de um pixel em uma posi-
ção (i, j) na imagem I, e a função ln() representa o logaritmo natural. Na prática, como o logaritmo é
indefinido para argumento zero, a seguinte forma geral é usada para a transformação logarítmica:
(3.4)
Reparemos que o fator de escala s controla a transformação da faixa dinâmica pela função loga-
rítmica, enquanto o fator de escala c ajusta a saída ao intervalo de quantização da imagem de 0 a 255.
A adição de 1 é feita para evitar problemas em pontos onde o logaritmo é indefinido, Ientrada(i, j) 5 0.
O grau de compressão da faixa dinâmica é efetivamente controlado pelo parâmetro σ. Como mos-
trado na Figura 3.6, como a função logarítmica é quase linear nas proximidades da origem, no caso
de imagens que contenham uma pequena faixa de valores de entrada, a compressão obtida é menor
do que no caso de imagens que contenham uma grande faixa de valores de pixel.
Figura 3.5 Aplicação de limiar a uma imagem complexa.
Solomon 03PDFG.indd 52 21.05.13 12:21:50:10
Pixels 53
A constante de escala c pode ser calculada com base no máximo valor de saída permitido (255,
para uma imagem de 8 bits) e no máximo valor presente na entrada, max(Ientrada(i, j)):
(3.5)
O efeito da transformação logarítmica é aumentar a faixa dinâmica de regiões escuras na imagem
e reduzir a faixa dinâmica em regiões claras (por exemplo, Figura 3.7). Assim, a transformação loga-
rítmica mapeia os baixos valores de intensidade em uma quantidade maior de valores em escala de
cinza, e comprime os valores de intensidade mais alta ou regiões claras a uma menor faixa de valores
em escala de cinza.
A Figura 3.7 ilustra o típico efeito de fotografar diante de um fundo claro (à esquerda) quando a
faixa dinâmica do filme ou de abertura da câmera é demasiadamente pequena para capturar toda a
faixa de valores da cena. Com a aplicação da transformação logarítmica, clareamos o primeiro plano
desta imagem espalhando os valores de pixel em uma faixa mais larga, revelando mais detalhes e, ao
mesmo tempo, comprimindo a faixa de valores de pixel do segundo plano.
Figura 3.6 Transformação Logarítmica: A variação
do parâmetro σ altera o gradiente da função loga-
rítmica usada para transformar a entrada na saída.
Figura 3.7 Aplicação da transformação logarítmica a uma imagem.
Solomon 03PDFG.indd 53 21.05.13 12:21:51:10
54 Capítulo 3
O Exemplo 3.8 ilustra como a transformação logarítmica pode ser aplicada a uma imagem em Mat-
lab. Desse exemplo podemos ver que o aumento da constante multiplicativa c aumenta a brilhância da
imagem como um todo (como esperaríamos, tendo em vista a discussão da multiplicação feita na Seção
3.4). Uma variante comum dessa transformação que alcança um resultado similar é a simples trans-
formação de raiz quadrada (ou seja, os valores de pixels de saída correspondem à raiz quadrada dos
valores de entrada), que também comprime as faixas de altos valores de pixel e espalha as de baixos
valores de pixel.
Exemplo 3.8
Código Matlab O que está sendo84
4.4.2 Filtragem pela mediana 85
4.4.3 Filtragem por ordem 86
Solomon CadZeroPDFG.indd 6 11.06.13 16:06:35:10
sumário vii
4.4.4 Filtragem gaussiana 87
4.5 Filtragem para detecção de bordas 89
4.5.1 Filtros diferenciais para descontinuidades 89
4.5.2 Detecção de bordas de primeira ordem 91
4.5.2.1 Filtragem linearmente separável 92
4.5.3 Detecção de bordas de segunda ordem 93
4.5.3.1 Detecção de bordas com operador laplaciano 93
4.5.3.2 Laplaciano de gaussiano 95
4.5.3.3 Detector de passagem por zero 95
4.6 Realce de bordas 97
4.6.1 Aguçamento de bordas laplaciano 97
4.6.2 Filtro máscara de desaguçamento 98
5 Transformadas de Fourier e processamento no domínio da frequência 103
5.1 Espaço de frequência: uma introdução amistosa 103
5.2 Espaço de frequência: a ideia fundamental 104
5.2.1 Série de Fourier 105
5.3 Cálculo do espectro de Fourier 107
5.4 Série de Fourier complexa 108
5.5 Transformada de Fourier 1D 109
5.6 Transformada de Fourier inversa e reciprocidade 110
5.7 Transformada de Fourier 2D 111
5.8 Entendendo a transformada de Fourier: filtragem frequência−espaço 114
5.9 Sistemas lineares e transformadas de Fourier 117
5.10 Teorema da convolução 117
5.11 Função de transferência óptica 119
5.12 Transformadas de Fourier digitais: transformada de Fourier rápida discreta 122
5.13 Dados amostrados: transformada de Fourier discreta 122
5.14 Transformada de Fourier discreta centrada 124
6 Restauração de imagens 127
6.1 Modelo para a formação de imagens 127
6.2 Natureza da função de espalhamento de ponto e do ruído 128
6.3 Restauração por filtro de Fourier inverso 128
6.4 Filtro de Wiener-Helstrom 132
6.5 Origem do filtro de Wiener-Helstrom 133
6.6 Soluções aceitáveis para a equação de captura de imagens 136
6.7 Deconvolução com regularização 136
6.8 Estimação de uma função de espalhamento de ponto ou
função de transferência óptica desconhecida 138
6.9 Deconvolução cega 140
6.10 Deconvolução iterativa e algoritmo de Lucy-Richardson 141
6.11 Formulação matricial da restauração de imagens 144
6.12 Solução-padrão de mínimos quadráticos 146
Solomon CadZeroPDFG.indd 7 11.06.13 16:06:35:10
viii sumário
6.13 Restauração com regularização de mínimos quadráticos 146
6.14 Distribuições de entrada estocásticas e estimadores bayesianos 147
6.15 Estimador de Gauss-Markov generalizado 148
7 Geometria 151
7.1 Descrição de forma 151
7.2 Transformações que preservam a forma 152
7.3 Transformação de forma e coordenadas homogêneas 153
7.4 Transformação afim 2D genérica 154
7.5 Transformação afim em coordenadas homogêneas 155
7.6 Transformação procustiana 157
7.7 Alinhamento procustiano 157
7.8 Transformação projetiva 161
7.9 Transformações não lineares 164
7.10 Deformação: transformação espacial de uma imagem 166
7.11 Transformações espaciais sobredeterminadas 169
7.12 Deformação por partes 171
7.13 Deformação afim por partes 171
7.14 Deformação: mapeamentos direto e reverso 174
8 Processamento morfológico 175
8.1 Introdução 175
8.2 Imagens binárias: primeiro plano, segundo plano e conectividade 175
8.3 Elementos estruturais e vizinhanças 176
8.4 Dilatação e erosão 177
8.5 Dilatação, erosão e elementos estruturais em Matlab 178
8.6 Decomposição de elemento estrutural em Matlab 180
8.7 Efeitos e usos de erosão e dilatação 182
8.7.1 Aplicação de erosão na determinação de tamanho de partículas 184
8.8 Abertura e fechamento morfológicos 186
8.8.1 Analogia com bola rolante 186
8.9 Extração de contorno 189
8.10 Extração de componentes conectados 190
8.11 Preenchimento de região 192
8.12 Transformação acerto-ou-erro 192
8.12.1 Generalização da transformação acerto-ou-erro 195
8.13 Relaxação de restrições na transformação acerto-ou-erro: pixel ‘tanto faz’ 196
8.13.1 Afinamento morfológico 198
8.14 Esqueletização 198
8.15 Abertura por reconstrução 200
8.16 Erosão e dilatação em escala de cinza 202
8.17 Elementos estruturais em escala de cinza: caso geral 203
8.18 Erosão e dilatação em escala de cinza com elementos estruturais simples 204
8.19 Abertura e fechamento em escala de cinza 205
Solomon CadZeroPDFG.indd 8 11.06.13 16:06:36:10
sumário ix
8.20 Transformação top-hat 206
8.21 Resumo 207
9 Características 210
9.1 Marcos e vetores de forma 210
9.2 Descritores de forma de um parâmetro 211
9.3 Assinaturas e expansão de Fourier radial 213
9.4 Momentos estatísticos como descritores de regiões 217
9.5 Características de texturas com base em medidas estatísticas 220
9.6 Análise de componentes principais 221
9.7 Análise de componentes principais: um exemplo ilustrativo 222
9.8 Teoria da análise de componentes principais: versão 1 225
9.9 Teoria da análise de componentes principais: versão 2 226
9.10 Eixos principais e componentes principais 227
9.11 Resumo das propriedades da análise de componentes principais 227
9.12 Redução de dimensionalidade: propósito da análise
de componentes principais 229
9.13 Análise de componentes principais em um ensemble de imagens digitais 230
9.14 Representação de exemplos fora da amostra com a análise
de componentes principais 230
9.15 Exemplo importante: autofaces e a face humana 232
10 Segmentação de imagens 236
10.1 Segmentação de imagens 236
10.2 Uso de propriedades e características de imagens na segmentação 236
10.3 Aplicação de limiar de intensidade 237
10.3.1 Problemas associados à aplicação de limiar global 239
10.4 Crescimento de regiões e divisão de regiões 239
10.5 Algoritmo de divisão-união 240
10.6 O desafio da detecção de bordas 242
10.7 Filtros laplaciano de gaussiano e diferença de gaussianos 242
10.8 Detector de bordas de Canny 243
10.9 Operadores de interesse 246
10.10 Segmentação por divisores de águas 250
10.11 Funções de segmentação 251
10.12 Segmentação de imagens com campos aleatórios de Markov 256
10.12.1 Estimação de parâmetros 258
10.12.2 Parâmetros de ponderação de vizinhanças θn 259
10.12.3 Minimização de U(x|y): algoritmo de modos condicionais
iterados 260
Solomon CadZeroPDFG.indd 9 11.06.13 16:06:36:10
x sumário
11 Classificação 261
11.1 O propósito da classificação automatizada 261
11.2 Classificação supervisionada e não supervisionada 262
11.3 Classificação: um exemplo simples 262
11.4 Projeto de sistemas de classificação 263
11.5 Classificadores simples: protótipos e critérios de distância mínima 265
11.6 Funções discriminantes lineares 266
11.7 Funções discriminantes lineares em N dimensões 270
11.8 Extensão do classificador de distância mínima e distância de Mahalanobis 270
11.9 Classificação bayesiana: definições 272
11.10 Regra de decisão bayesiana 273
11.11 Densidade normal multivariada 274
11.12 Classificadores bayesianos para distribuições normais multivariadas 275
11.12.1 Discriminante linear de Fisher 278
11.12.2 Funções de risco e de custo 279
11.13 Ensemble de classificadores 280
11.13.1 Combinação de classificadores fracos: método AdaBoost 280
11.14 Aprendizado não supervisionado: aglomeração por k médias 281
Leitura adicional 284
Índice 285
Solomon CadZeroPDFG.indd 10 11.06.13 16:06:36:10
Prefácio
Escopo deste livro
Este é um texto introdutório à ciência (e à arte) de processamento de imagem. O livro também faz
uso da linguagem de programação e das caixas de ferramentas (toolboxes) de Matlab para ilustrar e
consolidar alguns conceitos elementares e essenciais no moderno processamento de imagens e no
reconhecimento de padrões.
Os autores acreditam piamente no velho ditado “Ouça e esqueça..., Veja e recorde..., Faça e saiba”.
Para a maioria das pessoas, o verdadeiro aprendizado se dá por meio de bons exemplos e experimentos
bem conduzidos. Assim, o livro tem um grande número de exemplos, exercícios de variados graus de
dificuldades e experimentos computacionais escolhidos com muito cuidado e elaborados para ajudar
o leitor a alcançar um bom entendimento do material. Todos os códigos dos programas (arquivos .m)
usadosfeito?
I5imread('cameraman.tif '); %Lê a imagem
subplot(2,2,1), imshow(I); %Exibe a imagem
Id5im2double(I);
Output152*log(11Id);
Output253*log(11Id);
Output355*log(11Id);
subplot(2,2,2), imshow(Output1); %Exibe as imagens resultantes
subplot(2,2,3), imshow(Output2);
subplot(2,2,4), imshow(Output3);
3.3.2 Transformação exponencial
A transformação exponencial é a inversa da transformação logarítmica. Agora, a função de mapea-
mento é definida pela base e elevada à potência do valor do pixel de entrada:
(3.6)
no qual I(i, j) é o valor de pixel na posição (i, j), na imagem I.
Essa transformação realça detalhes nas regiões de altos valores na imagem (regiões claras) e reduz
a faixa dinâmica das regiões de baixos valores (regiões escuras) − efeito oposto ao da transformação
logarítmica. A escolha da base depende do grau desejado de compressão da faixa dinâmica. Em geral,
números de base maiores do que 1 são adequados para a melhora de imagens fotográficas. Assim,
expandimos a notação da transformação exponencial de modo a incluir uma base variável e, como
antes, ajustamos a faixa de saída de forma apropriada:
(3.7)
Agora, (1 + a) é a base e c, o fator de escala necessário para assegurar que a saída corresponda
a uma faixa apropriada. Quando Ientrada(i, j) 5 0, fica aparente que o resultado seria Isaída(i, j) 5 c, a
menos que somemos −1 para evitar a ocorrência desse deslocamento na imagem de saída. O grau de
compressão e expansão da faixa dinâmica é controlado pela porção da curva da função exponencial
usada no mapeamento da entrada para a saída; isso é determinado pelo parâmetro a. Como ilustrado
na Figura 3.8, dado que a função exponencial é quase linear nas proximidades da origem, o grau de
compressão é maior em imagens que contenham uma estreita faixa de valores de pixel do que em
imagens com uma faixa de valores mais larga.
Solomon 03PDFG.indd 54 21.05.13 12:21:52:10
Pixels 55
A Figura 3.9 e o Exemplo 3.9 ilustram o efeito da transformação exponencial (e de variação da
base). Podemos ver que o contraste do fundo na imagem original pode ser melhorado com a apli-
cação da transformação exponencial às custas do contraste nas regiões mais escuras da imagem.
O fundo é uma área de altos valores da imagem (área clara), enquanto as regiões mais escuras
correspondem a valores menores de pixel. Esse efeito aumenta à medida que o número de base
aumenta.
Exemplo 3.9
Código Matlab O que está sendo feito?
I5imread('cameraman.tif '); %Lê a imagem
subplot(2,2,1), imshow(I); %Exibe a imagem
Id5im2double(I);
Output154*(((110.3).^(Id)) - 1);
Output254*(((110.4).^(Id)) - 1);
Output354*(((110.6).^(Id)) - 1);
subplot(2,2,2), imshow(Output1); %Exibe as imagens resultantes
subplot(2,2,3), imshow(Output2);
subplot(2,2,4), imshow(Output3);
O Exemplo 3.9 ilustra como a transformação exponencial pode ser aplicada a uma imagem em
Matlab. Nesse exemplo, mantemos a constante c inalterada e variamos o parâmetro a da base expo-
nencial que, por sua vez, varia o efeito da transformação na imagem.
3.3.3 Transformação em lei de potência (gama)
Uma alternativa às transformações logarítmica e exponencial é a transformação ‘elevar a uma potên-
cia’ ou em lei de potência, na qual cada valor de pixel é elevado a uma potência fixa:
Figura 3.8 Transformação Exponencial: A variação
do parâmetro a altera o gradiente da função expo-
nencial usada para transformar a entrada na saída.
Solomon 03PDFG.indd 55 21.05.13 12:21:52:10
56 Capítulo 3
(3.8)
Em geral, um valor de g > 1 realça o contraste das regiões de altos valores da imagem às custas das
regiões de baixos valores, enquanto o reverso ocorre para g 1). A
constante c ajusta a faixa de saída, como antes.
O Exemplo 3.10 ilustra como tal transformação pode ser aplicada a uma imagem em Matlab.
Uma ilustração dessa transformação, como gerada por esse exemplo de Matlab, é mostrada na Figura
3.10.
Exemplo 3.10
Código Matlab O que está sendo feito?
I5imread('cameraman.tif '); %Lê a imagem
subplot(2,2,1), imshow(I); %Exibe a imagem
Id5im2double(I);
Output152*(Id.^0.5);
Output252*(Id.^1.5);
Output352*(Id.^3.0);
subplot(2,2,2), imshow(Output1) %Exibe as imagens resultantes
subplot(2,2,3), imshow(Output2)
subplot(2,2,4), imshow(Output3)
3.3.3.1 Aplicação: correção gama
Uma aplicação frequente da transformação em lei de potência é a correção gama. O termo correção
gama descreve a correção que se faz necessária devido à curva não linear de saída dos modernos
monitores de computador. Quando exibimos uma dada intensidade em um monitor, variamos a ten-
são analógica em proporção à intensidade desejada. Um problema comum a todos os monitores é a
relação não linear entre tensão de entrada e intensidade de saída. Na verdade, a intensidade de saída
Figura 3.9 Aplicação da transformação exponencial a uma imagem.
Solomon 03PDFG.indd 56 21.05.13 12:21:53:10
Pixels 57
do monitor geralmente varia com a potência da tensão de entrada, com g 5 2,5 aproximadamente
(esse valor depende do tipo do monitor, fabricante, tempo de uso etc.). Isto significa que, quando
desejamos uma intensidade de saída, digamos, i, obtemos uma intensidade i2,5. Para evitar o proble-
ma, podemos processar as intensidades da imagem usando uma transformação em lei de potência
inversa antes da saída para assegurar uma exibição correta. Assim, se o efeito gama do monitor puder
ser caracterizado como Isaída 5 (Ientrada)g, no qual g é o valor r da curva de saída do monitor (direita
inferior), a pré-correção da entrada com a transformação em lei de potência inversa, (Ientrada)1/g, per-
mite a produção da saída correta:
(3.9)
Modernos sistemas operacionais dispõem de facilidades embutidas para correção gama, permi-
tindo que o usuário especifique um valor de g a ser aplicado em uma transformação em lei de po-
tência, que é efetuada automaticamente em todas as saídas gráficas. Em geral, imagens são exibidas
com um valor g 5 2,2. Para um monitor específico, a calibração gama pode ser empregada para
determinar um valor preciso de g.
O Exemplo 3.11 mostra que a correção gama pode ser aplicada a uma imagem em Matlab através
da função imadjust, que efetua a transformação em lei de potência. Uma ilustração do resultado é
mostrada na Figura 3.11.
Figura 3.10 Aplicação da transformação em lei de potência a uma imagem.
Exemplo 3.11
Código Matlab O que está sendo feito?
A5imread('cameraman.tif '); %Lê a imagem
continua
Solomon 03PDFG.indd 57 21.05.13 12:21:54:10
58 Capítulo 3
3.4 Distribuições de pixels: histogramas
Um histograma de uma imagem é um gráfico da frequência relativa de ocorrência de cada um dos
valores de pixel permitidos na imagem em função dos próprios valores. Se normalizarmos tal gráfico
de frequências, de modo que a soma total de todas as entradas de frequência na faixa permitida seja
unitária, podemos tratar o histograma da imagem como uma função densidade de probabilidade
discreta, que define a probabilidade de ocorrência de um determinado valor de pixel na imagem. A
inspeção visual de um histograma de imagem pode revelar o contraste básico presente na imagem,
assim como qualquer diferença potencial nas distribuições de cores de componentes da cena na
frente e no fundo da imagem.
No caso de uma simples imagem em escala de cinza, o histograma pode ser construído com a
contagem do número de vezes que cada valor da escala de cinza (0−255) ocorre na imagem. A cada
vez que um determinado valor é encontrado, o correspondente intervalo de valores (bin) no histo-
grama sofre um incremento; portanto, um histograma de imagem pode ser facilmente construído
da seguinte forma:
O Exemplo 3.12 mostra como podemos calcular e exibir o histograma de uma imagem em Matlab.
A Figura 3.12 ilustra um histograma; nesta figura, vemos um histograma com dois picos distintos:
subplot(1,2,1),imshow(A); %Exibe a imagem
B5imadjust(A,[0 1],[0 1],1./3); %Mapeia valores em escala de cinza da imagem A no
%intervalo 0−1
%ao intervalo de saída 0−1 com fator gama de 1/3
%(i.e. r53).
%Tecle >> doc imadjust para obter detalhes de sintaxe
subplot(1,2,2),imshow(B); %Exibe o resultado
Figura 3.11 Correção gama em uma imagem.
continuação
Solomon 03PDFG.indd 58 21.05.13 12:21:55:10
Pixels 59
um pico elevado na faixa inferior de valores de pixel, que corresponde à distribuição de intensidade
do fundo da imagem, e um pico mais baixo na faixa de valores de pixel mais altos (pixels claros), que
corresponde aos objetos na região frontal (moedas).
A partir do Exemplo 3.12, também podemos consultar e acessar intervalos individuais de valores
do histograma e exibir o número de pixels associados a um determinado intervalo de valores no
primeiro pico, como no Exemplo 3.13.
Exemplo 3.12
Código Matlab O que está sendo feito?
I5imread('coins.png'); %Lê a imagem
subplot(1,2,1), imshow(I); %Exibe a imagem
subplot(1,2,2), imhist(I); %Exibe histograma
Exemplo 3.13
Código Matlab O que está sendo feito?
I5imread('coins.png'); %Lê a imagem
[counts,bins]5imhist(I); %Obtém valores de intervalos do histograma
counts(60) %Consulta o valor do 60o intervalo
Figura 3.12 Imagem de exemplo e correspondente histograma.
Solomon 03PDFG.indd 59 21.05.13 12:21:56:10
60 Capítulo 3
3.4.1 Histogramas para a seleção de limiares
No exemplo mostrado na Figura 3.12, o histograma da imagem é mostrado como um gráfico de bar-
ras. O eixo horizontal representa a faixa de valores na imagem (0−255 para escala de cinza de 8 bits),
enquanto o eixo vertical mostra o número de vezes que cada valor efetivamente ocorre na imagem.
Se selecionarmos um valor de limiar entre os dois picos do histograma, poderemos separar o fundo/
frente da imagem usando a abordagem de aplicação de limiar discutida na Seção 3.2.3 (um limiar de
~120 é adequado para a Figura 3.12). Em geral, cenas com distribuições bimodais claras se prestam
melhor à aplicação de limiar. Cenas mais complexas, como a da Figura 3.13, exibem histogramas
mais complexos e a simples aplicação de limiar para separação frente/fundos não é possível. Nesses
casos, devemos recorrer às técnicas mais sofisticadas de segmentação de imagens (Capítulo 10).
Em Matlab, podemos usar o histograma da imagem como base para o cálculo de um valor auto-
mático de limiar. No Exemplo 3.14, a função graythresh explora o método Otsu, que escolhe o valor
de limiar que minimiza a variância estatística interclasse dos pixels preto e branco resultantes da
aplicação de limiar.
Exemplo 3.14
Código Matlab O que está sendo feito?
I5imread('coins.png'); %Lê a imagem
level5graythresh(I); %Obtém limiar OTSU
It5im2bw(I, level); %Aplica limiar à imagem
imshow(It); %Exibe a imagem resultante
Figura 3.13 Imagem de exemplo e correspondente histograma.
Solomon 03PDFG.indd 60 21.05.13 12:21:57:10
Pixels 61
3.4.2 Aplicação adaptativa de limiar
A aplicação adaptativa de limiar, que usa um limiar diferente para cada posição de pixel na imagem,
foi projetada para superar as limitações do convencional limiar global. O limiar local é, em geral,
determinado pelos valores dos pixels nas vizinhanças do pixel em consideração. Assim, em uma
vizinhança suficientemente pequena, a aplicação adaptativa de limiar pode ser assumida como apro-
ximadamente uniforme.
Na abordagem adaptativa, o valor de limiar local t pode ser baseado em diferentes estatísticas.
Em geral, o limiar é escolhido como t 5 média + C, t 5 mediana + C ou piso((max − min)/2) + C,
levando os N 3 N pixels vizinhos ao pixel em consideração. A escolha de N é importante e seu valor
deve ser suficientemente grande para, em cada ponto, cobrir um número adequado de pixels frontais
e de fundos, mas não deve ser demasiadamente grande a ponto de permitir que as deficiências de
iluminação global afetem o valor do limiar. Quando o número de pixels de primeiro plano presentes
for insuficiente, o valor escolhido de limiar, em geral, é pobre (ou seja, a média/mediana ou a dife-
rença média máximo/mínimo da vizinhança varia muito com ruído na imagem). Por essa razão, a
constante de deslocamento C é introduzida no limiar global para definir um limiar que esteja acima
da variância de ruído em áreas de pixels uniformes.
No Exemplo 3.15, ilustramos a aplicação adaptativa de limiar em Matlab com o limiar t 5 média +
C e uma vizinhança de N 5 15, C 5 20. O resultado desse exemplo é mostrado na Figura 3.14, onde
Figura 3.14 Aplicação adaptativa de limiar a uma imagem.
Exemplo 3.15
Código Matlab O que está sendo feito?
I5imread('rice.png'); %Lê a imagem
Im5imfilter(I,fspecial('average',[15 15]),'replicate'); %Cria imagem média
It5I-(Im120); %Subtrai imagem média
(1 constante C 5 20)
Ibw5im2bw(It,0); %Resultado para limiar em 0
(mantém apenas 1 vê resultados)
subplot(1,2,1), imshow(I); %Exibe a imagem
subplot(1,2,2), imshow(Ibw); %Exibe o resultado
Solomon 03PDFG.indd 61 21.05.13 12:21:58:10
62 Capítulo 3
vemos a separação quase perfeita dos grãos de arroz na região frontal da imagem, apesar da presença
de um gradiente de iluminação na imagem (este resultado deve ser comparado com a região inferior
da Figura 3.4, obtida com aplicação de limiar global). Esse resultado pode ser refinado com uso das
operações morfológicas de abertura e fechamento discutidas no Capítulo 8.
O Exemplo 3.15 também pode ser adaptado para o emprego do limiar t 5 mediana + C: basta
substituir a linha do código Matlab que constrói a imagem média por uma que construa a imagem
mediana, como mostra o Exemplo 3.16. Ajustes dos parâmetros N e C podem ser necessários para
acomodar as diferenças entre as duas abordagens de aplicação de limiar.
Exemplo 3.16
Código Matlab O que está sendo feito?
Im5medfilt2(I,[N N]); %Cria imagem mediana
3.4.3 Alongamento de contraste
Histograma de imagens também são usados para alongamento de contraste* (contrast stretching,
também conhecido como normalização), uma operação que alonga a faixa de intensidades de pixel
da imagem de entrada para que a imagem de saída tenha faixa dinâmica mais larga.
Para efetuar o alongamento, devemos primeiro conhecer os limites superior e inferior dos valores
de pixels, respectivamente denotados por a e b ao longo dos quais a imagem deve ser normalizada.
Em geral, tais limites são os mesmos da faixa de quantização de pixel em uso (por exemplo, para uma
imagem de 8 bits, a 5 255 e b 5 0 − Seção 1.2). Na forma mais simples, a primeira parte da operação
de alongamento de contraste varre a imagem de entrada para determinar os valores de pixel máximo
e mínimo, respectivamente denotados por c e d. Com base nesses quatro valores (a, b, c e d), a faixa
de valores de pixel é alongada segundo a fórmula:
(3.10)
para cada posição de pixel (i, j) nas imagens de entrada e de saída. Alongamento de contraste é, por-
tanto, um exemplo adicional de transformação pontual, como discutido no início deste capítulo.
Na verdade, esse método de escolha de c e d é muito singelo, pois até mesmo um único pixel es-
tranho (por exemplo, um pixel que não seja representativo da faixa de valores de pixel presente na
imagem − como ruído sal e pimenta) afetará drasticamente o resultado global do realce. Podemos
aprimorar esse método assegurando que c e d sejam, de fato, representativos do conteúdo da imagem
e robustos diante de pixels estranhos aleatórios. Aqui, consideramos dois métodos:
• Método 1 Calcular o histograma da imagem de entrada, selecionar c e d como o 5o e 95o pontos
percentis da distribuição cumulativa (ou seja, 5% dos pixels da imagem terão valores menores do
que c e 5% terão valores maiores do que d).
• Método 2 Calcular o histograma da imagem de entrada, determinar o valor de intensidade
com ocorrência mais frequente na imagem. Assumamos que o valor de pico tenha ordem N no
*O termo “esticamento de contraste” também é usado. (N.T.)
Solomon 03PDFG.indd 6221.05.13 12:21:58:10
Pixels 63
intervalo. Selecionamos uma fração de corte de N (por exemplo, 5%). Nos afastamos do pico
nas duas direções (para esquerda, em direção a 0; para a direita, em direção a 255) até que os
últimos valores maiores do que o corte sejam alcançados. Estes valores são c e d (ver histograma
na Figura 3.12).
O método 2 é um pouco menos robusto no caso de histogramas complexos, com múltiplos picos, ou
de histogramas que não seguem distribuições típicas de gradiente de intensidade.
O Exemplo 3.17 ilustra a realização de alongamento de contraste em Matlab com o método 1. O
resultado do Exemplo 3.17 é mostrado na Figura 3.15, na qual vemos que o contraste é melhorado de
forma significativa (embora ligeiramente saturado). Podemos exibir os histogramas antes e depois do
alongamento de contraste, como no Exemplo 3.18. Estas distribuições de histogramas são mostradas
na Figura 3.16. Podemos perceber claramente que a limitada faixa dinâmica da imagem original e
como o histograma após alongamento de contraste corresponde a uma versão do original com escala
horizontal ampliada.
Exemplo 3.17
Código Matlab O que está sendo feito?
I5imread('pout.tif '); %Lê a imagem
Ics5imadjust(I,stretchlim(I,[0.05 0.95]),[]); %Alonga o contraste usando o método 1
subplot(1,2,1), imshow(I); %Exibe a imagem
subplot(1,2,2), imshow(Ics); %Exibe o resultado
Comentários
Aqui, usamos a função stretchlim() para identificar os 5o e 95o pontos percentis da distribuição do
histograma (normalizado) da imagem. A função imadjust() é, então, usada para mapear este interva-
lo ao máximo intervalo (default) de quantização da imagem.
Figura 3.15 Alongamento de contraste aplicado a uma imagem.
Solomon 03PDFG.indd 63 21.05.13 12:21:59:10
64 Capítulo 3
Exemplo 3.18
Código Matlab O que está sendo feito?
subplot(1,2,1), imhist(I); %Exibe histograma de entrada
subplot(1,2,2), imhist(Ics); %Exibe histograma de saída
Como evidenciado neste exemplo (Figura 3.15), operações de realce de imagens como esta são de
avaliação altamente subjetiva, e o ajuste de parâmetros (valores de c e d) faz diferença significativa
na saída resultante.
3.4.4 Equalização de histogramas
A segunda operação de realce de contraste baseada na manipulação do histograma da imagem é a
equalização do histograma. É uma das técnicas de realce de imagens mais empregadas.
3.4.4.1 Teoria de equalização de histogramas
Inicialmente, assumiremos uma imagem de entrada em escala de cinza, denotada por Ientrada(x). Se a
variável x for contínua e normalizada para ficar restrita à faixa [0, 1], isto nos permitirá considerar o
histograma de imagem normalizado como uma função densidade de probabilidade (PDF − Proba-
bility Density Function) px(x), que define a probabilidade de ocorrência de certos valores da escala de
cinza na vizinhança de x. De modo similar, podemos denotar a imagem de saída em escala de cinza
resultante da equalização de histograma por Isaída(y), com uma correspondente PDF py(y).
Figura 3.16 Distribuições de histograma antes e depois do alongamento de contraste na Figura 3.15.
Solomon 03PDFG.indd 64 21.05.13 12:22:0:10
Pixels 65
A essência do problema de equalização de histograma é que buscamos alguma função de trans-
formação y 5 f(x) que mapeie os valores em escala de cinza da imagem de entrada nos valores da
imagem de saída e transforme a PDF px(x) de modo a produzir a desejada PDF de saída py(y). Um
resultado básico da teoria elementar de probabilidade fornece:
(3.11)
isso implica que a desejada PDF de saída depende apenas da PDF de entrada e da função de trans-
formação y 5 f(x). Consideremos, então, a função de transformação a seguir, que calcula a área sob a
curva da densidade de probabilidade de entrada (integral) entre 0 e um limite superior x:
(3.12)
Esse último resultado é identificado como a função distribuição cumulativa (CDF − Cumulative Dis-
tribution Function) da variável aleatória x. Diferenciando essa expressão em relação a x, aplicando a
regra de Leibniz1 e substituindo na equação anterior, obtemos:
(3.13)
Por fim, como px(x) é a densidade de probabilidade e, certamente, positiva (0 ≤ px(x) ≤ 1), temos:
(3.14)
A densidade de probabilidade de saída py(y) é, portanto, constante, indicando que todos os valores
de intensidade de saída são provavelmente iguais, o que significa que o histograma da intensidade de
saída foi equalizado.
O princípio da equalização de histograma para o caso contínuo é, portanto, encapsulado pela fun-
ção de mapeamento y 5 f(x) entre a intensidade de entrada x e a intensidade de saída y, que, como
mostrado, é dada pela integral cumulativa da PDF de entrada (a distribuição cumulativa na estatís-
tica). No entanto, devemos notar que o anterior resultado da transformação de densidade depende
da satisfação de duas condições. A função y(x) deve (a) ser unívoca e (b) crescer monotonamente,
ou seja, 0 ≤ y(x) ≤ 1, para 0 ≤ x ≤ 1. A condição (a) assegura que a transformação inversa x−1(y) existe
e que a ordem crescente de valor de pixel de preto para branco (escuro para claro, 0 a 255) é preser-
vada. Reparemos que, se a função não crescesse monotonamente, a transformação inversa não seria
unívoca, resultando em uma situação em que algumas intensidades de saída seriam mapeadas em
mais de uma intensidade de entrada. A segunda condição simplesmente assegura que a faixa de saída
mapeia a de entrada.
3.4.4.2 Teoria de equalização de histogramas: caso discreto
Em imagens digitais reais, os valores de intensidade podem ocupar somente um número finito e dis-
creto de níveis. Assumamos que haja S possíveis valores discretos de intensidade, denotados por xk,
com k 5 {0, 1, 2, ..., S−1} e que, para o nível xk, a densidade de probabilidade de entrada seja px(xk).
1Regra de Leibniz: a derivada de uma integral definida em relação ao limite superior é igual ao valor do integrando neste limite superior.
Solomon 03PDFG.indd 65 21.05.13 12:22:1:10
66 Capítulo 3
Nesse caso discreto, o mapeamento geral necessário y 5 f(x) pode ser definido especificamente para
xk como a seguinte soma:
(3.15)
Isto é, essencialmente, o histograma cumulativo para a imagem de entrada x, onde o k-ésimo valor
y(xk) é a soma de todos os valores no histograma até k, inclusive. Assumindo, como é o caso comum,
que os valores de intensidade permitidos nas imagens de entrada e de saída possam ser denotados
simplesmente por valores inteiros discretos k, com k 5 {0, 1, 2, ..., S−1}, isto pode ser escrito como:
(3.16)
em que a população do k-ésimo nível é dada por nk e o número total de pixels na imagem é N.
Essa definição torna o correspondente procedimento computacional de equalização de histogra-
ma uma rotina de fácil implementação na prática. Ao contrário do caso contínuo, a transformação
discreta para y 5 f(x) não é capaz de, em geral, produzir um histograma de saída (uniforme) per-
feitamente equalizado (ou seja, em que todos os valores de intensidade sejam estrita e igualmente
prováveis). Na prática, é obtida uma boa aproximação ao ideal, voltada e adaptada ao histograma
cumulativo da imagem de entrada, que espalha os valores de intensidade de modo mais uniforme ao
longo da faixa de quantização especificada para a imagem.
3.4.4.3 Equalização de histogramas na prática
Os dois principais atrativos da equalização de histogramas são ser um procedimento totalmente au-
tomático e de fácil implementação computacional. A transformação de intensidade y 5 f(x) definida
nesta seção depende apenas do prontamente disponível histograma da imagem de entrada.
A modelagem de histogramas provê um meio de modificar a faixa dinâmica de uma imagem de
modo que sua distribuição de histograma se ajuste a uma dada forma. Na equalização de histogra-
mas, empregamos um mapeamento monótono e não linear, tal que os pixels na imagem de entrada
sejam mapeados a uma imagem de saída com uma distribuição de histograma uniforme. Como mos-
trado na Seção 3.4.4.2, o requeridomapeamento pode ser definido como o histograma cumulativo
C(i), tal que cada entrada seja a soma de todas as frequências de ocorrência de cada nível de cinza
até, e incluindo, a entrada i do histograma. Por sua própria natureza, C() é uma função unívoca de
crescimento monótono. Seu gradiente será proporcional à atual equalização da imagem (ou seja, um
gradiente igual a 1 corresponde a uma imagem perfeitamente equalizada, pois o aumento em cada
passo é constante).
No caso idealizado, a resultante imagem equalizada conterá um igual número de pixels, todos
com o mesmo nível de cinza. Para L possíveis níveis de cinza em uma imagem que tem N pixels, isto
implica que, neste caso idealizado, a j-ésima entrada do histograma cumulativo C(j) tenha o valor
jN/L (ou seja, j vezes o valor equalizado). Podemos, assim, determinar um mapeamento entre os va-
lores de intensidade i de pixels de entrada e os valores de intensidade j de pixels de saída como:
(3.17)
o que pode ser reescrito como
(3.18)
Solomon 03PDFG.indd 66 21.05.13 12:22:2:10
Pixels 67
e representa o mapeamento de um valor de intensidade i de pixel da imagem de entrada no valor de
intensidade j de pixel da imagem de saída por meio do histograma cumulativo C() da imagem de
entrada.
Na expressão anterior, o máximo valor de j é L, mas, para uma dada imagem, a faixa de valores
em escala de cinza é estritamente j 5 {0, ..., L−1}. Na prática, isso é corrigido com a adição de −1 à
equação, e também requer um teste para assegurar que um valor j 5 −1 não seja retornado:
(3.19)
Em termos de nossa familiar notação baseada em imagens, para posições de pixel 2D i 5 (c, r) e j 5
(c, r), a última expressão é reescrita como:
(3.20)
na qual C() é o histograma cumulativo da imagem de entrada Ientrada, N é o número de pixels na
imagem de entrada (C 3 R) e L é o número de possíveis níveis de cinza para as imagens (ou seja, o
limite de quantização, Seção 1.2). Essa expressão fornece uma compacta tabela de referência para o
mapeamento de valores de pixel em Ientrada em Isaída. Como um procedimento automático, esse mapea-
mento, que corresponde à equalização de histograma, pode ser implementado com facilidade, como
no Exemplo 3.19. O resultado de saída do Exemplo 3.19 é mostrado na Figura 3.17; esse resultado
pode ser comparado com a faixa dinâmica de entrada da imagem e o correspondente histograma
da imagem nas Figuras 3.15 (à esquerda) e 3.16 (à esquerda), respectivamente. Agora (Figura 3.17),
podemos ver o efeito da equalização na faixa dinâmica da imagem e a correspondente equalização
da distribuição de histograma em toda a faixa de equalização da imagem (em comparação com as
entradas nas Figuras 3.15 (à esquerda) e 3.16 (à esquerda)). No histograma resultante na Figura 3.17,
nem todas as entradas são iguais, como discutido nas Seções 3.4.4.1 e 3.4.4.2 − um erro conceitual
comum quanto à equalização de histogramas.
Exemplo 3.19
Código Matlab O que está sendo feito?
I5imread('pout.tif '); %Lê a imagem
Ieq5histeq(I);
subplot(2,2,1), imshow(I); %Exibe a imagem
subplot(2,2,2), imshow(Ieq); %Exibe o resultado
subplot(2,2,3), imhist(I); %Exibe o histograma da imagem
subplot(2,2,4), imhist(Ieq); %Exibe o histograma do resultado
3.4.5 Casamento de histogramas
Apesar das atraentes propriedades, a equalização de histogramas não é nenhuma panaceia. Há mui-
tas situações em que a equalização produz efeitos indesejáveis. Às vezes, uma técnica relacionada,
conhecida como casamento de histogramas (ou especificação de histogramas), se mostra mais apro-
Solomon 03PDFG.indd 67 21.05.13 12:22:2:10
68 Capítulo 3
priada e pode ser empregada tanto para aprimorar o contraste visual como para regularizar uma
imagem antes de subsequente processamento ou análise.
A ideia por trás do casamento de histogramas é muito simples. Dada uma imagem original (de
entrada) Ientrada e seu correspondente histograma px(x), buscamos efetuar uma transformação f(x) nos
valores de intensidade de entrada tal que a imagem transformada (de saída) Isaída tenha um histogra-
ma desejado (histograma-alvo) pz(z). Muitas vezes, o histograma-alvo será tomado de uma imagem
modelo ou ‘típica’, de tipo similar.
3.4.5.1 Teoria de casamento de histogramas
Por ora, evitaremos discutir a questão de como obter o histograma-alvo e assumiremos simplesmente
que o mesmo seja conhecido. A tarefa de casamento pode, então, ser formulada da seguinte forma.
Sejam os níveis de intensidade de entrada denotados pela variável x (0 ≤ x ≤ 1) e a PDF (ou seja,
a versão contínua, normalizada do histograma) da imagem de entrada, por px(x). Sejam os níveis
de intensidade de saída (casados) denotados pela variável z (0 ≤ z ≤ 1) e a correspondente PDF da
imagem de saída por pz(z). A tarefa de casamento de histogramas pode, então, ser formulada como
a dedução de um mapeamento f(x) entre as intensidades de entrada x e de saída z tal que os valores
de intensidade da saída mapeada tenham a desejada PDF pz(z). Esse problema pode ser abordado
como mostrado a seguir.
A distribuição cumulativa (CDF) Cx(x) da imagem de entrada é, por definição, dada pela integral
da PDF de entrada:
(3.21)
Figura 3.17 Equalização de histograma aplicada a uma imagem.
Solomon 03PDFG.indd 68 21.05.13 12:22:4:10
Pixels 69
De modo similar, a CDF da imagem de saída Cz(z) é dada pela integral da PDF de saída:
(3.22)
Um ponto importante em nosso raciocínio é a percepção de que estas duas transformadas são inver-
tíveis. Especificamente, uma PDF arbitrária f(x) está relacionada à sua CDF p(X) pela relação
(3.23)
Assim, o conhecimento de uma CDF determina a PDF sem nenhuma ambiguidade; se a CDF for
conhecida, a PDF também será conhecida, pois pode ser calculada por essa diferenciação explícita.
Em consequência, se pudermos definir um mapeamento f(x) entre as intensidades de entrada (x) e de
saída (z) tal que as CDFs de entrada e de saída sejam idênticas, garantiremos que as correspondentes
PDFs serão iguais. Assim, para o mapeamento z 5 f(x), exigimos que, para as CDFs definidas ante-
riormente, Cx(x) e Cz(z) sejam iguais:
(3.24)
Dessa relação, obtemos o mapeamento desejado f() como
(3.25)
A definição desse mapeamento é fundamental à capacidade de mapear a Cx(x) de entrada em
Cz(z) e, portanto, a PDF de entrada px(x) na PDF de saída pz(z).
3.4.5.2 Teoria de casamento de histogramas: caso discreto
Em geral, o mapeamento inverso C−1 definido anteriormente na Seção 3.4.5.1 não é uma função ana-
lítica, e devemos recorrer a técnicas numéricas para aproximar o mapeamento desejado. Para obter
uma aproximação discreta do mapeamento entre dois histogramas de imagem arbitrários, primeiro,
calculamos a CDF discreta Cx(k) da imagem de entrada:
(3.26)
em que xj é a população do j-ésimo nível de intensidade na imagem de entrada, N é o número total de pixels
nessa imagem e k 5 {0, 1, 2, ..., L−1}, em que L é o número de possíveis níveis de cinza para a imagem.
A seguir, de modo similar, calculamos a CDF discreta Cz(l) da imagem de saída:
(3.27)
em que zj é a população do j-ésimo nível de intensidade na imagem de saída, N é o número total de
pixels nesta imagem e l 5 {0, 1, 2, ..., L−1}, em que L é o número de possíveis níveis de cinza para a
imagem, como antes. Por fim, tratamos da versão discreta da transformada definida anteriormente
f(x) 5 Cz
21[Cx(x)], e devemos determinar o mapeamento definido por Cz
21 quando seu argumento é
a CDF da imagem de entrada, Cx(). Como no exemplo anterior de equalização de histograma (Seção
3.4.4), esse mapeamento define uma tabela de referência entre os valores de pixel das imagens de
entrada e de saída que pode ser calculada de modo fácil e eficiente.
Solomon 03PDFG.indd 69 21.05.13 12:22:5:10
70 Capítulo 3
3.4.5.3 Casamento de histogramas na prática
Ao generalizar a forma do histograma-alvo, o casamento de histogramas estende o princípio de equaliza-
ção de histograma. O casamento de histogramas é uma técnicaautomática de realce de imagens em que a
transformação requerida é deduzida de uma distribuição de histograma-alvo especificada (pelo usuário).
Na prática, a distribuição do histograma-alvo t será extraída de uma imagem de referência exis-
tente ou corresponderá a uma função matemática especificada, com as propriedades corretas. O
Exemplo 3.20 mostra como o casamento de histogramas pode ser alcançado em Matlab. Nesse exem-
plo, especificamos uma PDF linear em rampa como a distribuição alvo t; a saída resultante e o histo-
grama modificado são mostrados na Figura 3.18.
Exemplo 3.20
Código Matlab O que está sendo feito?
I5imread('pout.tif ');
pz50:255; %Define pdf do tipo rampa como histograma de saída desejado
Im5histeq(I, pz); %Fornece o histograma desejado para efetuar casamento
subplot(2,3,1), imshow(I); %Exibe a imagem
subplot(2,3,2), imshow(Im); %Exibe o resultado
subplot(2,3,3), plot(pz); %Exibe a distribuição t
subplot(2,3,4), imhist(I); %Exibe o histograma da imagem
subplot(2,3,5), imhist(Im); %Exibe o histograma do resultado
Figura 3.18 Casamento de histogramas aplicado a uma imagem.
Solomon 03PDFG.indd 70 21.05.13 12:22:6:10
Pixels 71
Fica evidente da Figura 3.18 que o desejado histograma da imagem de saída (neste caso, escolhido
arbitrariamente) não produz uma saída com características particularmente desejáveis, melhores do
que as obtidas com a equalização de histograma mostrada na Figura 3.17. Em geral, a escolha de um
apropriado histograma-alvo pressupõe o conhecimento de que estruturas estão presentes na imagem
de entrada e precisam de realce. Uma situação em que a escolha do histograma de saída pode ser
essencialmente fixada é quando a imagem em consideração trata de um exemplo de uma dada classe
(na qual a distribuição de intensidade deve ser limitada a uma forma específica), mas foi afetada por
fatores externos. Um exemplo disso é uma sequência de faces em pose frontal. O histograma de uma
dada face pode ser afetado pela intensidade da iluminação ou por efeitos de sombra. Uma face cap-
turada sob condições ideais/modelares deve fornecer o desejado histograma para corrigir tais efeitos
de iluminação ou sombra, antes do subsequente uso da transformação da imagem de entrada para
reconhecimento facial.
3.4.6 Equalização adaptativa de histograma
Às vezes, o histograma global de uma imagem pode ter uma ampla distribuição, enquanto histogra-
mas de regiões locais são altamente voltados para um dos extremos do espectro cinza. Nestes casos, é
desejável realçar o contraste destas regiões locais, mas a equalização do histograma global é ineficaz.
A solução pode ser o uso de equalização adaptativa de histograma. O termo adaptativo implica que
diferentes regiões da imagem são processadas de modo distinto (ou seja, diferentes tabelas de refe-
rência são aplicadas), dependendo das propriedades locais.
Há diversas variantes de equalização adaptativa de histograma; talvez, a mais simples e comum
seja a chamada abordagem de janela deslizante (ou baseada em blocos). Neste método, a imagem
em consideração é quebrada em ‘blocos’ relativamente pequenos e contíguos ou em N 3 M regiões
locais vizinhas (por exemplo, 16 3 16 pixels). Cada bloco ou janela interna é envolta por uma janela
externa maior, usada para calcular a apropriada tabela de referência para equalização de histograma
da janela interna.
Esta técnica, em geral, é eficaz para o aumento de contraste local, mas ‘artefatos de bloco’ podem
ocorrer em consequência do processamento de cada região isoladamente, e artefatos nas fronteiras
entre janelas internas podem produzir a impressão de uma imagem que consiste em blocos ligeira-
mente incôngruos. Os artefatos podem, geralmente, ser reduzidos com o aumento do tamanho da
janela externa em relação à janela interna.
Um método alternativo para a equalização adaptativa de histograma (atribuído a Pizer) tem sido
aplicado com sucesso e consiste nos seguintes passos:
• Uma grade (malha) regular de pontos é superposta à imagem. O espaçamento entre pontos da
grade é variável nesta abordagem; em geral, é tomado como algumas dezenas de pixels.
• Para cada ponto da grade, é determinada uma janela retangular cuja largura é o dobro do espa-
çamento da grade. Desta forma, uma dada janela tem 50% de sobreposição com suas vizinhas
imediatas no norte, sul, leste e oeste.
• Uma tabela de referência para equalização de histograma é calculada para cada uma das janelas.
Devido à sobreposição de 50% entre janelas, cada pixel na imagem corresponde a quatro janelas
retangulares adjacentes ou quatro vizinhanças.
• O valor transformado de um dado pixel de imagem é calculado como uma combinação ponde-
rada dos valores de saída das quatro tabelas de referência das vizinhanças, segundo a fórmula
bilinear:
(3.28)
Solomon 03PDFG.indd 71 21.05.13 12:22:6:10
72 Capítulo 3
em que 0 ≤ a, b ≤ 1 são pesos de distância, I1, I2, I3 e I4 são valores da tabela de referência de his-
tograma equalizado de cada uma das quatro vizinhanças adjacentes. Essa metodologia é ilustrada
na Figura 3.19. Reparemos como essa fórmula dá importância apropriada às vizinhanças às quais
pertence o ponto em consideração I; por exemplo, o valor equalizado de um pixel localizado exa-
tamente em um ponto da grade advém somente de seus vizinhos, enquanto o de um ponto equi-
distante dos quatro pontos mais próximos da grade é uma combinação igualmente ponderada dos
valores desses quatro vizinhos. Ao analisar a Figura 3.19, é importante ter em mente a natureza de
sobreposição das vizinhanças.
Uma extensão final desse método é a abordagem de equalização adaptativa de histograma limita-
da em contraste. Em termos genéricos, o cálculo de histogramas de regiões locais e a equalização de
valores de intensidade nestas regiões tendem a aumentar o contraste demasiadamente e a amplificar
o ruído. Algumas regiões em uma imagem são inerentemente suaves, com pouco contraste real, e a
equalização cega do histograma de intensidade nestas regiões pode ter resultados indesejáveis.
A principal ideia por trás do uso de limitação de contraste é a especificação de um limite l, 0 ≤ l ≤
1, ao aumento global (normalizado) aplicado a uma dada região.
Esse método estendido de equalização adaptativa de histograma limitada em contraste está dispo-
nível em Matlab e é explorado no Exemplo 3.21. O resultado do Exemplo 3.21 é mostrado na Figura
3.20, onde vemos os diferentes efeitos do limite de contraste l e da distribuição-alvo t na imagem
obtida por equalização adaptativa. Às vezes, a equalização adaptativa de histograma pode resultar em
significativo aumento no contraste local na imagem. Contudo, devido à natureza fundamentalmente
diferente de cada imagem, à possibilidade de variar o número de blocos de decomposição da imagem
e à forma específica da distribuição de probabilidade desejada, há pouca teoria genérica para nos
guiar. Assim, a obtenção de uma imagem com as desejadas características de contraste é, até certo
ponto, uma arte que exige a variação destes parâmetros com base na experiência.
Figura 3.19 Equalização adaptativa de histograma segundo a abordagem de cálculo em múltiplas regiões.
Solomon 03PDFG.indd 72 21.05.13 12:22:7:10
Pixels 73
Exemplo 3.21
Código Matlab O que está sendo feito?
I5imread('pout.tif '); %Lê a imagem
I15adapthisteq(I,'clipLimit',0.02,'Distribution','rayleigh');
I25adapthisteq(I,'clipLimit',0.02,'Distribution','exponential');
I35adapthisteq(I,'clipLimit',0.08,'Distribution','uniform');
subplot(2,2,1), imshow(I); subplot(2,2,2), imshow(I2); %Exibe original 1 saída
subplot(2,2,3), imshow(I2); subplot(2,2,4), imshow(I3); %Exibe saídas
Comentários
Aqui, usamos a função • adapthisteq() para efetuar esta operação com a especificação apropriada do
limite de contraste l (parâmetro ‘clipLimit’50,02/0,08). Ademais, a implementação da equalização
adaptativa de histograma em Matlab também permite que o usuário especifique a distribuição t de-
sejada a ser usadaem cada região da imagem (no estilo do casamento de histograma, Seção 3.4.5). A
equalização comum é efetuada com a especificação da distribuição uniforme (distribuição default).
A implementação padrão em Matlab usa, para processamento, uma divisão da imagem em 8 • 3 8
janelas/vizinhanças. Isto, assim como os outros parâmetros nesse exemplo, pode ser especificado
como uma dupla (‘nome do parâmetro’, valor) de entrada da função. A documentação da função
adapthisteq() em Matlab fornece mais detalhes (para ver a documentação, basta teclar doc adapthis-
teq na janela de comando de Matlab).
Figura 3.20 Equalização adaptativa de histograma aplicada a uma imagem.
Solomon 03PDFG.indd 73 21.05.13 12:22:8:10
74 Capítulo 3
3.4.7 Operações em histogramas de imagens em cores
Até aqui, consideramos apenas a aplicação de operações de manipulação de contraste em imagens
de um canal, em escala de cinza. A tentativa de melhorar o contraste de imagens em cores é uma
questão mais complexa do que no caso de imagens em escala de cinza. À primeira vista, pode parecer
tentadora a aplicação de equalização ou casamento de histogramas de forma independente a cada
um dos três canais (R, G, B) da imagem em cores reais. Contudo, os valores RGB determinam tanto
a intensidade como a cromaticidade (impressão subjetiva de cor) de um pixel. Em geral, a transfor-
mação de valores RGB de pixels para melhorar o contraste afetará o conteúdo cromático (matiz de
cor) da imagem.
A solução consiste em, primeiro, transformar a imagem em cor em um modelo alternativo de
percepção de cor, como HSV, em que a componente de luminância (intensidade V) seja desacoplada
das componentes cromáticas (H e S), responsáveis pela impressão subjetiva da cor. Para efetuar tais
operações em histogramas de imagens em cores, devemos, então, (a) transformar a representação
RGM da imagem na representação HSV (matiz, saturação, variância), (b) aplicar a operação em
histograma à componente de intensidade e, por fim, (c) converter o resultado de volta ao espaço em
cores. Nesse procedimento, o espaço de cores do modelo HSV não é único e outros modelos podem
ser usados (por exemplo, L*a*b). HSV é usado como exemplo e foi introduzido no Capítulo 1.
O uso de uma conversão entre espaços de cores permite que operações em histogramas sejam
realizadas em Matlab, como ilustrado no Exemplo 3.22. O resultado do Exemplo 3.22 é mostrado na
Figura 3.21, na qual vemos a aplicação de equalização de histograma (Seção 3.4.4.3, Exemplo 3.19) a
uma imagem RGB via representação intermediária no espaço de cores HSV. Notemos que a impres-
são subjetiva de cor (cromaticidade) foi preservada, embora o efeito de equalização de histograma da
componente de intensidade seja evidente no resultado.
Exemplo 3.22
Código Matlab O que está sendo feito?
I5imread('autumn.tif '); %Lê a imagem
Ihsv5rgb2hsv(I); % Converte a imagem original a HSV, I2
V5histeq(Ihsv(:,:,3)); %Equaliza o histograma do canal V (3o) de I2
Ihsv(:,:,3)5V; %Copia o plano V equalizado ao (3o) canal de I2
Iout5hsv2rgb(Ihsv); %Converte I2 de volta a RGB
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(Iout);
Figura 3.21 Equalização adaptativa de histograma aplicada a uma imagem em cor. (Veja o Encarte em co-
res.)
continua
Solomon 03PDFG.indd 74 21.05.13 12:22:9:10
Pixels 75
Exercícios
Os exercícios a seguir foram elaborados para reforçar e desenvolver os conceitos e exemplos de Mat
lab apresentados neste capítulo. Informação adicional sobre todas as funções de Matlab represen
tadas neste capítulo e nestes exercícios pode ser obtida no próprio Matlab, através do navegador de
ajuda a funções (basta teclar doc na janela de comando de Matlab, em que é a função desejada).
Funções de Matlab: imresize, size, whos, imadd, imsubtract, immultiply, imagesc, imcomple-
ment, imabsdiff, implay, uint8, horzcat, tic, toc, rgb2ycbcr.
Exercício 3.1 Use os exemplos sobre operações aritméticas (Exemplos 3.1−3.4) para explorar o uso
desses operadores. Primeiro, carregue as imagens de exemplos de Matlab 'rice.png' e 'cameraman.
tif '. Explore o uso combinado das funções de Matlab imresiza() e size() para modificar o tamanho
de uma das imagens para igualar ao da outra. O comando whos de Matlab, usado na sintaxe ‘whos v’
exibirá informação sobre o tamanho e tipo de uma dada imagem ou variável v.
Tente somar uma imagem à outra usando o operador de adição ‘+’ de Matlab e exiba o resultado.
O que acontece? Agora, some as imagens com a função imadd(), usando 'uint16' ou 'double', entre
aspas simples, como terceiro argumento na função; isso força uma saída com tipo de dado de 16
bits ou ponto flutuante em dupla precisão. Para exibir o resultado, use a função imagesc(). Como os
resultados desses dois operadores de adição se comparam e por que diferem?
Repita o exercício com o operador de subtração ‘−’ e com a função imsubtract().
Exercício 3.2 A partir da ilustração de inversão lógica discutida no Exemplo 3.6, explore a aplica
ção da função imcomplement() para representar diferentes tipos de imagem e diferentes aplicações.
Primeiro, carregue a imagem 'peppers.png' e aplique este operador. Que efeito você vê e a que aspecto
de fotografia tradicional a resultante coloração da imagem está relacionada?
A inversão de imagem também tem uso específico em imagens médicas para realçar diferentes
aspectos de uma imagem. Aplique o operador às imagens de exemplo 'mir.tif ', 'spine.tif ' e a imagem
celular 'AT3_1m4_09.tif '. Dos efeitos que vê nas resultantes imagens transformadas, quais podem ser
benéficas para um observador humano?
Exercício 3.3 Use a sequência de imagens celulares ('AT3_1m4_01.tif ', 'AT3_1m4_02.tif ', ...,
'AT3_1m4_09.tif ', 'AT3_1m4_10.tif ') e a função imabsdiff() em uma estrutura iterativa for de Ma
tlab para exibir uma animação das diferenças entre imagens na sequência.
Tente o uso de uma abordagem de realce adicional para melhorar a faixa dinâmica das imagens
diferença que resultam da função imabsdiff(). Qual é o resultado dessa operação de cálculo de dife
renças? Como isto pode ser útil?
Sugestão: Monte uma matriz que contenha os nomes dos arquivos, de 01 a 10. O efeito de ani
mação pode ser obtido atualizando a mesma figura com cada conjunto de diferenças (por exemplo,
Comentários
As funções • rgb2hsv e hsv2rgb são usadas na conversão entre os espaços cores RGB e HSV.
Na sintaxe de Matlab, canais individuais de cor de uma imagem • I podem ser referenciados como
‘I(:,:,n)’, em que n representa o canal em questão: n 5 {1,2,3} 5 {R,G,B} 5 {H,S,V} ou forma similar
para outros espaços de cores e representações de imagens.
continuação
Solomon 03PDFG.indd 75 29.05.13 11:13:27:10
76 Capítulo 3
entre as imagens de ordens k e (k − 1) na sequência) ou explorando a função implay() de Matlab para
exibir um conjunto de imagens.
Exercício 3.4 Usando uma combinação das funções immultipli() e imadd() de Matlab, implemen-
te uma função em Matlab (ou sequência de comandos) para mesclar duas imagens A e B em uma
mesma imagem com pesos wA e wB, de modo que a imagem de saída C seja
(3.29)
Experimente a mescla de diferentes imagens e tente, também, mesclar informação de uma se-
quência de imagens (por exemplo, as imagens celulares do Exercício 3.3). Como essa técnica pode
ser usada em uma aplicação real?
Exercício 3.5 Usando a técnica de aplicação de limiar demonstrada no Exemplo 3.7 e fazendo refe-
rência às funções de exibição de histogramas do Exemplo 3.12, selecione e aplique manualmente um
limiar à imagem de exemplo 'pillsetc.png'. Compare seu resultado com os das abordagens adaptativas
mostradas nos Exemplos 3.15 e 3.16. Qual é melhor? (E qual é mais fácil?)
Repita esse procedimento para isolar itens frontais nas imagens 'tape.png', 'coins.png' e 'eight.tif '.
Repare que, antes da aplicação de limiar, as imagens devem ser transformadas em escala de cinza
(Seção 1.4.1.1).
Exercício 3.6 Voltando aos Exemplos 3.15e 3.16, explore o efeito de variar o parâmetro de deslo-
camento constante C ao aplicá-lo às imagens 'cameraman.tif ' e 'coins.png'. Qual é a diferença entre
os resultados para essas duas imagens?
Implemente o terceiro método de aplicação adaptativa de limiar da Seção 3.4.2, usando o limiar t 5
floor((max − min)/2) + C.* Compare o resultado dessa abordagem com os da aplicação de limiar às
duas imagens anteriores e a outras imagens de exemplo.
Exercício 3.7 Carregue as imagens 'cameraman.tif ' e 'circles.png'; usando a função uint8() de Ma-
tlab, converta a variável resultante da última imagem ao tipo de 8 bits sem sinal (unsigned) da outra
imagem. Concatene as duas imagens em uma única imagem (usando a função horzcat() de Matlab)
e a exiba. Por que não é possível ver os círculos na imagem resultante? (Experimente usar a função
imagesc de Matlab).
Usando a transformação logarítmica (Exemplo 3.8), ajuste a faixa dinâmica dessa imagem con-
catenada, de modo que tanto o contorno da jaqueta do fotógrafo como os contornos dos círculos
sejam visíveis (parâmetro C > 10 se faz necessário). Explore o uso de equalização de histograma
e equalização adaptativa de histograma nessa imagem concatenada. Que abordagem produz o
melhor resultado no que diz respeito à clareza total da imagem e por que essa é a melhor solução
para tal tarefa?
Exercício 3.8 Considere a imagem de exemplo de Matlab 'mandi.tif ', na qual é possível ver a ilumi-
nação variando tanto no fundo como na região frontal. Em que região da imagem a informação não
é claramente visível? Quais são as propriedades dessas regiões em termos de valores de pixel?
Considere as correspondentes propriedades das transformações logarítmica e exponencial (Se-
ções 3.3.1 e 3.3.2) e os Exemplos 3.8 e 3.9. Explore o uso das duas transformadas e determine uma
escolha adequada (com parâmetros) para realçar a imagem. Repare que é uma imagem grande e o
processamento pode levar alguns segundos (use as funções tic e toc de Matlab para cronometrar a
operação).
*floor(A) é uma função de Matlab que arredonda o valor de A ao mais próximo inteiro menor ou igual a A. (N.T.)
Solomon 03PDFG.indd 76 21.05.13 12:22:9:10
Pixels 77
Compare os resultados obtidos com essas transformações com os da aplicação de equalização
de histograma para alongamento de contraste (Seção 3.4.4) e equalização adaptativa de histograma
(Seção 3.4.6) a essa imagem.
Exercício 3.9 Com base na correção gama aplicada em escala de cinza no Exemplo 3.11, aplique
correção gama à imagem em cores 'autumn.tif '. Por que é possível aplicar (e por que se deve fazê-lo)
essa técnica diretamente à representação RGB da imagem e não à representação HSV alternativa,
como na ilustração do processamento de histograma de imagem em cores discutida no Exemplo
3.22?
Exercício 3.10 Com base no Exemplo 3.22, em que a equalização de histograma é aplicada a uma
imagem em cores, aplique a mesma abordagem para alongamento de contraste (Seção 3.4.3, Exem-
plo 3.17) à imagem em cores 'westconcordaerial.png'. Explore diferentes valores de parâmetro para
obter uma visualização ótima dessa imagem. Compare o resultado da aplicação dessa abordagem
com os da equalização de histograma e da equalização adaptativa de histograma da mesma imagem.
Qual produz o melhor resultado? Que abordagem é mais ‘sintonizável’ e qual é mais automática em
natureza?
Repita o exercício com a imagem de exemplo 'peppers.png' de Matlab. Neste caso, há grande di-
ferença de resultado?
Exercício 3.11 Usando as diversas abordagens para realce de contraste e manipulação da fixa di-
nâmica apresentadas neste capítulo, explore e escolha uma transformação para realçar o contraste
da imagem de exemplo 'AT3_1m4_01.tif '. Depois de obter um contraste apropriado para a imagem,
extraia a correspondente distribuição de histograma da imagem (Exemplo 3.13) e, usando casamen-
to de histogramas (Exemplo 3.20), aplique-a às outras imagens na sequência ('AT3_1m4_02.tif ', ...,
'AT3_1m4_09.tif ', 'AT3_1m4_10.tif '). As especificações de contraste determinadas para a primeira
imagem são adequadas a todas as outras? E se as imagens não tiverem sido capturadas nas mesmas
condições?
Aqui, ilustramos o uso de casamento de histogramas como um método para especificação auto-
mática de ajustes na faixa dinâmica em uma série de imagens a partir de uma especificação inicial
feita para um exemplo. Onde mais essa técnica pode ser utilizada?
Exercício 3.12 Diferentemente da abordagem ilustrada no Exemplo 3.22 para a equalização de
histograma de imagem em cores, efetue equalização de histograma a cada canal (R,G,B) de uma
imagem em cores. Compare os resultados com o obtido com a abordagem do Exemplo 3.22. Qual a
diferença entre as imagens obtidas?
Repita isso para as operações de alongamento de contraste e equalização adaptativa de histogra-
ma. Explore, ainda, o uso do espaço de cores YCbCr (função rgb2ybcr() de Matlab) para efetuar
operações em histograma de imagens em cores. Que canal você precisa usar? O que mais deve con-
siderar?
Exemplos e exercícios adicionais estão disponíveis no site da LTC Editora.
Solomon 03PDFG.indd 77 21.05.13 12:22:10:10
4
Realce
As técnicas apresentadas no final do Capítulo 3 tratam da manipulação da faixa dinâmica de uma
dada imagem digital para melhorar a visualização de seu conteúdo. No presente capítulo, conside-
raremos a questão mais geral de realce (enhancement) de imagens. Apresentaremos o conceito de
filtragem de imagens com base em sub-regiões localizadas da imagem (vizinhanças de pixel), deli-
nearemos diferentes filtros para remoção de ruído e explicaremos como a filtragem pode resultar na
detecção de bordas e em efeitos de agudização (sharpening) de bordas para realce de imagens.
4.1 Por que aplicar realce?
O objetivo básico da aplicação de realce é processar a imagem de modo que possamos ver e avaliar a
informação visual nela contida com maior clareza. O realce de imagens é, portanto, muito subjetivo,
pois depende fortemente da informação específica que o observador espera extrair da imagem.
A principal condição para realce de uma imagem é que a informação a ser extraída, enfatizada
ou restaurada exista na imagem. Em outras palavras, ‘não podemos fazer algo a partir de nada’; a
informação desejada não deve estar completamente afundada em ruído na imagem. Talvez a afirma-
ção mais genérica e precisa que possamos fazer a respeito do objetivo de realçar uma imagem seja
apenas que a imagem processada deve ser mais adequada do que a original, tendo em vista a tarefa
ou propósito pretendido. Isso, pela própria natureza, torna a avaliação de realce de imagens muito
subjetiva, o que, por sua vez, dificulta a quantificação do desempenho da técnica além do domínio
específico de sua aplicação.
4.1.1 Realce por meio da filtragem de imagens
O principal objetivo de realce de imagens é o processamento de uma imagem de forma a torná-la
visualmente mais aceitável ou agradável. A remoção de ruído, agudização de bordas da imagem e
o efeito de ‘foco suave’ (blurring), tão popular em fotografias românticas, são exemplos de técnicas
corriqueiras de realce de imagens. Essas e outras operações de realce podem ser implementadas
pelo processo de filtragem no domínio espacial. O termo domínio espacial é um tanto quanto
espúrio, mas é usado para distinguir esse procedimento de outros feitos no domínio da frequên-
cia (discutidos no Capítulo 5). Assim, a filtragem no domínio espacial simplesmente indica que
o processo de filtragem ocorre diretamente nos pixels de uma imagem. Portanto, neste capítulo,
nos referiremos apenas à filtragem, sem risco de conflitos. Filtros atuam sobre uma imagem para
alterar os valores de pixel de alguma forma especificada e, em geral, são classificados em dois ti-
pos: lineares e não lineares. Filtros lineares são mais comuns, mas discutiremos e exploraremos
exemplos de ambos os tipos.
Independentemente do particular tipo de filtro usado, todas as abordagens àfiltragem no domí-
nio espacial operam da mesma forma simples. Os pixels em uma imagem − o pixel em consideração
Solomon 04PDFG.indd 78 14.05.13 19:39:2:10
Realce 79
em um dado momento é referido como pixel-alvo − são tratados sucessivamente. O valor do pixel-
alvo é, então, substituído por um novo valor que depende apenas dos valores de pixels em uma dada
vizinhança em torno do pixel-alvo.
4.2 Vizinhanças de pixels
Uma importante medida em imagens é o conceito de conectividade. No processamento de imagens,
muitas operações usam o conceito de vizinhança de imagem local para definir uma área local de
influência, relevância ou interesse. Central à questão de definição de vizinhança local é a noção de
conectividade de pixels, ou seja, a determinação de quais pixels estão conectados a outros. Uma
conectividade 4 implica que somente os pixels que se encontram ao N, O, L, S do pixel em questão
estão conectados. Contudo, se os pixels nas diagonais também estiverem conectados, devem ser con-
siderados; nesse caso, teremos conectividade 8 (ou seja, pixels ao N, NO, O, NE, SE, L, SO, S estão
conectados, Figura 4.1).
No lado direito da Figura 4.1, usamos esse conceito para determinar se a região A e a região
B estão conectadas e fazemos uso de um modelo de conectividade local (neste caso, N 3 N 5
3 3 3) para determinar se representam uma mesma característica da imagem ou características
distintas. Operações efetuadas localmente em imagens, como filtragem e detecção de borda,
consideram uma dada posição de pixel (i, j) em termos de sua vizinhança local de pixels in-
dexada como um deslocamento (i ± k, j ± k). As dimensões e, portanto, a escala da vizinhança
podem ser controladas pela variação do parâmetro N, a partir do qual o deslocamento k (em
geral, [N/2]) é calculado. Vizinhanças podem ter dimensão N 3 M, com N ≠ M para acomodar
influências distintas de pixels nas direções horizontal e vertical. N 5 M é a escolha mais comum,
resultando em vizinhanças N 3 N. A maioria das técnicas de processamento de imagens agora
usa conectividade 8 por default; para uma vizinhança de dimensões razoáveis e considerando
processadores modernos, isso é alcançável em tempo real para a maioria das operações. Opera-
ções de filtragem em toda uma imagem são, em geral, efetuadas como uma série de operações
em vizinhanças locais com o emprego do princípio de janela deslizante, ou seja, cada pixel na
imagem é processado com base em uma operação realizada em sua vizinhança local de N 3 N
pixels (região de influência).
O Exemplo 4.1 mostra como uma operação desse tipo pode ser efetuada em Matlab.
Figura 4.1 Conectividade de vizinhança (à esquerda) e um exemplo de uma vizinhança 3 3 3 centrada em
uma posição específica de pixel da imagem.
Solomon 04PDFG.indd 79 14.05.13 19:39:2:10
80 Capítulo 4
Exemplo 4.1
Código Matlab O que está sendo feito?
A5imread('cameraman.tif '); %Lê a imagem
subplot(1,2,1), imshow(A); %Exibe a imagem
func5@(x) max(x(:)); %Especifica o filtro a ser aplicado
B5nlfilter(A,[3 3],func); %Aplica o filtro na vizinhança 3 3 3
subplot(1,2,2), imshow(B); %Exibe a imagem resultante B
Comentários
Neste exemplo, especificamos func() como a função de filtro max() a ser aplicada a cada vizinhança
3 3 3 da imagem. Isto substitui, na imagem de saída, todos os pixels de entrada pelo máximo valor de
pixel da vizinhança de pixels de entrada. Explore os efeitos da variação das dimensões da vizinhança,
assim como as funções min() e mean() de Matlab (para a última, uma conversão de tipo se faz neces-
sária para exibir o tipo de saída duplo da função mean() como uma imagem de 8 bits − especificar a
função de filtro como uint8(mean())).
4.3 Núcleos de filtros e a mecânica de filtragem linear
Em filtros espaciais lineares, o valor novo ou filtrado do pixel-alvo é determinado por meio de
uma combinação linear dos valores de pixel em sua vizinhança. Qualquer outro tipo de filtro é,
por definição, não linear. A especificada combinação linear dos pixels vizinhos é determinada
pelo núcleo (kernel) do filtro (também chamado de máscara). Isso é simplesmente um conjunto/
subimagem com exatamente as mesmas dimensões da vizinhança1 que contém os pesos a serem
alocados aos correspondentes pixels na vizinhança do pixel-alvo. Na filtragem, a localização do
núcleo é variada sucessivamente, de modo que a posição de seu pixel central coincida com a de
cada pixel-alvo, e o valor filtrado seja calculado segundo a escolhida combinação ponderada dos
pixels vizinhos ao de alvo. Esse procedimento de filtragem pode ser visualizado como o desloca-
mento do núcleo sobre todas as posições (i, j) de interesse na imagem original, a multiplicação
dos pixels sob o núcleo pelos correspondentes pesos w, o cálculo dos novos valores pela soma
ponderada e a cópia desses valores nas mesmas posições de uma nova imagem (filtrada) f (por
exemplo, Figura 4.2).
Na verdade, a mecânica da filtragem linear expressa, na forma discreta, um processo denomi-
nado convolução, um importante fenômeno físico e matemático que analisaremos no Capítulo
5. Por essa razão, núcleos de filtros são, às vezes, descritos como núcleos de convolução, ficando
implicitamente entendido que são aplicados à imagem na forma linear descrita anteriormente.
Formalmente, podemos expressar a ação de convolução entre um núcleo e uma imagem em duas
notações equivalentes. A primeira usa os índices de linhas e colunas da imagem e do núcleo:
(4.1)
1Um detalhe para o purista. Com filtros lineares, o núcleo, de fato, vem primeiro e assim, define a vizinhança. No caso de alguns filtros não
lineares (por exemplo, filtros de ordem), a sequência é invertida, pois devemos definir a região que desejamos ordenar e não podemos escrever
um núcleo.
Solomon 04PDFG.indd 80 14.05.13 19:39:3:10
Realce 81
Nessa representação, os índices i 5 0 e j 5 0 correspondem ao pixel no centro do núcleo, cujas di-
mensões são (Imáx − Imín + 1, Jmáx − Jmín + 1). A segunda notação usa índices lineares:
(4.2)
Nesse caso, Ik(i) representa os pixels vizinhos aos i-ésimo pixel da imagem, e k é um índice linear
que varre a região de vizinhança segundo uma convenção de linha (como na Figura 4.2) ou de co-
luna. wk são os correspondentes valores do núcleo, enquanto fi representa o valor filtrado resultante
do valor original da imagem Ik(i). A primeira notação é mais explícita, enquanto a segunda é mais
simples e compacta; contudo, nenhuma é preferível à outra. A Figura 4.2 ilustra o procedimento bá-
sico, no qual o pixel central do núcleo e o pixel-alvo na imagem são indicados pela sombra em cinza
escuro. O núcleo é ‘posicionado’ na imagem de modo que seu centro coincida com o pixel-alvo. O
valor filtrado do pixel-alvo fi é, então, dado pela combinação linear dos valores de pixel na vizinhan-
ça, sendo os pesos determinados pelos valores wk do núcleo. No caso específico, o valor original do
pixel-alvo, 35, é filtrado como um valor de saída igual a 14.
Os passos na filtragem linear (convolução) podem ser resumidos da seguinte forma:
(1) Definir o núcleo do filtro.
(2) Deslizar o núcleo sobre a imagem de modo que o pixel central do núcleo coincida com cada
pixel-alvo na imagem.
(3) Multiplicar os pixels sob o núcleo pelos correspondentes valores (pesos) no núcleo e somar os
resultados.
(4) Para cada pixel-alvo, copiar o valor resultante na mesma posição de uma nova imagem (filtrada).
Em certas situações, podemos aplicar um filtro linear a apenas uma dada região da imagem, em
vez de aplicá-lo à imagem completa; a isto nos referimos como filtragem de região. Podemos,
também, adotar uma abordagem um pouco mais sofisticada em que o próprio filtro pode ser
alterado, dependendo da distribuição de valores de pixel na vizinhança; esse processo é conhe-
cido como filtragem adaptativa (por exemplo, aplicação adaptativa de limiar discutida na Seção
3.4.2).
Figura 4.2 Mecânica da filtragem de uma imagem com um filtro de núcleo N 3 N 5 3 3 3.
Solomon 04PDFG.indd81 14.05.13 19:39:4:10
82 Capítulo 4
A aplicação de filtragem às fronteiras da imagem representa um desafio. Cabe perguntar o que
devemos fazer quando os pixels-alvo estão próximos das fronteiras da imagem e o núcleo de convo-
lução se sobrepõe à fronteira. Em geral, três soluções são adotadas para tratar tal situação:
(1) Simplesmente deixar inalterados os pixels-alvo que estejam na região de fronteira.
(2) Efetuar a filtragem apenas nos pixels que estejam na fronteira (e ajustar a operação de filtragem
de modo correspondente).
(3) ‘Preencher’ os pixels que faltam na operação de filtragem com cópias dos valores sobre a fronteira.
Em geral, é difícil tratar os indesejados resultantes artefatos de borda; as abordagens (2) e (3) são as
mais empregadas. Em certos casos, é aceitável ‘cortar’ (crop) a imagem − ou seja, extrair uma ima-
gem de dimensões reduzidas, da qual são removidos todos os pixels de borda que não tenham sido
filtrados adequadamente.
O Exemplo 4.2 ilustra como a filtragem de convolução pode ser implementada em Matlab.
Exemplo 4.2
Código Matlab O que está sendo feito?
A5imread('peppers.png'); %Lê a imagem
subplot(1,2,1), imshow(A); %Exibe a imagem
k5fspecial('motion',50, 54); %Cria um núcleo de convolução do tipo motion blur
(mancha de movimento)
B5imfilter(A,k,'symmetric'); %Aplica filtro usando reflexão simétrica nas bordas
subplot(1,2,2), imshow(B); %Exibe imagem resultante
Comentários
Neste exemplo, especificamos a função fspecial() para construir um núcleo que imite o efeito de
mancha sobre a imagem devido ao movimento (cujos comprimento e ângulo são especificados) da
câmera. A opção (3) da discussão anterior é usada para tratar os pixels de borda durante a filtragem.
É interessante explorar o uso de outros núcleos de filtro que podem ser gerados como a função fspe-
cial(), assim como as opções de filtragem de região de borda disponíveis com a função imfilter(). In-
formação sobre essa função pode ser obtida diretamente em Matlab, teclando doc imfilter na janela de
comando. Como outros núcleos de filtro e opções de filtragem de região de borda afetam a imagem?
4.3.1 Filtragem espacial não linear
Filtros espaciais não lineares podem ser facilmente projetados para operar com exatamente o mesmo
mecanismo descrito para o caso de filtros lineares. A máscara do núcleo desliza sobre a imagem da
mesma forma que no caso linear; a única diferença é que os valores filtrados resultarão de alguma
operação não linear com os pixels vizinhos. Por exemplo, usando a mesma notação anterior, pode-
mos definir um filtro quadrático:
(4.3)
Nesse caso, a ação do filtro será definida pelos três pesos que especificam as contribuições dos termos
de segundo e primeiro graus e do termo constante. Filtros não lineares desse tipo não são comuns
Solomon 04PDFG.indd 82 14.05.13 19:39:4:10
Realce 83
no processamento de imagens. Muito mais importantes são os filtros de ordem (ou estatísticos, que
discutiremos em breve), cuja operação é baseada em um ordenamento ou classificação dos pixels na
vizinhança especificada e na substituição do valor do pixel-alvo pelo valor que corresponde à ordem
ou classe escolhida. Assim, não podemos escrever um núcleo e uma equação da forma da convolução
linear não é aplicável. Nas seções seguintes, exploraremos alguns dos exemplos mais importantes de
filtros espaciais lineares e não lineares.
4.4 Filtragem para remoção de ruído
Um dos principais usos de filtragem linear e não linear em processamento de imagens é na re-
moção de ruído. A seguir, exploraremos a aplicação de alguns filtros diferentes para a remoção
de ruído típico, como ruído aditivo ‘sal e pimenta’ e ruído gaussiano (introduzido na Seção
2.3.3). Primeiro, precisamos considerar a geração de algumas imagens de exemplo com ruído
adicionado, de modo que possamos comparar a eficácia das diferentes abordagens à remoção
de ruído.
O Exemplo 4.3 ilustra como isto pode ser feito em Matlab. Os resultados da adição de ruído no
Exemplo 4.3 são mostrados na Figura 4.3. Estas imagens formarão a base da comparação de filtros
para remoção de ruído nas seções seguintes deste capítulo.
Exemplo 4.3
Código Matlab O que está sendo feito?
I5imread('eight.tif '); %Lê a imagem
subplot(1,3,1), imshow(I); %Exibe a imagem
Isp5imnoise(I,'salt&pepper',0.03); %Adiciona 3% (0,03) de ruído sal e pimenta
subplot(1,3,2), imshow(Isp); %Exibe a imagem resultante Isp
Ig5imnoise(I,'gaussian',0.02); %Adiciona ruído gaussiano (com variância 0,02)
subplot(1,3,3), imshow(Ig); %Exibe a imagem resultante Ig
Comentários
Neste exemplo, usamos a função imnoise() para adicionar tanto ruído ‘sal e pimenta’ como ruído
gaussiano à imagem de entrada. A intensidade do ruído é especificada pela densidade percentual e
pela variância (com média zero), respectivamente. Explore os efeitos da alteração desses parâmetros
de ruído e, também, outros efeitos de ruído que essa função implementa (para obter informação
sobre a função, tecle doc imnoise na janela de comando de Matlab).
Figura 4.3 (a) Imagem original com adição de (b) ruído ‘sal e pimenta’ e (c) ruído gaussiano.
Solomon 04PDFG.indd 83 14.05.13 19:39:5:10
84 Capítulo 4
4.4.1 Filtragem pela média
O filtro de média talvez seja o filtro linear mais simples, e aplica pesos iguais wk a todos os pixels na
vizinhança. Um peso Wk 5 1/(NM) é usado para uma vizinhança N 3 M e tem o efeito de suavizar a
imagem, dando a cada pixel na imagem de saída o valor médio de sua vizinhança N 3 M. Esse esque-
ma de ponderação garante que a soma dos pesos no núcleo é igual à unidade, quaisquer que sejam
as dimensões da vizinhança. Filtros de média podem ser usados como um método de suprimir ruído
em uma imagem (embora, em geral, o filtro de mediana, que discutiremos em breve, faça um traba-
lho melhor). Outro uso comum do filtro de média é como um passo preliminar de processamento
para suavizar uma imagem, de modo que operações subsequentes sejam mais eficientes.
O Exemplo 4.4 ilustra como o filtro de média pode ser aplicado em Matlab, sendo os resultados
mostrados na Figura 4.4.
Exemplo 4.4
Código Matlab O que está sendo feito?
k5ones(3,3)/9; %Define o filtro de média
I_m5imfilter(I,k); %Aplica o filtro de média à imagem original
Isp_m5imfilter(Isp,k); %Aplica o filtro de média à imagem com ruído sal e pimenta
Ig_m5imfilter(Ig,k); %Aplica o filtro de média à imagem com ruído gaussiano
subplot(1,3,1), imshow(I_m); %Exibe a imagem resultante
subplot(1,3,2), imshow(Isp_m); %Exibe a imagem resultante
subplot(1,3,3), imshow(Ig_m); %Exibe a imagem resultante
Comentários
Neste exemplo, definimos um filtro de média 3 3 3 e o aplicamos às três imagens geradas no Exem-
plo 4.3 e mostradas na Figura 4.3. Explore o uso de vizinhanças de dimensões maiores para esse filtro.
Que efeito tem na imagem resultante?
Podemos perceber que a filtragem pela média é razoavelmente eficaz na remoção do ruído gaus-
siano (Figura 4.4c), às custas de uma perda de detalhes de alta frequência da imagem (bordas). Em-
bora uma porção significativa do ruído gaussiano tenha sido removida (comparar com a Figura
4.3c), o ruído ainda é visível na imagem. Núcleos maiores suprimirão mais ruído gaussiano, às custas
de mais degradação da qualidade da imagem. Fica também aparente que a filtragem pela média não
Figura 4.4 Filtro de média (3 3 3) aplicado às imagens (a) original, (b) com ruído ‘sal e pimenta’ e (c) com
ruído gaussiano da Figura 4.3.
Solomon 04PDFG.indd 84 14.05.13 19:39:5:10
Realce 85
é eficaz para a remoção do ruído ‘sal e pimenta’ (Figura 4.4b). No caso, o grande desvio de valores de
ruído em relação aos valores típicos na vizinhança implica que o valor médio sofre grande alteração,
e o ruído ainda é bastante visível no resultado filtrado. Com o ruído ‘sal e pimenta’, os pixels com
variação ruidosa alto/baixo de valores atuam como estranhos na distribuição. Por essa razão, para
combater o ruído ‘sal e pimenta’ é melhor usar uma medida que seja robustaem relação a pixels es-
tranhos de natureza estatística (por exemplo, filtragem pela mediana, Seção 4.4.2).
Em resumo, as principais desvantagens da filtragem pela média são: (a) não é robusta em relação
a grandes distribuições de ruído na imagem (pixels estranhos) e (b) causa desfocalização (blurring)
nas bordas da imagem. Devido ao último efeito, um filtro de média pode também ser usado como
um filtro passa-baixas genérico. Uma variação comum desse tipo de filtro, que pode ser parcialmente
eficaz na preservação de detalhes de bordas, consiste na introdução de um limiar e na substituição
do valor do pixel-alvo pela média de sua vizinhança apenas quando a magnitude da variação do valor
do pixel estiver abaixo desse limiar.
4.4.2 Filtragem pela mediana
Outro tipo de filtro de uso comum é o filtro de mediana. A filtragem pela mediana supera as prin-
cipais limitações da filtragem pela média, às custas de maior gasto computacional. O valor de cada
pixel-alvo é substituído pela mediana estatística dos valores dos N 3 M pixels vizinhos e não pela
média. O filtro de mediana é superior ao filtro de média, pois é mais eficaz na preservação de detalhes
finos de alta frequência (por exemplo, bordas e contornos) durante a eliminação de ruído, especial-
mente picos isolados de ruído (como ruído ‘sal e pimenta’).
A mediana m de um conjunto de números é o número que divide o conjunto em dois grupos
iguais, de modo que metade dos números seja menor do que m e a outra metade, maior; a mediana é
o ponto central de uma distribuição ordenada de valores. Por ser um valor de pixel obtido da própria
vizinhança do pixel-alvo, a mediana é mais robusta em relação a pixels estranhos e não cria valores
irreais de pixel. Isso ajuda a prevenir desfocalização de bordas e perda de detalhes da imagem.
Por definição, o operador mediana requer ordenação dos valores na vizinhança do pixel-alvo,
para cada posição de pixel. Isso aumenta as exigências computacionais do operador mediana.
O Exemplo 4.5 ilustra como a filtragem pela mediana pode ser implementada em Matlab. Os
resultados do Exemplo 4.5 são mostrados na Figura 4.5, em que podemos perceber a eficácia da
filtragem pela mediana na remoção dos dois tipos de ruído (‘sal e pimenta’ e gaussiano) introduzidos
nas imagens do Exemplo 4.3/Figura 4.3.
Exemplo 4.5
Código Matlab O que está sendo feito?
I_m5medfilt2(I,[3 3]); %Aplica o filtro de mediana à imagem original
Isp_m5medfilt2(Isp,[3 3]); %Aplica o filtro de mediana à imagem com ruído sal e pimenta
Ig_m5medfilt2(Ig,[3 3]); %Aplica o filtro de mediana à imagem com ruído gaussiano
subplot(1,3,1), imshow(I_m); %Exibe a imagem resultante
subplot(1,3,2), imshow(Isp_m); %Exibe a imagem resultante
subplot(1,3,3), imshow(Ig_m); %Exibe a imagem resultante
Comentários
Neste exemplo, definimos um filtro de mediana 3 3 3 por meio da função medfilt2() e o aplicamos
às três imagens geradas no Exemplo 4.3 e mostradas na Figura 4.3. Explore o uso de vizinhanças de
maiores dimensões para esse filtro, assim como o efeito disso na imagem resultante.
Solomon 04PDFG.indd 85 14.05.13 19:39:5:10
86 Capítulo 4
Neste resultado (Figura 4.5c), percebemos novamente a remoção de algum ruído gaussiano às
custas de pequena degradação da qualidade da imagem. O filtro de mediana, por sua vez, é muito
bom na remoção do ruído do tipo ‘sal e pimenta’ (Figura 4.5b), e percebemos a remoção desse ruído
impulsivo alto/baixo com mínima degradação ou perda de detalhe da imagem. Essa é uma grande
vantagem da filtragem pela mediana.
4.4.3 Filtragem por ordem
O filtro de mediana é apenas um caso especial do mais geral filtro de ordem (rank filter). O filtro de
ordem é um filtro não linear que consiste nos seguintes passos:
(1) Definição da vizinhança do pixel-alvo (N 3 N).
(2) Ordenação dos valores de pixel em ordem crescente (o primeiro é o de menor valor e o (N 3
N)-ésimo, o de maior valor).
(3) Escolha da ordem do filtro (de 1 a N).
(4) Especificação do valor do filtro igual ao valor de pixel da ordem escolhida.
Filtros de ordem que selecionam o valor máximo ou mínimo na vizinhança especificada são deno-
minados, respectivamente, filtros de máximo e de mínimo. O Exemplo 4.6 ilustra o uso da função
de filtro de ordem em Matlab. Os resultados do Exemplo 4.6 são mostrados na Figura 4.6, na qual
podemos perceber o resultado da filtragem de máximo nos dois tipos de ruído (‘sal e pimenta’ e gaus-
siano) introduzidos nas imagens da Figura 4.3. Observamos que a maior parte do ruído gaussiano
foi removida (Figura 4.6c) às custas da qualidade de detalhes da imagem (clareamento do fundo da
Figura 4.5 Filtro de mediana (3 3 3) aplicado às imagens (a) original, (b) com ruído ‘sal e pimenta’ e (c)
com ruído gaussiano da Figura 4.3.
Figura 4.6 Filtro de ordem (de máximo, ordem 5 25, 5 3 5) aplicado às imagens (a) original, (b) com ruído
‘sal e pimenta’ e (c) com ruído gaussiano da Figura 4.3.
Solomon 04PDFG.indd 86 14.05.13 19:39:6:10
Realce 87
imagem). A natureza do ruído ‘sal e pimenta’ faz com que altos valores sejam amplificados pelo uso
de um filtro de máximo.
Uma variação da simples filtragem por ordem é a suavização conservativa, em que o valor de um
dado pixel é comparado com os valores máximo e mínimo (excluído o do próprio pixel) na vizi-
nhança N 3 N e é substituído somente se estiver fora desse intervalo. Se for maior do que o máximo
valor de seus vizinhos, o valor do pixel-alvo é substituído pelo valor máximo. De modo similar, se for
menor do que o mínimo, é substituído pelo mínimo.
4.4.4 Filtragem gaussiana
O filtro gaussiano é muito importante, tanto por questões teóricas como por questões práticas. Aqui,
filtramos a imagem usando um núcleo discreto derivado de uma forma radialmente simétrica da
função gaussiana contínua bidimensional, definida como:
(4.4)
Aproximações discretas a essa função contínua são especificadas com o uso de dois parâmetros
livres:
(1) as desejadas dimensões do núcleo (como uma máscara N 3 N);
(2) o valor de σ, o desvio-padrão da função gaussiana.
Como sempre ocorre com filtros de convolução linear (Seção 4.3), existe uma relação entre a amos-
tragem precisa da função e o tempo de computação necessário para implementá-la. Alguns exemplos
de filtros gaussianos discretos, com diferentes dimensões de núcleo e valores de desvio-padrão, são
mostrados na Figura 4.7.
A aplicação de um filtro gaussiano tem o efeito de suavizar a imagem, mas é usado de forma um
pouco diferente do que o filtro de média (Seção 4.4.1). Primeiro, o grau de suavização é controlado
pela escolha do parâmetro de desvio-padrão s e não pelo valor absoluto das dimensões do núcleo
(como no caso do filtro de média). Segundo, a função gaussiana tem uma propriedade especial: sua
transformada de Fourier também é uma função gaussiana; isso a torna muito conveniente à análise
Exemplo 4.6
Código Matlab O que está sendo feito?
I_m5ordfilt2(I,25,ones(5,5)); %Aplica o filtro de máximo à imagem original
Isp_m5ordfilt2(Isp,25,ones(5,5)); %Aplica o filtro de máximo à imagem com ruído sal e pimenta
Ig_m5ordfilt2(Ig,25,ones(5,5)); %Aplica o filtro de máximo à imagem com ruído gaussiano
subplot(1,3,1), imshow(I_m); % %Exibe a imagem resultante
subplot(1,3,2), imshow(Isp_m); %Exibe a imagem resultante
subplot(1,3,3), imshow(Ig_m); %Exibe a imagem resultante
Comentários
Neste exemplo, definimos um filtro de máximo 5 3 5 e o aplicamos às três imagens geradas no
Exemplo 4.3 e mostradas na Figura 4.3. Explore o uso de vizinhanças de maiores dimensões para esse
filtro, assim como a variação da ordem do filtro (segundo parâmetro de entrada da função ordfilt2()),
observando o efeito na imagem resultante.
Solomon 04PDFG.indd 87 14.05.13 19:39:7:10
88 Capítulo 4
de filtros no domínio da frequência (Capítulo 5). Uma função gaussiana com grande valor de s
também é um exemplo do chamado filtro passa-baixas, que suprime o conteúdo de alta frequência
de uma imagem (por exemplo, característicasno livro, correspondentes aos exemplos e exercícios, estão disponíveis no site da LTC Editora.
Quem é o público-alvo deste livro?
Este livro é voltado para estudantes de cursos de graduação e de pós-graduação em carreiras tecno-
lógicas, profissionais técnicos à procura de uma introdução direta ao campo de processamento de
imagens, e para professores que desejem oferecer um curso prático e estruturado. Este livro começa
com um material intencionalmente simples. Todavia, acreditamos que leitores com algum conheci-
mento prévio sobre o assunto encontrarão material interessante e útil nas partes seguintes.
Objetivos
Quais são os objetivos específicos deste livro? Dois dos principais objetivos são:
• Apresentar ao leitor alguns dos conceitos e técnicas essenciais referentes ao processamento de
imagens moderno.
• Prover uma estrutura em que esses conceitos e técnicas possam ser entendidos por meio de uma
série de exemplos, exercícios e experimentos computacionais.
Estes são, talvez, os objetivos que podemos esperar de qualquer livro sobre um assunto técnico. No
entanto, temos um objetivo adicional: fornecer ao leitor a rota mais rápida e direta para a aquisição
de um entendimento verdadeiramente prático referente ao processamento de imagens. Esperamos
que este livro, de fato, permita ao leitor um início rápido neste campo.
Pré-requisitos
Não estabelecemos qualquer pré-requisito quanto ao conhecimento matemático do leitor, além do
que é esperado de estudantes de qualquer curso de graduação em ciências técnicas, ou seja, compe-
tência razoável em cálculo, álgebra matricial e princípios de estatística.
Solomon CadZeroPDFG.indd 11 11.06.13 16:06:36:10
xii prefácio
Por que escrevemos este livro?
Já existe um bom número de livros excelentes sobre processamento de imagens e reconhecimento
de padrões entre os quais indicamos alguns para o leitor interessado no final do livro. Há, também,
alguns livros bem escritos e completos sobre a linguagem Matlab. Os autores avaliaram que faltava
um livro sobre processamento de imagens que combinasse uma exposição simples dos princípios com
meios que, de forma instrutiva e interativa, permitissem imediatamente testar, verificar e experimentar
esses princípios.
Nossa experiência, adquirida ao longo de vários anos, mostra que Matlab e a correspondente
caixa de ferramentas de processamento de imagens são auxiliares bastante adequados na busca desse
objetivo. Matlab é simples e poderoso e, no presente contexto, sua característica principal é permitir
que o leitor se concentre nos conceitos e técnicas de processamento de imagens (ou seja, seu interesse
imediato), minimizando a preocupação com sintaxe de programação e gerenciamento de dados.
O que é Matlab?
Matlab é uma linguagem de programação e um conjunto de caixas de ferramentas especializadas de
software. É um padrão mundial na computação científica usado em aplicações técnicas, industriais e
educacionais. Matlab é um produto comercial, por isso as informações sobre licenças e custo podem
ser obtidas diretamente do site http://www.mathworks.com. Há muitas universidades em todo o
mundo que oferecem aos estudantes licenças de uso.
Que conhecimento de Matlab é exigido por este livro?
Matlab faz parte deste livro e é extensamente usado para demonstrar como certas tarefas e aborda-
gens de processamento podem ser implementadas e testadas na prática. Em todo o livro, fazemos
comentários sobre a linguagem Matlab e a melhor forma de executar certas tarefas de processamento
de imagens nela. Assim, o aprendizado de conceitos de processamento de imagens e sua implemen-
tação em Matlab caminham juntos no texto.
O livro é útil para quem que não conhece Matlab?
Sim. Este é um livro fundamentalmente sobre processamento de imagens cujo objetivo é tornar o
assunto acessível e prático. Não é um livro sobre a linguagem de programação Matlab. Embora algum
conhecimento de Matlab seja vantajoso e facilite a implementação prática, tentamos manter a discus-
são de conceitos autossuficiente e separada do material baseado em computador.
Caso o leitor não tenha tido qualquer contato anterior com Matlab e deseje aproveitar ao máximo
este livro, recomendamos a leitura do tutorial sobre Matlab e processamento de imagens disponível
no site da LTC Editora. Esse tutorial tem como objetivo apresentar os princípios básicos dessa lingua-
gem, com ênfase nas propriedades básicas e na manipulação de imagens.
Portanto, não é necessário ter conhecimento do programa para tirar proveito deste livro.
Questões práticas
Para executar a grande maioria dos exemplos e exercícios do livro, o leitor deve ter acesso a uma
licença para Matlab e sua Caixa de Ferramenta de Processamento de Imagem (Image Processing
Toolbox).
Solomon CadZeroPDFG.indd 12 11.06.13 16:06:37:10
prefácio xiii
Sobre os autores
Chris Solomon graduou-se em Física teórica na Durham University e obteve o grau de Ph.D. em
Técnicas e Tecnologias de Imagens médicas no Royal Marsden Hospital, na University of London.
Desde 1994, faz parte do quadro docente da School of Physical Sciences, onde é professor titular de
técnicas e tecnologias de imagens forenses. Seus interesses de pesquisa são amplos, com foco em al-
goritmos evolucionários e genéticos, processamento de imagens e métodos estatísticos de aprendiza-
gem, com especial interesse no rosto humano. Chris também é diretor técnico da Visionmetric Ltd.,
uma empresa fundada por ele em 1999 e que atualmente é, no Reino Unido, a principal fornecedora
de software de composição facial e de treinamento em identificação facial para instituições policiais.
Recebeu vários prêmios, no Reino Unido e na Europa, por inovação tecnológica e comercialização
de pesquisa acadêmica.
Toby Breckon obteve os graus B.Sc. em Inteligência Artificial e Ciência da Computação e Ph.D.
em Informática pela University of Edinburgh. Desde 2006, é professor adjunto de processamento
de imagens e visão computacional na Escola de Engenharia da Cranfield University. Seus principais
interesses de pesquisa estão voltados para sensoriamento 3D, visão em tempo real, fusão de sensores,
vigilância visual e aplicação de robótica. É membro visitante do corpo docente da École Supérieure des
Technologies Industrielles Avancées (França) e tem atuado como professor visitante na China e no Ja-
pão. Em 2008, liderou a equipe vencedora Stellar Team na competição Grand Challenge [Grande De-
safio] promovida pelo Ministério da Defesa da Grã-Bretanha no projeto de desenvolvimento de um
sistema de detecção automática de ameaças com base em imagens. É engenheiro certificado (CEng)
e cientista de imagem autorizado (AIS) como associado da Royal Photografic Society (ARPS).
Agradecimentos
Os autores gostariam de agradecer às seguintes pessoas e organizações pelo suporte e a assistência
na produção deste livro: as famílias e amigos dos autores pelo apoio e (frequente) compreensão, ao
professor Chris Dainty (National University of Ireland), ao Dr. Stuart Gibson (University of Kent),
ao Dr. Timothy Lukins (University of Edinburgh), à University of Kent, à Cranfield University, à
VisionMetric Ltd. e à Wiley-Blackwell Publishers.
Solomon CadZeroPDFG.indd 13 11.06.13 16:06:37:10
GEN-IO (GEN | Informação Online) é o repositório de materiais
suplementares e de serviços relacionados com livros publicados pelo
GEN | Grupo Editorial Nacional, maior conglomerado brasileiro de editoras do
ramo científico-técnico-profissional, composto por Guanabara Koogan, Santos,
Roca, AC Farmacêutica, Forense, Método, LTC, E.P.U. e Forense Universitária.
Os materiais suplementares ficam disponíveis para acesso durante a vigência
das edições atuais dos livros a que eles correspondem.
Material
Suplementar
Este livro conta com os seguintes materiais suplementares:
Exemplos de Códigos de Programação do Matlab arquivos em JJ
formato .m contendo códigos-fonte do Matlab (acesso livre);
Exercícios arquivos em formato .pdf contendo exercícios JJ
suplementaresagudas de bordas). O entendimento dessa propriedade
requer conhecimento de transformada de Fourier e de análise no domínio da frequência; esses tópi-
cos são tratados no Capítulo 5.
O Exemplo 4.7 ilustra como a filtragem gaussiana pode ser implementada em Matlab. Os resul-
tados do Exemplo 4.7 são mostrados na Figura 4.8. Em todos os casos, o efeito de suavização do
filtro degrada detalhes de alta frequência (bordas), como esperado (por exemplo, Figura 4.8a), mas
também remove parte do ruído presente nas Figuras 4.8b e 4.8c.
Exemplo 4.7
Código Matlab O que está sendo feito?
k5fspecial('gaussian',[5 5], 2); %Define o filtro gaussiano
I_g5imfilter(I,k); %Aplica o filtro gaussiano à imagem original
Isp_g5imfilter(Isp,k); %Aplica o filtro gaussiano à imagem com ruído sal e pimenta
Ig_g5imfilter(Ig,k); %Aplica o filtro gaussiano à imagem com ruído gaussiano
subplot(1,3,1), imshow(I_g); %Exibe a imagem resultante
subplot(1,3,2), imshow(Isp_g); %Exibe a imagem resultante
subplot(1,3,3), imshow(Ig_g); %Exibe a imagem resultante
Comentários
Neste exemplo, definimos um filtro gaussiano com núcleo 5 3 5 e σ 5 2 pela função fspecial() de
Matlab e o aplicamos às três imagens geradas no Exemplo 4.3 e mostradas na Figura 4.3. Explore
diferentes dimensões de núcleo e diferentes valores de σ para entender esses efeitos na imagem
resultante.
A suavização (ou filtragem) gaussiana, em geral, representa o primeiro estágio de algoritmos de
detecção de bordas (por exemplo, detector de bordas de Canny, discutido no Capítulo 10), em que é
usada como meio de supressão de ruído.
Figura 4.7 Núcleos de filtros gaussianos 3 3 3 σ 5 1, 11 3 11 σ 5 2 e 21 3 21 σ 5 4 (os valores numéricos
são mostrados normalizados).
Solomon 04PDFG.indd 88 14.05.13 19:39:7:10
Realce 89
4.5 Filtragem para detecção de bordas
Além da remoção de ruído, duas outras importantes aplicações de filtragem em imagens são (a) na
extração de características e (b) no realce de características. A seguir, exploraremos o uso da filtra-
gem de imagens nessas duas aplicações, pela detecção de bordas nas imagens. Um borda (ou contor-
no) pode ser considerada(o) como uma descontinuidade ou gradiente na imagem. Em consequência,
no processamento de imagens, a consideração de filtros diferenciais é uma parte central da detecção
de bordas.
4.5.1 Filtros diferenciais para descontinuidades
Os filtros de média somam os valores de pixel na vizinhança especificada e, como vimos, isso tem o
efeito de suavizar ou desfocalizar a imagem. Na verdade, isso é apenas integração em forma discreta.
Filtros diferenciais*, por sua vez, podem ser usados para a detecção de descontinuidades em uma
imagem, e desempenham um papel importante no aguçamento de uma imagem (realce de detalhes
finos). Como o nome sugere, filtros diferenciais são projetados para responder (ou seja, retornar
valores significativos) em pontos de descontinuidade na imagem e não responder em regiões perfei-
tamente suaves da imagem; portanto, detectam bordas.
Um dos mais importantes aspectos do sistema visual humano é a forma em que parece usar os
contornos ou bordas de objetos para reconhecimento, percepção de distância e orientação. Essa ca-
racterística levou a uma teoria para o sistema visual humano baseada no conceito de que o córtex
visual contém um conjunto de detectores de características que são sintonizados a bordas e seg-
mentos de variadas larguras e orientações. Características de bordas, portanto, podem ter um papel
importante na análise de imagens.
A detecção de bordas é basicamente um método de segmentar uma imagem em regiões, com base
em descontinuidades, ou seja, permite que o usuário observe as características de uma imagem onde
há mudança mais ou menos abrupta no nível de cinza ou na textura, indicando o fim de uma região
na imagem e o início de outra. O realce (ou amplificação) da presença dessas descontinuidades na
imagem permite que aprimoremos a qualidade da imagem percebida sob certas condições. Contudo,
como outros métodos de análise de imagens, a detecção de bordas é sensível ao ruído.
A detecção de bordas faz uso de operadores diferenciais para detectar alterações nos gradientes
de níveis de cinza ou de cores em uma imagem. A detecção de bordas é dividida em duas categorias
*Também referidos como filtros derivativos. (N.T.)
Figura 4.8 Filtro gaussiano (5 3 5, com σ 5 2) aplicado às imagens (a) original, (b) com ruído ‘sal e pimenta’
e (c) com ruído gaussiano da Figura 4.3.
Solomon 04PDFG.indd 89 14.05.13 19:39:8:10
90 Capítulo 4
principais: detecção de bordas de primeira ordem e detecção de bordas de segunda ordem. Como
as denominações sugerem, a detecção de bordas de primeira ordem é baseada em derivadas de pri-
meira ordem de imagens, enquanto a detecção de bordas de segunda ordem é baseada em derivadas
de segunda ordem de imagens (em particular, o operador Laplaciano). A Tabela 4.1 apresenta, para
imagens 2D f(x, y), as definições formais de operadores diferenciais nas formas contínua e discreta.
Antes de discutirmos a implementação desses operadores, devemos observar que:
(1) A diferenciação é uma operação linear e uma aproximação discreta de um filtro diferencial que
pode, então, ser implementada pelo método de núcleo descrito na Seção 4.3. Das aproximações
discretas dadas na Tabela 4.1, devemos, portanto, produzir apropriados núcleos de filtros para
representar cada um dos operadores diferenciais (Seção 4.5.2).
(2) Uma condição muito importante que devemos impor sobre o núcleo de um filtro desse tipo
é que a resposta seja zero em regiões completamente suaves. Essa condição pode ser forçada
assegurando que a soma dos pesos na máscara do núcleo seja zero.
Embora sejam de implementação relativamente simples, na forma de núcleos, as representações
discretas dadas na Tabela 4.1 não correspondem, em geral, à escolha prática de núcleos de filtros.
A justificativa para isso é que, em geral, a detecção de bordas (que é a principal aplicação de filtros
diferenciais) recebe auxílio de um estágio inicial suavizador (na maioria das vezes, gaussiano) para
supressão de ruído. Tal ruído poderia produzir uma grande resposta do núcleo detector de bordas
e dominar as verdadeiras bordas da imagem. A operação de suavização e o operador de resposta a
bordas podem ser combinados em um único núcleo, uma possibilidade que ilustraremos na Seção
4.6. De modo geral, a supressão de ruído é uma parte essencial de abordagens mais avançadas para a
detecção de bordas, como o método de Canny (Capítulo 10).
Embora seja uma tarefa conceitualmente simples, a eficaz e robusta detecção de bordas é crucial
em tantas aplicações que continua objeto de considerável atividade de pesquisa. Aqui, examinaremos
alguns filtros básicos para a detecção de bordas deduzidos diretamente de derivadas discretas.
Tabela 1.1 Operadores diferenciais: definições formais (contínuas) e correspondentes aproximações discretas
Operadores
diferenciais 2D Caso contínuo Caso discreto
Solomon 04PDFG.indd 90 14.05.13 19:39:10:10
Realce 91
4.5.2 Detecção de bordas de primeira ordem
Numerosos núcleos de filtros foram propostos para aproximar a derivada de primeira ordem do
gradiente da imagem. Três dos mais comuns (seus nomes foram tirados dos nomes de seus autores/
elaboradores na literatura primordial sobre processamento de imagens) são mostrados na Figura
4.9, em que vemos os núcleos de filtros detectores de bordas de Roberts, Prewitt e Sobel. Os três são
implementados como a combinação de dois núcleos: um para a derivada em relação a x e outro para
a derivada em relação a y (Figura 4.9).
Os simples operadores 2 3 2 de Roberts (comumente denominados cruz de Roberts) foram dos
primeiros métodos empregados para a detecção de bordas. A cruz de Roberts calcula uma simples
e eficiente medida do gradiente espacial 2D em uma imagem, realçando regiões que correspondem
a bordas. O operador de Roberts é implementado por meio de dois núcleos/duas máscaras decon-
volução, cada um(a) projetado(a) para ter resposta máxima em bordas a ±45° em relação à grade de
pixels (Figura 4.9, à esquerda), e retorna as derivadas da imagem em relação a x e a y, Gx e Gy, respec-
tivamente. A magnitude |G| e a orientação u do gradiente da imagem são, então, dadas por:
(4.5)
Isto dá uma orientação u 5 0 para uma borda vertical que seja mais escura no lado esquerdo da
imagem. Contudo, para velocidade de computação, |G| é, em geral, aproximado pela soma das mag-
nitudes das derivadas em relação a x e a y, Gx e Gy.
O operador cruz de Roberts é de cálculo rápido (devido ao pequeno tamanho do núcleo), mas é
muito sensível a ruído. Os detectores de bordas de Prewitt e de Sobel superam muitas das limitações
do de Roberts, mas utilizam máscaras de convolução ligeiramente mais complexas (Figura 4.9, no
centro e à direita).
Os núcleos de Prewitt e de Sobel são, em geral, preferíveis ao de Roberts, pois evitam que o gra-
diente seja deslocado de meio pixel nas duas direções; ademais, no caso do núcleo de Roberts, a ex-
tensão a dimensões maiores (vizinhanças de filtro maiores do que 3 3 3) não é prontamente possível.
A principal diferença entre os operadores de Sobel e de Prewitt é que o núcleo de Sobel implementa
diferenciação em uma direção e aplica média (aproximadamente) gaussiana na outra (núcleo gaus-
Figura 4.9 Filtros detectores de bordas de primeira ordem.
Solomon 04PDFG.indd 91 29.05.13 11:24:36:10
92 Capítulo 4
sianos são ilustrados na Figura 4.7). A vantagem dessa abordagem é suavizar a região das bordas,
reduzindo a possibilidade de que a resposta do filtro seja dominada por ruído ou pixels isolados.
O Exemplo 4.8 ilustra como a filtragem com esses núcleos pode ser implementada em Matlab. A
saída do filtro de bordas do Exemplo 4.8 é mostrada na Figura 4.10, onde podemos ver as diferen-
tes respostas dos filtros de Roberts, Prewitt e Sobel quando aplicados a uma dada imagem. Como
esperado, respostas mais intensas nas bordas e muito similares são obtidas com as abordagens mais
sofisticadas de Prewitt e de Sobel (Figura 4.10, parte inferior). O operador de Roberts é visivelmente
susceptível ao ruído da imagem, resultando em uma resposta de borda ruidosa e menos detalhada
(Figura 4.10, parte superior direita).
Exemplo 4.8
Código Matlab O que está sendo feito?
I5imread('circuit.tif '); %Lê a imagem
IEr5edge(I,'roberts'); %Bordas de Roberts
IEp5edge(I,'prewitt'); %Bordas de Prewitt
IEs5edge(I,'sobel'); %Bordas de Sobel
subplot(2,2,1), imshow(I); %Exibe a imagem
subplot(2,2,2), imshow(IEr); %Exibe a imagem
subplot(2,2,3), imshow(IEp); %Exibe a imagem
subplot(2,2,4), imshow(IEs); %Exibe a imagem
Comentários
Neste exemplo, usamos a função edge() de Matlab para aplicar os detectores de bordas de Roberts,
Prewitt e Sobel. Como uma extensão, essa função também facilita o uso de um terceiro parâmetro de
limiar na forma edge(Imagem, ‘nome do filtro’, limiar). Essa forma explora o conceito de aplicação
de limiar para a seleção de um subconjunto da resposta do filtro com base na magnitude da resposta
do filtro. A função edge() também pode ser usada para retornar as componentes Gx e Gy de uma dada
máscara de filtro e automaticamente selecionar um limiar de magnitude (de modo similar ao Exem-
plo 3.15; informação sobre tal função é obtida com a entrada de doc edge na janela de comando de
Matlab). Explore esses parâmetros e os efeitos que podem ser alcançados nas imagens de exemplo.
Explore, ainda, o uso das funções tic()/toc() de Matlab para cronometrar as diferentes operações de
filtragem de bordas.
4.5.2.1 Filtragem linearmente separável
Os filtros de Prewitt e de Sobel são exemplos de filtros linearmente separáveis. Isso significa que o
núcleo do filtro pode ser expresso como o produto matricial de um vetor-coluna por um vetor-linha.
Assim, os núcleos de filtros mostrados na Figura 4.9 podem ser expressos da seguinte forma:
(4.6)
Uma importante consequência disso é que o processo de filtragem 2D pode, na verdade, ser efetuado
por uma sequência de duas operações de filtragem 1D. Primeiro, as linhas da imagem são filtradas com o
filtro de linhas 1D e, então, a imagem resultante tem as colunas filtradas por um filtro de colunas 1D. Isso
permite uma economia computacional devido à redução no número de operações aritméticas requeridas
Solomon 04PDFG.indd 92 14.05.13 19:39:12:10
Realce 93
para o cálculo de uma dada convolução com um núcleo de filtro. No caso 3 3 3, a economia é modesta
(seis multiplicações/adições contra as nove da versão 2D); mas a economia cresce consideravelmente no
caso de núcleos de dimensões maiores. Em geral, filtros separáveis lineares resultam em uma economia
da ordem das 2N operações contra as N 2 operações requeridas por uma convolução 2D não separável.
4.5.3 Detecção de bordas de segunda ordem
Em geral, filtros de bordas de primeira ordem não são de uso muito comum no realce de imagens. Seu
principal uso reside no processo de detecção de bordas, como um estágio no procedimento de segmen-
tação de imagem. Ademais, como veremos na discussão do método de Canny no Capítulo 10, embora
a aplicação de um operador diferencial seja um passo crucial, a robusta detecção de bordas requer con-
sideravelmente mais do que a simples aplicação de um núcleo diferencial. Uma abordagem muito mais
comum para o realce de imagens é o uso de um operador diferencial de segunda ordem: o laplaciano.
4.5.3.1 Detecção de bordas com operador laplaciano
Um operador diferencial de segunda ordem muito popular é o laplaciano:
(4.7)
Na forma discreta, esse operador é dado na Tabela 4.1 como:
Figura 4.10 Magnitude de respostas de bordas de Roberts, Prewitt e Sobel.
Solomon 04PDFG.indd 93 29.05.13 11:24:38:10
94 Capítulo 4
(4.8)
Isso pode ser facilmente implementado em um núcleo de filtro 3 3 3, como mostrado na Figura
4.11A. No entanto, ao explorar uma imagem com a aplicação local desse operador, esperamos que a
resposta seja maior (já que o laplaciano é um operador diferencial de segunda ordem) nos pontos na
imagem onde o gradiente local sofre maior alteração. Uma das possíveis limitações da aplicação da
máscara na forma dada na Figura 4.11A é a intensidade relativa de características da imagem posi-
cionadas aproximadamente em direções diagonais em relação aos eixos da imagem. Se imaginarmos
a rotação dos eixos em 45° e superpusermos o laplaciano após rotação ao original, poderemos cons-
truir um filtro que seja invariante em relação a múltiplas rotações de 45° (Figura 4.11B).
A Figura 4.12 mostra a comparação das respostas de filtros diferenciais de primeira ordem − de
Sobel − e de segunda ordem − laplaciano. Podemos perceber como o operador gradiente de primeira
ordem tende a produzir ‘bordas grossas’, enquanto o filtro laplaciano tende a produzir bordas mais
finas em resposta às variações do gradiente e não ao próprio gradiente da imagem. O Exemplo 4.9
ilustra como o operador laplaciano pode ser aplicado em Matlab.
A propriedade da derivada de segunda ordem permite que o laplaciano produza uma aguçada
resposta de borda, associada a variações no gradiente, no lugar da resposta menos detalhada dos
filtros de bordas de primeira ordem, o que faz do filtro laplaciano um adequado primeiro estágio no
realce digital de bordas.
Figura 4.11 Construção de
núcleos laplacianos discre-
tos.
Figura 4.12 Comparação de filtros de primeira (Sobel) e de segunda (laplaciano) ordens.
Solomon 04PDFG.indd 94 29.05.13 11:24:39:10
Realce 95
No entanto, como aproximam uma derivada de segunda ordem sobre a imagem, os núcleos lapla-
cianos são, na verdade, muito sensíveis ao ruído.
4.5.3.2 Laplaciano de gaussiano
Para combater a alta sensibilidade do filtro laplaciano ao ruído, o núcleo laplaciano (Figura 4.11) é,
em geral, combinado com o núcleo gaussiano (Figura 4.7) para produzir um método de filtragem
robusto. Esses dois núcleos podem ser aplicados em sequência à imagem como duas operações deconvolução separadas: primeiro suavizando com o núcleo gaussiano e, em seguida, com o núcleo
laplaciano. No entanto, como a convolução é associativa (Seção 4.3), podemos combinar os núcleos
por meio da convolução do operador de suavização gaussiano com o operador laplaciano e produzir
um único núcleo: o filtro laplaciano de gaussiano (LoG − Laplacian of Gaussian). Esse núcleo único
é, então, aplicado à imagem de uma só vez. Isso permite uma significativa economia computacional,
reduzindo o número de operações à metade, aproximadamente.
A resposta do filtro será zero em áreas da imagem com intensidade uniforme, e será não zero em
áreas de transição. Em uma dada borda, o operador retornará uma resposta positiva no lado mais
escuro e resposta negativa no lado mais claro.
Podemos observar esse efeito na Figura 4.12 e nos resultados do Exemplo 4.9. Se desejarmos apli-
car o operador LoG em Matlab, na função fspecial(), devemos substituir o parâmetro ‘laplacian’ por
‘log’. O resultado deve ser uma versão suavizada do resultado no Exemplo 4.9. Parâmetros de entrada
adicionais para função fspecial() permitem que o grau de suavização seja controlado pela variação
da largura do núcleo gaussiano.
4.5.3.3 Detector de passagem por zero
A propriedade de passagem por zero do laplaciano (e de LoG) também permite outro método de de-
tecção de bordas: o método de passagem por zero. Usamos um detector de passagem por zero* para
localizar pixels em que o valor do laplaciano passa por zero (ou seja, ponto em que o laplaciano muda
*Também denominado “detector de cruzamento de zero”. (N.T.)
Exemplo 4.9
Código Matlab O que está sendo feito?
I5rgb2gray(imread('peppers.png')); %Lê a imagem (em escala de cinza)
k5fspecial('laplacian'); %Cria o filtro laplaciano
IEl5imfilter(double(I),k,'symmetric'); %Bordas com filtro laplaciano
subplot(1,2,1), imagesc(I); %Exibe a imagem
subplot(1,2,2), imagesc(IEl); %Exibe a imagem
colormap('gray');
Comentários
Neste exemplo, primeiro, construímos o filtro laplaciano (de modo similar ao Exemplo 4.2) e, então,
o aplicamos à imagem usando a função imfilter() de Matlab. Reparemos no uso direto da função
rgb2gray() para carregar a imagem em questão (em cores) em escala de cinza. Ademais, efetuamos
a operação do laplaciano na versão da imagem de entrada em ponto flutuante (função double());
como o operador laplaciano retorna valores positivos e negativos, usamos as funções imagesc() e
colormap() para adequar a escala e exibir a imagem como na Figura 4.12.
Solomon 04PDFG.indd 95 14.05.13 19:39:20:10
96 Capítulo 4
de sinal). Isso corre em ‘bordas’ na imagem, onde a intensidade muda rapidamente (ou em áreas de
mudança de intensidade devido ao ruído). É mais conveniente pensar no detector de passagem por
zero como um tipo de detector de característica e não como um detector de bordas específico. A
saída do detector de passagem por zero é, em geral, uma imagem binária com linhas de apenas um
pixel de largura que mostram as posições dos pontos de passagem por zero.
O ponto de partida para o detector de passagem por zero é uma imagem filtrada pelo filtro LoG
(para eliminar o efeito de ruído). As resultantes passagens por zero são fortemente influenciadas pelas
dimensões do núcleo gaussiano empregado no estágio de suavização desse operador. À medida que
aumenta a suavização, um número decrescente de passagens por zero será encontrado; as passagens
por zero que restarem corresponderão a características da imagem de escalas cada vez maiores.
O Exemplo 4.10 ilustra como podemos usar o detector de passagem por zero em Matlab. A Figura
4.13 mostra transições de bordas detectadas com o emprego do conceito de passagem por zero por
meio de um filtro LoG (do Exemplo 4.10). Apesar da suavização gaussiana, é visível o efeito de ruído
na derivada de segunda ordem.
Exemplo 4.10
Código Matlab O que está sendo feito?
I5rgb2gray(imread('peppers.png')); %Lê a imagem (em escala de cinza)
k5fspecial('log',[10 10], 3.0); %Cria o filtro LoG
IEzc 5 edge(I, 'zerocross', [], k); %Bordas de passagem por zero (limiar automático)
subplot(1,2,1), imshow(I); %Exibe a imagem
subplot(1,2,2), imshow(IEzc); %Exibe a imagem
Comentários
Fica evidente da Figura 4.13 que os resultados ainda são bastante ruidosos, mesmo com um grande
núcleo gaussiano 10 3 10 (σ 5 3,0), como especificado neste exemplo. Explore o uso de diferentes
parâmetros para o núcleo gaussiano (observe que o próprio filtro k pode ser visualizado como uma
imagem através da função imagesc()).
As seguintes observações a respeito desse operador são pertinentes:
• No caso geral, todas as bordas detectadas pelo detector de passagem por zero têm a forma de
curvas fechadas, assim como as linhas de contorno em um mapa sempre são fechadas. Na imple-
Figura 4.13 Bordas detectadas como passagens do operador LoG por zero.
Solomon 04PDFG.indd 96 14.05.13 19:39:21:10
Realce 97
mentação em Matlab, isto sempre ocorrerá se um limiar zero for especificado (Nota: O Exemplo
4.10 usa um limiar selecionado automaticamente por Matlab (parâmetro especificado como ‘[]’)
para definir as bordas a serem mantidas). A única exceção a essa regra é o caso de curvas que
ultrapassam a fronteira da imagem. Isso pode representar certas vantagens para o processamento
posterior.
• Como vimos, quando o desvio-padrão do núcleo gaussiano é pequeno, o filtro LoG é bastante
susceptível ao ruído. Uma solução para isso consiste em aumentar a suavização gaussiana para
preservar somente bordas intensas. Uma alternativa é analisar o gradiente na passagem por zero
e preservar os pontos de passagem por zero apenas se seus valores forem maiores do que um
certo limiar (isso corresponde a usar a derivada de terceira ordem da imagem original). Essa
abordagem tende a preservar apenas as bordas mais intensas; mas, como a derivada de terceira
ordem também é altamente sensível ao ruído, qualquer ruído de alta frequência na imagem será
fortemente amplificado.
4.6 Realce de bordas
Na parte final deste capítulo, exploraremos o uso da detecção de bordas de segunda ordem (Seção
4.5.3) como método de realce de bordas (conhecido como aguçamento de imagens − image sharpe-
ning).
4.6.1 Aguçamento de bordas laplaciano
Vimos que o laplaciano responde apenas a detalhes finos na imagem (ou seja, em regiões na imagem
em que o gradiente sofre mudança significativa), e tem resposta zero em regiões da imagem onde o
gradiente é constante ou tem variação suave. Se, portanto, tomarmos a imagem original e adicionar-
mos ou subtrairmos o laplaciano, esperamos realçar artificialmente os detalhes finos da imagem. É
uma prática comum subtrair o laplaciano da imagem original, truncando valores que exibam over-
flow de inteiro na usual representação de 8 bits. Usando a definição de laplaciano da Seção 4.5.3.1,
podemos definir esta operação como:
(4.9)
O Exemplo 4.11 ilustra como o aguçamento de imagens laplaciano pode ser implementado em
Matlab. A saída do Exemplo 4.11 é mostrada na Figura 4.14, na qual vemos a imagem original, as
bordas ‘laplacianas’ e a saída final aguçada. Reparemos que o realce do contraste nas bordas pode ser
visto claramente no resultado filtrado, assim como um aumento do ruído na imagem aguçada.
Para contornar esse problema, substituímos o operador laplaciano no Exemplo 4.11 pelo operador
LoG (Seção 4.5.3.2). O leitor pode experimentar tal mudança no Exemplo 4.11, aplicando núcleos
Exemplo 4.11
Código Matlab O que está sendo feito?
A5imread('cameraman.tif '); %Lê a imagem
h5fspecial(laplacian, [10 0], 3.0); %Cria um filtro laplaciano 3 3 3
B5imfilter(A,h); %Filtra a imagem com o núcleo laplaciano
C5imsubtract(A,B); %Subtrai o laplaciano da imagem original
continua
Solomon 04PDFG.indd 97 14.05.13 19:39:21:10
98 Capítulo 4
gaussianos de diferentes dimensões para investigar que efeitos podem ser obtidos no aguçamento
de imagens. O exemplo na Figura 4.14 é mostrado na Figura 4.15 após o uso do operador LoG; na
figura,podemos perceber o reduzido nível de ruído na imagem LoG intermediária e o resultado final
aguçado.
4.6.2 Filtro máscara de desaguçamento
Uma alternativa à abordagem laplaciana para aguçamento de bordas (Seção 4.6.1) é o filtro máscara
de desaguçamento (também conhecido como filtro de realce − boost filter). O princípio de funciona-
mento do filtro de desaguçamento é baseado na subtração de uma versão suavizada (desaguçada) de
subplot(1,3,1), imshow(A);
subplot(1,3,2), imagesc(B); axis image; axis off %Exibe a imagem original, o laplaciano e
subplot(1,3,3), imshow(C); %a imagem aguçada
Comentários
Neste exemplo, como as imagens não foram, primeiro, convertidas ao formato em ponto flutuante
(tipo de dado duplo), a imagem filtrada pelo laplaciano é automaticamente truncada ao formato de 8
bits. Converta as imagens A e B ao formato em ponto flutuante (double()), efetue a aritmética com as
imagens em ponto flutuante e exiba o resultado como no Exemplo 4.9.
Figura 4.14 Aguçamento de borda com operador laplaciano.
Figura 4.15 Aguçamento de borda com operador LoG.
continuação
Solomon 04PDFG.indd 98 14.05.13 19:39:22:10
Realce 99
uma imagem para enfatizar ou realçar a informação de alta frequência na imagem (por exemplo, as
bordas). Inicialmente, o operador produz uma imagem das bordas da imagem original por meio da
seguinte metodologia:
(4.10)
A versão suavizada da imagem é obtida da filtragem da imagem original com um filtro com núcleo
de média (Seção 4.4.1) ou gaussiano (Seção 4.4.4). A resultante imagem de diferença é, então, adicio-
nada à original, para produzir algum grau de aguçamento:
(4.11)
Na equação anterior, o fator de escala k assegura que a imagem resultante tenha uma faixa dinâmica
adequada e que suas bordas não sejam ‘superaguçadas’. Em geral, k 5 0,2 − 0,7 é aceitável, depen-
dendo do grau de aguçamento desejado. Desse estágio secundário é que advém a denominação alter-
nativa filtro de realce (ou de boost).
Para entender essa abordagem ao aguçamento de imagens, devemos considerar dois fatos. Primeiro,
as regiões suaves ou relativamente invariantes na imagem não serão alteradas de forma significativa pelo
filtro de suavização (por exemplo, uma região constante que já é perfeitamente suave não será afetada
pelo filtro de suavização, como mostram as Figuras 4.4 e 4.8). Em contraste, bordas e outras regiões na
imagem cujas intensidades mudam rapidamente serão afetadas de modo significativo. Se subtrairmos a
imagem suavizada Isuavizada da imagem original Ioriginal, obteremos uma imagem resultante Ibordas com va-
lores (diferenças) maiores em áreas que foram consideravelmente afetadas (pela suavização), e valores
Exemplo 4.12
Código Matlab O que está sendo feito?
A5imread('cameraman.tif '); %Lê a imagem
Iorig5imread('cameraman.tif '); %Lê a imagem
g5fspecial('gaussian',[5 5],1.5); %Gera núcleo gaussiano
subplot(2,3,1), imshow(Iorig); %Exibe a imagem original
Is5imfilter(Iorig,g); %Cria imagem suavizada por filtragem
Ie5(Iorig - Is); %Obtém a imagem de diferença
subplot(2,3,2), imshow(Ie); %Exibe a diferença desaguçada
Iout5Iorig1(0.3).*Ie; %Adiciona k * imagem de diferença à original
subplot(2,3,3), imshow(Iout);
Iout5Iorig1(0.5).*Ie; %Adiciona k * imagem de diferença à original
subplot(2,3,4), imshow(Iout);
Iout5Iorig1(0.7).*Ie; % Adiciona k * imagem de diferença à original
subplot(2,3,5), imshow(Iout);
Iout5Iorig1(2.0).*Ie; %Adiciona k * imagem de diferença à original
subplot(2,3,6), imshow(Iout);
Comentários
Neste exemplo, efetuamos todas as operações usando imagens de 8 bits sem sinal (tipo uint8 de Mat-
lab) e calculamos a imagem suavizada inicial com núcleo gaussiano 5 3 5 (σ 5 1,5). Explore o efeito
de alterar o grau de suavização usando um filtro alternativo, como o de média, para o operador de
suavização, e de variar o valor do fator de escala k.
Solomon 04PDFG.indd 99 14.05.13 19:39:23:10
100 Capítulo 4
baixos em áreas onde pouca alteração ocorreu. Isso corresponde, aproximadamente, a um mapa suavi-
zado de bordas da imagem. O resultado da subtração dessa imagem suavizada (ou algum múltiplo dela)
da imagem original é uma imagem Ibordas com maiores valores de pixel em áreas de grande mudança
de contraste (por exemplo, em bordas) e menor valores de pixel em áreas de uniformidade. A imagem
resultante pode, então, ser adicionada à original; isto é feito com uso de um fator de escala k para realçar
áreas nas quais há rápida variação de intensidade na imagem, deixando áreas de uniformidade pratica-
mente inalteradas. O grau de realce é determinado pelo grau de suavização imposto antes da efetuação
da subtração e pela fração da resultante imagem de diferença que é adicionada à imagem original. A
filtragem de desaguçamento é, basicamente, uma reformulação de técnicas conhecidas como de alto
realce (high boost) − a informação de alta frequência das bordas é realçada na imagem.
O Exemplo 4.12 ilustra como esse efeito de filtragem pode ser implementado em Matlab. O resul-
tado do Exemplo 4.12 é mostrado na Figura 4.16, em que vemos a imagem original, a imagem de dife-
rença de bordas (gerada pela subtração da imagem suavizada da imagem original) e uma amostra dos
efeitos de realce alcançados com diferentes valores para o fator de escala k. Nos exemplos mostrados,
é visível o realce de detalhes das bordas (aguçamento), mas o aumento da fração da imagem de borda
adicionada (fator k) aumenta tanto a definição de bordas intensas como o ruído na imagem. Em todos
os casos, valores de pixels da imagem que excedem a faixa de 8 bits 0−255 foram truncados.
Exercícios
Os exercícios a seguir foram elaborados para reforçar e desenvolver os conceitos e exemplos de Mat-
lab apresentados neste capítulo. Informação adicional sobre todas as funções de Matlab represen-
Figura 4.16 Realce de borda com filtro máscara de desaguçamento.
Solomon 04PDFG.indd 100 14.05.13 19:39:24:10
Realce 101
tadas neste capítulo e nestes exercícios pode ser obtida no próprio Matlab, através do navegador de
ajuda a funções (basta teclar doc na janela de comando de Matlab, em que é a função desejada).
Funções de Matlab: imnoise, plot, tic, toc, min, max, mean, function, imresize, for, colfilt, roi-
poly, roifilt, imfilter, fspecial.
Exercício 4.1 Com base no Exemplo 4.3, explore o uso da função imnoise() de Matlab para a adi-
ção de diferentes níveis de ruídos ‘sal e pimenta’ e gaussiano às imagens. Use as imagens 'peppers.
png' e 'eight.tif ' como exemplos de imagens em cores e em escala de cinza para construir uma série
de variáveis de imagens em Matlab com diferentes níveis e tipos de ruído (investigue, também, ou-
tros tipos de ruído disponíveis com essa função; tecle doc imnoise na janela de comando de Matlab
para mais informação sobre a função). Com base nos tópicos de filtragem apresentados na Seção 4.4,
investigue a utilidade das filtragens pela média, pela mediana e gaussiana na remoção de diferentes
tipos e níveis de ruído em imagens (veja os Exemplos 4.4, 4.5 e 4.7).
Exercício 4.2 Com base no Exemplo 4.2, explore o uso de diferentes dimensões de vizinhanças e o
resultante efeito sobre a imagem de saída. Use as funções de Matlab para desenho de gráficos (função
plot()) e as funções tic e toc de Matlab para medida de tempo para criar um gráfico da dimensão N
da vizinhança versus tempo de computação na aplicação das funções min(), max() a uma imagem. O
tempo de computação aumenta linearmente com N ou não? Por quê?
Exercício 4.3 A partir da definição de vizinhança local de pixel da Seção 4.2, implemente uma função
em Matlab (veja a ajuda de Matlab sobre funções ou tecle doc function na janela de comando de Matlab)
para extrair a vizinhança N 3 N de uma dada posição de pixel (x, y) e copie os valores de pixel em uma
imagem nova e menor N 3 N. Explore a sintaxe da estrutura iterativa for de Matlab (doc for).
Combine seu programa de extração com a função imresize() de Matlab para criar umprograma
para extração e amplificação de regiões.
Exercício 4.4 A função colfilt() de Matlab utiliza as altamente eficientes operações matriciais de
Matlab para efetuar operações de filtragem em vizinhanças de pixels de imagens. Usando as funções
tic()/toc() de Matlab para medida de tempo, meça o tempo de computação da operação efetuada no
Exemplo 4.2 com e sem o uso desse parâmetro de otimização. Varie as dimensões da vizinhança em
que a operação é efetuada (assim como a operação min()/max()/mean()). O que você observa? Há
consistência entre a melhora de desempenho e vizinhanças muito pequenas ou muito grandes?
Exercício 4.5 Com base no Exemplo 4. 4, que ilustra a filtragem pela média em uma dada imagem,
registre o tempo de execução desta operação (usando as funções tic()/toc() de Matlab para medida
de tempo) para diferentes dimensões da vizinhança na faixa 0−25. Use as facilidades de Matlab para
o desenho de gráficos e apresente seus resultados na forma de um gráfico. O que você nota? Como o
tempo de execução varia com o aumento nas dimensões da vizinhança? (Sugestão: Para automatizar
esta tarefa, considere o emprego da estrutura iterativa for de Matlab.)
Como uma extensão, repita o exercício para diferentes tamanhos de imagens (ou uma faixa de tama-
nhos de imagem obtida com imresize()) e faça um gráfico dos resultados. Que tendência observa?
Exercício 4.6 Repita a primeira parte do Exercício 4.5 e compare as diferenças entre filtragem pela
média (Exemplo 4.4) e filtragem pela mediana (Exemplo 4.5). Como as tendências se comparam?
Como explica quaisquer diferenças observadas?
Exercício 4.7 Uma região de interesse (RDI)* em uma imagem é uma sub-região da imagem (em
geral, de natureza retangular) na qual operações localizadas de processamento de imagem podem
*É comum o uso da sigla associada ao termo correspondente em inglês: ROI − Region Of Interest. (N.T.)
Solomon 04PDFG.indd 101 14.05.13 19:39:24:10
102 Capítulo 4
ser efetuadas. Em Matlab, uma RDI pode ser selecionada de modo iterativo exibindo, primeiro, uma
imagem (via imshow()) e, depois, usando a função roipoly() para retornar uma sub-região da ima-
gem definida como uma imagem binária do mesmo tamanho que a original (zero fora da RDI e um
no interior da RDI).
Explore o uso da função roifilt() para aplicação seletiva de filtragem gaussiana (Exemplo 4.7) e
filtragem pela média (Exemplo 4.4) a uma dada região de interesse em uma das imagens de exemplo
disponíveis em Matlab.
Explore, também, a combinação da função de seleção de RDI com sua resposta ao Exercício 4.3
para extrair uma dada RDI para equalização de histograma (Seção 3.4.4) ou processamento de de-
tecção de bordas (Seção 4.5) separadamente do resto da imagem.
Exercício 4.8 Vários dos exemplos de filtragem neste capítulo fazem uso da função imfilter() de
Matlab (Exemplo 4.2), que tem um parâmetro para especificar como as fronteiras da imagem devem
ser tratadas em uma dada operação de filtragem. Escolha uma das operações de filtragem deste capí-
tulo e explore o efeito de variar as opções de fronteira com a função imfilter(). Faz alguma diferença
ao resultado? Faz alguma diferença ao tempo de execução da operação de filtragem? (Use tic()/toc()
para medida de tempo.)
Exercício 4.9 Implemente uma função em Matlab (doc function) para efetuar a operação de fil-
tragem de suavização conservativa descrita no final da Seção 4.4.3. (Sugestão: Explore a estrutura
iterativa for de Matlab.) Teste essa operação de filtragem com os ruídos gerados no Exemplo 4.3.
Como, para os diferentes tipos de ruído, o resultado se compara com o de filtragem pela média ou
pela mediana? Essa operação tem execução mais rápida ou mais lenta? (Use tic()/toc() para medida
de tempo.)
Exercício 4.10 Considerando os detectores de bordas de Roberts e de Sobel do Exemplo 4.8, apli-
que detecção de bordas às imagens dos três canais RGB (por exemplo, com as imagens 'peppers.
png' e 'football.jpg'). Exiba os resultados como uma imagem em cores de três canais e como canais
individuais de cor (um por figura).
Observe como algumas das respostas de borda se relacionam aos diferentes canais de cor na ima-
gem. Quando uma borda é visível em branco na imagem de três canais resultante da detecção de bor-
das, o que significa? Repita essa tarefa para o espaço de cor HSV discutido no Capítulo 1. Nesse caso,
você nota alguma diferença nos resultados?
Exercício 4.11 A partir do exemplo de operador de desaguçamento (Exemplo 4.12), estenda este
operador a imagens em cores (por exemplo, as imagens 'peppers.png' e 'football.jpg'). Como as áreas
de aguçamento das imagens se comparam com as áreas de intensidade com detecção de bordas do
Exercício 4.10?
O operador de desaguçamento também pode ser construído por meio do uso de imfilter() como
parâmetro de ‘desaguçamento’ na função fspecial() de Matlab. Compare o resultado assim obtido
com o da implementação no Exemplo 4.12. Existe alguma diferença?
Exemplos e exercícios adicionais estão disponíveis no site da LTC Editora.
Solomon 04PDFG.indd 102 14.05.13 19:39:24:10
5
Transformadas de Fourier e
processamento no domínio
da frequência
5.1 Espaço de frequência: uma introdução amistosa
A compreensão dos fundamentos de métodos baseados no espaço de frequência é muito importante
no processamento de imagens. Contudo, se a experiência dos autores tiver algum valor, os métodos
de Fourier podem se tornar uma barreira ao aprendizado dos alunos. Parte da discussão sobre trans-
formada de Fourier na literatura começa com a definição, seguida de uma apresentação matemática
bastante formal dos teoremas associados. O grande risco dessa abordagem é afastar os estudantes,
excetuando aqueles com talento matemático, que se sentem inadequados à tarefa ou não entendem
por que vale o esforço do estudo. A real significância de métodos de Fourier, os poucos conceitos
verdadeiramente importantes, simplesmente ficam perdidos nos detalhes matemáticos. Tentaremos
evitar essa abordagem excessivamente formal. É claro que não podemos ignorar a matemática − que
é a essência do assunto − mas tentaremos ressaltar os pontos fundamentais, assim como a relevância
dos conceitos que discutirmos.
A análise no espaço de frequência é largamente empregada e é uma poderosa metodologia
centrada em uma particular ferramenta matemática: a transformada de Fourier.1 Podemos iniciar
dizendo simplesmente que a transformada de Fourier é um tipo particular de transformada inte-
gral que nos permite ver a captura e o processamento de imagens de um ponto de vista alternati-
vo, transformando o problema a outro espaço. No processamento de imagens, em geral, estamos
interessados em distribuições espaciais (ou seja, funções) 2D de intensidade ou cores que existem
no espaço real − um espaço cartesiano 2D em que os eixos definem unidades de comprimento. A
transformada de Fourier opera sobre tal função e produz uma forma equivalente que reside em um
espaço abstrato denominado espaço de frequência. Por que isso? Em termos simples, o espaço de
frequência é útil porque facilita muito a solução de problemas que, de outra forma, seriam difíceis
(Figura 5.1).
Os métodos de Fourier são tão importantes que deixaremos de lado o padrão e (por ora) nos
desviaremos do processamento de imagens e dedicaremos algum tempo ao entendimento de al-
guns conceitos importantes e da matemática de transformadas de Fourier e do espaço de frequência.
Completada a fundação, veremos como podem ser usados com excelentes resultados, permitindo
1A rigor, análise no espaço de frequência não diz respeito exclusivamente à transformada de Fourier. No sentido mais geral, também diz respeito
ao uso de transformações similares, como a de Laplace e a Z. No entanto, usaremos os termos espaço de frequência e transformada de Fourier
como sinônimos.
Solomon 05PDFG.indd 103 21.05.13 13:47:25:10
104 Capítulo 5
tanto abordar o processamento de imagens de uma nova perspectiva como explorar umavariedade
de aplicações.
5.2 Espaço de frequência: a ideia fundamental
Iniciaremos nossa discussão sobre métodos de Fourier resumindo, sem nenhuma preocupação com
a formalidade, alguns conceitos importantes. Para manter a generalidade, falaremos sobre processa-
mento de sinais e não de imagens.
(1) Conteúdo harmônico de sinais. A ideia fundamental de análise de Fourier é que qualquer sinal,
seja uma função do tempo, do espaço ou de outras variáveis, pode ser expresso como uma
combinação linear ponderada de funções harmônicas (ou seja, senos e cossenos) com diferentes
períodos ou frequências. Estas funções são denominadas componentes de frequência do sinal.
(2) A representação de Fourier é uma alternativa completa. Na representação de Fourier de um sinal
como uma combinação ponderada de funções harmônicas de diferentes frequências, os pesos
constituem o espectro de Fourier. Esse espectro se estende (em princípio) ao infinito e qualquer
sinal pode ser reproduzido com precisão arbitrária. Assim, o espectro de Fourier é uma repre-
sentação alternativa completa e válida do sinal.
(3) Processamento de Fourier diz respeito à relação entre o conteúdo harmônico do sinal de saída e
o conteúdo harmônico do sinal de entrada. No espaço de frequência, sinais são considerados
combinações de sinais harmônicos. Processamento de sinais no espaço de frequência (análise,
síntese e transformação de sinais), portanto, diz respeito ao conteúdo espectral e como tais
componentes são preservadas, amplificadas ou suprimidas pelo processamento em questão.
Esses três primeiros conceitos são resumidos na Figura 5.2.
(4) O domínio do espaço e o domínio de Fourier* são recíprocos. Na representação de Fourier de
uma função, termos harmônicos com frequências altas (períodos curtos) são necessários para
construir mudanças de pequena escala (agudas ou rápidas) no sinal. Reciprocamente, caracte-
rísticas suaves no sinal podem ser representadas por termos harmônicos de frequências baixas
(períodos longos). Os dois domínios são, então, recíprocos − o pequeno no domínio do espaço
é mapeado no grande no domínio de Fourier, e o grande no domínio do espaço é mapeado no
pequeno no domínio de Fourier.
Em geral, estudantes entendem muito bem a série de Fourier, mas encontram dificuldades quando se
trata da transformada de Fourier. Assim, gostaríamos de ressaltar mais um ponto importante:
*Também denominado domínio da transformada de Fourier ou domínio espectral. (N.T.)
Figura 5.1 Métodos do espaço de frequência são
usados para facilitar a solução de problemas que, de
outra forma, seriam difíceis.
Solomon 05PDFG.indd 104 21.05.13 13:47:25:10
Transformadas de fourier e processamenTo no domínio da frequência 105
(5) A expansão em série de Fourier e a transformada de Fourier têm o mesmo objetivo básico. Con-
ceitualmente, a expansão em série de Fourier e a transformada de Fourier fazem a mesma coisa.
A diferença é que a série de Fourier decompõe um sinal periódico em funções harmônicas de
frequências discretas, enquanto a transformada de Fourier decompõe um sinal não periódico
em funções harmônicas de frequências que variam continuamente. A matemática é distinta,
mas o conceito é o mesmo.
Exploraremos esses conceitos básicos a seguir. Iniciamos com uma discussão da serie de Fourier
na próxima seção.
5.2.1 Série de Fourier
Ponto importante 1
Qualquer sinal periódico pode ser expresso como uma combinação ponderada de funções seno e cosseno
com diferentes períodos ou frequências.
Essa é a hipótese básica de Fourier. O processo de decomposição de um sinal periódico em uma
soma de funções seno e cosseno é denominada decomposição ou expansão de Fourier. Se o sinal for
algo que varie com o tempo, como uma forma de onda de tensão ou preços de ações na bolsa de
valores, as funções harmônicas que constituem o sinal são 1D e têm frequência temporal. Nesses
Figura 5.2 Resumo de três conceitos básicos da análise no domínio de Fourier (da frequência). (1) Sinais de
entrada são decompostos em componentes harmônicas. (2) A decomposição é uma representação completa e
válida. (3) Na perspectiva do domínio da frequência, a ação de qualquer sistema linear sobre o sinal de entrada
consiste em modificar a amplitude e a fase das componentes de entrada.
Solomon 05PDFG.indd 105 21.05.13 13:47:26:10
106 Capítulo 5
casos 1D, o teorema básico de Fourier diz que um sinal periódico2 V(t), com período T, pode ser
construído exatamente como uma soma infinita de funções harmônicas, uma série de Fourier, da
seguinte forma:
(5.1)
Uma função periódica arbitrária 1D f(x) de uma coordenada espacial x tendo um período espacial
λ pode ser representada exatamente da mesma forma:
(5.2)
Façamos algumas observações sobre a expansão de Fourier da função espacial f(x) expressa pela
Equação (5.2):
(1) As funções harmônicas na série infinita da expansão, ou seja, cos(knx) e sen(knx), são denomi-
nadas funções de base de Fourier.
(2) Tratamos com funções que variam no espaço, e a periodicidade (inversa), determinada por kn 5
2π n/λ recebe o nome de frequência espacial.
(3) Os coeficientes an e bn indicam quanto de cada função básica (ou seja, onda harmônica da dada
frequência espacial) é necessário para a construção de f(x). O conjunto completo de coeficien-
tes {an e bn} constitui o espectro de Fourier ou de frequências da função espacial. A função f(x) é
denominada representação no domínio espacial.
(4) Para reproduzir a função original f(x) exatamente, a expansão deve se estender a um número
infinito de termos. Neste caso, como n → ∞, as frequências espaciais kn → ∞ e o número de
coeficientes {an e bn} que descrevem o espectro de Fourier também tende a infinito.
Ponto importante 2
O espectro de Fourier é uma representação alternativa completa e válida de uma função.
Este ponto é essencial: o conhecimento dos coeficientes an e bn permite a completa representação
da função, tão válida como a própria f(x). Isso se deve ao fato de sermos capazes de reconstruir f(x)
com precisão arbitrária por intermédio do somatório na Equação (5.2). A Figura 5.3 mostra como
uma simples função periódica 1D (apenas um ciclo da função é mostrado) − função degrau − pode
2A rigor, o sinal deve satisfazer certos critérios para que tenha uma expansão de Fourier válida. Aqui, não discutiremos estes detalhes, mas
assumiremos que tratamos com funções que satisfazem tais critérios.
Solomon 05PDFG.indd 106 21.05.13 13:47:27:10
Transformadas de fourier e processamenTo no domínio da frequência 107
ser aproximada com precisão crescente pela representação em série de Fourier à medida que mais
termos são adicionados à Equação (5.2). Se seguirmos esse procedimento eternamente, o espectro de
Fourier {an, bn} pode reproduzir a função exatamente e, portanto, ser considerado uma representação
alternativa (no domínio da frequência).
Se examinarmos a síntese da onda quadrada periódica na Figura 5.3, notaremos o ponto im-
portante número 4 na decomposição/síntese de Fourier de uma função. As frequências espaciais
baixas (correspondentes aos menores valores de n) constroem a forma suave ‘básica’, enquanto as
frequên cias espaciais altas são necessárias para reproduzir as transições abruptas na função (bordas).
A síntese de uma função degrau por uma série de Fourier é apenas um simples exemplo, mas isto
é, na verdade, uma ‘regra básica’ da representação de Fourier de qualquer função (em uma ou mais
dimensões).
Vale a pena ressaltar, também, que, embora a capacidade de sintetizar uma dada função exata-
mente requeira frequências harmônicas (senos e cossenos) que se estendam a frequências espaciais
infinitas, em muitos casos práticos uma boa aproximação a uma função pode ser obtida com um
número finito e relativamente pequeno de frequências espaciais. Isto fica evidente da síntese da fun-
ção degrau . Quando aproximamos uma função espacial por uma série de Fourier que contém um
número finito de termos harmônicos N,efetivamente definimos a chamada frequência espacial de
corte kCO 5 2πN/λ. A perda das altas frequências espaciais em um sinal resulta, em geral, em perda
de detalhes finos.
5.3 Cálculo do espectro de Fourier
O teorema básico de Fourier afirma que podemos sintetizar funções periódicas por meio de funções
de base senoidais; contudo, até aqui, evitamos a questão de como calcular o espectro de Fourier (ou
seja, os coeficientes da expansão na Equação (5.2)). Felizmente, isto é fácil. Tirando proveito das
Figura 5.3 Síntese de uma função degrau de perío
do λ via série de Fourier. O espectro resultante é
a representação da função espacial no domínio da
frequência e determina a contribuição de cada onda
senoidal de frequência sen(knx) = sen(2πnx/λ).
Solomon 05PDFG.indd 107 21.05.13 13:47:28:10
108 Capítulo 5
propriedades de ortogonalidade da base de Fourier,3 podemos obter fórmulas simples para os coefi-
cientes:
(5.3)
em que kn 5 2πn/λ. Notemos que, em cada caso, podemos obter os coeficientes integrando em um
período espacial completo da função.4
5.4 Série de Fourier complexa
Uma série de Fourier pode ser expressa em uma forma complexa compacta e mais conveniente.
Assim, uma função espacial periódica 1D f(x) é expressa como uma soma ponderada de funções
exponenciais complexas (funções harmônicas):
(5.4)
na qual n pode assumir todos os valores inteiros de −∞ a 1∞. De modo análogo à forma real da ex-
pansão, podemos tirar proveito das relações de ortogonalidade das funções exponenciais complexas
e obter os coeficientes da expansão de Fourier:5
(5.5)
Reparemos que, em geral, os coeficientes cn são números complexos. Ao usar a representação comple-
xa, ressaltamos que nada de essencial muda. Ainda representamos a função f(x) como uma expansão
em termos das funções reais seno e cosseno. Os senos e cossenos, na verdade, ressurgem ao agru-
parmos as exponenciais negativas e positivas correspondentes a valores de n de igual magnitude e
sinais opostos. Uma função estritamente real pode ser construída da base de Fourier complexa, pois
os coeficientes da expansão (cn) também são, em geral, complexos. É relativamente simples mostrar
que (como em exercícios no site do livro6) que os coeficientes complexos cn estão relacionados aos
coeficientes reais an e bn da série de Fourier real (Equação 5.3):
(5.6)
3Uma prova destas fórmulas é dada no site da LTC Editora para este livro.
4É claro que podemos adicionar qualquer valor constante aos limites −λ/2 e λ/2. Em geral, são usados zero e λ, mas o que importa, de fato, é que
a função periódica seja integrada em um período espacial completo λ.
5Ver o site da LTC Editora para este livro.
6Ver o site da LTC Editora para este livro.
Solomon 05PDFG.indd 108 29.05.13 11:16:32:10
Transformadas de fourier e processamenTo no domínio da frequência 109
Para expandir a discussão de métodos de Fourier ao caso de imagens, há duas principais diferenças
em relação ao formalismo apresentado até aqui, de modo que devemos levar isto em consideração:
(1) imagens não são, em geral, funções periódicas.
(2) imagens, em geral, são funções espaciais 2D (e, algumas vezes, de dimensão maior) de suporte finito.7
A extensão da hipótese de Fourier sobre funções periódicas a funções não periódicas corres-
ponde, na verdade, à extensão de uma série de Fourier a uma transformada de Fourier. Primeiro,
consideremos a questão de periodicidade e somente depois faremos a extensão a duas dimensões.
Na discussão a seguir (por questão de simplicidade), consideraremos uma função espacial 1D f(x),
embora raciocínio idêntico possa ser aplicado em duas ou mais dimensões.
5.5 Transformada de Fourier 1D
Para passarmos de uma série de Fourier a uma transformada de Fourier, primeiro expressamos a
função f(x) como uma série de Fourier complexa:
(5.7)
Multiplicando e dividindo por λ → ∞, a expressão anterior pode ser escrita como
(5.8)
Agora, façamos o período da função λ → ∞. Em outras palavras, o truque consiste em considerar que
uma função não periódica possa ser considerada como uma função periódica de período espacial in-
finito. Reparemos que as frequências espaciais individuais no somatório expresso pela Equação (5.8)
são dadas por kn 5 2πn/λ e o intervalo de frequência entre elas é dado por ∆k 5 2π/λ. À medida que
o período espacial λ → ∞, o intervalo de frequência ∆k se torna infinitesimalmente pequeno e λcn
tende a uma função contínua F(kx). Na verdade, é possível mostrar8 que o limite da Equação (5.8)
quando λ → ∞ é a transformada de Fourier inversa:
(5.9)
Notemos que:
• os pesos alocados às funções harmônicas (exponenciais complexas) são dados pela função F(kx);
• as frequências kx são contínuas e variam em todas as faixas de valores possíveis;
• o somatório para f(x) se torna uma integral e o espectro de Fourier F(kx) passa a ser uma função e
deixa de ser um conjunto de valores discretos.
As propriedades de ortogonalidades da base de Fourier complexa (as funções exp(ikxx)) nos permi-
tem calcular a função de ponderação F(kx) na Equação (5.9). Isto, na verdade, é a transformada de
Fourier de f(x):
(5.10)
7O suporte de uma função é uma região em que a mesma é não zero. Obviamente, qualquer imagem digital real tem suporte finito.
8Ver detalhes no site da LTC Editora para este livro.
Solomon 05PDFG.indd 109 21.05.13 13:47:30:10
110 Capítulo 5
É fundamental enfatizar que o significado e propósito básicos da transformada de Fourier não são
diferentes dos da série de Fourier. A transformada de Fourier de uma função também expressa sua
decomposição em um conjunto ponderado de funções harmônicas. Na passagem da série de Fourier
para a transformada de Fourier, passamos da síntese de funções por meio de combinações ponde-
radas de funções harmônicas com frequências discretas (um somatório) a combinações ponderadas
infinitesimais de frequências contínuas (uma integral).
As sínteses de funções com série de Fourier real, série de Fourier complexa e transformada de
Fourier estão resumidas na Tabela 5.1.
A transformada de Fourier F(kx) é uma função complexa e podemos, portanto, escrever o espec-
tro de Fourier na forma polar, como o produto do módulo de Fourier pela (exponencial da) fase de
Fourier:
em que
(5.11)
Essa forma é útil, pois nos ajuda a ver que a transformada de Fourier F(kx) define a ‘quantidade’ con-
tribuída por cada função harmônica a f(x) (via |F(kx)|) e o posicionamento relativo dos harmônicos
ao longo do eixo, via o correspondente termo de fase complexa exp(iϕ(kx)). Como veremos na Figura
5.11, a maior parte do que chamamos livremente de ‘informação visual’ em uma transformada de
Fourier está, na verdade, contida no termo de fase.
5.6 Transformada de Fourier inversa e reciprocidade
Um exame das Equações (5.9) e (5.10) mostra que há uma grande similaridade entre a transformada
de Fourier e sua inversa. Na verdade, a definição da transformada de Fourier direta com a forma
negativa ou positiva da função exponencial é uma escolha arbitrária; contudo, por convenção, es-
colhemos a definição normal e a usaremos ao longo de todo o livro. Há, também, certa liberdade
quanto ao fator 2π, que pode ser colocado na transformada direta ou na inversa ou dividido entre
as duas.9 O fator 2π também aparece na transformada de Fourier bidimensional (apresentada na
próxima seção) e, na verdade, é completamente irrelevante no processamento de imagens − esse fator
9Alguns autores definem as transformadas direta e inversa com um fator de normalização (2π)−1/2.
Tabela 5.1 Comparação entre sínteses de funções espaciais por meio de série de Fourier real, série de Fourier
complexa e transformada de Fourier
Série de Fourier real Série de Fourier complexa Transformada de Fourier
Frequências espaciais
Funções de base
Espectro
Coeficientes Coeficientes Função
Solomon 05PDFG.indd 110 21.05.13 13:47:32:10
Transformadas de fourier e processamenTo no domínio da frequência 111
entraapenas como um fator de escala global e, assim, não afeta a estrutura/o conteúdo espacial de
uma imagem. Por essa razão, é comum deixá-lo de lado totalmente.
Como a expansão em série de Fourier de uma onda quadrada, a transformada de Fourier da fun-
ção retangular é de cálculo fácil e bastante ilustrativa. A função retangular 1D é definida como
Substituindo essa expressão diretamente na definição da transformada de Fourier, ela é calculada
como:
em que sinc u 5 sen u/u. Gráficos dessa função são mostrados na Figura 5.4 para três valores da
largura a da função retangular, para uma faixa de frequências espaciais 28π/a kx 8π/a. Obser-
vemos a reciprocidade entre a largura da função espacial e a largura de sua transformada de Fourier
(o fator de escala 2π/a foi omitido para que os gráficos tivessem a mesma altura).
Reparemos que uma diminuição na largura do retângulo no domínio espacial resulta em maior
espalhamento (largura) da transformada de Fourier no domínio da frequência. De modo similar,
um aumento na largura da função no domínio espacial resulta no estreitamento da representação no
domínio da frequência. Este comportamento recíproco é uma característica central da representação
de funções no domínio da frequência.
Exemplos importantes de transformadas de Fourier 1D e propriedades da transformada de Fourier
são dadas nas Tabelas 5.2 e 5.3. Alguns exercícios (resolvidos) são apresentados no site do livro,10 cujo es-
tudo recomendamos como meio de consolidar os conceitos básicos discutidos até aqui e para ganhar
maior entendimento sobre o comportamento básico e propriedades da transformada de Fourier.
5.7 Transformada de Fourier 2D
De modo totalmente análogo ao caso 1D, uma função de duas variáveis espaciais f(x, y) pode ser ex-
pressa como uma superposição ponderada de funções harmônicas 2D.11 O conceito básico é ilustra-
10Ver o site da LTC Editora para este livro.
11Certas funções não possuem, no sentido estrito, transformada de Fourier; mas este é um detalhe matemático que não tem real importância
prática no processamento de imagens, de modo que assumiremos que podemos calcular a transformada de Fourier de qualquer função de
interesse.
Figura 5.4 Transformada de Fourier (TF) da função retangular F(kx) 5 (a/2π){[sen(kxa/2)]/(kxa/2)}.
Solomon 05PDFG.indd 111 21.05.13 13:47:32:10
112 Capítulo 5
do graficamente na Figura 5.5, onde exemplos de funções harmônicas 2D são combinados para sinte-
tizar f(x, y). Matematicamente, a transformada de Fourier reversa ou inversa 2D é definida como:
Tabela 5.2 Transformada de Fourier de algumas funções importantes
Nome da função
Domínio espacial
f(x)
Domínio da frequência F(k)
Impulso (função delta) d(x) l
Constante l d(k)
Gaussiana
Retangular
Triangular
Sinc
Exponencial
Exponencial complexa
Exponencial decrescente
Trem de impulsos
Cosseno
Seno
Degrau unitário
Signum
Sinc2
Atraso linear
Solomon 05PDFG.indd 112 21.05.13 13:47:35:10
Transformadas de fourier e processamenTo no domínio da frequência 113
Tabela 5.3 Algumas propriedades importantes da transformada de Fourier 2D: f(x, y) tem uma transformada
de Fourier F(kx, ky); g(x, y) tem uma transformada de Fourier G(kx, ky)
Propriedade Domínio espacial Domínio da frequência Comentários
Teorema da adição A transformada de Fourier
da soma é igual à soma das
transformadas de Fourier
Teorema da similaridade No domínio da frequência,
a largura da transformada
varia em proporção inversa
à largura da função no
domínio espacial
Teorema da translação A translação de uma função
no espaço corresponde a
multiplicar a transformada
por um puro termo de fase
Teorema da convolução A transformada de uma
convolução é igual ao
produto das transformadas
individuais
Produto separável Se uma função 2D for
separável em duas funções
1D, sua transformada de
Fourier também é separável
Diferenciação O cálculo de derivadas de
uma imagem se torna trivial
com o uso da transformada
de Fourier da imagem
Rotação A rotação de uma função
por θ no plano corresponde
a girar sua transformada de
Fourier por θ
Teorema de Parseval A transformação de Fourier
preserva a ‘energia’ da
imagem
Laplaciano O cálculo do laplaciano de
uma imagem se torna trivial
com o uso da transformada
de Fourier da imagem
Multiplicação O produto de funções
é uma convolução no
domínio de Fourier
(5.12)
na qual a função de ponderação F(kx, ky) é denominada transformada de Fourier 2D e é dada por
Solomon 05PDFG.indd 113 21.05.13 13:47:37:10
114 Capítulo 5
(5.13)
Se for considerada simplesmente como uma integral a ser ‘resolvida’, a transformada de Fourier 2D
pode parecer uma tarefa formidável.12 De fato, o número de funções cuja transformada de Fourier pode
ser calculada de forma analítica é relativamente pequeno e, ademais, tendem a ser funções muito simples
(algumas são listadas na Tabela 5.2). No entanto, ressaltamos duas coisas. Primeira, até mesmo transfor-
madas de Fourier de funções complicadas podem ser calculadas com precisão e rapidez em um computa-
dor. Na verdade, o desenvolvimento e implementação digital da transformada de Fourier em computador
(conhecida como transformada de Fourier rápida (FFT − Fast Fourier Transform)) revolucionou o mundo
do processamento de imagens e, de modo geral, toda a computação científica. Segunda, o real valor da
representação no domínio da frequência reside não apenas na capacidade de calcular tais integrais com-
plexas numericamente, mas, principalmente, no ponto de vista alternativo e complementar que o domínio
da frequência oferece aos processos de formação de imagens e à estrutura de imagens.
Como no caso 1D, há um número relativamente pequeno de funções 2D simples cujas transfor-
madas de Fourier podem ser calculadas analiticamente (e algumas delas são, na verdade, separáveis
no produto de duas funções 1D). Contudo, é interessante explorar alguns exemplos, oferecidos com
soluções no site do livro.13
Existem alguns teoremas que relacionam operações com funções espaciais 2D aos efeitos nas cor-
respondentes transformadas de Fourier, em muito facilitando o trabalho no domínio da frequência
e o retorno ao domínio espacial. Alguns desses teoremas estão listados na Tabela 5.3. Provas formais
desses teoremas são fornecidas no site do livro.
5.8 Entendendo a transformada de Fourier: filtragem
frequência−espaço
No processamento de imagens no domínio espacial, estamos basicamente interessados em como sistemas
de captura de imagens e filtros de diferentes tipos afetam pixels individuais na imagem. No processamento
de imagens no domínio da frequência, consideramos sistemas de captura de imagens e operações de filtra-
gem a partir de uma perspectiva alternativa − como eles afetam as componentes harmônicas que formam a
12Um dos autores confessa livremente que, como estudante de graduação, nunca a entendeu, apesar de encontrá-la em diferentes disciplinas ao
longo do curso.
13Ver o site da LTC Editora para este livro.
Figura 5.5 O significado básico da
transformada de Fourier 2D é que algu
mas combinações de funções de base
harmônicas 2D multiplicadas por fatores
de escala e transladadas (alguns exem
plos são mostrados) podem sintetizar
uma função espacial arbitrária.
Solomon 05PDFG.indd 114 21.05.13 13:47:38:10
Transformadas de fourier e processamenTo no domínio da frequência 115
imagem. A Figura 5.6 ilustra os conceitos básicos relativos à representação frequência−espaço. No domí-
nio espacial, nos referimos às posições de pixel por meio do sistema de coordenadas cartesianas (x, y). Na
representação do domínio da frequência, o valor de cada ponto coordenado no sistema (kx, ky) nos infor-
ma a contribuição que aquela componente de frequência harmônica, exp[i(kxy 1 kyy)], faz à imagem.
A Figura 5.7 ilustra os conceitos básicos relativos à filtragem no domínio da frequência, em que
certas componentes harmônicas são removidas da imagem. O procedimento básico de filtragem
Figura5.6 Relação entre domínios
do espaço e da frequência. O va
lor de um pixel em um ponto (x,
y) no domínio do espaço especifica
a intensidade da imagem naquele
ponto. O valor (complexo) em um
ponto (kx, ky) no domínio da fre
quência especifica a contribuição
da função harmônica exp[i(kxx 1
kyy)] à imagem.
Figura 5.7 Ilustração simples de filtragem no domínio da frequência. A transformada de Fourier (TF) da imagem
original é multiplicada pelos filtros indicados (branco indica pares de frequência que são preservados, e preto,
totalmente removidos). Uma transformada de Fourier inversa nos leva de volta ao domínio espacial e a imagem
filtrada é exibida no lado direito. (O código Matlab para esta figura pode ser obtido no site da LTC Editora.)
Solomon 05PDFG.indd 115 21.05.13 13:47:40:10
116 Capítulo 5
envolve três passos: (i) cálculo da transformada de Fourier; (ii) supressão de certas frequências da
transformada por meio da multiplicação por uma função de filtragem (nesse caso, o filtro é fixado em
zero em certas frequências, e em um nas outras); e (iii) cálculo da transformada de Fourier inversa
para retornar ao domínio espacial. Na Figura 5.7, a imagem e (o módulo de) sua correspondente
transformada de Fourier são exibidas juntamente com imagens que resultam da remoção de grupos
selecionados de frequências harmônicas da entrada. Essa remoção é feita através da multiplicação da
imagem da função de filtragem (onde é branco, 1; onde é preto, 0) pela transformada de Fourier da
imagem. Componentes de crescente frequência espacial (de baixas para altas) são, então, transmiti-
das à medida que aumentamos o tamanho da função de filtragem centrada na imagem de Fourier.
A Figura 5.8 mostra um exemplo prático de filtragem no domínio da frequência feita por um
dos autores. O Infrared Astronomical Satellite − IRAS [Satélite Astronômico Infravermelho] foi um
projeto conjunto dos EUA, Grã-Bretanha e Holanda.14 A missão IRAS realizou um levantamento
do céu sensível a comprimentos de onda de 12, 25, 60 e 100 µm. Como resultado desse levanta-
mento, foram recebidas imagens que apresentavam artefatos de listras (ruído) − uma consequência
da dificuldade em alinhar e registrar adequadamente as listras capturadas à medida que o detector
14Ver http://irsa.ipac.caltech.edu/IRASdoc/iras.html.
Figura 5.8 Aplicação de filtragem no domínio da frequência. Procedendo da esquerda para a direita e de cima
para baixo, temos: (a) imagem original com visível efeito de listras (striping effect); (b) módulo da transforma
da de Fourier da imagem (mostrado em escala logarítmica); (c) módulo da transformada de Fourier da imagem
após a filtragem (mostrado em escala logarítmica); (d) imagem filtrada resultante da recombinação com a fase
original; (e) diferença entre imagens original e filtrada. (Veja o Encarte em cores.)
Solomon 05PDFG.indd 116 21.05.13 13:47:41:10
Transformadas de fourier e processamenTo no domínio da frequência 117
efetuava uma varredura 1D do céu. As listras visíveis na imagem também podem ser vistas clara-
mente na transformada de Fourier da imagem, onde aparecem como grupos discretos de frequên-
cias espaciais amplificadas em relação ao fundo. Na Figura 5.8, mostramos o valor absoluto da
transformada de Fourier em escala log para facilitar a visualização. Se conseguíssemos eliminar
estas frequências ‘espúrias’ no espaço de frequência, conseguiríamos remover as listras da imagem
original.
Uma opção consiste em simplesmente igualar a zero todas as componentes de frequências iden-
tificadas como espúrias, mas isto não é, de fato, satisfatório. Esperamos que certa quantidade de
frequên cias espúrias estejam naturalmente presentes na cena e, portanto, essa tática reduziria o es-
pectro de potência total da imagem.
A abordagem adotada na filtragem foi a seguinte:
(1) Calcular a transformada de Fourier e separá-la em módulo e fase.
(2) Identificar as ‘frequências espúrias’. Embora, em princípio, isso possa ser feito manualmente em uma
dada imagem, buscamos uma abordagem automática que seja adequada a outras imagens igual-
mente afetadas por listras. Evitaremos discutir os detalhes aqui, mas a abordagem adotada usou a
transformada de Radon para identificar as características direcionais das frequências espúrias.
(3) Substituir as frequências espúrias no módulo da transformada de Fourier por valores que sejam
estatisticamente razoáveis, tendo em vista os valores vizinhos.
(4) Recombinar o módulo filtrado com a fase original e calcular uma transformada de Fourier
inversa.
5.9 Sistemas lineares e transformadas de Fourier
Segundo a perspectiva do domínio da frequência, a ação de um sistema linear de captura de imagens
sobre uma entrada pode ser resumida com facilidade:
Qualquer imagem de entrada pode ser decomposta em uma soma ponderada de funções harmônicas.
Em geral, a ação de um sistema linear preservará ou alterará a magnitude e a fase dos harmônicos de
entrada.
Em termos genéricos, podemos ver um sistema linear de processamento de imagens como algo
que atua sobre as componentes harmônicas de entrada da imagem, e podemos avaliar a qualidade
do sistema por sua capacidade em transmitir com (alguma) fidelidade os harmônicos de entrada à
saída. Esta ação básica de um sistema linear no domínio da frequência é ilustrada na Figura 5.9. Uma
medida para caracterizar o desempenho de um sistema linear e invariante sob translação de pro-
cessamento de imagens é a função de transferência óptica (FTO).* Para um completo entendimento
deste assunto, devemos, primeiro, considerar o teorema da convolução.
5.10 Teorema da convolução
Como mostramos anteriormente, a importância da integral de convolução advém do fato de que
muitas situações que envolvem a efetuação de medidas físicas com um instrumento imperfeito po-
*É comum o uso da sigla derivada do termo correspondente em inglês: OTF − Optical Transfer Function. (N.T.)
Solomon 05PDFG.indd 117 21.05.13 13:47:42:10
118 Capítulo 5
dem ser descritas com precisão pela convolução. O processo de convolução (uma integral compli-
cada no domínio espacial) tem uma forma particularmente simples e conveniente no domínio da
frequência, dada pelo famoso teorema da convolução − talvez o teorema mais importante no campo
de processamento de imagens.
Consideremos duas funções 2D f(x, y) e h(x, y) com transformadas de Fourier F(kx, ky) e H(kx, ky),
respectivamente. Denotando por F a operação de tomar uma transformada de Fourier 2D, a primeira
forma do teorema da convolução afirma que:
(5.14)
A transformada de Fourier da convolução de duas funções é igual ao produto das transformadas individuais.
Assim, o processamento da convolução de duas funções no domínio espacial pode ser feito de
modo equivalente pela simples multiplicação de suas transformadas no domínio da frequência. Essa
primeira forma do teorema da convolução estabelece a base essencial de poderosos métodos de fil-
tragem no domínio da frequência. Em vez de tentarmos operar diretamente sobre a imagem com o
escolhido filtro no domínio espacial (por exemplo, detecção de bordas ou cálculo de médias), po-
demos adotar uma abordagem alternativa para resolver o problema e considerar as mudanças que
gostaríamos de efetuar no conteúdo de frequências espaciais da imagem. Muitas vezes, o projeto de
filtros se torna bem mais fácil no domínio da frequência, e o ponto de vista alternativo de considerar
uma imagem em termos do seu conteúdo de frequências espaciais permite a obtenção de uma solu-
ção melhor e mais sutil.
Figura 5.9 A ação básica de um sistema linear pode ser entendida pela qualidade com que transmite cada
uma das componentes harmônicas que formam a entrada. Nesta ilustração, as frequências mais baixas são
reproduzidas com fidelidade, enquanto as frequências mais altas são suprimidas.
Solomon 05PDFG.indd 118 21.05.13 13:47:43:10
Transformadas de fourier e processamenTo no domínio da frequência 119
Por questão de completeza, ressaltamosque há uma segunda forma para o teorema da convolu-
ção, que afirma que
(5.15)
A transformada de Fourier do produto de duas funções é igual à convolução das transformadas individuais.
Esta forma não encontra uso muito difundido em processamento de imagens, pois não descreve
o processo básico de formação de imagens. No entanto, essa forma tem uso considerável nos campos
de óptica de Fourier e processamento óptico de imagens, quando, em geral, o interesse maior diz res-
peito ao efeito de dispositivos (grades de difração, aberturas etc.) que agem de modo multiplicativo
sobre a luz incidente.
O teorema da convolução15 está tanto no cerne de técnicas de realce de imagens no domínio da
frequência quanto na importante questão de restauração de imagens (tema que estudaremos em
detalhes no Capítulo 6).
5.11 Função de transferência óptica
Consideremos, por um momento, o cenário de processamento de imagem em que f(x, y) correspon-
de à distribuição de entrada, h(x, y) corresponde à PSF do sistema e g(x, y) é a imagem dada pela
convolução
(5.16)
Tomando a transformada de Fourier dos dois lados, podemos usar a primeira forma do teorema da
convolução e escrever o lado direito como
(5.17)
Assim, o espectro de Fourier da imagem de saída, G(kx, ky), é dado pelo produto do espectro de
Fourier de entrada, F(kx, ky), pela função de filtragem H(kx, ky). H(kx, ky) é chamada de FTO. A FTO
é o equivalente da PSF no domínio da frequência. A FTO tem esse nome por determinar como cada
dupla de frequências espaciais (kx, ky) é transferida da entrada para a saída. Esta interpretação sim-
ples faz da FTO a mais largamente empregada medida de qualidade ou fidelidade de um sistema de
captura de imagens linear e invariante sob translação.
(5.18)
A propriedade multiplicativa da FTO sobre o espectro de entrada é particularmente conveniente
sempre que consideramos sistemas complexos de captura de imagens que consistem em múltiplos
elementos de captura (por exemplo, combinações de lentes e aberturas em uma câmera ou telescó-
pio). Se o k-ésimo elemento for caracterizado por sua PSF hk(x, y), a imagem global será dada por
15A prova do teorema pode ser encontrada no site da LTC Editora para este livro.
Solomon 05PDFG.indd 119 21.05.13 13:47:43:10
120 Capítulo 5
uma sequência de convoluções da entrada com as PSFs. Com o emprego da transformada de Fourier
e do teorema da convolução, isto pode ser expresso no domínio da frequência pela multiplicação
sequencial das FTOs − um cálculo muito mais simples:
(5.19)
Uma discussão detalhada de FTOs e de sua determinação está além de nosso interesse imediato,
mas ressaltamos dois pontos importantes:
(1) A FTO é normalizada de modo a ter máxima transmissão unitária. Assim, um sistema ideal de
captura de imagens é caracterizado por uma FTO dada por H(kx, ky) 5 1 para todas as frequên-
cias espaciais.
(2) Assim como a transformada de Fourier da PSF, a FTO é, em geral, uma função complexa:
O quadrado do módulo da FTO é uma função real conhecida como função de transferência de mo-
dulação (FTM),* e dá a magnitude de transmissão das frequências espaciais. No entanto, o termo de
fase ϕ( kx, ky) é que controla o posicionamento dos harmônicos no plano da imagem. Embora a FTM
seja uma medida comum e útil da qualidade de imagem, a função de transferência de fase ϕ( kx, ky)
também é crucial para uma representação completa.
A Figura 5.10 (gerada com o código Matlab no Exemplo 5.1) mostra, no lado esquerdo, a ve-
lha imagem de teste da BBC.16 A imagem de teste tem várias características, que foram elaboradas
para permitir a avaliação da qualidade da imagem. Por exemplo, são visíveis bordas fortes, padrões
senoidais de frequências baixas e altas, regiões com intensidades ligeiramente diferentes. Tais carac-
Exemplo 5.1
Código Matlab O que está sendo feito?
A5imread('BBC_grey_testcard.png'); %Lê imagem de teste
FA5fft2(A); FA5fftshift(FA); %Calcula a FFT e a centraliza
PSF5fspecial('gaussian',size(A),6); %Define a PSF
OTF5fft2(PSF); OTF5fftshift(OTF); %Calcula a correspondente FTO
Afilt5ifft2(OTF.*FA); %Calcula a imagem filtrada
Afilt5fftshift(Afilt);
subplot(1,4,1);imshow(A,[]); %Exibe os resultados
colormap(gray);
subplot(1,4,2); imagesc(log(11(PSF)));
axis image; axis off;
subplot(1,4,3); imagesc(log(11abs
(OTF))); axis image; axis off;
subplot(1,4,4); imagesc(abs(Afilt)); axis
image; axis off;
*É comum o uso da sigla derivada do termo correspondente em inglês: MTF − Modulation Transfer Function. (N.T.)
16A imagem de teste era exibida pela BBC quando o usuário ligava o aparelho de TV e a programação diária ainda não tinha sido iniciada. Isso
era padrão na época em que as estações de televisão não começavam as transmissões antes das 11 horas.
continua
Solomon 05PDFG.indd 120 21.05.13 13:47:44:10
Transformadas de fourier e processamenTo no domínio da frequência 121
Figura 5.10 Efeito da FTO na qualidade da imagem. Coluna 1: imagem original; coluna 2: PSF do sistema;
coluna 3: FTM do sistema; coluna 4: imagens resultantes após transferência pela FTO do sistema. A imagem
no canto direito inferior tem a mesma FTM que a do canto direito superior, mas a fase foi alterada e isto tem
efeito significativo sobre a qualidade da imagem.
PSF5fspecial('gaussian',size(A),6); %Define a PSF
OTF5fft2(PSF); OTF5fftshift(OTF); %Calcula a correspondente FTO
rlow5(size(A,1)./2)-3; rhigh5 %Define a faixa a ser alterada
(size(A,1)./2)13;
clow5(size(A,2)./2)-3; chigh5
(size(A,2)./2)13;
Fphase5angle(OTF); %Extrai a fase de Fourier
Fphase(rlow:rhigh,clow:chigh)5 %Adiciona componente aleatória à fase selecionada
Fphase(rlow:rhigh,clow:chigh)1
0.*pi.*rand;
OTF5abs(OTF).*exp(i.*Fphase); %Recombina fase e módulo
Afilt5ifft2(OTF.*FA); %Calcula a imagem filtrada
Afilt5fftshift(Afilt);
psfnew5abs(fftshift((otf2psf(OTF)))); %Calcula a correspondente PSF
subplot(1,4,2); imagesc(log(11psfnew));
axis image; axis off; colormap(gray);
subplot(1,4,3); imagesc(log(11
abs(OTF))); axis image; axis off;
subplot(1,4,4); imagesc(abs(Afilt));
axis image; axis off;
PSF5fspecial('motion',30,30); %Define a PSF como motion
OTF5psf2otf(PSF,size(A)); %Calcula a correspondente FTO
OTF5fftshift(OTF);
Afilt5ifft2(OTF.*FA); %Calcula a imagem filtrada
subplot(1,4,1); imshow(A,[]); % Exibe os resultados
subplot(1,4,2); imshow(log(11PSF),[]);
subplot(1,4,3); imshow(log(11abs
(OTF)),[])
subplot(1,4,4); imshow(abs(Afilt),[]);
continuação
Solomon 05PDFG.indd 121 21.05.13 13:47:45:10
122 Capítulo 5
terísticas permitem que medidas sistemáticas sejam feitas na FTO e que o contraste da imagem seja
avaliado. Na Figura 5.10, a linha superior mostra como a imagem de teste é afetada pela transmissão
por um sistema cuja FTO é bem aproximada por uma função gaussiana 2D. A PSF (igualmente gaus-
siana) correspondente à FTO também é mostrada. Reparemos que o efeito global sobre a imagem
é uma desfocalização isotrópica, e a maior parte da estrutura fina na imagem original é perdida. A
linha intermediária da Figura 5.10 mostra a FTO correspondente a um movimento da fonte ou de-
tector durante a aquisição da imagem. A correspondente PSF, uma reta longa e fina, é mostrada (em
escala mais detalhada), indicando um movimento de aproximadamente 30 pixels em um ângulo de
30°. Reparemos que a FTM se estende às altas frequências espaciais na direção ortogonal ao movi-
mento e cai rapidamente na direção do movimento; isso comprova o que havíamos discutido a res-
peito do comportamento recíproco nos domínios do espaço e da frequência espacial: sinais curtos no
domínio espacial se estendem no domínio da frequência e vice-versa. A linha inferior da Figura 5.10
mostra o efeito de uma FTO cuja FTM é idêntica à da primeira linha, mas um termo de fase aleatório
foi adicionado a algumas das componentes de baixa frequência da imagem. O efeito drástico que isso
tem sobre a qualidade da imagem fica evidente.
5.12 Transformadas de Fourier digitais: transformada de Fourier
rápida discreta(acesso livre);
Ilustrações da obra em formato de apresentação (acesso restrito a JJ
docentes);
Notas arquivos em formato .pdf contendo material de consolidação JJ
de conceitos discutidos no livro-texto (acesso livre);
Projects arquivos em inglês, em formato .pdf, .jpg e .m contendo JJ
conteúdo de projetos a serem desenvolvidos com base nos tópicos do
livro-texto (acesso livre);
Tutorial de Matlab arquivos em formato .pdf contendo fundamentos JJ
do programa (acesso livre).
O acesso ao material suplementar é gratuito, bastando que o leitor se
cadastre em: http://gen-io.grupogen.com.br
Solomon CadZeroPDFG.indd 14 11.06.13 16:06:37:10
Fundamentos de Processamento
Digital de Imagens
Solomon CadZeroPDFG.indd 15 11.06.13 16:06:37:10
Solomon CadZeroPDFG.indd 16 11.06.13 16:06:37:10
1
Representação
Neste capítulo, discutimos a representação de imagens, apresentamos notação e informação básicas
relativas a imagens, assim como os tipos e formatos comuns de imagens. Encerramos com uma seção
prática, na qual apresentamos facilidades de Matlab para leitura, escrita, exame, conversão e exibição
de imagens de diferentes tipos e formatos.
1.1 O que é uma imagem?
Uma imagem digital pode ser considerada como uma representação discreta de dados que proces-
sam informação espacial (layout) e de intensidade (cor). Como veremos no Capítulo 5, uma imagem
também pode ser considerada como um sinal multidimensional.
1.1.1 Layout de uma imagem
Uma imagem bidimensional (2D) discreta e digital I(m, n) representa a resposta de algum sensor (ou
simplesmente um valor de interesse) em uma série de posições fixas (m 5 1, 2, ..., M; n 5 1, 2, ..., N)
em coordenadas cartesianas bidimensionais, e é derivada de um sinal espacial contínuo bidimen-
sional I(x, y) por meio de um processo de amostragem muitas vezes referido como discretização. A
discretização ocorre naturalmente em certos tipos de sensores de imagem (como câmeras CCD), e
corresponde a efetuar uma média local do sinal contínuo em uma pequena região (em geral, quadra-
da) no domínio de recepção.
Os índices m e n designam, respectivamente, as linhas e colunas da imagem. Os elementos in-
dividuais da imagem ou pixels* são referidos por seus índices 2D (m, n). Seguindo a convenção de
Matlab, I(m, n) denota a resposta do pixel localizado na m-ésima linha e n-ésima coluna, contadas
a partir do canto superior esquerdo da imagem (Figura 1.1). Em outros sistemas de imagem, uma
convenção coluna-linha pode ser usada e a origem da imagem pode ser tomada em outro ponto.
Embora as imagens consideradas neste livro sejam discretas, do ponto de vista teórico, muitas
vezes é mais conveniente tratar a imagem como um sinal espacial contínuo I(x, y). Em particular, isto
pode permitir que façamos uso mais natural de poderosas técnicas dos cálculos integral e diferencial
para entender as propriedades da imagem, manipulá-la e processá-la de modo efetivo. A análise
matemática de imagens discretas leva, em geral, a uma formulação algébrica linear que, em alguns
casos, pode ser mais vantajosa.
Na maioria das imagens, os valores de pixels correspondem a alguma resposta física no espaço
real 2D (por exemplo, a intensidade óptica recebida no plano de imagem de uma câmera ou a in-
tensidade de ultrassom em um transceptor). No entanto, também podemos considerar imagens em
*O termo pixel á uma aglutinação do termo em inglês picture element [elemento de imagem] e designa a menor unidade de uma imagem digital.
O termo pel, outra aglutinação das mesmas palavras, também é usado, embora com menos frequência. (N.T.)
Solomon 01PDFG.indd 1 14.05.13 19:16:37:10
2 Capítulo 1
espaços abstratos, onde as coordenadas não correspondem necessariamente ao espaço físico, e pode-
mos estender a noção de imagem a três ou mais dimensões. Por exemplo, algumas vezes, aplicações
de imagens médicas consideram a total reconstrução tridimensional (3D) de órgãos internos e uma
sequência temporal destas imagens (como a de um coração em funcionamento) podem ser tratadas
(se assim desejarmos) como uma imagem de quatro dimensões (4D), na qual três coordenadas são
espaciais e uma corresponde ao tempo. Quando consideramos imagens 3D, em geral, tratamos de
volumes espaciais representados pela imagem. Neste caso, os pixels 3D são denominados voxels (pi-
xels volumétricos) e representam a menor localização espacial no volume 3D, em contraste com a
imagem 2D convencional.
Ao longo de todo o livro, em geral, consideraremos imagens digitais 2D; no entanto, a maior parte
do material apresentado também se aplica a imagens de maior número de dimensões.
1.1.2 Cor de imagens
Uma imagem contém um ou mais canais de cor que definem a intensidade ou cor em uma dada
localização de pixel I(m, n).
No caso mais simples, cada posição de pixel contém somente um valor numérico representando
o nível de sinal naquele ponto na imagem. A conversão entre este conjunto de números para uma
imagem real (visualizada) é feita através de um mapa de cor. Um mapa de cor aloca um tom específi-
co de cor a cada nível numérico na imagem para a produção de uma representação visual dos dados.
O mapa de cor mais comum é a escala de cinza, que aloca todos os tons de cinza, do preto (zero) ao
branco (máximo), segundo o nível de sinal. A escala de cinza é particularmente adequada a imagens
de intensidade, ou seja, imagens que expressam apenas a intensidade do sinal como um valor único
em cada ponto na região.
Em certos casos, pode ser melhor exibir imagens de intensidade por meio de um mapa de falsa
cor. Uma das principais razões para o uso de um mapa de falsa cor reside no fato de que o sistema
visual humano é sensível a aproximadamente 40 tons de cinza no intervalo entre preto e branco,
enquanto a sensibilidade a cores é muito maior. A falsa cor também serve para acentuar ou delinear
certas características ou estruturas, facilitando sua identificação por um observador humano. Essa
abordagem é usada com frequência em imagens médicas e astronômicas.
Figura 1.1 Espaço bidimensional de coordenadas cartesianas de uma imagem digital M × N.
Solomon 01PDFG.indd 2 14.05.13 19:16:38:10
RepResentação 3
A Figura 1.2 mostra uma imagem de intensidade astronômica exibida tanto em escala de cinza
quanto em um particular mapa de falsa cor particular. Neste exemplo, o mapa de cor jet (como
definido em Matlab) foi usado para realçar a estrutura e os detalhes da imagem ao observador hu-
mano usando uma escala linear de cores variando do azul escuro (valores de baixa intensidade) ao
vermelho escuro (valores de alta intensidade). A definição de mapas de cores, ou seja, a alocação de
cores a valores numéricos, pode ser feita de qualquer forma que o usuário considere relevante ou útil.
Embora o mapeamento entre o valor numérico de intensidade e a cor ou o tom de cinza seja tipica-
mente linear, há situações em que um mapeamento não linear é mais apropriado. Mapeamentos não
lineares são discutidos no Capítulo 4.
Além de imagens em escala de cinza, nas quais temos um único valor numérico associado a cada
posição de pixel, também temos imagens em cores reais, em que o completo espectro de cores pode
ser representado como um vetor de três componentes, em geral, as componentes (R, G, B)* em cada
posição de pixel. Neste caso, a cor é representada como uma combinação linear das cores básicas ou
valores, e a imagem pode ser considerada como consistindo em três planos 2D. Outras representa-
ções de cores também são possíveis e largamente empregadas, como o mapa de cor (H, S, V) (Hue
ou matiz, tonalidade; Saturation ou saturação; Value ou valor, intensidade). Nesta representação, a
intensidade V da cor é desacoplada da informação cromática, contida nas componentes H e S (ver a
Seção 1.4.2).
1.2 Resolução e quantização
O tamanho da grade (ou malha) de pixels 2D juntamente com o tamanho dos dados armazenados
para cada pixel determinam a resolução espacial e a quantização de cor da imagem.
OEm nossa discussão, talvez tenhamos sido um pouco insinceros por não termos tocado em uma im-
portante questão computacional. Comentamos que transformadas de Fourier podem ser calculadas
com rapidez e eficiência em computadores digitais graças ao desenvolvimento de uma transformada
de Fourier que opera sobre dados discretos ou digitais − a transformada de Fourier rápida (FFT) dis-
creta − e nada mais dissemos. Assim, nos exemplos apresentados até aqui, assumimos implicitamen-
te que a transformada de Fourier de uma imagem (que tem um número finito de pixels e, portanto,
extensão espacial finita) também tem extensão finita. Ademais, fizemos uso implícito do fato de que
uma imagem digital N 3 N no domínio espacial será transformada em uma correspondente repre-
sentação N 3 N no domínio da frequência. Isto é verdade, mas certamente não é óbvio. Vimos que a
transformada de Fourier contínua de uma função de extensão espacial finita (por exemplo, a função
delta ou retangular) em geral tem extensão infinita no domínio da frequência. Fica claro, então, que
há questões a serem resolvidas. Neste capítulo, não tentaremos oferecer uma discussão completa da
FFT, que está além de nosso interesse imediato e existem excelentes textos sobre o tema.17 Em ter-
mos simples, podemos dizer que a FFT discreta é apenas uma adaptação da transformada integral
estudada, cujas propriedades essenciais são preservadas ao tratarmos com dados discretos (ou seja,
digitais). A seção a seguir pode, em uma primeira leitura, ser considerada opcional, mas a incluímos
para assegurar que o leitor esteja ciente de alguns aspectos práticos da FFT discreta.
5.13 Dados amostrados: transformada de Fourier discreta
Imagens digitais são, por definição, discretas. Uma imagem digital que consista em (tipicamente) um
número grande e finito de pixels deve, por definição, ter suporte finito. Isso sugere imediatamente um
problema em potencial no uso de transformadas de Fourier no processamento de imagens digitais:
como podemos representar uma transformada de Fourier, que tem suporte infinito, em um conjunto
finito de pixels discretos? A resposta é que não podemos; mas, felizmente, há uma alternativa. A trans-
formada de Fourier discreta (DFT − Discrete Fourier Transform) − e sua inversa − calcula, para um
17Por exemplo, The Fast Fourier Transform, de E. Oran Brigham, e Fourier Analysis and Imaging, de Ron Bracewell.
Solomon 05PDFG.indd 122 21.05.13 13:47:45:10
Transformadas de fourier e processamenTo no domínio da frequência 123
sinal discretizado de suporte finito, uma representação no domínio da frequência que tem suporte
finito.
Os teoremas e conceitos associados ao espaço de frequência explorados no caso da trans-
formada de Fourier contínua são aplicáveis diretamente à DFT. Contudo, há uma questão im-
portante relativa ao uso da DFT com dados discretos, da qual devemos estar cientes.18 Isto diz
respeito à centralização da DFT, ou seja, a posição central da matriz de Fourier corresponde à
dupla de frequências espaciais (0, 0). Nas seções seguintes, apresentamos uma breve descrição
da DFT.
Consideremos uma função f(x, y) que desejamos discretizar e representar por uma matriz de
M 3 N valores amostrados. Em geral, as amostras são tomadas a intervalos arbitrários ∆x e ∆y,
uniformemente espaçados ao longo dos eixos x e y, respectivamente. Empregaremos a notação f(x,
y) para a representação discreta da função, ficando implícito que, na verdade, ela corresponde às
amostras tomadas nas coordenadas x0 1 x∆x e y0 1 y∆y:
(5.20)
em que x0 e y0 são os pontos de partida escolhidos para a tomada de amostras e os índices x e y assu-
mem valores inteiros x 5 0, 1, 2, ..., M − 1 e y 5 0, 1, 2, ..., N − 1, respectivamente.
A DFT (direta) 2D da matriz f(x, y) M 3 N é dada pela expressão
(5.21)
Notemos que
• a DFT também tem dimensão M 3 N;
• os índices das frequências espaciais também assumem valores inteiros u 5 0, 1, 2, ..., M − 1 e v 5
0, 1, 2, ..., N − 1.
A transformada discreta F(u, v) corresponde, na verdade, às duplas de frequências espaciais (u∆u,
v∆v), ou seja, F(u, v) 5∆ F(u∆u, v∆v), onde os intervalos de amostragem no domínio da frequência
(u∆u, v∆v) se relacionam aos intervalos de amostragem no domínio espacial por
(5.22)
A DFT inversa (DFT reversa) é definida de modo similar:
(5.23)
Reparemos que a única diferença entre as transformadas direta e inversa está no sinal da expo-
nencial. É possível mostrar que as DFTs direta e inversa são inversas exatas uma da outra. As
Equações (5.21) e (5.23) representam, então, uma relação exata de transformação que mantém
suporte finito nos domínios do espaço e da frequência, como necessário. A Figura 5.11 ilustra
graficamente as relações básicas de amostragem entre uma imagem digital 2D representada por
M 3 N pixels e sua DFT.
18É fácil encontrar dificuldade com esta questão ao usar rotinas computacionais para FFT, incluindo as funções fft, fft2 e fftn de Matlab.
Solomon 05PDFG.indd 123 21.05.13 13:47:46:10
124 Capítulo 5
5.14 Transformada de Fourier discreta centrada
A definição da DFT na Equação (5.21) e o diagrama na Figura 5.11 indicam que as coordenadas de
frequência espacial se iniciam na origem, no canto superior esquerdo da matriz, e aumentam à me-
dida que nos deslocamos para a direita e para baixo. É uma prática comum centrar a DFT deslocando
a origem para o centro da matriz.
Por clareza, repetimos a definição da DFT de uma matriz discreta 2D f(x, y) dada anteriormente:
(5.24)
Agora, deslocamos as coordenadas de frequência a novos valores u′ 5 u − (M/2), v′ 5 v − (N/2), de
modo que (u′, v′) 5 (0, 0) seja o centro da matriz. A transformada de Fourier centrada F(u′, v′) é
definida como
Fatorando os termos exponenciais que independem de u e v, e usando eiπ 5 −1, temos
(5.25)
Figura 5.11 A imagem f(x, y) discretizada por amostras e sua DFT F(u, v) têm o mesmo número de pixels. A
relação entre os intervalos de amostragem nos dois domínios é indicado na figura.
Solomon 05PDFG.indd 124 21.05.13 13:47:48:10
Transformadas de fourier e processamenTo no domínio da frequência 125
que, por definição, é a DFT do produto (−1)x1yf(x, y). Assim, temos uma forma simples para obter
uma transformada de Fourier centrada:
DFT centrada: método 1
Se f(x, y) for uma matriz M 3 N, sua DFT centrada é dada pela DFT de (21)x1yf(x, y):
(5.26)
em que FT é uma representação simbólica da operação DFT.
No entanto, em vez de pré-multiplicar nossa função pelo fator (−1)x1y, também podemos obter a
DFT centrada de uma forma ‘retrospectiva’. Assumamos que a DFT F(u, v) de f(x, y) tenha sido cal-
culada segundo a definição padrão. É possível mostrar que a DFT centrada é dada pela troca diagonal
dos quadrantes da DFT (Exemplo 5.2, Figura 5.12).
DFT centrada: método 2
Se f(x, y) for uma matriz M × N com DFT F(u, v), sua DFT centrada é obtida pelas trocas do primeiro
quadrante de F(u, v) pelo terceiro e do segundo pelo quarto.
Figura 5.12 A DFT centrada (à direita) pode ser calculada da DFT não centrada (à esquerda) dividindo a matriz
em quatro quadrantes, por meio de duas retas que se cruzam no centro, e trocando os quadrantes diagonalmen
te. Usando os rótulos indicados, trocamos o quadrante 1 pelo quadrante 3, e o quadrante 2 pelo quadrante 4.
Solomon 05PDFG.indd 125 21.05.13 13:47:49:10
126 Capítulo 5
Por que centrar a DFT? A resposta é que não temos de fazer isso, mas há boas razões para fazê-
lo. Primeira, o deslocamento da origem para o centro torna a faixa de frequências discretas (−M/2
→ M/2; −N/2 → N/2) mais parecida com a do espaço contínuo, onde temos iguais distribuições de
componentes de frequências negativas e positivas (−∞ ≤ kx ≤ ∞; −∞ ≤ ky ≤ ∞). Segunda, a construção
de filtros no domínio da frequência para a supressão ou realce de grupos de frequências espaciais é,
em geral, facilitada com o uso de um sistema de coordenadas centrado.
Exemplos e exercícios adicionais estão disponíveis nosite da LTC Editora.
Exemplo 5.2
Código Matlab O que está sendo feito?
A5imread('cameraman.tif '); %Lê imagem
FT5fft2(A);FT_centred5fftshift(FT); %Calcula TF e obtém versão centrada
subplot(2,3,1), imshow(A); %Exibe a imagem
subplot(2,3,2), imshow(log(11 %Exibe o módulo da TF (escala log)
abs(FT)),[]);
subplot(2,3,3), imshow(log(11 %Exibe o módulo da TF centrada (escala log)
abs(FT_centred)),[]);
Im15abs(ifft2(FT)); subplot(2,3,5), %Calcula FFT inversa e exibe resultado
imshow(Im1,[]);
Im25abs(ifft2(FT_centred)); %Calcula FFT inversa e exibe resultado
subplot(2,3,6), imshow(Im1,[]);
figure;
[xd,yd]5size(A);x5-xd./2:xd./2-1;
y5-yd./2:yd./2-1;
[X,Y]5meshgrid(x,y); sigma532;
arg5(X.^2þY.^2)./sigma.^2; %Constrói filtro no domínio da frequência
frqfilt5exp(-arg);
imfilt15abs(ifft2(frqfilt.*FT)); %Filtro centrado e espectro não centrado
imfilt25abs(ifft2(frqfilt.*FT_centred)); %filtro de imagem centrado em espectro centrado
subplot(1,3,1), imshow(frqfilt,[]); %Exibe resultados
subplot(1,3,2), imshow(imfilt1,[]);
subplot(1,3,3), imshow(imfilt2,[]);
Comentários
Funções de Matlab: fft2, ifft2, fftshift
Este exemplo ilustra o papel de fftshift, que centra a transformada de Fourier, de modo que a dupla
de frequências espaciais nulas ocorra no centro da matriz.
Solomon 05PDFG.indd 126 21.05.13 13:47:50:10
6
Restauração de imagens
Com base nas considerações sobre o domínio de Fourier (da frequência) feitas em capítulos anterio-
res, prosseguimos para explorar o uso prático desses métodos no campo de restauração de imagens.
6.1 Modelo para a formação de imagens
A restauração de imagens é baseada na tentativa de melhorar a qualidade de uma imagem pelo
conhecimento dos processos físicos que levaram à sua formação. Como discutido no Capítulo 5,
podemos considerar a formação de uma imagem como um processo que transforma uma distri-
buição de entrada em uma distribuição de saída.1 A distribuição de entrada representa o ideal, ou
seja, a imagem ‘perfeita’, à qual não temos acesso direto e que desejamos recuperar ou, pelo menos,
aproximar por meio de um tratamento adequado da distribuição de saída imperfeita ou corrompida.
Recordemos que, em sistemas de captura de imagens 2D, a relação entre a distribuição de entrada
f(x′, y′) e a distribuição de saída medida g(x, y) é representada por uma integral de superposição
linear. No caso de sistemas lineares e invariantes sob translação (LIT), a integral assume a forma de
uma convolução:
(6.1)
em que ∗∗ denota a convolução 2D. Na Equação (6.1), a grandeza h(x − x′, y − y′) é a Função de Es-
palhamento de Ponto (PSF) ou resposta ao impulso e n(x, y) é um termo de ruído aditivo. Esses dois
fatores são responsáveis pela distribuição de saída imperfeita obtida.
A tarefa de restauração da imagem é (pelo menos em princípio) simples:
Estimar a distribuição de entrada f(x9, y9) a partir da saída medida g(x, y) e qualquer conhecimento que
possamos ter da PSF h(x − x9, y − y9) e do ruído n(x, y).
A recuperação da distribuição de entrada f(x′, y′) a partir da Equação (6.1) é conhecida como
deconvolução. A restauração de imagens se tornou um fascinante e complexo campo de pesquisa.
A simples observação de que qualquer abordagem à restauração de imagens será, afinal de contas,
limitada por nosso conhecimento explícito ou implícito da PSF e do processo de ruído é útil para o esta-
belecimento de bases firmes desde o início.
1Também referidas como objeto e imagem, respectivamente.
Solomon 06PDFG.indd 127 5/24/13 6:22:16 PM
128 Capítulo 6
A Equação (6.1) não é o único modelo para descrever a formação de imagens − algumas situações
requerem um modelo mais complexo − mas, certamente, é o de maior importância na prática. Algumas
situações de captura de imagens devem ser descritas por modelos mais complexos, como modelos espa-
cialmente variantes ou não lineares. Contudo, tais situações são relativamente raras e, em todo caso, seu
entendimento pode ser facilitado por meio do estudo de abordagens de restauração com o modelo LIT.
Assim, a Equação (6.1) formará a base de nossa discussão sobre restauração de imagens.
6.2 Natureza da função de espalhamento de ponto e do ruído
Dissemos que a qualidade da restauração de imagens será limitada por nosso conhecimento da PSF e do
ruído. Quais, então, são as naturezas dessas duas entidades? Embora importantes exceções existam na
prática,2 a PSF do sistema de captura de imagem é, em geral, uma grandeza fixa ou determinística, deter-
minada pelo hardware físico que constitui o sistema completo de captura de imagem e, portanto, pode ser
considerada invariante no tempo. Por exemplo, em um simples sistema óptico de captura de imagens, a
PSF global é determinada pela natureza física e formato das lentes; em um sistema de captura de imagens
médicas, como a câmera de Anger (que detecta raios gama emitidos pelo corpo do paciente), a PSF é de-
terminada por uma combinação de um colimador mecânico com um sistema cintilador-fotomultiplica-
dor, que possibilita a detecção da origem de um fóton de raio gama emitido com uma precisão limitada.
Assim, dadas certas limitações físicas relativas à natureza do fluxo detectado pelo sistema de cap-
tura de imagem (por exemplo, fluxo óptico, infravermelho, de sonar, etc.), a PSF geralmente é algo
sobre o que, em princípio e inicialmente, temos algum controle, mas que se torna fixo depois que o
sistema tenha sido projetado e construído. Justamente por ser o resultado de processos de projeto e
engenharia, a PSF é algo que, em geral, esperamos conhecer, e ajudará na solução do problema de
restauração de imagens.
O termo de ruído na Equação (6.1), por sua vez, geralmente é de natureza estocástica e produz
uma flutuação aleatória e indesejável no sinal detectado. A principal característica de processos de
ruído é, em geral, não termos controle sobre eles e não sermos capazes de prever o ruído que estará
presente em um dado instante. O ruído tem origem na natureza física dos processos de detecção, e
tem muitas formas e causas específicas. Qualquer que seja o processo físico que origine a formação de
uma imagem, uma característica comum é a natureza imprevisível das flutuações de sinal. Contudo,
embora não possamos conhecer os valores de uma ocorrência específica de ruído, somos capazes de
entender e modelar suas propriedades estatísticas. A variedade de modelos e os comportamentos de
ruído são, em geral, fatores importantes nas diferentes abordagens à restauração de imagens. A Figura
(6.1) resume o modelo básico para a formação/restauração de imagens descrito pela Equação (6.1).
A formação de uma imagem resulta da convolução da distribuição de entrada com a PSF do sis-
tema e a adição de ruído aleatório. A restauração linear de imagens emprega um filtro cuja forma
específica depende da PSF do sistema, de nosso conhecimento da estatística do ruído e, em certos
casos, de propriedades conhecidas ou assumidas da distribuição de entrada.
6.3 Restauração por filtro de Fourier inverso
Consideremos, mais uma vez, a equação de captura LIT de imagem apresentada na Equação (6.1):
2Um sistema telescópico que visualiza ondas de luz que se propagam através de turbulência atmosférica é um importante exemplo de captura
de imagem astronômica em que a PSF pode ser considerada como de natureza aleatória, e varia de modo significativo em um curto período
de tempo.
Solomon 06PDFG.indd 128 5/24/13 6:22:16 PM
RestauRação de imagens 129
em que a grandeza h(x − x′, y − y′) é a PSF, n(x, y) é um termo de ruído aditivo e f(x′, y′) é a grandeza
que desejamos restaurar.
Se aplicarmos a transformada de Fourier aos dois lados dessa equação, poderemos fazer uso do
teorema da convolução do Capítulo 5 para obter:
(6.2)
A convolução no domínio espacial se tornou uma simples multiplicação no domínio da frequência.
Consideremos a situação ideal em que o termo de ruído aditivo na equação de captura de imagem
n(x) seja desprezível, ou n(x) 5 0.
Neste caso,existe uma solução trivial. Simplesmente, dividimos os dois lados da Equação (6.2)
por H(kx, ky) e, em seguida, tomamos a transformada de Fourier inversa dos dois lados. Assim:
(6.3)
logo,
(6.4)
em que F−1 denota a operação de transformada de Fourier inversa. O filtro no domínio da frequência
(6.5)
em que H(kx, ky) é a função de transferência óptica (FTO) do sistema, é chamado de filtro inverso.
Na prática, o simples filtro inverso raramente funciona de modo satisfatório e deve sempre ser usado
com extremo cuidado. A razão para isso pode ser entendida se examinarmos a Equação (6.5), tendo em
Figura 6.1 Principais elementos de um sistema linear (e invariante sob translação) de captura de imagens.
Solomon 06PDFG.indd 129 5/24/13 6:22:17 PM
130 Capítulo 6
mente que a FTO de qualquer sistema de captura de imagem, em geral, não se estende ao limite de difra-
ção. Isso significa que será desastrosa qualquer tentativa de recuperar duplas de frequências espaciais
(kx, ky) que possam existir na entrada e cujos valores tenham sido substituídos por zero pela FTO do
sistema. Em tais frequências, a magnitude do filtro multiplicativo Y(kx, ky) tenderá a ~ 1/0 → ∞.
Uma forma de contornar essa dificuldade consiste em usar um filtro inverso truncado, onde mo-
nitoramos o valor da FTO H(kx, ky) e fixamos o valor da função de filtro Y(kx, ky) em zero sempre que
H(kx, ky) for menor que um valor predeterminado ‘perigosamente baixo’. Tecnicamente, esse é um
exemplo de um filtro passa-faixa, pois permite que certas duplas de frequências espaciais passem à
reconstrução e suprime outras. A restauração na Figura 6.2 (o código Matlab usado para gerar esta
figura é dado no Exemplo 6.1) foi obtida dessa forma.
Figura 6.2 Restauração de uma imagem desfocada e sem ruído com uso do filtro inverso. Da esquerda para a
direita: (a) original desfocado; (b) PSF gaussiana; (c) FTM correspondente; (d) original recuperado.
Exemplo 6.1
Código Matlab O que está sendo feito?
A5imread('trui.png'); B5fft2(A); B5fftshift(B); %Lê imagem e calcula a TF
[x y]5size(A); [X Y]5meshgrid(1:x,1:y); %Constrói a PSF gaussiana
h5exp(-(X-x/2).^2./48).*exp(-(Y-y/2).^2./48); %sobre toda a matriz
H5psf2otf(h,size(h)); H5fftshift(H); %Obtém a FTO correspondente à PSF
g5ifft2(B.*H); g5abs(g); %Gera imagem desfocada via
%domínio de Fourier
G5fft2(g); G5fftshift(G); %Toma TF da imagem
indices5find(H>1e-6); %Aplica filtragem inversa EVITANDO
F5zeros(size(G)); F(indices)5G(indices)./ %pequenos valores na FTO!!
H(indices);
f5ifft2(F); f5abs(f); %TF inversa para obter imagem filtrada
subplot(1,4,1), imshow(g,[min(min(g)) %Exibe imagem ‘original’ desfocada
max(max(g))]);
subplot(1,4,2), imagesc(h); axis square; axis off; %Exibe a PSF
subplot(1,4,3), imagesc(abs(H)); axis square; axis off; %Exibe a FTM
subplot(1,4,4), imagesc(f); axis square; axis tight; %Exibe imagem filtrada
axis off;
Comentários
Novas funções de Matlab: find, psf2otf.
A primeira parte do código gera uma imagem desfocada gaussiana. A segunda parte estima a imagem
original com o uso de um filtro inverso.
Solomon 06PDFG.indd 130 5/24/13 6:22:18 PM
RestauRação de imagens 131
Sempre que ruído estiver presente, o uso de um filtro inverso terá efeitos imprevisíveis e, em geral,
desastrosos. Consideremos a aplicação do filtro inverso da Equação (6.5) a uma situação em que o
ruído esteja presente. Obtemos
(6.6)
em que usamos a notação comum de ‘chapeu’ (ou seja, F̂(kx, ky)) para denotar uma grandeza esti-
mada. A Equação (6.6) mostra que o espectro de frequência recuperado tem um termo adicional:
o espectro de ruído N(kx, ky) dividido pela FTO do sistema H(kx, ky). É óbvio que gostaríamos que
o termo adicional fosse o menor possível, pois, assim, o espectro estimado tenderia ao verdadeiro
espectro de entrada. No entanto, o espectro de ruído é uma adição aleatória e desconhecida aos da-
dos à qual ‘não temos acesso’ e, na verdade, é inseparável do espectro da imagem de saída. Ademais,
muitos processos de ruído têm como característica um significativo conteúdo de alta frequência; em
outras palavras, há um regime de frequência espacial em que |N(kx, ky)| >> |G(kx, ky)|. No caso, o
primeiro termo no lado direito da Equação (6.6) (o verdadeiro conteúdo de frequência espacial)
será completamente dominado pelo segundo (o ruído). Essa situação está ilustrada na Figura 6.3 (o
código Matlab usado para gerar essa figura é dado no Exemplo 6.2).
Figura 6.3 Restauração de uma imagem desfocada e ruidosa com uso de filtragem inversa. Da esquerda para
a direita: (a) original desfocado com ruído branco gaussiano (média zero, variância de 0,2%); (b) PSF do
sistema; (c) FTM correspondente; (d) imagem recuperada.
Exemplo 6.2
Código Matlab O que está sendo feito?
A5imread('trui.png'); B5fft2(A); B5fftshift(B);
[x y]5size(A); [X Y]5meshgrid(1:x,1:y);
h5exp(-(X-x/2).^2./48).*exp(-(Y-y/2).^2./48); %MESMO CÓDIGO DO EXEMPLO 6.1
H5psf2otf(h,size(h)); H5fftshift(H); %Obtém a FTO
g5ifft2(B.*H); g5mat2gray(abs(g)); %Desfoca a imagem no domínio de Fourier
g5imnoise(g,'gaussian',0,0.002); %Adiciona ruído à imagem
%A PARTIR DAQUI, MESMO CÓDIGO
DO EXEMPLO 6.1
Comentários
Funções de Matlab: imnoise, mat2gray.
Similar ao Exemplo 6.1, exceto pela adição de ruído branco à imagem.
Solomon 06PDFG.indd 131 5/24/13 6:22:19 PM
132 Capítulo 6
6.4 Filtro de Wiener-Helstrom
Como o Exemplo 6.2 e a Figura 6.3 correspondente mostram, sempre que ruído estiver presente em
uma imagem, torna-se necessária a adoção de uma abordagem mais sofisticada do que o simples
filtro inverso. Um exame da equação de captura LIT de imagens no domínio da frequência
(6.7)
sugere que, idealmente, gostaríamos que o filtro de domínio da frequência Y(kx, ky) tivesse as seguin-
tes propriedades qualitativas:
• Nas duplas de frequências espaciais em que a componente de ruído |N(kx, ky)| for muito
menor que a componente da imagem |G(kx, ky)|, o filtro deve tender ao filtro inverso. Assim,
devemos ter
Isso assegura uma recuperação precisa dessas componentes de frequência na imagem restaurada.
• Nas duplas de frequências espaciais em que a componente de ruído |N(kx, ky)| for muito maior que
a componente da imagem |G(kx, ky)|, o filtro deve tender a zero. Portanto,
Isso assegura que não tentaremos restaurar duplas de frequências espaciais dominadas pela com-
ponente de ruído.
• Nas duplas de frequências espaciais em que a componente de ruído |N(kx, ky)| for comparável à
componente da imagem |G(kx, ky)|, o filtro deve ‘amortecer’ tais frequências, implementando um
equilíbrio apropriado entre a completa aceitação (filtro inverso) e total supressão.
Essas três propriedades são alcançadas pelo filtro de Wiener-Helstrom (muitas vezes abreviado
para filtro de Wiener), definido como
(6.8)
Na Equação (6.8), H* denota o complexo conjugado da FTO e as grandezas WF(kx, ky) e WN(kx, ky)
representam, respectivamente, os espectro de potência de entrada e de ruído:
(6.9)
A divisão do lado direito da Equação (6.8) pelo espectro de potência de entrada nos permite expres-
sar o filtro de Wiener-Helstrom em uma forma alternativa mais transparente:
(6.10)
em que a grandeza NSR(kx, ky) 5 WN(kx, ky)/ WF(kx, ky) representa a razão (ou relação) de potência
ruído/sinal. A Equação (6.10) mostra, então, que o filtro de Wiener-Helstrom se aproxima de um
filtro inverso nas frequências em que a razão de potência sinal/ruído é alta, e é muito pequeno nas
frequências espaciais em que a razão de potência sinal/ruído é baixa.
Solomon 06PDFG.indd 132 5/24/13 6:22:20 PM
RestauRação de imagens 133
6.5 Origem do filtro de Wiener-Helstrom
O filtro de Wiener-Helstrom definido pela Equação (6.8) (ou pela Equação (6.10)) não é apenas um
filtro empírico ad hoc, mas tem uma firme base teórica. Isto é importante, pois, em um sentido cla-
ramente definido, este é um filtro de restauração linear ótimo. Enunciemos, novamente, a equação de
captura LIT de imagem apresentada naEquação (6.1):
que, pelo teorema da convolução, tem o equivalente no domínio da frequência apresentado na Equa-
ção (6.2):
Um critério ótimo bem definido consiste em buscar uma estimativa da distribuição de entrada f̂ (x,
y) que se desvie minimamente da verdadeira entrada f(x, y) no sentido quadrático médio. Ou seja,
busquemos uma estimativa f̂ (x, y) tal que a seguinte grandeza seja minimizada:
(6.11)
Esse critério de otimização é denominado mínimo erro quadrático médio (MMSE − Minimum Mean-
Square Error) ou critério de mínima variância. É importante estar ciente de que os colchetes angulares
na Equação (6.11) denotam média de ensemble; ou seja, buscamos um estimador f̂ (x, y) que seja ótimo
em relação à média estatística tomada em muitas realizações do processo de ruído aleatório n(x, y) e,
também, à PSF nos casos especiais em que essa pode ser tratada como uma grandeza estocástica.3
A aplicação do teorema de Parseval à Equação (6.11) nos permite expressar um critério equiva-
lente no domínio de Fourier:
(6.12)
A abordagem básica à dedução do filtro de Wiener-Helstrom consiste em postular um filtro linear
Y(kx, ky) que atue sobre os dados da imagem G(kx, ky) 5 F(kx, ky)H(kx, ky) + N(kx, ky) e tomar variações
no operador Y(kx, ky) de modo que a grandeza Q seja estacionária. A dedução formal é longa e requer
métodos da teoria de estimação estatística e do cálculo variacional; por isso, não é repetida aqui.4
É possível mostrar, ainda, que o resultante erro quadrático médio após a aplicação do filtro de
Wiener-Helstrom é dado por
(6.13)
Em resumo, o filtro de Wiener-Helstrom aceita as componentes de baixas frequências e rejeita as
componentes de altas frequências. Ademais, isto é feito de forma ‘ótima’ bem definida. É um compor-
tamento muito razoável e podemos ser tentados a pensar que a restauração de imagens no domínio
da frequência começa e termina aqui.
3Um bom exemplo de uma PSF que varia aleatoriamente e, portanto, é estocástica é a PSF de um telescópio terrestre de observação através da
turbulência atmosférica.
4Leitores interessados podem estudar a dedução detalhada no site da LTC Editora para o livro.
Solomon 06PDFG.indd 133 5/24/13 6:22:21 PM
134 Capítulo 6
Apesar de sua importância prática e histórica, o filtro de Wiener-Helstrom não é uma panaceia, e
vale a pena ressaltar dois pontos:
(1) A implementação exata da Equação (6.10) requer conhecimento do espectro de potência de
entrada. Como a distribuição de entrada é justamente a grandeza que desejamos estimar, não
podemos, em geral, esperar conhecer seu espectro de potência!5 Assim, na vasta maioria dos
casos, o filtro de Wiener-Helstrom não pode ser implementado exatamente. Contudo, pode-
mos tentar contornar este problema de várias maneiras para produzir um filtro prático:
(a) Quando a distribuição de entrada pertencer a uma classe bem definida à qual a entrada
é restringida, estimativas razoavelmente precisas do espectro de potência podem estar
disponíveis. Um exemplo típico é um procedimento padrão de captura de imagem mé-
dica, como o de tomar uma radiografia do tórax, em que a estrutura de entrada pode ser
considerada essencialmente como uma variação modesta de um protótipo básico (ou
seja, a estrutura óssea é muito parecida em todas as pessoas). Neste caso, o protótipo
pode ser usado para prover a aproximação ao espectro de potência de entrada.
(b) Quando a entrada não é restringida dessa forma, o filtro de Wiener-Helstrom pode ser
aproximado com a substituição do espectro de potência de entrada pelo espectro de po-
tência de saída WG(kx, ky) (que podemos calcular com facilidade) ou, preferencialmente,
alguma versão filtrada do mesmo.
(c) Outra abordagem simples, mas menos precisa, consiste em aproximar a razão de potência
ruído/sinal (a função NSR na Equação (6.10)) por uma constante escalar adequada. Ao
remover toda a dependência do termo em relação à frequência espacial, trocamos parte do
conteúdo de alta frequência na restauração por maior estabilidade.
(2) Em geral, restaurações produzidas pelo filtro de Wiener-Helstrom são, de um ponto de vista
de percepção, demasiadamente desfocadas − sugerindo que, embora seja um critério de otimi-
zação matemática perfeitamente válido, o critério MMSE certamente não é ótimo segundo a
perspectiva da percepção humana. Por essa razão, outros tipos de filtros foram desenvolvidos e
produzem melhores resultados em aplicações específicas.
A Figura 6.4 (cujo código Matlab é dado no Exemplo 6.3) mostra os resultados de duas aproximações
distintas para o filtro de Wiener ideal, aplicadas a uma imagem com significativo nível de ruído. A
imagem restaurada está longe de ser perfeita, mas representa uma melhora considerável da original.
5
5Esse ponto é desprezado em muitas discussões sobre o filtro de Wiener.
Exemplo 6.3
Código Matlab O que está sendo feito?
I 5 imread('trui.png');I5double(I); %Lê a imagem
noise 515.*randn(size(I)); %Gera o ruído
PSF 5 fspecial('motion',21,11); %Gera PSF motion
Blurred 5 imfilter(I,PSF,'circular'); %Desfoca a imagem
BlurredNoisy 5 Blurred 1 noise; %Adiciona ruído à imagem desfocada
NSR 5 sum(noise(:).^2)/sum(I(:).^2); %Calcula a razão de potência ESCALAR ruído-sinal
NP 5 abs(fftn(noise)).^2; %Calcula o espectro de potência de ruído
continua
Solomon 06PDFG.indd 134 5/24/13 6:22:21 PM
RestauRação de imagens 135
Figura 6.4 Restauração de uma imagem desfocada e ruidosa com filtragem de Wiener. Da esquerda para a
direita: (a) original desfocado com ruído branco gaussiano (média zero, desvio-padrão ~ 10% do sinal médio);
(b) filtragem de Wiener com estimativa escalar da potência total de ruído e de sinal; (c) filtragem de Wiener
com fornecimento da autocorrelação do ruído e do sinal.
NPOW 5 sum(NP(:))/prod(size(noise)); %Calcula a potência média no espectro de ruído
NCORR 5 fftshift(real(ifftn(NP))); %Calcula função de autocorrelação do ruído,
%centrada com uso de fftshift
IP 5 abs(fftn(I)).^2; %Calcula o espectro de potência da imagem
IPOW 5 sum(IP(:))/prod(size(I)); %Calcula a potência média no espectro da imagem
ICORR 5 fftshift(real(ifftn(IP))); %Calcula função de autocorrelação da imagem
NSR 5 NPOW./IPOW; %Calcula a razão de potência ESCALAR ruído-sinal
subplot(131);imshow(BlurredNoisy,[min(min(BlurredNoisy)) max(max(BlurredNoisy))]);
%Exibe imagem desfocada e ruidosa
subplot(132);imshow(deconvwnr(BlurredNoisy,PSF,NSR),[]);
%PSF filtrada com filtro de Wiener e razão de potência
%escalar ruído/sinal
subplot(133);imshow(deconvwnr(BlurredNoisy,PSF,NCORR,ICORR),[]);
%autocorrelações da
%PSF filtrada com filtro de Wiener e ruído e sinal
Comentários
Funções de Matlab: fftn, ifftn, prod, deconvwnr.
Este exemplo gera uma imagem ruidosa e desfocada e, então, demonstra a restauração usando duas
variações do filtro de Wiener. A primeira aproxima a razão de potência ruído/sinal por uma constante e
a segunda assume conhecimento das funções de autocorrelação do ruído e do sinal.
A Image Processing Toolbox [Caixa de Ferramenta de Processamento de Imagens] de Matlab tem
uma função para a específica implementação do filtro de Wiener, deconvwnr. Essencialmente, essa fun-
ção pode ser usada de três formas diferentes:
O usuário fornece a PSF responsável somente pelo desfocamento. Nesse caso, assume-se que não há •
ruído e o filtro se reduz ao filtro inverso da Equação (6.5).
O usuário fornece a PSF responsável pelo desfocamento e uma estimativa • escalar da razão de potên-
cia ruído/sinal NSR. Em outras palavras, apenas a quantidade total de potência de ruído e de entrada
é fornecida; a dependência da NSR em relação à frequência não é fornecida.
O usuário fornece a PSF responsável pelo desfocamento e uma estimativa • dependente da frequência da
razão de potência ruído/sinal por meio das respectivas funções de autocorrelação. (Recordemos que o
teorema da autocorrelação permite o cálculo da autocorrelação a partir do espectro de potência.)
Para mais informação sobre essa função,basta teclar doc deconvwnr na janela de comando de Matlab.
continuação
Solomon 06PDFG.indd 135 5/24/13 6:22:22 PM
136 Capítulo 6
6.6 Soluções aceitáveis para a equação de captura de imagens
Uma solução para a equação de captura de imagens, a Equação (6.1), é considerada aceitável se for
consistente com toda a informação que tivermos sobre a PSF do sistema e o processo de ruído. De
modo explícito, isso significa que, se tomarmos uma solução para a distribuição de entrada f̂ (x, y),
a passarmos por nosso sistema pela convolução com a PSF do sistema e subtrairmos o resultado
da saída, o resíduo (ou seja, n̂ 5 g − h ∗∗f̂ ) deve ser uma distribuição de ruído com as mesmas
propriedades estatísticas do modelo de ruído. Qualquer estrutura espacial no resíduo que não seja
consistente com o modelo de ruído indica que a solução não é consistente com a equação de captura
de imagem. Uma visão completamente equivalente pode ser tomada no domínio da frequência, em
que a subtração do espectro de saída estimado Ĝ(kx, ky) do espectro de saída medido G(kx, ky) deve
ser consistente com o conhecimento estatístico que temos do espectro de ruído N(kx, ky).
6.7 Deconvolução com regularização
O filtro de Wiener é projetado para minimizar a soma dos erros quadráticos médios entre a real dis-
tribuição de entrada e a estimativa que dela fazemos. Esse é um critério perfeitamente razoável para
um filtro de restauração, mas devemos reconhecer que não é o único critério que pode nos interessar.
Grosso modo, o critério do filtro de Wiener considera que todas as partes da imagem têm a mesma
importância, pois seu objetivo é a minimização dos erros quadráticos em toda a imagem. Critérios
visuais importantes, como a preservação de suavidade (em geral, para a supressão de ruído) e realce
de agudez (para a preservação de bordas), não são, de modo geral, explicitamente encapsulados pelo
filtro de Wiener. Dado que, por exemplo, a estrutura de bordas ou a suavidade global é muito impor-
tante na percepção de imagens, é razoável que queiramos assegurar que a restauração tente recuperar
certas características da imagem de modo particularmente preciso.
Na deconvolução com regularização de mínimos quadráticos, a tarefa consiste em considerar so-
mente soluções que minimizem alguma grandeza desejada na imagem restaurada, mas que impõem
restrições ao espaço de solução. Em várias situações é possível que conheçamos a (ou, pelo menos, seja-
mos capazes de fazer uma estimativa adequada da) potência total de ruído ||n(x, y)||2 5 ∫ n2(x,y)dx dy
na distribuição de saída. É razoável que a convolução de qualquer imagem restaurada f̂ (x, y) com a PSF
do sistema de captura de imagens (que é a distribuição de saída prevista ĝ(x, y) 5 h(x, y)∗∗ f̂ (x, y)) não
deva diferir da verdadeira distribuição g(x, y) por uma quantidade maior que a conhecida potência de
ruído. Por tal razão, uma condição comum, e que faz sentido, consiste em exigir que a potência de ruído
na imagem restaurada seja similar ao valor conhecido. Assim, esta condição exige que:
(6.14)
Ressaltamos que há muitas outras soluções possíveis f̂ (x, y) que satisfazem a condição expressa
pela Equação (6.14). É uma consequência da natureza aleatória do ruído e da natureza mal condicio-
nada do sistema. A abordagem matemática adotada na restauração com regularização corresponde
à especificação de uma função de custo, composta de duas partes. A primeira consiste em algum
operador linear L (geralmente referido como operador de regularização) que atua sobre a distribui-
ção de saída Lf(x, y). A segunda consiste em um ou mais termos multiplicadores de Lagrange que
especificam as restrições. O objetivo é a minimização do tamanho de Lf(x, y), sujeita às restrições
escolhidas. A forma precisa do operador linear L depende da propriedade da imagem restaurada que
deve ser minimizada, e será discutida em breve.
Formalmente, buscamos uma solução f̂ (x, y) que minimize a função de custo:
(6.15)
Solomon 06PDFG.indd 136 5/24/13 6:22:22 PM
RestauRação de imagens 137
em que L é algum operador linear genérico e λ é um multiplicador de Lagrange desconhecido.
Esse problema pode ser facilmente formulado no domínio da frequência se considerarmos a
Equação (6.2), o equivalente de Fourier à equação de captura de imagem. A Equação (6.15) fica,
então, reescrita como:
(6.16)
Tomando a derivada vetorial da Equação (6.16) em relação a F(kx, ky) e igualando o resultado a zero,
podemos deduzir o filtro de restauração regularizador6 Y(kx, ky), de modo que o espectro restaurado
seja dado por
em que
(6.17)
Assim, Y(kx, ky) simplesmente multiplica o espectro de frequência de saída para produzir uma esti-
mativa do espectro de entrada. Na Equação (6.17), H(kx, ky) denota a FTO do sistema, L(kx, ky) é a
representação do operador linear no domínio da frequência e o parâmetro α 5 1/λ (inverso do mul-
tiplicador de Lagrange) é tratado como um parâmetro de regularização, cujo valor é escolhido para
assegurar que a restrição de mínimos quadráticos seja satisfeita. Embora métodos analíticos tenham
sido desenvolvidos para sua estimação, α é geralmente tratado como um parâmetro ‘ajustável pelo
usuário’.
Ressaltamos que a generalidade do operador linear L nas Equações (6.15) e (6.16) permite que
uma variedade de critérios de restauração seja especificada. Por exemplo, a escolha L 5 I, operador
identidade, resulta no chamado filtro de Wiener paramétrico, que produz uma solução de norma
mínima − a solução de mínima energia que satisfaz a restrição desejada. Outro critério consiste em
buscar a máxima ‘suavidade’ global da imagem. Uma boa medida da agudez de uma imagem é dada
pela função laplaciano ∇2f(x, y) . A escolha L 5 ∇2 e minimização de ∇2f(x, y), asseguram uma so-
lução suave.
A Figura 6.5 foi produzida pelo código Matlab no Exemplo 6.4 e mostra exemplos de soluções
com regularização de mínimos quadráticos usando um operador laplaciano em uma imagem desfo-
cada e ruidosa. Reparemos na maior suavidade que resulta da escolha de um valor alto para λ.
6Uma dedução da restauração com regularização de mínimos quadráticos encontra-se disponível no site da LTC Editora para este livro.
Figura 6.5 Exemplo de deconvolução com regularização. Esquerda: imagem original; centro: restauração com
minimização do laplaciano da imagem sujeita à regularização de mínimos quadráticos de ruído; direita: similar
ao centro, exceto que o valor do multiplicador de Lagrange é tomado como 10 vezes o valor anterior.
Solomon 06PDFG.indd 137 5/24/13 6:22:23 PM
138 Capítulo 6
6.8 Estimação de uma função de espalhamento de ponto ou
função de transferência óptica desconhecida
Como vimos, no domínio da frequência, o problema ‘padrão’ de deconvolução pode ser expresso
pela Equação (6.2):
até aqui, nossa discussão sobre restauração de imagens no domínio da frequência focou as aborda-
gens inversa, de Wiener e com regularização de mínimos quadráticos para a recuperação do espec-
Exemplo 6.4
Código Matlab O que está sendo feito?
I 5 imread('trui.png'); %Lê a imagem
PSF 5 fspecial('gaussian',7,10); %Define a PSF
V 5 .01; %Especifica o nível de ruído
BlurredNoisy 5 imnoise(imfilter(I,PSF), %Produz imagem desfocada e ruidosa
'gaussian',0,V);
NP 5 V.*prod(size(I)); %Calcula a potência de ruído
[J LAGRA_J] 5 deconvreg(BlurredNoisy, %Deconvolução com regularização
PSF,NP);
%Operador laplaciano padrão, multiplicador
%de Lagrange otimizado
[K LAGRA_K] 5 deconvreg(BlurredNoisy,PSF,
[],LAGRA_J*10);
%Multiplicador de Lagrange fixado
%(10 vezes maior)
subplot(131);imshow(BlurredNoisy); %Exibe a imagem original
subplot(132);imshow(J); %Exibe resultado da 1a deconvolução
subplot(133);imshow(K); %Exibe resultado da 2a deconvolução
Comentários
Funções de Matlab: imfilter, imnoise, fspecial, deconvreg.
Este exemplo gera uma imagem degradada e, então, mostra os resultados de deconvolução com regu-
larização usando dois diferentes parâmetros de regularização.
A ImageProcessing Toolbox [Caixa de Ferramenta de Processamento de Imagens] de Matlab tem
uma função para a específica implementação de filtragem regularizadora ou condicionada, deconvreg.
Vale a pena ressaltar alguns pontos:
O operador linear padrão é tomado como o laplaciano, a menos que o usuário • especifique explicita-
mente outra forma. A reconstrução terá, então, como objetivo a otimização da suavidade.
O usuário deve fornecer a PSF responsável pelo desfocamento.•
A potência total de ruído deve ser especificada. O valor • default é 0.
O usuário pode especificar uma dada faixa para a busca de um valor ótimo do multiplicador de •
Lagrange ou pode especificar o valor do multiplicador diretamente.
Para mais informação sobre esta função, basta teclar doc deconvreg na janela de comando de Matlab.
Solomon 06PDFG.indd 138 5/24/13 6:22:23 PM
RestauRação de imagens 139
tro de entrada F(kx, ky). Todos esses métodos assumem implicitamente o conhecimento da FTO do
sistema H(kx, ky). Em muitas situações práticas, tal informação não está prontamente disponível.
Por exemplo, a análise e restauração de imagens para propósitos de medicina legal caem, muitas
vezes, nessa categoria: imagens corrompidas − tiradas por câmeras há muito perdidas ou, de alguma
forma, inacessíveis − são apresentadas na esperança de identificar pessoas ou para algum outro fim
de importância legal. Nesses casos, as tentativas de restauração podem ser feitas somente se houver
algum meio razoável de estimar a FTO (ou a PSF) do sistema a partir da própria imagem. Isto pode
ser tentado de duas formas básicas:
• A primeira é conceitualmente simples. Podemos inspecionar a imagem em busca de objetos que,
a priori, sabemos ser pontiagudos por natureza (as estrelas são um bom exemplo). A aparência de
tais objetos na imagem fornecerá, por definição, uma estimativa da PSF. Obviamente, a ocorrência
desse tipo de objeto não é garantida em todas as imagens.
• Uma abordagem parecida consiste em buscar linhas retas e, por implicação, bordas, pois a PSF
também pode ser estimada se pudermos identificar tais elementos na imagem.
Para entender o funcionamento dessa segunda abordagem, consideremos uma borda aguda idea-
lizada e uma versão desfocada dela, como na Figura 6.6. Um perfil tomado por meio da borda em
uma direção perpendicular à reta é um sinal 1D, conhecido como função de espalhamento de borda
(ESF − Edge-Spread Function), que denotaremos por e(x). Obviamente, e(x) é o resultado da convo-
lução da borda idealizada com a PSF 1D do sistema h(x); assim, e(x) 5 s(x)∗h(x). Agora, é possível
mostrar formalmente7 que a derivada da função de borda ideal é dada por uma função delta, ou seja,
δ(x − x0) 5 ds/dx (ou, de modo equivalente, a integral da função delta fornece a função de borda
ideal). Usando essa relação, concluímos que a simples diferenciação da ESF produz a PSF do sistema:
de/dx 5 h(x).
Esta expressão produz somente uma versão 1D da PSF e, na verdade, representa uma integração
(distribuição marginal) da real PSF 2D h(x, y) ao longo da direção da borda. Se houver uma boa ra-
7Ver o site da LTC Editora para este livro.
Figura 6.6 Perfil 1D medido por
intermédio de uma borda é o re-
sultado da convolução da borda
idealizada com a PSF 1D h(x). A
função h(x) é calculada como a
derivada da borda de/dx = h(x)
e essa PSF 1D é a distribuição
marginal da PSF 2D ao longo da
direção da borda.
Solomon 06PDFG.indd 139 5/24/13 6:22:24 PM
140 Capítulo 6
zão para crer que h(x, y) seja circularmente simétrica (o que é razoável em muitos casos), o trabalho
está feito e nossa estimativa 1D é simplesmente girada de 360° no plano para produzir a correspon-
dente versão 2D. Contudo, no caso geral, a situação é bem mais complicada. A fusão de um grande
número de distribuições marginais de uma função genérica h(x, y) pode, na prática, ser feita somente
com uso de técnicas de Fourier (empregadas, por exemplo, em tomografia computadorizada) que
explorem o teorema da fatia central. O problema fica bastante simplificado se pudermos aproximar
a PSF 2D h(x, y) por uma função gaussiana 2D. Em geral, essa é uma boa aproximação à realidade, e
a função assume a forma específica
(6.18)
em que o vetor x 5 [x y], e a matriz Cx podem ser expressas como
(6.19)
Aqui, os parâmetros s 21 e s 22 representam larguras da PSF ao longo de duas direções ortogonais.
Reparemos que a matriz Rθ é uma matriz de rotação 2D (que possui um grau de liberdade, o ângulo
θ), incluída para permitir a possibilidade de os eixos principais da PSF não serem alinhados com
os eixos da imagem. Quando os eixos principais da PSF estão alinhados com os eixos da imagem, a
matriz Rθ é igual à matriz identidade I, Rθ 5 I, e a gaussiana 2D é separável em x e y:
(6.20)
Com a hipótese de uma PDF 2D gaussiana, a resposta do sistema a uma borda arbitrária será uma
função gaussiana integrada (a familiar função erro da estatística). A função erro tem um único pa-
râmetro livre e, por ajuste de mínimos quadráticos da resposta da borda à função erro em algumas
bordas, uma estimativa robusta da PSF pode ser formada.
6.9 Deconvolução cega
Consideremos, mais uma vez, o problema ‘padrão’ de deconvolução dado pela Equação (6.2):
em que buscamos uma estimativa do espectro de entrada F(kx, ky). Já ressaltamos que não conhece-
mos o espectro de ruído N(kx, ky). O que acontece se também não conhecermos a FTO do sistema
H(kx, ky)? À primeira vista, este problema, conhecido como deconvolução cega, parece ser de solução
impossível. Afinal, o espectro de saída medido G(kx, ky) é dado pelo produto de duas grandezas des-
conhecidas mais um processo de ruído aleatório.
Surpreendentemente, soluções possíveis podem ser obtidas para esse problema por meio de pro-
cedimentos iterativos (em geral, efetuados no domínio da frequência) que reforçam apenas restrições
básicas na solução:
(1) as soluções devem ter suporte finito, ou seja, é sabido que a distribuição de entrada procurada é
confinada a certa região espacial e é zero fora desta região;
Solomon 06PDFG.indd 140 5/24/13 6:22:25 PM
RestauRação de imagens 141
(2) qualquer solução proposta deve ser estritamente positiva (a entrada corresponde a um fluxo de
alguma natureza e não pode ter valores negativos).
O procedimento de deconvolução cega tenta estimar/restaurar não apenas a distribuição de en-
trada original, mas também a PSF responsável pela degradação. Um estudo detalhado de abordagens
de deconvolução cega está além do escopo deste texto, mas algumas referências básicas encontram-se
no site do livro.8
O Exemplo 6.5 ilustra a implementação de restauração de imagem em Matlab usando decon-
volução cega de máxima verossimilhança, sendo os resultados mostrados na Figura 6.7. A PSF da
fotografia desfocada de uma festa, no lado esquerdo da Figura 6.7, era desconhecida; vemos que, em-
bora o procedimento de deconvolução tenha produzido alguns efeitos de linhas de contorno (ringing
effect), as imagens restauradas são, de fato, mais claras.
6.10 Deconvolução iterativa e algoritmo de Lucy-Richardson
A restauração de imagens continua sendo um vasto campo de pesquisa. Seria tentador apresentar
uma discussão sobre técnicas de reconstrução baseadas na matriz bayesiana e problemas não lineares
de restauração de imagens. Todavia, isso está além de nosso escopo; este capítulo busca apenas dar
ao leitor informação sobre o problema básico de restauração de imagens e sobre algumas abordagens
8Ver o site da LTC Editora para este livro.
Exemplo 6.5
Código Matlab O que está sendo feito?
A5imread('test_blur.jpg'); %Lê a imagem
A5edgetaper(A,ones(25)); %Suaviza bordas da imagem
[J,PSF]5deconvblind(A,ones(10)); %Deconvolução − estimativa inicial de PSF ‘plana’
subplot(1,4,1), imshow(A,[]); %Exibe a imagem original
subplot(1,4,2), imshow(J,[]); %Exibe resultado da deconvolução
h5fspecial('gaussian',[10 10],3);
[J,PSF] 5 deconvblind(A,h); %Deconvolução − estimativa inicial de PSF normal
subplot(1,4,3),imshow(J,[]); %Exibe
J 5 deconvwnr(A,PSF,0.01); %filtro de Wiener com PSF recuperada por deconvolução ‘cega’
subplot(1,4,4), imshow(J,[]); %Exibe resultado da deconvolução de Wiener
Comentários
Funções de Matlab: edgetaper, deconvblind, deconvwnr.
O exemplo mostra os resultados da deconvolução cega com base em duas diferentes estimativas da
PSF. Em geral, os resultados da deconvolução cega são muito sensíveis à estimativa inicial da PSF. A
terceira restauração mostra os resultados da filtragem de Wiener usando a PSF recuperada da deconvo-
lução cega.
A Image Processing Toolbox [Caixa de Ferramenta de Processamento de Imagens] de Matlab tem
uma função para a específica implementação de deconvolução cega, deconvblind. Para mais informação
sobre o uso do algoritmo de deconvolução cega em Matlab, basta teclar doc deconvblind na janela de
comando de Matlab.
Solomon 06PDFG.indd 141 5/24/13 6:22:25 PM
142 Capítulo 6
comuns e simples à solução do problema. Leitores interessados que desejem informação mais deta-
lhada sobre o assunto encontram uma vasta literatura à disposição.
Contudo, em parte por se tratar de um algoritmo muito popular na comunidade de astronomia e em
parte por ser explicitamente disponibilizado na Caixa de Ferramentas de Processamento de Imagens de
Matlab, apresentaremos uma breve discussão sobre o algoritmo de deconvolução de Lucy-Richardson
(LR). O entendimento do algoritmo LR fica facilitado se considerarmos, primeiro, um simples algorit-
mo iterativo para, então, vermos como o método LR é uma extensão desta abordagem.
A equação de captura linear de imagens afirma que g(x, y) 5 f(x, y)∗∗h(x, y) + n(x, y), de modo
que o ruído n(x, y) é a diferença entre a distribuição de saída g(x, y) (ou seja, a imagem que, em reali-
dade, medimos) e a convolução da desconhecida distribuição de entrada f(x, y) com a PSF h(x, y):
(6.21)
A substituição de uma boa estimativa da distribuição de entrada f(x, y) na Equação (6.21) tenderia a
reduzir n(x, y), enquanto uma estimativa pobre aumentaria o ruído; no limite de ruído desprezível,
nossa estimativa ideal satisfaria:
(6.22)
Se adicionarmos a distribuição de entrada f(x, y) aos dois lados da Equação (6.22), teremos:
(6.23)
Essa equação pode ser vista como um procedimento iterativo em que uma nova estimativa da entra-
da (lado esquerdo) é dada como a soma da estimativa anterior (primeiro termo no lado direito) a um
termo de correção (entre colchetes). O termo de correção é, na verdade, a diferença entre a imagem
medida e a predição que dela fazemos usando a estimativa atual da entrada. Essa certamente parece
ser uma correção razoável e de cálculo fácil. Escrevendo isso explicitamente como um procedimento
iterativo, a estimativa de ordem (k + 1) da entrada fica dada por:
(6.24)
O procedimento descrito pela Equação (6.24) é iniciado fixando f0(x, y) 5 g(x, y). Em outras
palavras, iniciamos o algoritmo usando a saída medida como primeira estimativa da distribuição de
Figura 6.7 Deconvolução cega de máxima verossimilhança. (a) Imagem original desfocada de PSF desconhe-
cida. (b) Restauração por deconvolução cega de máxima verossimilhança (estimativa inicial da PSF com filtro
de média 10 × 10). (c) Restauração por deconvolução cega de máxima verossimilhança (estimativa inicial da
PSF como filtro gaussiano 10 × 10 com σ = 3). (d) Filtragem de Wiener usando a PSF estimada em (c) e uma
estimada NSR escalar = 0,01.
Solomon 06PDFG.indd 142 5/24/13 6:22:26 PM
RestauRação de imagens 143
entrada. A menos que a imagem esteja severamente degradada, a saída não é muito diferente da ver-
dadeira distribuição de entrada e esse procedimento simples converge bem. Notemos que a Equação
(6.24) não pode ser satisfeita exatamente, a menos que não exista nenhum ruído, mas atingirá um
ponto em que o tamanho do termo de correção9 na Equação (6.24) assume o valor mínimo.
Uma variação da Equação (6.24) é o algoritmo de Van Cittert, que usa um fator de ponderação
ou parâmetro de relaxação w(x, y) dependente de valores de pixel para controlar a velocidade da
convergência:
(6.25)
São duas as hipóteses básicas no método LR:
• assume-se que a PSF seja conhecida;
• assume-se que o ruído na saída seja governado pela função densidade de Poisson.
O método LR é um algoritmo iterativo que tenta encontrar uma solução de máxima verossimi-
lhança a partir do conhecimento da PSF e da hipótese de ruído de Poisson. Como é costume na dis-
cussão desse algoritmo, consideraremos uma forma discreta da Equação (6.1), em que as distribui-
ções de entrada e saída são representadas por vetores e a PSF é uma matriz 2D. Em outras palavras,
seja fi o valor do i-ésimo pixel na distribuição de entrada. A relação entre esse valor e o observado no
i-ésimo pixel na saída, gi, é dada por
(6.26)
em que o somatório em j produz a contribuição de cada pixel de entrada, como expresso pela PSF hij,
ao pixel observado na saída. É costume normalizar a PSF discreta de modo que hij 5 1.
A fórmula iterativa LR é dada por
(6.27)
em que o núcleo na Equação (6.27) tende à unidade, à medida que a iteração avança. A base teórica
para a Equação (6.27) pode ser estabelecida pelo teorema de Bayes; sugerimos que o leitor interessa-
do consulte a literatura sobre este assunto.10 O Exemplo 6.6 ilustra a implementação de restauração
de imagem em Matlab usando o algoritmo de deconvolução LR, sendo os resultados mostrados na
Figura 6.8.
9Por tamanho, queremos dizer a soma total dos quadrados dos valores de pixel.
10Richardson, W.H., Bayesian-based iterative method of image restoration, J. Opt. Soc. Am. 62, (1972) 55. Lucy, L.B., An iterative technique for
the rectification of observed distributions, Astron. J. 79, (1974) 745.
Exemplo 6.6
Código Matlab O que está sendo feito?
A 5 imread('trui.png'); A5mat2gray(double(A)); %Lê a imagem e a converte
%para imagem de intensidade
continua
Solomon 06PDFG.indd 143 5/24/13 6:22:27 PM
144 Capítulo 6
PSF 5 fspecial('gaussian',7,10); %Especifica a PSF
V 5 .0001; %Define variância do ruído
J0 5 imnoise(imfilter(A,PSF),'gaussian',0,V); %Cria imagem desfocada e ruidosa
WT 5 zeros(size(A));WT(5:end-4,5:end-4) 5 1; %Define função de ponderação
J1 5 deconvlucy(J0,PSF,10); %Deconvolução LR com 10 iterações
J2 5 deconvlucy(J0,PSF,20,sqrt(V)); %20 iterações, desvio de ruído fornecido
J3 5 deconvlucy(J0,PSF,20,sqrt(V),WT); %Função de ponderação para suprimir efeito
de linhas de contorno
subplot(141);imshow(J0); %Exibe os vários resultados
subplot(142);imshow(J1);
subplot(143);imshow(J2);
subplot(144);imshow(J3);
Comentários
Funções de Matlab: imnoise, mat2gray, deconvlucy.
Este exemplo mostra os resultados de deconvolução LR em três condições diferentes. Na primeira,
apenas a PSF é fornecida e são aplicadas 10 iterações. Na segunda, é fornecida uma estimativa do desvio-
padrão global de ruído. Na terceira, uma função de ponderação (que aloca peso zero a pixels próximos
de borda da imagem) é aplicada para suprimir os efeitos de linhas de contorno (ringing effect) evidentes
nas reconstruções anteriores.
A Image Processing Toolbox [Caixa de Ferramenta de Processamento de Imagens] de Matlab tem
uma função para a específica implementação de deconvolução LR, deconvlucy. Para mais informações
sobre o uso do algoritmo de deconvolução LR em Matlab, basta teclar doc deconvlucy na janela de co-
mando de Matlab.
6.11 Formulação matricial da restauração de imagens
Encerraremos essa discussão introdutória sobre restauração de imagens com uma breve análise da
restauração sob uma perspectiva alternativa. Especificamente, discutiremos a formulação algébrica
linear ou matricial do problema da restauração de imagens. Esta apresentação é bem matemática e
pode ser pulada em uma primeira leitura. Todavia, é uma formulação poderosa, pois dá uma mesma
estrutura matemática a técnicas aparentemente diferentes. Por essa razão, decidimos devotar-lhe as
seções restantes.
continuação
Figura 6.8 DeconvoluçãoLR. Da esquerda para a direita: (a) imagem original; (b) 10 iterações, apenas PSF
fornecida; (c) 20 iterações, variância de ruído também fornecida; (d) 20 iterações, faixa cinco de pixels nas
proximidades da borda recebe ponderação zero para suprimir efeitos de linhas de contorno.
Solomon 06PDFG.indd 144 5/24/13 6:22:27 PM
RestauRação de imagens 145
O ponto de partida é a integral de superposição linear introduzida no Capítulo 5, à qual adicio-
namos um termo de ruído:
(6.28)
Reparemos que essa equação expressa um mapeamento linear entre uma distribuição em algum
domínio de entrada, especificado pelas coordenadas (x9, y9), e uma distribuição em algum domínio
de saída (x, y). Com a adição do termo de ruído, esta constitui a expressão mais geral para um mo-
delo de sistema 2D linear e contínuo de captura de imagens. Se a PSF h(x, y; x9, y9) (que, em geral,
tem quatro dimensões) for invariante sob translação, a expressão se reduz à equação padrão de con-
volução dada pela Equação (6.2). No entanto, prosseguiremos com o caso geral, pois também é de
tratamento simples.
Sistemas digitais de captura de imagens produzem uma aproximação discreta à integral de super-
posição linear, em que o domínio de entrada (x9, y9) e o domínio de saída (x, y) são amostrados em
um número finito de pixels. É simples mostrar11 que a versão discretizada da Equação (6.1) resulta
na seguinte equação matricial
(6.29)
em que g é a imagem ou vetor de saída, que contém todos os pixels na imagem convenientemente
ordenados em um único vetor-coluna;12 f é o vetor de entrada, que também contém todos os valores
de pixel na distribuição de entrada ordenados como um vetor-coluna; n é o vetor de ruído, em que
as contribuições de ruído a cada pixel são ordenadas em um vetor-coluna; H é a forma discreta da
PSF do sistema e descreve a transferência de cada pixel na entrada a cada pixel na saída; às vezes, H
é chamado de matriz do sistema ou de transferência.
Essa formulação nada altera de fundamental em relação ao problema de restauração de imagens,
que permanece o mesmo − recuperar f, dados g e diferentes graus de conhecimento de H e n. No
entanto, temos uma nova perspectiva matemática. A Equação (6.29), na verdade, representa um gran-
de sistema de equações lineares. Esse modelo linear tem sido objeto de muito estudo no campo da
teoria de estimação estatística e é bem entendido. A principal vantagem em expressar o problema de
restauração de imagens nesses termos é sua representação em uma estrutura simples e unificadora, o
que é particularmente atraente de um ponto de vista teórico.
A solução do sistema linear na Equação (6.29) pode ser feita de diferentes formas. Nossa discus-
são será, necessariamente, modesta em escopo e focará apenas dois aspectos:
(1) explicar a essência da abordagem teórica de estimação para a solução desse problema linear;
(2) delinear algumas das soluções mais importantes e mais comumente empregadas.
Soluções ao modelo linear na Equação (6.29) são denominadas estimadores e o objetivo é o uso de
nosso conhecimento da situação específica para deduzir um estimador f̂ que esteja o mais próximo
possível do real vetor de entrada f.
Em geral, diferentes estimadores são adequados, dependendo dos seguintes três critérios:
• quais das grandezas na Equação (6.29) podem ser tratadas como estocásticas (ou seja, aleatórias)
e quais podem ser tratadas como fixas ou determinísticas;
• o específico critério de minimização empregado;
11Ver o site da LTC Editora para este livro.
12Às vezes, o termo operação de empilhamento é usado para descrever essa representação de uma imagem 2D, pois cada coluna original de pixels
é empilhada sobre outra de modo ordenado.
Solomon 06PDFG.indd 145 5/24/13 6:22:28 PM
146 Capítulo 6
• se desejamos impor alguma condição às soluções permitidas.
Examinaremos, primeiro, a solução mais simples: o estimador-padrão de mínimos quadráticos.
6.12 Solução-padrão de mínimos quadráticos
Consideremos o sistema de equações lineares descrito pela Equação (6.29). De um ponto de vista
conceitual, a solução mais simples consiste em escolher o valor de f que minimiza o comprimento
quadrático do vetor de erro n. Esse critério de mínimos quadráticos corresponde a ‘encontrar uma
estimativa f̂ que minimize a soma dos quadrados dos erros entre o verdadeiro vetor medido g e o
valor predito ĝ 5 Hf̂ ’. Reparemos que esse critério não faz qualquer hipótese explícita a respeito da
estatística de ruído ou de uma probabilidade a priori de vetores de solução específicos.
Assim, definimos a função escalar de custo
(6.30)
e buscamos um vetor de solução que minimize Q. Q é uma grandeza escalar que depende de muitos
parâmetros livres (todos os elementos do vetor de solução f̂). Calculando a derivada vetorial de Q em
relação a f na Equação (6.30) e obrigando que seja zero em um mínimo, impomos a seguinte condição
(6.31)
Reparemos que, por simplicidade, assumimos um processo de ruído de média zero ( 5 0), mas
resultado similar pode ser obtido para processos de ruído de média não zero.
A solução de mínimos quadráticos dada na Equação (6.31) é conceitualmente simples e fornece uma
forma fechada simples para o vetor ótimo f̂ .13 No entanto, essa solução tem diversas deficiências:
(1) A solução de mínimos quadráticos é ‘cega à imagem’. Com isso, queremos dizer que o objetivo
da solução é simplesmente a minimização do comprimento quadrático do vetor de erro e, em
consequência, ‘trata tudo da mesma forma’, ou seja, não leva em conta quaisquer propriedades
ou características específicas da imagem que possam ser importantes à percepção e que deseje-
mos preservar na imagem restaurada.
(2) Não há garantia de que exista uma verdadeira inversa para o termo (HTH)−1. Contudo, isso
pode ser contornado com o cálculo de uma pseudoinversa por meio da decomposição por va-
lores singulares de HTH.
(3) A solução não faz qualquer hipótese a respeito da possibilidade relativa de soluções particulares.
Em muitos casos, é razoável que tratemos o vetor de entrada como estocástico, em que certas
distribuições de entrada têm maior probabilidade a priori. Essa questão será tratada em breve.
6.13 Restauração com regularização de mínimos quadráticos
Na Seção 6.7, apresentamos uma discussão sobre deconvolução com regularização. Aqui, enfati-
zamos que vários estimadores úteis podem ser deduzidos via minimização de alguns operadores
13Detalhes da solução encontram-se no site da LTC Editora para este livro.
Solomon 06PDFG.indd 146 5/24/13 6:22:28 PM
RestauRação de imagens 147
lineares L específicos que atuam sobre a distribuição de entrada f sujeitos à condição de mínimos
quadráticos ||Hf − g||2 − ||n||2 5 0. Reparemos que essa condição foi mencionada na Seção 6.7 e é
equivalente, apesar da forma matricial, à Equação (6.14). Usando o método de multiplicadores de
Lagrange, formamos a função de custo escalar
(6.32)
e tomamos a derivada vetorial de Q em relação a f. A solução geral é
(6.33)
em que α 5 1/λ, inverso do multiplicador de Lagrange. Em princípio, a Equação (6.33) pode ser
usada para substituir f no termo condicional de ruído ||Hf − g||2 − ||n||2 5 0 e o valor de α pode ser
ajustado para assegurar que a condição de ruído seja, de fato, satisfeita. Na prática, o valor de α é,
muitas vezes, tratado como um parâmetro ajustável.
Notemos que algumas soluções específicas e interessantes podem ser obtidas por escolhas parti-
culares do operador linear L:
L 5 I: filtro de Wiener paramétrico
(6.34)
A similaridade com a Equação (6.10) é evidente. α atua como uma relação ruído/sinal e, obvia-
mente, no limite α → 0, a solução tende ao filtro inverso ou de mínimos quadráticos.
L 5 ∇2: filtro de máxima suavidade
(6.35)
em que a matriz Γ é a representação discreta do operador laplaciano.
As duas formas dadas nas Equações (6.34) e (6.35) são muito comuns; contudo, ressaltamos que,
em princípio, qualquer operador linear que possa ser implementadoem forma discreta pode ser
substituído na Equação (6.33).
Para encerrar essa breve discussão, notemos que a implementação computacional das várias so-
luções, como as nas Equações (6.31) e (6.33), não pode ser tentada de modo ingênuo. Isso se deve
ao tamanho excessivo da matriz do sistema H. Por exemplo, uma imagem digital de tamanho 5122
(muito modesto diante dos padrões atuais) resultaria em uma matriz do sistema com ~ 69.000 mi-
lhões de elementos; a inversão direta dessa matriz representa um cálculo enorme. A implementação
da Equação (6.33) e de formas similares discutidas nessa seção é possibilitada na prática pela natu-
reza esparsa de H (a maior parte dos elementos é zero) e pelo fato de que ela exibe padrões cíclicos,
que são uma consequência da invariância da PSF do sistema de captura de imagens em relação à
translação. H possui o que é conhecido como estrutura bloco-circulante, e algoritmos para o cálculo
eficiente de grandezas como HTH e sua inversa foram largamente desenvolvidos.14
6.14 Distribuições de entrada estocásticas e
estimadores bayesianos
Uma importante hipótese na dedução dos estimadores de mínimos quadráticos dados nas Equações
(6.22) e (6.24) é que a matriz de sistema H e a distribuição de entrada f sejam tratadas como grande-
14H.C. Andrews and B. Hunt (1977) Digital Image Restoration, Prentice-Hall (ISBN 0-13-214213-9). Embora possa ser considerado antigo, este
livro contém uma excelente e abrangente discussão dessas técnicas.
Solomon 06PDFG.indd 147 5/24/13 6:22:29 PM
148 Capítulo 6
zas determinísticas. Especificamente, parece que não poderia ser de outra forma. Afinal, um sistema
de captura de imagens cujas propriedades não variam com o tempo é, obviamente, determinístico.
Ademais, tratar a distribuição de entrada como uma grandeza determinística (ou seja, não aleatória)
parece muito razoável.
Considerar a distribuição de entrada como determinística é certamente aceitável em muitas situa-
ções. No entanto, às vezes, sabemos a priori que certas distribuições de entrada têm ocorrência mais
provável do que outras. No caso, podemos tratar a entrada como estocástica. Para ilustrar esse ponto,
consideremos um exemplo simples e atual. Se soubermos a priori que capturaremos a imagem de
um rosto humano (mas não sabemos de quem), é razoável que apenas certas configurações do vetor
F sejam aceitáveis como solução. No caso, consideramos que a distribuição de entrada pertença a
uma classe de padrões específica − um conceito que exploraremos no Capítulo 11, que trata de clas-
sificação. De modo sumário, uma classe de padrões é um grupo conceitual ou real de padrões que
compartilha certas características comuns, pois (em geral) eles são amostrados da mesma função
densidade de probabilidade. A especificação de um padrão individual na classe em questão é usual-
mente feita por meio de um vetor de N dimensões, onde cada elemento do vetor corresponde a uma
variável usada para descrever o padrão. Assim, se conhecermos a função densidade de probabilidade
do padrão de entrada (ou, até mesmo, apenas alguns de seus elementos), podemos tentar incluir tal
conhecimento no procedimento de estimação. Esta é a principal motivação por trás de toda a classe
de estimadores bayesianos. Em termos genéricos, métodos bayesianos são uma forma eficaz de bus-
car um equilíbrio adequado entre uma estimativa baseada somente em dados (a imagem registrada, a
PSF e as características de ruído) e nosso conhecimento prévio da probabilidade de ocorrência de certas
soluções. Encerraremos este capítulo com uma dedução simples e poderosa da teoria de estimação
‘clássica’, que incorpora a ideia do conhecimento prévio da probabilidade de ocorrência de soluções
sem invocar explicitamente o teorema de Bayes.15 Este é o famoso estimador de Gauss-Markov ge-
neralizado.
6.15 Estimador de Gauss-Markov generalizado
O ponto de partida é o sistema linear genérico dado na forma matricial na Equação (6.29):
Façamos as seguintes e importantes hipóteses a respeito de nosso modelo linear:
• A matriz do sistema H é uma grandeza determinística.
• O vetor de erro (ruído) é uma grandeza estocástica. Assumiremos que tem média zero (isto não
é restritivo, mas simplifica um pouco os cálculos) e função de covariância de erro conhecida, V 5
. A distribuição de entrada f é uma grandeza estocástica. Assumiremos, sem restringir a
análise, que f tem média zero e função de covariância conhecida, dada por Cf 5 .
• Assumiremos, ainda, que ruído e sinal são estatisticamente descorrelatados (uma condição satisfei-
ta na maioria dos casos). Assim, temos 5 5 0.
Os colchetes angulares denotam média de ensemble, considerando numerosas observações do pro-
cesso aleatório. Em princípio, as matrizes de covariância Cf e V são deduzidas de um número infinito
de suas respectivas realizações aleatórias. Na prática, devem ser estimadas a partir de um número
finito de observações.
15Vale comentar que muitos estatísticos seguem a teoria de estimação clássica (e não usam o teorema de Bayes) ou são ‘fanáticos por Bayes’ e
aplicam seu teorema em praticamente qualquer oportunidade. As duas abordagens produzem, no fim, resultados similares e a diferença entre
elas reside basicamente na perspectiva filosófica.
Solomon 06PDFG.indd 148 5/24/13 6:22:29 PM
RestauRação de imagens 149
Buscamos um estimador para a distribuição de entrada que seja dado por algum operador linear
que atue sobre os dados observados
(6.36)
e que minimize a matriz de covariância de erro da distribuição de entrada dada por
(6.37)
em que o operador matricial L deve ser determinado. Inserindo a Equação (6.36) na Equação (6.37)
e usando a definição Cf 5 , a grandeza a ser minimizada é
(6.38)
Como um desvio momentâneo, notemos que, embora o leitor certamente tenha familiaridade com a
notação relativa à minimização de uma função escalar de muitas variáveis, a noção da ‘minimização’
de uma grandeza matricial de múltiplas variáveis − como exigido pela Equação (6.38) − pode, no
entanto, ser novidade.16 A abordagem necessária consiste em tomar as primeiras variações de E em
relação ao operador linear L e igualá-las a zero. Isso fornece
(6.39)
A matriz ótima é, portanto, dada por
(6.40)
Cálculos com álgebra matricial mostram que essa equação também pode ser escrita como
(6.41)
A substituição do estimador ótimo dado pela Equação (6.41) na definição da matriz de covariância
de erro na distribuição de entrada dada pela Equação (6.37), fornece
(6.42)
A Equação (6.42) é uma expressão útil, pois fornece uma medida real da proximidade da entrada
reconstruída ou estimada à entrada verdadeira.
Ressaltamos duas formas limites de interesse para a Equação (6.41):
• Se assumirmos que não temos conhecimento prévio da distribuição de entrada, isso equivale a
tratá-la como uma grandeza determinística e permitir que Cf → ∞ (ou seja, variância/covariância
infinita é possível); no caso, o estimador de Gauss-Markov se reduz a
(6.43)
Este estimador é conhecido como BLUE (Best Linear Unbiased Estimator − melhor estimador
linear não polarizado).
16Isso guarda uma relação próxima com o cálculo de variações. Uma breve discussão sobre o assunto encontra-se no site da LTC Editora para
este livro.
Solomon 06PDFG.indd 149 5/24/13 6:22:30 PM
150 Capítulo 6
• Se, ademais, assumirmos que o ruído nos pixels tem igual variância s2 e é descorrelatado (uma
hipótese razoável em muitos casos), podemos escrever V 5 s2I e obtemos uma solução-padrão
de mínimos quadráticos:
(6.44)
Ressaltamos que a solução aqui apresentada é uma solução bastante geral ao problema linear.
Todavia, quando os sinais em questão são imagens, a implementação computacional das soluções
pode ser tentada somente com a exploração da natureza esparsa e da estrutura cíclica da matriz de
transferência do sistema.
Exemplos e exercícios adicionais estão disponíveis no site da LTC Editora para este livro.
Solomon 06PDFG.indd150 5/24/13 6:22:30 PM
7
Geometria
A necessidade de manipulações de geometria surge em muitas aplicações de processamento de ima-
gens. A remoção de distorções ópticas introduzidas por uma câmera, a ‘deformação’ (warping) da
geometria de uma imagem para conformá-la a alguma forma padrão de referência, e o registro pre-
ciso de duas ou mais imagens são alguns poucos exemplos que requerem um tratamento matemático
que envolve conceitos de geometria. Inextricavelmente relacionado à nossa discussão de geometria
no contexto de imagens está a noção de forma. Neste capítulo, apresentaremos uma definição preli-
minar de forma que introduz a base necessária à subsequente discussão de técnicas geométricas, que
compõem a maior parte do capítulo.
Ressaltamos que a definição de úteis descritores de forma e de métodos para seu cálculo automáti-
co tem um papel importante na extração de características, uma etapa essencial em técnicas de reco-
nhecimento de padrões. Em geral, descritores de forma usam ou reduzem duplas de coordenadas na
representação do vetor de forma para produzir uma medida da forma aproximada que seja compacta
ou, até mesmo, de um único parâmetro. A discussão dessas técnicas será feita no Capítulo 9.
7.1 Descrição de forma
O simples conceito de forma que temos na vida cotidiana implica a existência de algum contorno.
Quando nos referimos à forma de algum objeto como um charuto, uma bola de futebol ou um ovo,
nos referimos implicitamente ao contorno do objeto. Esses objetos são simples e a especificação das
coordenadas que constituem o contorno é considerada uma descrição matemática suficiente da for-
ma. No caso de objetos mais complexos, as coordenadas do contorno não são, em geral, matematica-
mente suficientes. Um bom exemplo disso é a face humana. Para uma descrição da forma da face que
seja precisa o bastante para permitir a discriminação entre duas faces, além do contorno da cabeça
torna-se necessário descrever todas as características internas, como olhos, nariz, boca, etc. Assim,
nossa descrição genérica de uma forma é tomada como algum conjunto ordenado de duplas de coor-
denadas (ou n-uplas, no caso de espaços de n dimensões) que consideremos suficiente para o pro-
pósito particular que tenhamos em mente. Uma das formas mais simples e diretas para a descrição
matemática de uma forma consiste em localizar um número finito N de pontos ao longo do contorno
e concatená-los para constituir um vetor de forma que, para um objeto 2D, denotaremos por
Em geral, os pontos que definem a forma podem ser selecionados e registrados manualmente ou
podem resultar de um procedimento automático.
No processamento de imagens, o tratamento de contornos e formas tem dois aspectos principais:
• Como, em uma imagem, identificamos e localizamos um contorno de definição de caracte-
rística?
Solomon 07PDFG.indd 151 21.05.13 13:58:16:10
152 Capítulo 7
• Como podemos, então, rotular contornos e características para produzir uma definição de forma
que faça sentido e seja útil?
O primeiro aspecto é muito importante e pertence ao grande domínio da segmentação de imagens.
Em geral, a segmentação de imagens diz respeito a métodos automáticos para a identificação de
contorno de objetos e de regiões de interesse em imagens, um tema que exploraremos no Capítulo
10. No restante deste capítulo, nos preocuparemos principalmente com o segundo aspecto, ou seja,
como definir descrições razoáveis de formas características em imagens e manipulá-las de modo a
alcançar os objetivos pretendidos. Assim, assumiremos implicitamente que segmentação manual (em
que um observador/operador define a região de interesse) seja apropriada ao problema em questão
ou que um método automático seja disponível para o delineamento do contorno.
7.2 Transformações que preservam a forma
A translação de um objeto de um lugar a outro, a rotação do objeto e a mudança de escala (ampliação)
de suas dimensões são operações que mudam as coordenadas do vetor de forma do objeto, mas não
mudam sua forma essencial (Figura 7.1). Em outras palavras, a forma de um objeto é algo basica-
mente definido por seu contorno e que é invariante sob translação, rotação e mudança de escala das
coordenadas que definem o contorno. Assim, adotaremos a seguinte definição de forma:
Forma• é toda informação geométrica que permanece depois que efeitos de localização, mudança de
escala e rotação tenham sido filtrados de um objeto.
Em consequência, objetos que têm formas idênticas podem ter vetores de forma bem diferente
e a simples descrição vetorial de forma dada na Seção 7.1 é parcialmente redundante. Se desejar-
mos descrever e comparar formas de um modo compacto e que faça sentido, devemos buscar uma
representação minimalista que remova essa redundância. Tal representação pode ser obtida com o
Figura 7.1 A forma é preservada sob as ope-
rações lineares de mudança de escala, trans-
lação e rotação.
Solomon 07PDFG.indd 152 21.05.13 13:58:17:10
Geometria 153
processo conhecido como alinhamento procustiano.* Esse procedimento aplica uma sequência das
três transformações que preservam forma, translação, mudança de escala e rotação, a dois (ou mais)
vetores de forma para torná-los o mais próximo possível um do outro; com isso, todas as diferen-
ças não essenciais entre as correspondentes formas são eliminadas. Este importante procedimento
é discutido na Seção 7.6. Antes, consideremos um procedimento simples que permite o tratamento
matemático de forma por meio da estrutura de álgebra matricial.
7.3 Transformação de forma e coordenadas homogêneas
Uma forma pode ser representada como conjuntos ordenados, em que as N duplas de coordenadas
euclidianas, {(x1, y1) ... (xN, yN)}, são escritas como as colunas de uma matriz S:
(7.1)
A representação S é, com frequência, referida como matriz de distribuição de ponto (PDM − Point
Distribution Matrix), pois cada coluna fornece a coordenada de um ponto na distribuição global.
A vantagem dessa representação é que transformações de forma podem ser efetuadas por simples
multiplicação de matrizes.
Em geral, o resultado da aplicação de uma matriz de transformação T 2 × 2 à PDM S é a produção
de um novo conjunto de coordenadas S′, dado por
(7.2)
Cada par de coordenadas é transformado como
(7.3)
em que os parâmetros aij controlam as características da transformação.
Por exemplo, operações como mudança de escala em duas dimensões, cisalhamento (shearing)
nas direções x e y e rotação por um ângulo θ em torno da origem podem ser expressas na forma da
matriz 2 × 2 descrita na Equação (7.3). Explicitamente, as matrizes correspondentes às operações
citadas são dadas, respectivamente, por:
(7.4)
em que os escalares s e a são os fatores de escala e de cisalhamento, respectivamente.
Todavia, reparemos que a simples operação de translação de ponto
(7.5)
não pode ser efetuada por meio de uma multiplicação matricial como na Equação (7.3) e requer uma
adição vetorial.
*Também denominado alinhamento de Procusto ou alinhamento de Procrustes. Procusto é um personagem da mitologia grega que atraía viajan-
tes a sua casa. Quando o corpo do viajante não se ajustava às dimensões da cama, Procusto esticava ou cortava parte de seus membros. Procusto,
portanto, ajustava os visitantes ao leito. Daí a expressão leito de Procusto. (N.T.)
Solomon 07PDFG.indd 153 21.05.13 13:58:18:10
154 Capítulo 7
A operação de translação é muito comum. Com frequência, o que desejamos é referir um con-
junto de coordenadas à origem do escolhido sistema de coordenadas, aplicar uma ou mais transfor-
mações aos dados e, então, devolvê-los ao sistema de coordenadas original. Por questões práticas, é
altamente desejável que sejamos capazes de expressar todas essas operações lineares (mudança de
escala, rotação, cisalhamento e translação) por meio da mesma operação matemática de multiplica-
ção de matrizes. Isto pode ser alcançado com o uso de coordenadas homogêneas.
Em coordenadaspoder de representação (ou tamanho) de uma imagem é definido por sua resolução. A resolução
de uma fonte de imagens (como uma câmera) pode ser especificada em termos de três grandezas:
• Resolução espacial. As dimensões colunas (C) versus linhas (R) de uma imagem definem o nú-
mero de pixels usados para cobrir o espaço visual capturado pela imagem. Esta grandeza está re-
lacionada à amostragem do sinal de imagem e, algumas vezes, é referida como resolução de pixel
ou digital da imagem. É comumente denotada como C 3 R (por exemplo, 640 3 480, 800 3 600,
1024 3 768, etc.).
*R de red (vermelho), G de green (verde) e B de blue (azul), as cores básicas. (N.T.)
Figura 1.2 Exemplos de visualizações em escala de cinza (à esquerda) e em falsa cor (à direita). (Veja o
encarte em cores.)
Solomon 01PDFG.indd 3 14.05.13 19:16:39:10
4 Capítulo 1
• Resolução temporal. No caso de um sistema de captura contínua, como vídeo, esta grandeza
representa o número de imagens capturadas em um dado intervalo de tempo. É comumente dada
em quadros por segundo (qps), sendo cada imagem individual referida como um quadro de vídeo
(por exemplo, a difusão de TV opera com 25 qps; 25−30 qps são adequados à maioria dos sistemas
visuais de vigilância; câmeras com taxas de quadros mais altas são disponíveis para a captura de
imagens especializadas para aplicações de ciência/engenharia).
• Resolução de bit. Esta grandeza define o número de valores possíveis de intensidade/cor que um
pixel pode ter e está relacionada à quantização da informação da imagem. Por exemplo, uma ima-
gem binária tem somente duas cores (preto ou branco); uma imagem em escala de cinza tem, em
geral, 256 diferentes tons de cinza, variando do preto ao branco; uma imagem colorida tem uma
resolução de bit que depende do espectro de cores em uso. A resolução de bit é comumente dada
pelo número de bits binários necessários para o armazenamento da informação. Por exemplo, a
resolução de bit de uma imagem binária é de 2 bits; a de uma imagem em escala de cinza, 8 bits,
a de uma imagem colorida (mais frequente), 24 bits. O intervalo de valores que um pixel pode
assumir é, muitas vezes, referido como faixa dinâmica (dymanic range) da imagem.
É importante reconhecer que a resolução de bit de uma imagem não corresponde necessariamente à
resolução do sistema que gerou a imagem. Uma característica comum de câmeras é o ganho automático:
as respostas mínima e máxima no campo da imagem são medidas e este intervalo é automaticamente
dividido em um número conveniente de bits (ou seja, é digitalizado em N níveis). Com isso, a resolução
de bit da imagem se torna menor do que aquela que, em princípio, pode ser obtida com a câmera.
Em contraste, a conversão cega, sem ajuste, de um sinal analógico em um dado número de bits,
por exemplo 216 5 65.536 níveis discretos, não implica que a verdadeira resolução do dispositivo
geradora da imagem seja, de fato, de 16 bits. Isto ocorre porque o nível total de ruído (flutuação alea-
tória) no sensor e na subsequente cadeia de processamento pode ter uma magnitude maior do que
um nível digital. A sensibilidade de um sistema gerador de imagem é, portanto, fundamentalmente
estabelecida pelo ruído; isto faz do ruído um fator essencial na determinação do número de níveis de
quantização usados na digitalização. Não faz sentido digitalizar uma imagem em um grande número
de bits se o nível de ruído presente no sensor gerador da imagem assim não o permitir.
1.2.1 Decomposição em plano de bit
A relevância visual de cada bit de pixel de uma imagem pode ser avaliada de uma forma subjetiva,
mas útil, por meio da técnica de decomposição em plano de bit.
Para ilustrar o conceito, imaginemos uma imagem de 8 bits, que permite valores de bit inteiros
entre 0 e 255. Tal imagem pode ser conceitualmente decomposta em oito planos de bit separados,
cada um correspondendo aos valores de um dado bit em todos os pixels da imagem. O primeiro pla-
no de bit contém o primeiro e mais significativo bit de informação (intensidade 5 128); o segundo
plano, o segundo bit mais significativo (intensidade 5 64) e assim por diante. Ao exibir os planos de
bit sucessivamente, podemos discernir se neles há alguma estrutura visível.
Na Figura 1.3, mostramos os planos de bit de uma imagem em escala de cinza de 8 bits da roda
de um carro, ordenados do bit mais significativo para o bit menos significativo. Fica aparente que os
dois ou três bits menos significativos não codificam muita informação visual (na verdade, em sua
maioria, são ruído). A sequência de imagens à direita, na Figura 1.3, mostra o efeito sobre a imagem
original quando planos de bit são sucessivamente fixados em zero (do primeiro e mais significativo
bit para o menos significativo). Vemos que parece não haver muita informação visual codificada nos
últimos bits. Neste caso específico, podemos esperar que, se mantivermos apenas os cinco bits mais
significativos, obteremos uma imagem que, visualmente, será quase idêntica à original. Uma aná-
lise desse tipo pode nos levar a um método mais eficiente de codificar imagens usando um menor
Solomon 01PDFG.indd 4 14.05.13 19:16:39:10
RepResentação 5
número de bits − um método de compressão de imagens. Isto será discutido a seguir, como parte da
exploração de formatos de armazenamento de imagens.
1.3 Formatos de imagens
De um ponto de vista matemático, qualquer conjunto bidimensional de números que faça algum
sentido pode ser considerado como uma imagem. No mundo real, existe uma necessidade de mé-
todos eficientes de exibição, armazenamento (de preferência, modo compacto) e transmissão de
imagens por redes, assim como uma necessidade de reconhecer corpos de dados numéricos que
correspondam às imagens. Isto levou ao desenvolvimento de formatos padronizados de imagens
digitais. Em termos simples, os formatos de imagem consistem em um cabeçalho de arquivo (que
contém informação sobre a forma exata em que os dados foram armazenados) e os valores numé-
ricos de pixels. Há um grande número de formatos de imagens reconhecidos, resultado de mais de
30 anos de armazenamento de imagens digitais. Alguns dos formatos bidimensionais mais comuns
estão listados na Tabela 1.1. Os conceitos de compressão com e sem perda estão detalhados na
Seção 1.3.2.
Como sugerem as propriedades listadas na Tabela 1.1, um dado formato de imagem pode ser mais
apropriado a uma certa aplicação do que outros. GIF é um formato muito básico de armazenamento
de imagens, sendo limitado a apenas 256 níveis de cinza ou de cores, que são definidas por meio de
um mapa de cor no cabeçalho do arquivo, como dito anteriormente. Em contraste, o formato comum
JPEG permite o armazenamento de imagens coloridas RGB de até 24 bits e, para aplicações médicas/
Figura 1.3 Exemplo de decomposição em planos de bits de uma imagem em escala de cinza.
Solomon 01PDFG.indd 5 14.05.13 19:16:40:10
6 Capítulo 1
científicas, de até 36 bits; este formato é mais largamente utilizado em sistemas de imagens para o
público consumidor, como câmeras digitais. Outros formatos comuns incluem o formato básico em
bitmap [mapa de bit] (BMP), originado no desenvolvimento do sistema operacional Windows da
Microsoft, e o novo formato PNG, projetado como um substituto mais poderoso para GIF. O formato
TIFF, tagged image file format [formato de arquivo de imagem com rótulo], representa um formato
de arquivo abrangente e adaptável, capaz de armazenar uma grande variedade de formas de dados de
imagens. Em geral, imagens fotográficas são mais adequadas ao armazenamento nos formatos JPEG
e TIF, enquanto imagens de cores/detalhes limitados (como logotipos, gráficos e texto) são mais ade-
quadas ao armazenamento nos formatos GIF e PNG (assim como TIFF), pois um formato colorido e
sem perda é adaptável à maioria das exigências de armazenamento de imagens.
1.3.1 Tipos de dados de imagens
A escolha do formato de imagem pode, em grande parte, ser determinado não apenas pelohomogêneas, expressamos vetores de forma 2D
em um espaço com uma dimensão a mais
em que w é uma constante arbitrária. Para nossos propósitos, selecionamos w = 1, de modo que, em
coordenadas homogêneas, vetores de forma 2D sejam dados pela forma geral
De modo similar, a matriz de transformação genérica 2 × 2 T descrita na Equação (7.3) passa a ser ex-
pressa como uma matriz 3 × 3 (uma dimensão a mais ⇒ uma coluna e uma linha a mais) da forma
(7.6)
Neste ponto, cabe a pergunta: por que a introdução de coordenadas homogêneas nessa forma apa-
rentemente arbitrária é razoável?1 Por um lado, podemos pensar em coordenadas homogêneas sim-
plesmente como um artifício computacional que nos permite incluir a operação de translação na re-
presentação matricial de transformações lineares. Por questões práticas, isto é adequado e a utilidade
dessa abordagem ficará aparente nas seções seguintes. Por outro lado, coordenadas homogêneas têm
um significado mais profundo, relacionado ao uso de espaços projetivos como meio de remover o
papel especial da origem no sistema cartesiano. Lamentavelmente, uma discussão detalhada desse
assunto foge do escopo deste texto.
7.4 Transformação afim 2D genérica
Consideremos uma dupla de coordenadas (x, y) sujeita a uma transformação linear do tipo
(7.7)
em que a, b, c, d, e e f são coeficientes arbitrários. Uma transformação como esta é uma transforma-
ção (linear) afim 2D.
1A adição de uma coordenada para expressar vetores em coordenadas homogêneas se estende a três ([x, y, z] → [x, y, z, 1]) ou mais dimensões.
Solomon 07PDFG.indd 154 21.05.13 13:58:19:10
Geometria 155
Fica evidente que uma transformação afim no espaço 2D tem seis parâmetros livres. Dois desses
parâmetros (c e f) definem o vetor que corresponde à translação do vetor de forma; os outros quatro
(a, b, d, e) permitem uma combinação de rotação, mudança de escala e cisalhamento.
De uma perspectiva geométrica, o efeito da transformação afim genérica sobre a forma pode ser
resumido como:
Transformação afim: translação, rotação, mudança de escala, alongamento e cisalhamento podem ser
incluídos. Linhas retas permanecem retas, retas paralelas permanecem paralelas, embora retângulos pos-
sam se tornar paralelogramos.
É importante ressaltar que a transformação afim genérica (em que nenhuma restrição é imposta
aos coeficientes) permite cisalhamento e, portanto, não preserva a forma.
No sistema de coordenadas cartesianas, a transformação afim 2D (Equação (7.7)) pode ser escrita
com facilidade na forma matricial:
(7.8)
Em geral, a transformação afim é aplicada não apenas a uma única dupla de coordenadas, mas às
muitas duplas que constituem a PDM. A forma matriz-vetor da Equação (7.8) se torna inconveniente
quando consideramos uma sequência de transformações. Idealmente, gostaríamos de determinar um
único operador (ou seja, uma única matriz) que expressasse o resultado final da sequência de transfor-
mações para aplicá-lo diretamente às coordenadas de entrada. A necessidade de, na Equação (7.8), adi-
cionar o vetor de translação d após cada transformação impede que possamos fazer isso. Para contornar
tal dificuldade, podemos expressar a transformação afim em coordenadas homogêneas.
7.5 Transformação afim em coordenadas homogêneas
No sistema de coordenadas homogêneas, uma dimensão é adicionada, e a PDM S passa a ser definida
por uma matriz aumentada, em que uma linha de 1s é inserida abaixo das coordenadas 2D:
(7.9)
Em coordenadas homogêneas, a transformação afim assume a forma geral
(7.10)
em que os parâmetros a13 e a23 correspondem aos parâmetros de translação (c e f) na Equação (7.7),
e o bloco de quatro parâmetros
corresponde diretamente a a, b, d e e.
Solomon 07PDFG.indd 155 21.05.13 13:58:19:10
156 Capítulo 7
A Tabela 7.1 resume como os parâmetros na transformação afim são escolhidos para efetuar as
operações de translação, rotação, mudança de escala e cisalhamento. A Figura 7.2 ilustra o efeito de
cada transformação em um quadrado cujo centro está na origem e o lado tem comprimento de 2
unidades.
Usando as formas homogêneas para as matrizes de transformação e de forma, podemos expressar
as coordenadas de forma transformada como
(7.11)
Vale ressaltar a seguinte importante propriedade da transformação afim:
• Qualquer sequência de transformações afins se reduz a uma única transformação afim. Uma se-
quência de transformações afins representada pelas matrizes (T1, T2, ..., TN) aplicada à distribuição
de entrada S pode ser representada por uma única matriz T = T1T2, ...TN, que opera sobre S.
Tabela 7.1 Valores de coeficientes para efetuar as transformações lineares de translação, rotação, mudança
de escala e cisalhamento em coordenadas homogêneas
Transformação a11 a12 a13 a21 a22 a23
Translação por (x, y) 1 0 x 0 1 y
Rotação por θ cos θ 2sen θ 0 sen θ cos θ 0
Mudança de escala uniforme por s s 0 0 0 s 0
Cisalhamento vertical por s 1 s 0 0 1 0
Cisalhamento horizontal por s s 0 0 s 1 0
Figura 7.2 Transformações lineares básicas e efeitos correspondentes. As matrizes de transformação T e a
matriz de distribuição de ponto original S são expressas em coordenadas homogêneas. (O código Matlab usado
para gerar esta figura está disponível no site da LTC Editora para este livro.)
Solomon 07PDFG.indd 156 21.05.13 13:58:21:10
Geometria 157
A menos que seja explicitamente especificado de outra forma, assumiremos, daqui em diante neste
capítulo, o uso de coordenadas homogêneas.
7.6 Transformação procustiana
A transformação procustiana (ou de Procusto) é um caso especial da transformação afim genérica
descrita na Equação (7.10) e talvez seja a forma mais importante de transformação afim no campo
da análise de forma. A principal propriedade da transformação procustiana é que a multiplicação de
qualquer modelo de distribuição de ponto pela matriz procustiana preserva a forma. Por essa razão,
tal transformação é essencial em muitas tarefas de alinhamento de formas e imagens. Em coordena-
das homogêneas, a transformação procustiana genérica 2D é dada por
(7.12)
A matriz procustiana tem somente quatro parâmetros livres (em contraste com a transformação afim
genérica, que tem seis). Isso advém do fato de a transformação procustiana ser uma combinação das três
operações que preservam forma, translação, rotação e mudança de escala, e de podermos decompô-la em
três sucessivas operações de translação (X), rotação (R) e mudança de escala (S): T 5 SRX, em que
(7.13)
Para que essa sequência defina a transformação procustiana, a translação deve ser aplicada primeiro,2
mas a ordem da rotação e da mudança de escala é irrelevante. Multiplicando as matrizes na Equação
(7.13) e igualando o resultado à forma genérica definida na Equação (7.12), obtemos
(7.14)
O uso mais comum da transformação procustiana é em um procedimento conhecido como alinha-
mento procustiano (ou de Procusto). Isto envolve o alinhamento de uma ou mais formas a uma parti-
cular forma de referência. O critério para alinhamento é a determinação da combinação de translação,
rotação e mudança de escala (ou seja, dos quatro parâmetros bx, by, u e S) que minimize a soma das dis-
tâncias quadráticas medidas entre pontos correspondentes nos contornos da dada forma e referência.
7.7 Alinhamento procustiano
O procedimento de alinhamento procustiano é conceitualmente simples, e está resumido grafica-
mente na Figura 7.3. A dedução matemática apresentada a seguir produz a precisa combinação de
translação, mudança de escala e rotação necessária para obter a minimização.
Consideremos dois conjuntos de N coordenadas ordenadas como as colunas das matrizes de dis-
tribuição de ponto X e Y. No espaço 2D, estes conjuntos são escritos como:
(7.15)
2Isto é essencial, pois a subsequente rotação é definida em torno da origem, e a rotação em um modelo de ponto cujo centroide não esteja na
origem modificará a forma do modelo de ponto.
Solomon 07PDFG.indd 157conteúdo da
imagem, mas também pelo tipo de dados de imagem necessários ao armazenamento. Além da resolução
de bit de uma dada imagem, discutida anteriormente, há vários outros aspectos associados a imagens:
• Imagens binárias são matrizes (ou conjuntos) bidimensionais (2D) que alocam um valor numéri-
co do conjunto {0, 1} a cada pixel de imagem. Tais imagens são, às vezes, referidas como imagens
lógicas; o preto corresponde a zero (um pixel “desligado” ou de “fundo”) e o branco, à unidade
(pixel “ligado” ou “frontal”). Como nenhum outro valor é permitido, estas imagens podem ser
representadas por meio de uma simples sequência de bits; contudo, na prática, são representadas
como imagens de inteiros de 8 bits nos formatos comuns. Uma imagem de fax (ou fac-símile) é
um exemplo de imagem binária.
• Imagens de intensidade ou escala de cinza são matrizes (ou conjuntos) 2D que alocam um valor
numérico a cada pixel que representa a intensidade em um ponto. Como discutido anteriormente,
o intervalo de valores assumidos pelo pixel é limitado pela resolução de bit da imagem; este tipo
de imagem é armazenado como imagens de inteiros de N bits, em um dado formato.
• Imagens RGB ou de cores reais são matrizes (ou conjuntos) tridimensionais (3D) que alo-
cam três valores numéricos a cada pixel; cada valor corresponde, respectivamente, a uma das
componentes vermelho, verde e azul (RGB) do canal de imagem. Conceitualmente, podemos
considerar imagens desse tipo como três planos 2D distintos, de modo que sua dimensão é
Tabela 1.1 Formatos de imagens comuns e correspondentes propriedades
Acrônimo Denominação* Propriedades
GIF Graphics interchange format [Formato para
intercâmbio de imagens]
Limitado a apenas 256 cores (8 bits); compressão
sem perda
JPEG Joint Photographic Experts Group [Grupo
Misto de Especialistas Fotográficos]
Formato de uso mais comum atualmente;
compressão com perda, existe variante sem perda
BMP Bit map picture [Imagem em mapa de bit] Formato básico de imagem; conversão sem perda
(em geral) limitada; existem variantes com perda
PNG Portable network graphics [Imagens portáteis
para redes]
Novo formato de compressão sem perda; projetado
para substituir GIF
TIF/TIFF Tagged image (file) format [Formato (de
arquivo) de imagem com rótulo]
Formato muito flexível, detalhado e adaptável;
existem variantes comprimidas/descomprimidas
*A tradução da denominação é apenas ilustrativa, pois, em geral, não é usada na prática, no Brasil. Os formatos são referidos quase sempre pelo
correspondente acrônimo. (N.T.)
Solomon 01PDFG.indd 6 14.05.13 19:16:41:10
RepResentação 7
C × R × 3, em que C é o número de colunas de imagem e R, o número de linhas de imagem.
Em geral, tais imagens são armazenadas como inteiros sequenciais em canais ordenados (por
exemplo, R0G0B0, R1G1B1, ...), que são, então, acessados (como em Matlab) por coordenadas
I(C, R, canal) na matriz 3D. Outras representações de cores, que discutiremos posterior-
mente, também são armazenadas segundo o conceito de matriz (ou conjunto) 3D, que pode
ser estendido (começando numericamente de 1 com matrizes de Matlab) a quatro ou mais
dimensões para acomodar informação adicional de imagem, como um canal alfa (de transpa-
rência) (como no caso de imagens no formato PNG).
• Imagens em ponto flutuante diferem dos outros tipos de imagens já discutidos. Por defi-
nição, não armazenam valores inteiros de cores, mas sim, um número em ponto flutuante
que, em um dado intervalo definido pela precisão de ponto flutuante da resolução de bit
da imagem, representa a intensidade. Tais números podem representar um valor medido
como parte de uma imagem científica ou médica que não seja simplesmente intensidade
ou cor. Imagens em ponto flutuante são comumente armazenadas no formato TIFF ou
algum formato mais especializado de domínio público (como o DICOM médico). Embora
imagens em ponto flutuante encontrem uso crescente devido ao emprego de fotografias de
grande faixa dinâmica e estéreo, os formatos de arquivos que suportam seu armazenamento
ainda são limitados.
A Figura 1.4 mostra exemplos dos diferentes tipos de dados de imagens discutidos, com os corres-
pondentes formatos usados no armazenamento. Embora a maioria das imagens que encontraremos
Figura 1.4 Exemplos de diferentes tipos de imagens e seus correspondentes formatos de armazenamento.
Solomon 01PDFG.indd 7 14.05.13 19:16:42:10
8 Capítulo 1
neste livro seja do tipo de dados inteiros, Matlab pode ser empregado para processar imagens em
ponto flutuante, pois é uma ferramenta de análise de dados baseada em matrizes.
1.3.2 Compressão de imagens
Outra grande preocupação na escolha de um formato de armazenamento de imagem é a compressão.
Embora a compressão de uma imagem possa implicar a ocupação de menor espaço para armaze-
namento e menor tempo para transmissão em uma rede, diversas técnicas de compressão em uso
exploram o que é conhecido como compressão com perda. Nessa técnica, a informação redundante é
removida da imagem.
Como mostrou o exemplo de decomposição em plano de bit na Seção 1.2.1 (Figura 1.3), é possível
remover alguma informação de uma imagem sem qualquer mudança visual aparente. Essencialmen-
te, se a informação for visualmente redundante, sua transmissão é desnecessária para a apreciação da
imagem. A forma da informação que pode ser removida tem dois aspectos. Ela pode estar relaciona-
da a pequenos detalhes da imagem (como no exemplo de decomposição em plano de bit) ou pode
corresponder a uma redução no número de níveis de cor/escala de cinza que não seja perceptível
pelo olho humano.
Alguns dos formatos de imagens discutidos anteriormente armazenam os dados em forma com-
primida (Tabela 1.1). O armazenamento de uma imagem em um dos formatos de compressão em-
prega vários algoritmos para reduzir os dados brutos da imagem a uma imagem equivalente que
pareça idêntica (ou quase), mas requeira menos espaço. É importante distinguir entre a compressão
que permite que a imagem original seja reconstruída perfeitamente a partir dos dados reduzidos sem
qualquer perda de informação (compressão sem perda) e as chamadas técnicas de compressão com
perda que reduzem o volume de armazenamento (algumas vezes, de forma dramática) às custas de
alguma perda de detalhes da imagem original. Como mostrado na Figura 1.5, as técnicas de com-
pressão com e sem perda usadas em formatos comuns de imagem podem reduzir de modo signifi-
cativo a quantidade de informação que precisa ser armazenada; contudo, a compressão com perda
pode levar a considerável redução na qualidade da imagem.
Compressão com perda também é muito usada para armazenamento de vídeo, devido ao volume
ainda maior de dados-fonte associados a uma grande sequência de quadros de imagens. Essa perda
de informação — uma forma de ruído introduzida na imagem como artefatos de compressão — pode
limitar a eficácia da melhoria e análise da imagem posteriores.
Em termos do processamento prático de imagens em Matlab, devemos notar que uma imagem
escrita a partir de Matlab em um arquivo em um formato com compressão com perda (por exemplo,
JPEG) não será armazenada como a representação original exata da imagem em Matlab. Valores de
pixels da imagem serão alterados no processo de produção da imagem, como resultado da compres-
são com perda. Isto não ocorre quando uma técnica de compressão sem perda é empregada.
Um exercício interessante de Matlab é proposto no Exercício 1.4 para ilustrar esta diferença entre
armazenamento nos formatos de arquivo JPEG e PNG.
1.4 Espaços de cor
Como mencionamos brevemente na discussão anterior sobre tipos de imagens, a representação de
cores em uma imagem é alcançada com o uso de uma combinação de um ou mais canais de cor; estes
são combinados para formar a cor usada na imagem. A representação usada para armazenar as cores
e especificar o número e a natureza dos canais de cor é geralmente referida como espaço de cor.
Quando considerada comouma entidade matemática, uma imagem é apenas um conjunto de
números espacialmente organizados, sendo cada posição de pixel representada como I(C, R). Ima-
gens em escala de cinza (imagens de intensidade) ou binárias são conjuntos 2D que alocam um valor
Solomon 01PDFG.indd 8 14.05.13 19:16:42:10
RepResentação 9
numérico a cada pixel que representa a intensidade em um ponto. Estas imagens utilizam um espaço
de cor − limitado a 2 bits (binária) ou à intensidade (escala de cinza) − de apenas um canal. Em con-
traste, imagens RGB ou em cores reais são conjuntos 3D que alocam três valores numéricos a cada
pixel, correspondendo às componentes vermelho, verde e azul, respectivamente.
1.4.1 RGB
Imagens RGB (ou em cores reais) são matrizes 3D que podem ser conceitualmente consideradas
como três planos 2D distintos, cada um correspondendo a um dos três canais de cor − vermelho (R),
verde (G) e azul (B). RGB é o espaço de cor mais usado para a representação de imagens digitais, pois
corresponde às três cores primárias que são misturadas para exibição de imagens em um monitor ou
dispositivo similar.
Podemos facilmente separar e ver as componentes vermelho, verde e azul de uma imagem em
cores reais, como mostrado na Figura 1.6. É importante ressaltar que as cores apresentadas em uma
imagem real são, quase sempre, uma mistura das componentes de cor dos três canais. Um erro con-
ceitual comum é que, por exemplo, itens percebidos como azul aparecerão somente no canal azul, e
assim por diante. Embora itens percebidos como azul certamente apareçam mais intensos no canal
azul (ou seja, contêm mais luz azul do que de outras cores), também terão componentes mais fracas
de vermelho e verde.
Figura 1.5 Exemplo de compressão de imagem sem perda e com nível variável de perda. (Veja o Encarte em
cores.)
Solomon 01PDFG.indd 9 14.05.13 19:16:43:10
10 Capítulo 1
Se considerarmos todas as cores que podem ser representadas com a descrição RGB, percebe-
remos que o espaço de cor RGB é essencialmente um espaço de cor 3D (cubo) com eixos R, G e B
(Figura 1.7). Os três eixos têm a mesma faixa de valores 0 → 1 (correspondendo à faixa 0−255 na
representação usual de 1 byte por canal de cor, para a representação de imagens de 24 bits). O preto
ocupa a origem do cubo (posição (0, 0, 0)), correspondendo à ausência das três cores; o branco ocupa
o vértice oposto (posição (1, 1, 1)), indicando o valor máximo das três cores. Todas as outras cores
do espectro estão contidas neste cubo.
O espaço de cor RGB é baseado na porção do espaço eletromagnético visível aos humanos (ou seja,
o intervalo contínuo de comprimentos de onda na faixa aproximada de 400−700 nm). O olho humano
tem três diferentes tipos de receptores de cor, com os quais tem absorção limitada (e não uniforme) de
cada um dos três comprimentos de onda, vermelho, verde e azul. Por isso, como veremos mais adiante,
a transformação de cores para escala de cinza usa uma combinação não linear dos canais RGB.
No processamento digital de imagens, usamos um modelo de cor RGB simplificado (baseado no sis-
tema de cor CIE de 1931*), otimizado e padronizado para a exibição de imagens. Contudo, o principal
problema de RGB é ter um caráter não linear de percepção. Com isto, queremos dizer que um desloca-
mento em uma dada direção no cubo de cores RGB (Figura 1.7) não produz necessariamente uma cor
que seja percebida em consistência com a mudança ocorrida em cada canal. Por exemplo, começando
do branco, a subtração da componente azul produz amarelo; começando com vermelho, a adição da
componente azul produz rosa. Por este motivo, os humanos têm inerente dificuldade em trabalhar e ra-
ciocinar com o espaço RGB, pois ele não guarda uma relação natural com o modo em que percebemos
as cores. Como alternativa, podemos usar representações de percepção de cores como a HSV.
1.4.1.1 Conversão de imagens RGB em escala de cinza
Podemos efetuar a conversão de uma imagem no espaço de cor RGB em uma imagem em escala de
cinza por meio de uma simples transformação. A conversão em escala de cinza é o ponto inicial de
*Commission Internationale de l’Éclairage [Comissão Internacional de Iluminação]. (N.T.)
Figura 1.6 Imagem colorida RGB separada em seus canais de cor vermelho (R), verde (G) e azul (B). (Veja o
Encarte em cores.)
Solomon 01PDFG.indd 10 14.05.13 19:16:44:10
RepResentação 11
muitos algoritmos de análise de imagens, pois simplifica (reduz) a quantidade de informação na ima-
gem. Embora uma imagem em escala de cinza contenha menos informação do que uma imagem em
cores, a maioria das informações importantes e relacionadas às características da imagem é mantida,
como bordas, regiões, manchas, junções etc. Algoritmos de detecção de características e de processa-
mento operam sobre a versão da imagem em escala de cinza. Como podemos ver na Figura 1.8, em
escala de cinza, ainda é possível distinguir entre as maçãs vermelha e verde.
Uma imagem em cores RGB, Icores, é convertida em escala de cinza, Iescala de cinza, por meio da seguinte
transformação:
Iescala de cinza (n, m) 5 aIcores (n, m, r) 1 bIcores (n, m, g) 1 gIcores (n, m, b) (1.1)
em que (n, m) designa a posição de um pixel na imagem em escala de cinza e (n, m, c), um dado canal
de cor na posição do pixel; c deve ser substituído por r para o canal vermelho, por g para o canal verde
Figura 1.7 Ilustração do espaço de cor RGB como
um cubo 3D. (Veja o Encarte em cores.)
Figura 1.8 Exemplo de conversão de imagem em cores RGB (esquerda) em escala de cinza (direita). (Veja o
Encarte em cores.)
Solomon 01PDFG.indd 11 14.05.13 19:16:45:10
12 Capítulo 1
e por b para o canal azul. Como fica aparente na Equação (1.1), a imagem em escala de cinza é, basica-
mente, uma soma ponderada dos canais de cor vermelho, verde e azul. Os coeficientes de ponderação
(a, b, g) são fixados proporcionalmente à resposta perceptual do olho humano para cada um dos canais
de cor vermelho, verde e azul, e uma ponderação padronizada assegura a uniformidade (por exemplo,
no sistema NTSC de televisão, a 5 0,2989, b 5 0,5870, g 5 0,1140). O olho humano é naturalmente
mais sensível às luzes vermelha e verde; assim, essas cores recebem pesos maiores para assegurar que o
equilíbrio relativo de intensidades na resultante imagem em escala de cinza é similar ao da imagem em
cores RGB. A conversão em escala de cinza em Matlab é ilustrada no Exemplo 1.6.
A conversão RGB em escala de cinza é uma transformação de imagem não invertível: a informa-
ção de cores reais perdida na conversão não é prontamente recuperável.
1.4.2 Espaço de cor perceptual
O espaço de cor perceptual é um modo alternativo de representar imagens em cores reais, mais natural
à percepção e à compreensão humanas das cores do que a representação RGB. Embora existam muitas
representações alternativas de cores, nos concentraremos no espaço de cor HSV − Hue [matiz, tonali-
dade], Saturation [saturação], Value [valor], muito popular em aplicações de análise de imagens.
Neste espaço de cor, as alterações seguem um gradiente de cor aceitável segundo a perspectiva de
percepção. No que diz respeito à análise de imagens, este espaço de cor permite um grande grau de
separação entre cor e iluminação. A Figura 1.9 ilustra como uma imagem RGB pode ser transforma-
da em uma representação no espaço de cor HSV.
Os três parâmetros HSV podem ser interpretados da seguinte forma:
• H (matiz ou tonalidade) é o comprimento de onda dominante da cor; por exemplo, vermelho,
azul, verde
• S (saturação) é a “pureza” da cor (no sentido da quantidade de luz branca nela misturada na mesma)
• V (valor) é a brilhância da cor (também referido como luminância).
A representação HSV de uma imagem 2D também é uma matriz 3D que contém os três canais
(h, s, v), e cada localização de pixel na imagem, I(n, m), contém um tripleto (h, s, v) que pode ser
transformado de volta ao formato RGB de cores reais. Na implementação HSV de Matlab, cada um
Figura 1.9Espaço de cor HSV como um cone 3D.
(Veja o Encarte em cores.)
Solomon 01PDFG.indd 12 14.05.13 19:16:46:10
RepResentação 13
dos parâmetros h, s, v é limitado à faixa 0 → 1. Por exemplo, um matiz azul (parte superior do cone
na Figura 1.9) pode ter um valor h 5 0,9, uma saturação s 5 0,5 e um valor v 5 1, representando um
azul-céu vibrante e brilhante.
Ao examinar cada canal de cor de imagens no espaço HSV, podemos perceber que objetos-
imagem estão contidos de forma mais consistente no resultante campo de matiz do que nos canais
da representação RGB, apesar da presença de condições variáveis de iluminação sobre a cena (Fi-
gura 1.10). Por isso, o espaço HSV é muito utilizado na segmentação de imagens com base em cor,
segundo uma técnica conhecida como decomposição de cores. Uma porção do disco de matiz de
cor (uma fatia do cone na Figura 1.9) é isolada como a faixa de cores de interesse, permitindo que
objetos neste espaço de cor sejam identificados na imagem. Esta facilidade de seleção de cor tam-
bém contribui para o largo uso do espaço de cor HSV como o método preferencial para a seleção
de cor em interfaces gráficas de computadores, assim como um método de adição de falsa cor a
imagens (Seção 1.1.2).
Detalhes da conversão de imagens RGB a HSV em Matlab são explorados no Exercício 1.6.
1.5 Imagens em Matlab
Uma vez apresentados os fundamentos da representação de imagens, voltamos a atenção ao aspec-
to prático deste livro e passamos a explorar os estágios iniciais da manipulação de imagens com
Matlab. Estes fundamentos são apresentados por meio de exemplos resolvidos e exercícios para
os leitores.
1.5.1 Leitura, escrita e exame de imagens
A leitura e escrita de imagens são feitas de modo muito simples, com as funções imread e imwrite.
Estas funções suportam todos os formatos mais comuns de imagens e criam/exportam os apropria-
dos conjuntos (matrizes) 2D/3D no âmbito do ambiente Matlab. A função imfinfo pode ser usada
para examinar uma imagem e determinar todas as suas propriedades importantes, incluindo tipo,
formato, tamanho e profundidade de bit.
Figura 1.10 Imagem transformada e exibida no espaço HSV. (Veja o Encarte em cores.)
Solomon 01PDFG.indd 13 14.05.13 19:16:47:10
14 Capítulo 1
Exemplo 1.1
Código Matlab O que está sendo feito?
imfinfo('cameraman.tif ') %Examina a imagem cameraman.tif
%disponível em Matlab
%imfinfo fornece informação
%ColorType [tipo da cor] é escala de cinza, largura é 256, ... etc.
I15imread('cameraman.tif '); %Lê a imagem cameraman no formato TIF
imwrite(I1,'cameraman.'jpg','jpg'); %Escreve a resultante matriz I1 no
%disco como uma imagem JPEG
imfinfo('cameraman.jpg') %Examina a resultante imagem gravada em disco
%Reparemos nas mudanças no tamanho da imagem, etc.
Comentários
Funções de Matlab: • imread, imwrite e imfinfo.
Reparemos no tamanho do arquivo quando a imagem for armazenada no formato JPEG. Isto se deve •
à compressão (com perda) usada pelo formato de imagem JPEG.
1.5.2 Exibição básica de imagens
Matlab oferece duas funções básicas para a exibição de imagens: imshow e imagesc. Enquanto imshow re-
quer que a matriz 2D especificada para exibição se conforme a um tipo de dado de imagem (por exemplo,
imagens de intensidade/em cores com valor entre 0−1 ou 0−255), imagesc aceita matrizes de entrada de
qualquer tipo de dado de Matlab (uint 8, uint 16 ou duplo) e qualquer faixa de valor numérico. Esta última
função ajusta, então, a faixa de valores dos dados de entrada e exibe a imagem usando o mapa de cor atual
ou default. A função colormap nos permite controle adicional sobre as propriedades da imagem exibida.
Exemplo 1.2
Código Matlab O que está sendo feito?
A5imread('cameraman.tif '); %Lê a imagem de intensidade
imshow(A); %Primeiro, exibe a imagem usando imshow
imagesc(A); %Depois, exibe a imagem usando imagesc
axis image; %Corrige a razão de aspecto da imagem exibida
axis off; %Desabilita eixos
colormap(gray); %Exibe a imagem de intensidade em escala de cinza
Comentários
Funções de Matlab: • imshow, imagesc e colormap.
Reparemos nos passos adicionais associados ao uso de • imagesc para a exibição de imagens conven-
cionais.
Solomon 01PDFG.indd 14 14.05.13 19:16:47:10
RepResentação 15
Para ilustrar a diferença entre as duas funções, tentemos a exibição de dados de imagem sem a espe-
cificação de uma faixa de valores.
Exemplo 1.3
Código Matlab O que está sendo feito?
B5rand(256).*1000; %Gera matriz aleatória de imagem na faixa 0−1000
imshow(B); %O uso de imshow resulta em contraste pobre, pois os dados
%excedem a faixa esperada
imagesc(B); %imagesc ajusta automaticamente o mapa de cor à faixa
axis image; axis off; %de dados
colormap(gray); colorbar;
imshow(B,[0 1000]); %Contudo, se especificarmos a faixa de dados explicitamente,
%imshow também exibirá o correto contraste de imagem
Comentários
Reparemos na capacidade de • imagesc em ajustar automaticamente a imagem exibida.
Caso desejemos exibir vários objetos-imagem ao mesmo tempo, a melhor forma de fazer isto é via a fun-
ção subplot. Essa função cria um mosaico de eixos no qual imagens ou gráficos podem ser exibidos.
Exemplo 1.4
Código Matlab O que está sendo feito?
B5imread('cell.tif '); %Lê a imagem de intensidade de 8 bits cell
C5imread('spine.tif '); %Lê a imagem de intensidade de 8 bits spine
D5imread('onion.png'); %Lê a imagem em cores de 8 bits
subplot(3,1,1); imagesc(B) axis image; %Cria um mosaico de gráficos 3 3 1
axis off; colormap(gray); %e exibe a primeira imagem
subplot(3,1,2); imagesc(C); axis image; %Exibe a segunda imagem
axis off; colormap(jet); %Especifica jet como mapa de cor (falsa cor)
subplot(3,1,3); imshow(D); %Exibe a terceira imagem (em cores)
Comentários
Reparemos na especificação de diferentes mapas de cor no uso de • imagesc e a exibição composta
usando tanto imagesc como imshow.
1.5.3 Acesso a valores de pixel
Matlab também contém um visor de imagens interativo que pode ser ativado pela função imshow.
O objetivo dessa função é ligeiramente diferente das duas anteriores: é um visor gráfico de imagens
voltado, principalmente, à inspeção de imagens e de sub-regiões em uma imagem.
Solomon 01PDFG.indd 15 14.05.13 19:16:47:10
16 Capítulo 1
Exemplo 1.5
Código Matlab O que está sendo feito?
B5imread('cell.tif '); %Lê a imagem de intensidade de 8 bits cell
imview(B); %Examina a imagem em escala de cinza com o visor interativo
D5imread('onion.png'); %Lê a imagem de intensidade em cores de 8 bits
imview(B); %Examina a imagem RGB com o visor interativo
B(25,50) %Imprime o valor do pixel na posição (25,50)
B(25,50)5255; %Especifica o valor do pixel em (25,50) como branco
imshow(B); %Exibe as resultantes alterações na imagem
D(25,50,:) %Imprime o valor do pixel RGB na posição (25,50)
D(25,50, 1) %Imprime apenas o valor do vermelho em (25,50)
D(25,50,:)5(255, 255, 255); %Especifica o valor do pixel como branco RGB
imshow(D); %Exibe as resultantes alterações na imagem
Comentários
Funções de Matlab: • imview.
Reparemos como podemos acessar valores individuais de pixels em uma imagem e alterá-los.•
1.5.4 Conversão entre tipos de imagem
Matlab também contém funções para a conversão entre diferentes tipos de imagem. Aqui, examina-
mos a conversão em escala de cinza para a exibição dos canais de cor RGB de uma imagem.
Exemplo 1.6
Código Matlab O que está sendo feito?
D5imread('onion.png '); %Lê a imagem RGB em cores de 8 bits
Dgray5rgb2gray(D); %Converte-a em uma imagem em escala de cinza
subplot(2,1,1); imshow(D); axis image; %Exibe as duas lado a lado
subplot(2,1,2); imshow(Dgray);
Comentários
Funções de Matlab: • rgb2gray.
Reparemos que a resultante matriz de imagem em escala de cinza é 2D, enquanto a da imagem ori-•
ginal em cores é 3D.
Exemplo 1.7
Código Matlab O que está sendo feito?
D5imread('onion.png '); %Lê a imagem RGB em cores de 8 bits
continua
Solomon 01PDFG.indd 16 14.05.13 19:16:47:10
RepResentação17
continuação
Dred5D(:,:,1);
Dgreen5D(:,:,2);
Dblue5D(:,:,3);
%Extrai o canal vermelho (primeiro canal)
%Extrai o canal verde (segundo canal)
%Extrai o canal azul (terceiro canal)
subplot(2,2,1); imshow(D); axis image; %Exibe todos em um gráfico 2 3 2
subplot(2,2,2); imshow(Dred); title('red');
subplot(2,2,3); imshow(Dgreen); title('green');
subplot(2,2,2); imshow(Dblue); title('blue');
%Exibe com títulos
Comentários
Reparemos como podemos acessar canais individuais em uma imagem RGB e extraí-los como ima-•
gens independentes separadas.
Exercícios
Os exercícios a seguir foram elaborados para reforçar e desenvolver os conceitos e exemplos de Mat-
lab apresentados neste capítulo.
Funções de Matlab: imasbsdiff, rgb2hsv.
Exercício 1.1 Usando os exemplos apresentados para a exibição de uma imagem em Matlab e para
acessar uma posição de pixel, explore a adição/subtração de um valor escalar a/de uma posição de pixel,
ou seja, I(i, j) 5 I(i, j) + 25 ou I(i, j) 5 I(i, j) − 25. Comece com a imagem em escala de cinza 'cell.tif ' dos
exemplos e posição de pixel (100, 20). Qual é o efeito da adição e da subtração na cor da escala de cinza?
Estenda a técnica a imagens em cores RGB, adicionando/subtraindo valores aos/dos três canais de
cor, usando uma imagem de exemplo apropriada. Tente, ainda, adicionar valor a apenas um dos canais,
deixando os outros dois inalterados. Qual é o resultado de cada uma dessas operações na cor do pixel?
Exercício 1.2 Com base na resposta ao Exercício 1.1, use a estrutura for de Matlab (para obter aju-
da, use o comando help for na janela de comandos do Matlab) para varrer todos os pixels na imagem
bem como escurecer ou clarear a imagem.
Você deve assegurar que seu programa não tente criar um valor de pixel que seja maior ou menor
do que o valor que o pixel pode assumir. Por exemplo, uma imagem de 8 bits pode assumir valores
na faixa 0 − 255 em cada posição de pixel, e o mesmo se aplica a cada canal de cor em uma imagem
RGB em cores de 24 bits.
Exercício 1.3 Usando a imagem em escala de cinza 'cell.tif ' dos exemplos, explore a exibição da
imagem com diferentes mapas em falsa cor. A função de Matlab colormap pode assumir uma faixa
de valores para especificar diferentes mapas de falsa cor: na janela de comando de Matlab, use o
comando help graph3d e examine a lista de mapas de cor apresentada na seção Color maps [Mapas
de cor]. Que diferentes aspectos e detalhes da imagem podem ser vistos se estes mapas de falsa cor
forem usados no lugar da convencional escala de cinza?
Mapas de falsa cor também podem ser especificados numericamente como parâmetros no co-
mando colormap: use help colormap para obter mais informação.
Exercício 1.4 Carregue uma imagem em Matlab e, usando as funções apresentadas no Exemplo
1.1, salve-a uma vez como um arquivo no formato JPEG (por exemplo, teste.jpg) e outra no formato
PNG (por exemplo, teste.png). A seguir, carregue as imagens dos dois arquivos que acabou de salvar
como novas imagens em Matlab, 'Ijpg' e 'Ipng'.
Solomon 01PDFG.indd 17 14.05.13 19:16:47:10
18 Capítulo 1
Podemos esperar que essas duas imagens sejam exatamente iguais, pois tiveram origem em uma
mesma imagem e foram salvas em diferentes formatos de arquivo. Se as compararmos subtraindo
uma da outra e tomando a diferença absoluta em cada posição de pixel, podemos verificar se esta
hipótese é válida.
Use o comando de Matlab imabsdiff para gerar uma imagem-diferença entre 'Ijpg' e 'Ipng'. Use
imagesc para exibir a imagem resultante.
A diferença entre estas duas imagens não é zero, como podíamos esperar; há um padrão de ruído
relacionado à diferença entre as imagens introduzida pelo uso de compressão com perda (JPEG)
e sem perda (PNG). A diferença que vemos deve-se à informação removida da imagem na versão
JPEG. Se exibíssemos a diferença com imshow, tudo o que veríamos seria uma imagem preta, pois
as diferenças são tão pequenas que os correspondentes pixels têm valores muito baixos (ou seja, es-
curos). O ajuste automático de valores e o mapa de falsa cor de imagesc permitem que visualizemos
estes pequenos valores de pixels.
Exercício 1.5 Implemente um programa para efetuar a decomposição em plano de bits descrita na
Seção 1.2.1 e extrair/exibir os resultantes planos de imagem (Figura 1.3) como imagens independen-
tes em Matlab.
Para exibir um mosaico de diferentes planos de bit de uma imagem, considere o uso da função
subplot.
Exercício 1.6 Usando a função rgb2hsv de Matlab, escreva um programa para exibir os canais de
matiz (hue), saturação (saturation) e valor (value) de uma dada imagem em cores RGB. Faça referên-
cia ao Exemplo 1.6 sobre a exibição dos canais vermelho, verde e azul.
Exemplos e exercícios adicionais estão disponíveis no site da LTC Editora.
Solomon 01PDFG.indd 18 14.05.13 19:16:48:10
2
Formação
Todas as imagens digitais têm alguma origem. Neste capítulo, consideramos a questão da formação
de imagens, das perspectivas de matemática e de engenharia. A origem e as características de uma
imagem podem ter grande influência sobre o modo em que a processamos.
2.1 Como uma imagem é formada?
O processo de formação de uma imagem pode ser resumido em um pequeno número de elementos
importantes. Em geral, uma imagem digital pode ser formalizada como um modelo matemático
que consiste em uma representação funcional da cena (função do objeto o) e do processo de captura
(função de espalhamento de ponto [PSF − Point-Spread Function]).* A imagem conterá, ainda, ruído
aditivo n. Estes elementos são combinados para formar a imagem:
(2.1)
Os elementos essenciais neste processo são:
• PSF Esta função descreve a forma em que a informação sobre a função do objeto se espalha
em consequência da captura dos dados. Esta é uma característica do instrumento que captura
a imagem (por exemplo, a câmera) e é uma função determinística (que opera na presença de
ruído).
• Função do objeto Esta função descreve o objeto (ou cena) cuja imagem é capturada (por exemplo,
a superfície ou estrutura interna do objeto) e a forma em que a luz é refletida por esta estrutura
em direção ao instrumento de captura de imagens.
• Ruído Esta é uma função não determinística que, na melhor das hipóteses, pode ser descrita so-
mente em termos de alguma distribuição estatística de ruído (por exemplo, gaussiana). Ruído é
uma função estocástica e resulta de todos os distúrbios externos indesejados que ocorrem durante
a captura da imagem.
• Operador convolução ∗ Operação matemática que “traspassa” (efetua a convolução de) uma fun-
ção com outra.
Aqui, a função da luz refletida pelo objeto/cena (função do objeto) é transformada nos dados de
representação da imagem através da convolução com a PSF. Esta função caracteriza o processo de
formação (ou captura) da imagem. O processo é afetado por ruído.
*Também referida como função de propagação de ponto. (N.T.)
Solomon 02PDFG.indd 19 21.05.13 11:12:54:10
20 Capítulo 2
A PSF é uma característica do instrumento de captura de imagem (ou câmera). Esta função repre-
senta a resposta do sistema a uma fonte pontual no plano do objeto, como ilustrado na Figura 2.1,
em que também consideramos um sistema de captura de imagem como uma função de mapeamento
entre a distribuição de entrada (luz da cena) e a distribuição de saída (pixels de imagem) que consiste
na própria PSF e em ruído aditivo (parte de baixo da Figura 2.1).
A partir desta visão geral, inicialmente consideraremos a representação matemática do proces-
so de formação de imagens (Seção 2.2), que é útil para a posterior consideração de representações
avançadas de processamento de imagens (Capítulo 5). A seguir, de uma perspectiva de engenharia,
consideraremos o sistema físico de captura de imagem por uma câmera (Seção 2.3).
2.2 Matemática da formação de imagens
O processo de formação de uma imagem pode ser representado matematicamente. Na posterior
consideração de várias abordagens de processamento (Capítulos 3−6), tal representação