Você está na página 1de 148

Universidade Estadual do Oeste do Paran - UNIOESTE

Centro de Cincias Exatas e Tecnolgicas - CCET


Curso de Cincia da Computao

PROCESSAMENTO DE IMAGENS DIGITAIS

CASCAVEL - PR
2012

SUMRIO

UNIDADE 1 ARMAZENAMENTO DE IMAGENS ............................................................... 1


1.1 MECANISMOS PARA ARMAZENAMENTO DE IMAGENS ............................................ 1
1.2 ARMAZENANDO IMAGENS .......................................................................................... 2
1.3 PALETA DE CORES ...................................................................................................... 3
1.3.1 Modelo RGB/CMYK .................................................................................................... 4
1.3.2 Modelo HSV ................................................................................................................ 5
1.3.3 Look-up Tables ou Palettes ......................................................................................... 5
1.4 FORMATOS DE IMAGENS (www.dcs.ed.ac.uk/home/mxr/gfx) ...................................... 6
1.4.1 Formato BMP .............................................................................................................. 6
1.4.2 Formato FLIC ............................................................................................................ 12
UNIDADE 2 PROCESSAMENTO DE IMAGENS.............................................................. 20
2.1 FUNDAMENTOS DE IMAGENS DIGITAIS................................................................... 20
2.1.1 Paradigmas de Abstrao de Imagens ...................................................................... 20
2.2 MODELO ESPACIAL DE IMAGEM .............................................................................. 20
2.2.1 Imagem Contnua ...................................................................................................... 21
2.2.2 Representao de uma Imagem ............................................................................... 22
2.2.3 Imagem Digital .......................................................................................................... 24
2.2.4 Topologia Digital e Representao Matricial.............................................................. 25
2.2.5 Geometria do Pixel .................................................................................................... 26
2.3 COMPONENTES DE UM SISTEMA DE PROCESSAMENTO DE IMAGENS .............. 27
2.3.1 Aquisio................................................................................................................... 28
2.3.2 Armazenamento ........................................................................................................ 28
2.3.3 Processamento ......................................................................................................... 29
2.3.4 Transmisso.............................................................................................................. 29
2.3.5 Exibio .................................................................................................................... 29
2.4 ELEMENTOS DE SISTEMAS DE VISO ARTIFICIAL ................................................. 31
2.4.1 Estrutura de um Sistema de Viso Artificial ............................................................... 31
2.4.2 Domnio do Problema e Resultado ............................................................................ 32
2.4.3 Aquisio da Imagem ................................................................................................ 32
2.4.4 Pr-Processamento................................................................................................... 33
2.4.5 Segmentao ............................................................................................................ 33
2.4.6 Extrao de Caractersticas ...................................................................................... 33
2.4.7 Reconhecimento e Interpretao............................................................................... 33
2.4.8 Base de Conhecimento ............................................................................................. 34
2.5 PROPRIEDADES ESTATSTICAS DE IMAGENS ........................................................ 34
2.5.1 Histograma ................................................................................................................ 34
2.5.2 Mdia Amostral ......................................................................................................... 38
2.5.3 Varincia ................................................................................................................... 38
2.5.4 Covarincia ............................................................................................................... 38
2.5.5 Correlao................................................................................................................. 38
2.6 DISCRETIZAO DE COR .......................................................................................... 39
2.6.1 Clula de Quantizao .............................................................................................. 40
2.6.2 Percepo e Quantizao ......................................................................................... 41
2.6.3 Mtodo Geral de Quantizao ................................................................................... 43
2.6.4 Erro de Quantizao ................................................................................................. 43
2.6.5 Quantizao Uniforme e Adaptativa .......................................................................... 44
2.6.6 Mtodos Adaptativos de Quantizao ....................................................................... 45

2.7 TCNICAS DE MODIFICAO DE HISTOGRAMAS .................................................. 51


2.7.1 Transformaes de Intensidade ................................................................................ 51
2.7.2 Uniformizao das Mdias e Varincias de imagens ................................................. 53
2.7.3 Equalizao de Histograma ....................................................................................... 54
2.7.4 Especificao Direta de Histograma .......................................................................... 57
2.7.5 Limiarizao (Thresholding) ...................................................................................... 59
2.8 OPERAES LGICAS E ARITMTICAS COM IMAGENS........................................ 64
2.8.1 Operaes Aritmticas Pixel a Pixel .......................................................................... 64
2.8.2 Operaes Lgicas Pixel a Pixel ............................................................................... 67
2.8.3 Operaes Orientadas a Vizinhana ......................................................................... 68
2.9 OPERAES DE CONVOLUO COM MSCARAS ................................................. 69
2.9.1 Deteco de Pontos Isolados e Deteco de Linhas ................................................. 71
2.9.2 Deteco de Bordas .................................................................................................. 72
2.10 FILTRAGEM, REALCE E SUAVIZAO DE IMAGENS............................................... 75
2.10.1 Filtragem no Domnio Espacial .................................................................................. 75
2.10.2 Filtragem no Domnio da Freqncia......................................................................... 77
2.10.3 Suavizao de Imagens no Domnio Espacial ........................................................... 77
2.10.4 Realce de Imagens no Domnio Espacial .................................................................. 88
UNIDADE 3 MORFOLOGIA MATEMTICA .................................................................... 95
3.1 DILATAO E EROSO.............................................................................................. 95
3.1.1 Definies Bsicas .................................................................................................... 95
3.1.2 Dilatao ................................................................................................................... 96
3.1.3 Eroso....................................................................................................................... 97
3.2 ABERTURA E FECHAMENTO ..................................................................................... 99
3.2.1 Interpretao geomtrica da abertura e do fechamento .......................................... 100
3.3 TRANSFORMAO HIT-OR-MISS ............................................................................ 102
3.4 ALGORITMOS MORFOLGICOS BSICOS............................................................. 103
3.4.1 Extrao de contornos............................................................................................. 103
3.4.2 Preenchimento de Regies (Region Filling)............................................................. 103
3.4.3 Extrao de Componentes Conectados .................................................................. 105
3.4.4 Casco Convexo (Convex Hull)................................................................................. 106
3.4.5 Afinamento (Thinning) ............................................................................................. 106
3.4.6 Espessamento (Thickening) .................................................................................... 108
3.4.7 Esqueletos .............................................................................................................. 109
3.4.8 Poda (Pruning) ........................................................................................................ 111
UNIDADE 4 COMBINAO ALGBRICA DE IMAGENS ............................................. 113
4.1 MISTURA DE IMAGENS ............................................................................................ 114
4.2 COMBINAO DE IMAGENS POR DECOMPOSIO ............................................. 114
4.3 COMPOSIO DE IMAGENS.................................................................................... 115
4.4 COMBINAO NO DOMNIO DISCRETO ................................................................. 116
4.5 A FUNO DE OPACIDADE ..................................................................................... 118
4.6 DISCRETIZAO DA FUNO DE OPACIDADE ..................................................... 119
4.6.1 Discretizao com Canal Alfa .................................................................................. 119
4.6.2 Discretizao com Mscara de Bits ......................................................................... 120
4.7 CLCULO DA FUNO DE OPACIDADE ................................................................. 121
4.7.1 Imagens Sintticas Bidimensionais ......................................................................... 121
4.7.2 Imagens Sintticas Tridimensionais ........................................................................ 122
4.7.3 Imagens Digitalizadas ............................................................................................. 122
4.8 COMPOSIO NO DOMNIO DISCRETO ................................................................. 123
4.8.1 Composio com Canal de Opacidade ................................................................... 123
4.8.2 Composio com Mscara de Bits .......................................................................... 124

4.9 OPERAES DE COMPOSIO ............................................................................. 126


4.9.1 Operador OVER.................................................................................................... 127
4.9.2 Operador INSIDE .................................................................................................. 128
4.9.3 Operador OUTSIDE .............................................................................................. 129
4.9.4 Operador ATOP .................................................................................................... 129
4.9.5 Operador XOR ...................................................................................................... 130
4.9.6 Operador CLEAR .................................................................................................. 131
4.9.7 Operador SET ....................................................................................................... 132
UNIDADE 5 WARPING E MORPHING........................................................................... 133
5.1 FILTRO DE WARPING ............................................................................................... 133
5.2 EXPANSO E CONTRAO ..................................................................................... 134
5.3 WARPING NO DOMNIO DISCRETO ........................................................................ 135
5.4 RECONSTRUO E REAMOSTRAGEM .................................................................. 137
5.5 WARPING POR TRANSFORMAO PROJETIVA .................................................... 138
5.6 ZOOM DE UMA IMAGEM ........................................................................................ 140
5.6.1 Zoom In com o Filtro Box ...................................................................................... 141
5.6.2 Zoom In com o Filtro Triangular ............................................................................ 142
5.6.3 Zoom Out de uma Imagem ................................................................................... 143
5.7 MORPHING................................................................................................................ 143

UNIDADE 1 ARMAZENAMENTO DE IMAGENS


1.1 MECANISMOS PARA ARMAZENAMENTO DE IMAGENS
Quando armazenamos uma imagem, armazenamos uma matriz
bidimensional de valores, onde cada valor representa um dado associado com um
pixel na imagem. Para um bitmap monocromtico, estes valores so dgitos binrios.
Para uma imagem colorida, o valor pode ser uma tupla de 3 nmeros representando
as intensidades das componentes vermelho, verde e azul da cor daquele pixel, ou
ento 3 nmeros que so ndices nas tabelas de intensidades do vermelho, verde e
azul, ou ainda um ndice para uma tabela de tuplas de cores, ou um ndice para
qualquer estrutura de dados que possa representar cores.
Somado a isso, cada pixel pode ter outras informaes a ele associadas,
como o valor z-buffer (profundidade do pixel), uma tupla de nmeros indicando o
vetor normal superfcie, etc. Assim, podemos considerar uma imagem como uma
coleo de canais, onde cada um deles nos d alguma informao sobre o pixel na
imagem. Desta forma, podemos falar dos canais vermelho, verde e azul de uma
imagem.
Antes de discutir algoritmos para armazenamento de imagens em vetores
ou canais, descreveremos dois mtodos importantes para armazenamento de
imagens: o uso do metafile e o uso dos dados dependentes da aplicao.
Nenhum deles , estritamente falando, um formato de imagem; so mecanismos
para expressar a informao que representada na imagem.
Se uma imagem produzida por uma seqncia de chamadas a alguma
coleo de rotinas, o armazenamento metafile desta seqncia de chamadas
prefervel ao armazenamento da imagem que foi gerada. Esta seqncia de
chamadas pode ser muito mais compacta do que a prpria imagem; por exemplo, a
bandeira do Japo pode ser desenhada por uma chamada a uma rotina que
desenhe um retngulo branco e uma chamada a uma rotina que desenhe um crculo
vermelho. Se as rotinas so suficientemente simples ou esto implementadas em
hardware, redesenhar uma imagem metafile pode ser mais rpido do que
redesenhar um mapa de pixels. O termo metafile usado tambm em descries de
estruturas de dados padronizadas independentes de dispositivos. Para armazenar
uma imagem como um metafile, percorremos a estrutura de dados corrente e a
armazenamos numa forma independente de dispositivo para posterior exibio. Esta
descrio pode no ser uma seqncia de chamadas a funes, mas uma
transcrio textual da estrutura hierrquica da imagem.
O segundo esquema de armazenamento obriga que os dados sejam
dependentes de uma aplicao. Se uma aplicao utilizada para exibir uma classe
particular de imagens, pode ser conveniente gravar as informaes de como estas
imagens foram criadas, ou mesmo diferenas para um conjunto padro de dados.
Por exemplo: se todas as imagens so vises diretas de faces humanas descritas
por polgonos, pode ser mais simples armazenar uma lista dos polgonos cujas
posies diferem da posio numa imagem facial padro. Uma verso extrema
deste tipo de condensao de informaes foi utilizada no projeto Cabeas
Falantes do MIT Media Lab, onde somente as posies dos olhos, lbios e outras
caractersticas relevantes so armazenadas. At este ponto, a descrio da imagem
muito mais uma descrio da cena no domnio da modelagem, do que no domnio
do armazenamento de imagens.

1.2 ARMAZENANDO IMAGENS


Agora vamos considerar como armazenar as imagens que consistem
numa srie de canais de dados. Se nosso dispositivo de exibio espera receber
informaes sobre uma imagem na forma de tuplas RGB, pode ser mais conveniente
armazenar a imagem como tuplas RGB. Mas se o espao para armazenamento
restrito, caso mais freqente, ento pode ser que valha a pena tentar comprimir os
canais de alguma maneira. Mtodos de compresso devem considerar o custo da
descompresso. A tcnica de compresso mais sofisticada provavelmente apresenta
a descompresso mais cara. Embora todas as tcnicas aplicam-se igualmente bem
para qualquer canal de informao, nossos estudos consideraro apenas os canais
de cores, uma vez que estes so os mais freqentes em imagens.
Se uma imagem tem poucas cores e cada canal ocorre muitas vezes
(como num jornal, onde h somente preto, cinza escuro, cinza claro e branco), pode
ser que valha a pena criar uma tabela de ocorrncia de cores, com apenas quatro
entradas, e criar um canal simples que um ndice para esta tabela de cores.
Em nosso exemplo, este canal simples precisar apenas 2 bits de
informao por pixel; isto melhor que os 8 bits por cor por pixel. A imagem
resultante foi comprimida por um fator 12:1. Em imagens com mais cores, a
economia menos substancial; no caso extremo, onde cada pixel da imagem uma
cor diferente, a paleta de cores ser to grande quanto imagem armazenada
atravs de tuplas RGB, e os ndices nesta paleta de cores tomariam ainda mais
espao. A grosso modo, indexar a imagem numa tabela de cores interessante se o
nmero de cores menor do que metade do nmero de pixels.
Este canal simples ainda requer ao menos uma pequena informao por
pixel. Se a imagem possuir um grande nmero de repeties, pode ser possvel
comprimi-la mais pela codificao run-length do canal. A codificao run-length
consiste num contador e num valor, onde o contador indica o nmero de vezes que
o valor repete.
O projeto do Utah Raster Toolkit inclui algumas melhoras nesta idia
bsica. Por exemplo, o contador n um signed int de 8 bits (variando de 128 at
127): um contador negativo indica que o valor dos n pixels seguintes no esto
comprimidos; um contador no negativo indica que o prximo valor aplica-se a n + 1
pixels. Outras melhorias incluem a reserva de certos valores negativos para
significados especiais: -128 indica que os prximos dois valores indicam uma scanline com a posio para onde ser o salto.
H outros formatos espertos para compresso de canais. Por exemplo,
podemos armazenar o valor de cada pixel de um bitmap como um inteiro (com um 0
ou 1), mas muitos dos bits de um inteiro seriam desperdiados. Ao invs disso,
podemos armazenar o valor de um pixel em cada bit (isto a origem do termo
bitmap). Se a imagem representada contm regies preenchidas com padres cuja
largura um fator de 8, ento podemos utilizar uma codificao similar run-length,
na qual os primeiro byte representar um contador n e o prximo byte representar
um padro a ser repetido para os prximos 8n pixels do bitmap.
A codificao run-length e outras aproximaes tericas padro como a
codificao Huffman tratam a imagem em canais, que podem ser imaginados como
um vetor linear de valores (assim, mltiplos canais podem ser considerados como
um nico canal simples, de forma que possamos usar o run-length para codificar
conjuntos de triplas RGB). Outros mtodos tratam a imagem como um vetor 2D de
valores, e ento podem explorar qualquer coerncia entre linhas. Uma destas
tcnicas est baseada no uso de quadtrees.

O princpio fundamental da descrio de imagens baseada em quadtrees


que uma regio de uma imagem pode ser constante e, portanto, todos os pixels
desta regio podem ser tratados como de mesmo valor. Determinar esta regio
aproximadamente constante o corao deste algoritmo. Este algoritmo pode ser
usado tanto em uma componente simples da imagem, como o array da componente
vermelho, ou sobre a componente RGB associada com cada pixel; para simplificar,
descreveremos o algoritmo para uma componente numrica simples. O algoritmo
requer um mecanismo para determinar o valor mdio de uma regio da imagem, e a
extenso dos desvios da mdia dentro da regio.
A imagem primeiramente considerada como um todo. Se o desvio da
mdia dentro da imagem suficientemente pequeno (menor ou igual a uma
tolerncia no negativa), ento a imagem relatada como tendo um valor igual
mdia, repetida sobre a imagem inteira. Se o desvio da mdia no menor do que a
tolerncia, ento a mdia da imagem armazenada, dividida em quadrantes e o
mesmo algoritmo aplicado para cada quadrante. O algoritmo termina quando a
subdiviso dos quadrantes conduzir a uma regio com apenas um pixel; para uma
regio com apenas um pixel, o desvio da mdia deve ser igual a zero e portanto
menor ou igual a qualquer tolerncia.
Podemos melhorar o algoritmo gravando no apenas a mdia da imagem,
mas as mdias dos quatro quadrantes sempre que a imagem for subdividida, e a
mdia da imagem quando no for subdividida. A vantagem que quando a imagem
for reexibida, percorrendo a quadtree primeiramente na largura, esta pode ser
constantemente atualizada mostrando mais e mais detalhes da imagem. A primeira
imagem formada por quatro retngulos coloridos. Ento, cada retngulo
subdividido e suas cores refinadas, e assim por diante. Num sistema projetado para
visualizar um grande nmero de imagens, este mtodo pode ser extremamente
conveniente: depois de processar alguns bytes de informao, possvel ter uma
viso aproximada da imagem; ento o usurio pode optar por rejeitar a imagem atual
e ir para a prxima. Esta rpida aproximao da imagem especialmente til se as
imagens so transmitidas atravs de um canal de comunicao em banda-estreita.

1.3 PALETA DE CORES


Paleta, Palette, Look-Up Tables, so termos genericamente empregados
para referir-se mesma tcnica de codificao de cores. O uso da paleta teve sua
origem nas limitaes de hardware impostas h alguns anos ou na simples
convenincia de processamento menos oneroso.
Para melhor entender o uso das paletas necessrio primeiramente
entender como nosso organismo percebe as cores ao seu redor e quais as
limitaes que enfrentamos ao tentar transpor esta realidade ao mundo digital dos
computadores.
Imagens do mundo real apresentam tipicamente uma infinita variedade de
cores. O olho humano , no entanto, capaz de capturar, entender e discernir apenas
alguns poucos milhes de cores. A "limitada" capacidade de entendimento de
cores do olho e do crebro humano muito maior do que a maioria dos dispositivos
eletrnicos de captura e apresentao de imagens so capazes de prover.
Na captura e apresentao de cores da natureza somos obrigados a
traduzir uma realidade multidimensional e infinita em um modelo finito para
manipulao e arquivamento. Existem vrios modelos de transposio de cores do
mundo real para o mundo digital aceitos na comunidade de processamento de

imagens; destacam-se entretanto os modelos RGB/CMYK e HSV.

1.3.1 Modelo RGB/CMYK


O modelo RGB codifica as cores utilizando a combinao de 3 cores
bsicas: Vermelho (R), Verde (G) e Azul (B) para equipamentos emissores de luz
(telas de computador). por isso conhecido como um modelo aditivo.
O modelo CMYK um modelo complementar ao modelo RGB,
empregado em dispositivos ou produtos no emissores de luz, atuando na subtrao
dos componentes de cor da luz incidente. A representao grfica destes modelos
pode ser melhor entendida pela visualizao da Figura 1.1.

Figura 1.1 Cubo RGB/CMYK


Embora complementares, os modelos RGB e CMYK no produzem
sempre os mesmo resultados visuais, ou seja, no existe a transposio exata e
precisa de cores de um modelo para outro. Existem cores de um modelo que
simplesmente no podem ser expressas pelo modelo complementar enquanto
algumas cores encontradas na natureza simplesmente no podem ser expressas
por nenhum dos dois modelos (cores metlicas e cores fluorescentes). A Figura 1.2
ilustra a equivalncia real de cores entre os modelos RGB e CMYK para valores de
cores teoricamente equivalentes.

Figura 1.2 Paleta RGB e CMYK


Apesar de suas limitaes, o par RGB/CMYK o modelo de cores

atualmente mais popular para processamento digital de imagens, principalmente em


funo da tecnologia dos tubos de imagens de computadores que se utilizam de
canhes de 3 eltrons (RGB) para a composio de imagens coloridas no vdeo, e
das impressoras a jato de tinta ou trmicas que utilizam tecnologia CMYK herdada
da indstria fotogrfica.

1.3.2 Modelo HSV


O modelo HSV foi criado a partir de uma concepo intuitiva da maneira
de trabalhar de um artista ao misturar cores para obter o correto sombreamento e na
obteno de tons intermedirios. A seleo e obteno de cores no modelo HSV
muito mais intuitiva que nos modelos RGB e CMYK. Seu princpio baseia-se no
controle dos valores de Hue, Saturation e Value (HSV).
Hue a componente que seleciona a "tinta" em uso, sendo controlada
pela posio angular de um ponteiro numa roda de cores definida de 0 a 359.
Saturation a componente que determina a pureza da cor selecionada
em Hue. Todos os tons de cinza possuem Saturation zero e todos os Hues puros
possuem Saturation 1.
Value regula o brilho da cor determinada por Hue e Saturation. A cor
preto possui brilho zero e qualquer valor de Hue ou Saturation. O valor 1 de Value
determina uma intensidade pura de Hue + Saturation. A representao grfica
destes modelos pode ser melhor entendida pela visualizao da Figura 1.3.

Figura 1.3 O Modelo HSV

1.3.3 Look-up Tables ou Palettes


O principal uso de Palettes (Look-up tables) deve-se quase que
exclusivamente necessidade de processamento e armazenamento. Imagens que
se utilizam de palettes so significativamente menores do que imagens que
codificam a cor de seus pixels utilizando um dos modelos acima mencionados. A
contrapartida encontra-se na qualidade da cores. Palettes nada mais so que
mapas de cores limitados, escolhidas criteriosamente para serem utilizadas na
apresentao ou captura de uma imagem. Como dissemos anteriormente, mesmo

quando utilizamos um modelo de converso de cores para "digitalizar" uma imagem


do mundo real, o nmero de cores presentes numa imagem digital ainda muito alto
situando-se muito comumente acima das 10.000 cores.
A representao de uma imagem de 800x600 pixels em uma codificao
RGB de 24 bits (8 bits para cada cor) consome 1.440.000 bytes de memria. Se esta
mesma imagem possuir algo como 10.000 cores podemos criar uma tabela de cores
RGB com 10.000 posies com apenas 30.000 bytes. Ao invs de codificarmos cada
pixel da imagem com uma trinca RGB de 3 bytes, usaramos apenas 2 bytes para
designar uma cor na nossa tabela de cores (palette) com a qual se deve fazer o
display do pixel. Este esquema poderia fazer com que a mesma imagem de 800x600
pudesse ser manipulada com apenas 990.000 bytes. No entanto em virtude das
muitas incertezas relativas ao nmero de cores de uma imagem e ao esforo
computacional necessrio para calcul-lo, as palettes esto normalmente limitadas
a 256 cores, necessitando ento apenas 1 byte por pixel para endere-las, como
no esquema da Figura 1.4.

Figura 1.4 Mapeamento de Paleta

1.4 FORMATOS DE IMAGENS (www.dcs.ed.ac.uk/home/mxr/gfx)


1.4.1 Formato BMP
O formato de codificao adotado pela Microsoft para arquivamento de
imagens em seus sistemas operacionais MS Windows o formato BMP. A estrutura
destes arquivos tambm utilizada para armazenamento de imagens em memria
pelo prprio sistema operacional, assim sendo arquivos BMP podem ser lidos
diretamente do disco para as reas de arquivamento de imagens em memria do
Windows, necessitando de muito pouco pr-processamento.

Formatos suportados pelo padro BMP:

Imagens manipuladas em memria para apresentao no MS Windows


so internamente armazenadas em formato DIB (Device-Independent Bitmap) que
permite ao Windows apresentar a imagem em qualquer tipo de dispositivo suportado

pelo sistema operacional (telas, impressoras, projetores, etc...). O termo "device


independent" embute o conceito de especificao de cores da imagem de uma
maneira independente das limitaes do dispositivo padro de sada.

Estrutura interna do formato BMP:

Cada arquivo BMP composto por um cabealho (header), por uma rea
de informao do cabealho (bitmap-information header), uma tabela de cores
(color table) e uma seqncia de bits (bitmap bits) que definem o contedo da
imagem.
Assim sendo o arquivo possui a seguinte forma genrica:
BITMAPFILEHEADER
BITMAPINFOHEADER
RGBQUAD
BYTE

bmfh;
bmih;
aColors[];
aBitmapBits[];

O "bitmap-file header (bmfh) contm informaes referentes ao tipo,


tamanho e formato do arquivo. O header definido como uma estrutura
BITMAPFILEHEADER.
A "bitmap-information header" (bmih) definida pela estrutura
BITMAPINFOHEADER e contm informaes a respeito do tamanho, tipo de
compresso e codificao de cores da imagem.
A "color table" (aColors[]) definida como um vetor de estruturas do tipo
RGBQUAD e contm quantos elementos forem necessrios para acomodar a
codificao da paleta de cores adotada pelo arquivo em questo. A paleta de cores,
obviamente, no utilizada para imagens de 24 bits pois o seu tamanho superaria
em muito o tamanho da prpria imagem. As cores na tabela so apresentadas por
ordem decrescente de ocorrncia. Esta prioridade possibilita ao driver do dispositivo
otimizar o seu uso de maneira a apresentar os dados da imagem da melhor maneira
possvel no dispositivo de sada.
A seqncia de bits descrita acima como "bitmap bits" (aBitmapBits[]),
segue-se imediatamente "color table" e consiste de uma seqncia de valores do
tipo BYTE, representantes das linhas (scan lines) que compem a imagem. Cada
"scan line" consiste de uma seqncia de bytes que representam uma codificao
de cor para cada pixel da linha, no sentido esquerda direita.
O nmero de bytes utilizados para representar cada uma das linhas e
seus pixels dependente do formato de cor adotado pela imagem e da largura da
imagem. Por definio, o comprimento de cada linha deve ser mltiplo de 4, ou seja
base 32 bits, que traz melhor desempenho na manipulao em memria. Os pixels
por ventura excedentes numa linha devero ser preenchidos com o valor "null".
A ordem de apresentao das linhas no usual: de baixo para cima,
assim sendo a origem da imagem no canto inferior esquerdo da tela, enquanto o
sistema de coordenadas do MS Windows tem sua origem do canto superior
esquerdo. Esta caracterstica tcnica do Windows obriga a maioria dos cdigos de
carga de imagens no BMP a implementarem a carga "inversa" da imagem em
memria pois a maioria dos formatos de imagem prev a origem do sistema de
coordenadas, acima e esquerda da tela.
O valor "biBitCount", membro da estrutura BITMAPINFOHEADER,
determina o nmero de bits utilizados para definir cada pixel da imagem e pode

assumir os valores apresentados na Tabela 1.1.


TABELA 1.1 - Decodificao de "biBitCount"
Valor
1

24

Significado
A imagem contida no arquivo monocromtica, assim sendo a "color
table" contm apenas duas cores. Cada bit na "bitmap bits" representa
um pixel. Se o bit for null sua cor de apresentao definida pelo
primeiro valor de "color table", caso contrrio, pelo segundo valor.
A imagem contida no arquivo possui um mximo de 16 cores, assim
sendo a "color table" contm 16 cores. Cada byte na "bitmap bits"
representa dois pixels. Assim sendo se o valor lido de um byte for 243
(11110011) significa que o primeiro pixel deve ser apresentado pela 16a
cor da "color table" e que o segundo pixel deve ser apresentado pela 3a
cor de "color table".
A imagem contida no arquivo possui um mximo de 256 cores, assim
sendo a "color table" contm 256 cores. Cada byte na "bitmap bits"
representa um pixel. Assim sendo se o valor lido de um byte for 243
(11110011) significa que o pixel deve ser apresentado pela 243a cor da
"color table".
A imagem contida no arquivo possui um mximo de 16777216 cores,
assim sendo a "color table" contm 0 cores e seu valor null. Cada
pixel da imagem representado por 3 bytes na "bitmap bits", cada um
referente a um componente de cor do pixel na ordem padro RGB
(vermelho, verde e azul).

O valor "biClrUsed" da estrutura BITMAPINFOHEADER contm o


nmero de cores efetivamente utilizado pela imagem. Se "biClrUsed" for igual zero,
ento a imagem efetivamente utiliza todas as cores especificadas na "color table".

Compresso de dados:

Os formatos BMP suportam compresso RLE de dados para codificaes


de imagens de 4 e 8 bits de cor.
Quando o valor "biCompression" da estrutura BITMAPINFOHEADER
setado em 1 (BI_RLE8) ento o arquivo utiliza compresso RLE de 8 bits. A
compresso de 8 bits pode ocorrer de duas maneiras: "encoded" ou "absolute
mode". Os dois modos de compresso podem ocorrer simultaneamente numa
mesma imagem, em linhas ou coluna diferentes.
O modo "encoded" possui uma unidade de informao de 2 bytes. O
primeiro byte especifica o nmero de repeties do valor do segundo byte. Quando o
primeiro byte de um par setado em zero, ele indica um fim de linha, fim de imagem
ou fim de um "off set". A interpretao deste par depende do valor do segundo byte
que pode ser 0,1 ou 2 de acordo com a Tabela 1.2.
O modo "absolute" tambm possui uma unidade de informao de 2
bytes. Sua presena sinalizada pelo primeiro byte do par contendo null, e o
segundo byte um valor entre 3 e 255. O segundo byte representa o nmero de bytes
que se seguem sem compresso. Segue-se um exemplo de compresso RLE8
(Tabela 1.3).
TABELA 1.2 - Decodificao do segundo byte do modo "encoded"

Segundo byte
0
1
2

Significado
Fim de linha.
Fim de imagem.
Indica que os seguintes 2 BYTES contm o nmero de
colunas e linhas, respectivamente, que o cursor de
leitura deve se deslocar a partir da posio corrente.

TABELA 1.3 - Decodificao do segundo BYTE do modo "absolute"


Dado Comprimido
03 04
05 06
00 03 45 56 67
02 78
00 02 05 01
02 78
00 00
09 1E
00 01

Dado Expandido
04 04 04
06 06 06 06 06
45 56 67
78 78
Cursor 5 direita e 1 abaixo
78 78
Fim de linha
1E 1E 1E 1E 1E 1E 1E 1E 1E
Fim de imagem

Quando o valor "biCompression" da estrutura BITMAPINFOHEADER


setado em 2 (BI_RLE4) ento o arquivo utiliza compresso RLE de 4 bits. A
compresso de 4 bits pode ocorrer de duas maneiras: "encoded" ou "absolute
mode". Os dois modos de compresso podem ocorrer simultaneamente numa
mesma imagem, em linhas ou colunas diferentes.
O modo "encoded" possui uma unidade de informao de 2 bytes. O
primeiro byte especifica o nmero de repeties do valor do segundo byte. O
segundo byte contm o ndice de cor com 2 pixels consecutivos. O primeiro pixel
deve utilizar o ndice de cor dos bits de alta ordem do segundo byte e o segundo
pixel deve usar o ndice de cor dos bits de baixa ordem do segundo byte,
sucessivamente at esgotar-se o nmero de repeties especificado pelo primeiro
byte. Quando o primeiro byte de um par setado em zero, ele indica um fim de linha,
fim de imagem ou fim de um "off set". A interpretao deste par depende do valor
do segundo byte que pode ser 0, 1 ou 2 de acordo com a Tabela 1.2.
O modo "absolute" tambm possui uma unidade de informao de 2
bytes. Sua presena sinalizada pelo primeiro byte do par contendo null, e o
segundo byte um valor entre 3 e 255. O segundo byte representa o nmero de bytes
que se seguem sem compresso, contendo cada um 2 pixels em seus bits de alta e
baixa ordem. Segue-se um exemplo de compresso RLE4 (Tabela 1.4).
TABELA 1.4 - Decodificao do segundo BYTE do modo "absolute"
Dado Comprimido
03 04
05 06
00 06 45 56 67
04 78
00 02 05 01
04 78
00 00
09 1E

Dado Expandido
040
06060
455667
7878
Cursor 5 direita e 1 abaixo
7878
Fim de linha
1E1E1E1E1

10

Dado Comprimido
00 01

Dado Expandido
Fim de imagem

Exemplo 1.1 Arquivo BMP:

O exemplo a seguir ilustra o contedo de cada varivel das estruturas que


compem um arquivo exemplo BMP de 4 bits (16 cores):
BitmapFileHeader.Type = 19778
BitmapFileHeader.Size = 3118
BitmapFileHeader.Reserved = 0
BitmapFileHeader.Reserved2 = 0
BitmapFileHeader.OffsetBits = 118
BitmapInfoHeader.Size = 40
BitmapInfoHeader.Width = 80
BitmapInfoHeader.Height = 75
BitmapInfoHeader.Planes = 1
BitmapInfoHeader.BitCount = 4
BitmapInfoHeader.Compression = 0
BitmapInfoHeader.SizeImage = 3000
BitmapInfoHeader.XpelsPerMeter = 0
BitmapInfoHeader.YpelsPerMeter = 0
BitmapInfoHeader.ColorsUsed = 16
BitmapInfoHeader.ColorsImportant = 16
ColorTable
R
G
B Unused
84 252 84 0
252 252 84 0
84 84 252 0
252 84 252 0
84 252 252 0
252 252 252 0
0
0
0
0
168 0
0
0
0
168 0
0
168 168 0
0
0
0
168 0
168 0
168 0
0
168 168 0
168 168 168 0
84 84 84 0
252 84 84 0
.
. Bitmap data
.
O algoritmo abaixo ilustra, simplificadamente, o esquema de
descompresso RLE numa imagem de 8 bits e um plano de cor. Como o formato
interno de armazenamento de memria do Windows aceita o arquivo de imagem

11

comprimido, nenhum processamento necessrio, bastando que se copie o


contedo do arquivo para a memria.
typedef struct tagBITMAPFILEHEADER {
WORD Type;
DWORD Size;
WORD Reserved;
WORD Reserved2;
DWORD OffsetBits;
}
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO;
typedef struct tagBITMAPINFOHEADER {
DWORD biSize;
DWORD biWidth;
DWORD biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
DWORD biXPelsPerMeter;
DWORD biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
typedef struct tagRGBQUAD {
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} RGBQUAD;
/************************************************************/
// L uma imagem tipo BMP
int TImage::ReadBMP(char *FileName) {
ifstream InputStream(FileName, ios::in | ios::binary);
if(!InputStream) {
return 0;
}
// L o header do arquivo imagem
InputStream.read((unsigned char*)&BMPHdr, sizeof(BITMAPFILEHEADER));
// Verifica se formato da imagem aceitvel (deve ser BM)
if(BMPHdr.bfType != (('M' << 8) | 'B'))
return NULL;
// Determina o tamanho do DIB para leitura atravs do campo bfSize
// menos o tamanho do BITMAPFILEHEADER
long bmpsize = BMPHdr.bfSize - sizeof(BITMAPFILEHEADER);
// Aloca espao para o bitmap
PointerToDIB = GlobalAllocPtr(GHND, bmpsize);

12

// Se a memria falha retorna NULL


if(PointerToDIB == 0) return NULL;
// Aloca espao para a imagem
unsigned char *rbuf = new unsigned char[MaxBlock];
if(rbuf == NULL) return NULL;
unsigned
*DIBData
unsigned
unsigned

char huge
= (unsigned char huge*) PointerToDIB;
int chunksize;
int i;

// Faz leitura por pedaos at acabar o arquivo


while(bmpsize > 0) {
if(bmpsize > MaxBlock)
chunksize = MaxBlock;
else
chunksize = (WORD)bmpsize;
InputStream.read(rbuf, chunksize);
// Copia para o DIB
for(i = 0; i < chunksize; i++)
DIBData[i] = rbuf[i];
bmpsize -= chunksize;
DIBData += chunksize;
}
delete rbuf;
// Computa o nmero de bytes por linha, arredondando para mltiplo de 4
LPBITMAPINFOHEADER pBMPInfo = (LPBITMAPINFOHEADER)PointerToDIB;
BytePerLine = ((long)pBMPInfo->biWidth * (long)pBMPInfo->biBitCount +
31L) / 32 * 4;
return TRUE;
}

1.4.2 Formato FLIC


Em 1987 a AutoDesk Inc. lanou no mercado o seu primeiro software para
criao de animaes em duas dimenses, que viria se tornar um sucesso de
mercado: o Animator 1.0. Este software introduziu o formato FLIC, desenvolvido por
Jim Kent especialmente para a AutoDesk Inc.
Existem duas verses de arquivos FLIC, a .FLI originalmente
desenvolvida para o Animator 1.0 e que suporta apenas resolues de 320x200, e a
verso .FLC, do Animator Pro, que suporta qualquer tamanho de tela. Embora no
permitam a adio de som e apenas possam manipular imagens codificadas em 8
bits, a simplicidade, eficincia e principalmente a boa performance deste formato o
tornaram um padro de fato, amplamente suportado por dezenas de outros
aplicativos.

Concepo:
O formato FLIC, como em animaes convencionais, abriga uma

13

seqncia de quadros que, quando apresentados em velocidade apropriada, criam a


idia de movimento. Sua idia fundamental baseada no fato de que na maioria da
animaes digitais o contedo de um quadro sempre ligeiramente diferente de seu
antecessor. Assim, o formato armazena apenas esta diferena entre os quadros,
trazendo grande economia de meios de armazenamento e processamento, pois
rejeita a informao redundante a respeito dos quadros.
Sua concepo levou em conta a possibilidade de melhoramentos, e
assim criou-se uma estrutura baseada em blocos. Estes blocos possuem um
cabealho que permite aos programas de verses anteriores ignorarem blocos
desconhecidos, mantendo assim uma compatibilidade relativa entre sucessivas
verses. Os blocos, por sua vez, dividem-se em pacotes e estes finalmente dividemse em clulas. Assim, apresentar animaes codificadas no formato FLIC consiste
em continuamente decodificar blocos, pacotes e clulas, apresentando os resultados
na tela.

Estrutura:

Todo arquivo FLIC segue, de maneira geral, a seguinte estrutura de


codificao:
1. Bloco de cabealho de animao;
2. Bloco de prefixo;
3. Bloco de primeiro quadro;
4. Bloco das diferenas para o segundo quadro;
.......
n. Bloco das diferenas para o primeiro quadro
Esta organizao no rgida e alguns blocos podem ser ignorados ou
suprimidos, como o caso do bloco de prefixo que abriga parmetros exclusivos do
Animator Pro. Dentro dos blocos os pacotes podem ocorrer em qualquer ordem, o
que nos obrigar a desenvolver uma rotina de decodificao capaz de manipul-los.

Bloco de cabealho:

O bloco de cabealho sempre o primeiro bloco de qualquer arquivo FLIC


e abriga a descrio global da animao. Possui 128 bytes e contm os dados
apresentados na Tabela 1.5.
TABELA 1.5 Bloco de cabealho (128 bytes)
Bytes
4
2

Nome
Size
Type

2
2
2
2
2
4

Frames
Width
Height
Depth
Flags
Speed

Descrio
Tamanho de todo o arquivo em bytes
AF12 para .FLC
AF11 para .FLI
Nmero total de frames
Largura da animao
Altura da animao
Bits por pixel (sempre 8)
Identificador (0x0003)
1/70 seg para .FLC

14

Bytes

Nome

2
4
4
4
4
2
2
38
4
4
40

Reserved
Created
Creator
Updated
Updater
Aspectx
Aspecty
Reserved
Offset 1
Offset 2
Reserved

Descrio
1/1000 seg para .FLI
Setado para 0
Data de criao no formato MS-DOS
Nmero de srie do programa criador
Data de reviso no formato MS-DOS
Nmero de srie do programa revisor
Relao de aspecto na horizontal
Relao de aspecto na vertical
Setado para 0
Seek Off set para o primeiro frame
Seek Off set para o segundo frame
Setados para 0

Bloco de prefixo:

O bloco de prefixo opcional para a grande maioria dos programas que


suportam os formatos FLIC. Foi originalmente concebido para abrigar os parmetros
ambientais do Animator Pro. seguro ignorar estes valores para a decodificao da
animao. Um bloco de prefixo normalmente segue o bloco de cabealho e
apresenta o cabealho apresentado na Tabela 1.6.
TABELA 1.6 Contedo do cabealho de bloco fixo
Bytes
4
2
2
8

Nome
Size
Type
Packets
Reserved

Descrio
Tamanho total do bloco de prefixo
Identificador de bloco de prefixo (0xF100)
Nmero de pacotes do bloco
Setado para 0

Bloco de quadro:

O bloco de quadro abriga a informao necessria para formar os


quadros da animao. O bloco de primeiro quadro contm os pacotes necessrios
para a apresentao da imagem do primeiro quadro da seqncia. Os blocos de
quadro seguintes contm as informaes sobre as diferenas entre o quadro anterior
e o atual. O ltimo bloco de quadro contm informaes diferenciais com o primeiro
quadro da seqncia, permitindo assim que a animao seja executada
indefinidamente. Um bloco de quadro sempre iniciado com um cabealho que o
identifica, como apresentado na Tabela 1.7.
TABELA 1.7 Contedo do cabealho do bloco de quadro
Bytes
4
2
2
8

Nome
Size
Type
Packets
Reserved

Descrio
Tamanho total do bloco de quadro
Identificador de bloco de quadro (0xF1FA)
Nmero de pacotes do bloco
Setado para 0

15

Pacotes do bloco de quadro:

Um bloco de quadro pode apresentar nenhum ou vrios pacotes, em


qualquer ordem. Quando um bloco no apresenta pacotes de dados isto significa
que ele contm apenas a informao de que no intervalo de tempo destinado ao
quadro no ocorreram mudanas na tela. Os pacotes, como os blocos, tambm
possuem cabealho, como apresentado na Tabela 1.8.
TABELA 1.8 Contedo do cabealho de pacotes do bloco de quadro
Bytes
4
2

Nome
Size
Type

Descrio
Tamanho total do pacote
Identificador do tipo de pacote

Conforme o tipo de pacote seguem-se complementos ao cabealho. Os


pacotes de bloco de quadro podem ser de oito tipos, identificados pela Tabela 1.9.
TABELA 1.9 Identificadores dos tipos de pacotes do bloco de quadro
Valor
4
7
11
12
13
15
16
18

Nome
Descrio
COLOR_256 Informao de Palette em 8 bits (.FLC)
DELTA_FLC Delta imagem com compresso tipo
.FLC
COLOR_64 Informao de Palette em 6 bits (.FLI)
DELTA_FLI Delta imagem com compresso tipo .FLI
BLACK
Imagem da cor de ndice 0
BYTE_RUN Imagem com compresso Run-Length
LITERAL
Imagem sem compresso
PSTAMP cone do primeiro quadro

Pacotes COLOR_256 e COLOR_64

Os pacotes COLOR_256 e COLOR_64 so muito semelhantes na sua


estrutura. Eles contm informaes sobre os valores da palette para o quadro
corrente. Normalmente estes pacotes s esto presentes no primeiro quadro, mas
no existe nenhum impedimento para que estejam presentes nos demais quadros. O
pacote COLOR_64 apresenta codificao de cores em 6 bits. Normalmente
encontrado nos arquivos .FLI. O pacote COLOR_256 codifica as cores da palette em
8 bits.
Os pacotes COLOR apresentam um sub-cabealho de dois bytes que
contm o nmero de clulas de cores do pacote. Cada clula inicia-se com um byte
de offset do ndice da palette e um byte para o nmero de cores que se seguem. As
cores so codificadas em triplas RGB de trs bytes cada. A seguinte rotina
exemplifica a decodificao de um pacote COLOR_256.
void Decode_Color_256() {
WORD Cels,Colors,Index=0;
BYTE OffSet,AuxColors,Cor[3];
WORD i,t;

16
_lread(FlicFile,&Cels,sizeof(Cels));
for(i=0;i<Cels;i++) {
_lread(FlicFile,&OffSet,sizeof(OffSet));
Index+=OffSet;
_lread(FlicFile,&AuxColors,1);
if(AuxColors==0) Colors=256;
else Colors=AuxColors;
for(t=0;t<Colors;t++) {
_lread(FlicFile,Cor,3);
SetPalIndex(Index++, RGB(Cor[0],Cor[1],Cor[2]));
}
}
}

Pacote BLACK:

O pacote do tipo BLACK, que pode surgir num quadro, nos informa que
toda a tela deve ser preenchida com pixels da cor de ndice 0 da palette.
Normalmente esta cor o preto, mas isto no uma regra. Ao cabealho no segue
nenhuma outra informao.

Pacote BYTE_RUN:

O pacote BYTE_RUN abriga a informao necessria para compor uma


tela. Ele formado pela codificao em Run-Length da imagem completa do quadro.
Este pacote composto por clulas que representam as linhas. O nmero de clulas
igual ao nmero de linhas da imagem. Cada clula inicia-se com um byte cujo
contedo deve ser desprezado. Seguem-se sub-clulas que devero ser
decodificadas para compor todos os pixels da linha. O primeiro byte destas subclulas indica o seu tipo. Caso o tipo da sub-clula seja menor que zero ento o
valor absoluto do tipo contm o nmero de bytes subseqentes que devero ser
copiados para a tela. Caso o tipo seja positivo, o byte seguinte dever ser repetido
este mesmo nmero de vezes. O cdigo a seguir exemplifica esta operao.
void Decode_Byte_Run() {
char Pix,Run;
int i,x,y;
for(y=0,y<Flic.Height;y++) {
x=0;
_lread(FlicFile,&Run,1);
do {
_lread(FlicFile,&Run,1);
if(Run>0) {
_lread(FlicFile,&Pix,1);
for(i=0;i<Run;i++) Buf[y][x++]=Pix;
}
else {
_lread(FlicFile,Buf[y]+x,-Run);
x-=Run;

17
}
} while(x<Flic.Width);
SetScreenBits(Buf[y]);
}
}

Pacote LITERAL:

Um pacote literal contm, de forma seqencial e no comprimida, todos


os bytes que formam a imagem do quadro. Este pacote pouco usual e somente
adotado quando a imagem comprimida por BYTE_RUN ou DELTA_FL* maior que
a imagem original. Seguem-se ao cabealho do pacote, com origem no topo
esquerda, (altura x largura) bytes que compem a imagem.

Pacote DELTA_FLI:

O esquema gil de compresso, desenvolvido inicialmente no formato


.FLI, foi o grande responsvel pelo imediato sucesso deste formato.
O pacote DELTA_FLI orientado a byte, ou seja armazena e codifica as
informaes em sub-clulas de um pixel (byte). Seguem-se ao cabealho quatro
bytes de sub-cabealho.
O primeiro inteiro (dois bytes) contm o nmero da linha em que se inicia
o pacote (de cima para baixo, iniciando em 0) e o segundo inteiro, o nmero de
linhas (clulas) do pacote.
Cada clula (linha) inicia-se com um byte que indica o seu nmero de
sub-clulas. Cada sub-clula inicia-se com dois bytes, o primeiro abriga um contador
de colunas que posiciona a sub-clula de atualizao. O segundo byte abriga o tipo
da sub-clula.
Caso o tipo da sub-clula seja maior que zero ento o valor do byte de
tipo contm o nmero de bytes subsequentes que devero ser copiados para a tela.
Caso o tipo seja negativo, o valor absoluto do tipo indica o nmero de vezes que o
byte seguinte dever ser repetido. O cdigo a seguir exemplifica esta operao.
void Decode_Delta_FLI() {
int x,y,s,t,u;
BYTE Pix,ColSkip,Cels,SubCels,TypeSize;
_lread(FlicFile,&y,2);
_lread(FlicFile,&Cels,2);
for(s=0;s<Cels;s++) {
_lread(FlicFile,&SubCels,1);
x=0;
for(t=0;t<SubCels;t++) {
_lread(FlicFile,&ColSkip,1);
x+=ColSkip;
_lread(FlicFile,&TypeSize,1);
if(TypeSize<=127) {
_lread(FlicFile,Buf[y]+x,TypeSize);
x+=TypeSize;
}

18
else {
_lread(FlicFile,&Pix,1);
for(u=0;u<256-(int)TypeSize;u++) Buf[y][x++]=Pix;
}
}
SetScreenBits(Buf[y++]);
}
}

Pacote DELTA_FLC:

O pacote DELTA_FLC surgiu com o aprimoramento das controladoras de


vdeo que passaram a dispor de resolues maiores para a codificao de 8 bits
com palette. Embora mantendo a mesma filosofia do pacotes DELTA_FLI, os
pacotes DELTA_FLC so mais complexos. So orientados a inteiros (dois bytes),
isto , os pixels da tela so armazenados em pares de bytes.
De maneira similar ao DELTA_FLI o pacote traz um sub-cabealho de 2
bytes que contm o nmero de linhas do pacote. importante notar que o nmero
de linhas normalmente diferente do nmero de clulas do pacote. No existe
informao a respeito do nmero de clulas do pacote que devem ser controladas
dentro da lgica da codificao. Cada clula pode conter diversas sub-clulas de
pixel, informaes de controle sobre as linhas ou sobre o ltimo pixel da linha
quando a largura da imagem for mpar. Isto possvel graas a uma codificao
especial adotada para o tipo da sub-clula.
Cada sub-clula inicia-se com dois bytes que indicam, nos bits 14 e 15, o
seu tipo, conforme a Tabela 1.10.
TABELA 1.10 Identificadores do tipos de sub-clulas de pacote DELTA_FLC
Bit 15
0
1
0

Bit 14
0
1
1

Significado
Sub-clula contm informao de linha
Sub-clula contm ltimo pixel da linha
Sub-clula indica salto de linha

Se os bits 14 e 15 de uma sub-clula so 0, ento segue-se a esta subclula uma seqncia de bytes com informao Run-Length da linha. O byte
seguinte abriga um contador de posicionamento de coluna e o segundo o tipo da
codificao Run-Length. A codificao similar do DELTA_FLI onde um tipo
positivo indica um bloco de cpia e um tipo negativo indica um bloco de repetio
(Run Length).
Se os bits 14 e 15 estiverem setados ento a sub-clula abriga nos seus 8
bits de baixa ordem um byte que deve ser copiado para a posio do ltimo pixel da
linha.
No ltimo caso, bit 14 setado e 15 zerado, o valor absoluto do inteiro de
tipo indica um salto de linhas que deve ser aplicado na composio do quadro. O
cdigo que se segue ilustra um exemplo de descompactao de pacote
DELTA_FLC.
void Decode_Delta_FLC() {
BYTE PixPair[2];
WORD SkipCol,RLType;

19
int i,t,u,x,y=0,SubCelType,TotLin,SubCel;
_lread(FlicFile,&TotLin,2);
for(i=0;i<TotLin;i++) {
x=0;
_lread(FlicFile,&SubCel,2);
if(SubCel>0) { //bit 14 = 0 e bit 15 = 0
for(t=0;t<SubCel;t++) {
_lread(FlicFile,&SubCelType,2);
SkipCol = LOBYTE(SubCelType);
x+=SkipCol;
RLType = HIBYTE(SubCelType);
if(RLType<=127) {
_lread(FlicFile,Buf[y]+x,RLType*2);
x+=RLType*2;
}
else {
_lread(FlicFile,PixPair,2);
for(u=0;u<256-RLType;u++) {
memcpy(Buf[y]+x,PixPair,2);
x+=2;
}
}
}
SetScreenBits(Buf[y++]);
y++;
}
else if((WORD)SubCelType & 0x4000) { //bit 14 = 1 e bit 15 = 0
y-=SubCel;
i--;
}
else if((WORD)SubCelType & 0xC000) { //bit 14 = 1 e bit 15 = 1
Buf[y][Flic.Width-1] = HIBYTE(SubCelType);
i--;
}
}
}

20

UNIDADE 2 PROCESSAMENTO DE IMAGENS


2.1 FUNDAMENTOS DE IMAGENS DIGITAIS
A imagem digital a materializao de grande parte dos processos da
computao grfica. Neste sentido, ela serve como elo de ligao entre o usurio e
esses procedimentos, revelando os seus resultados. Podemos at mesmo afirmar
que a imagem est presente em todas as reas da computao grfica, seja como
produto final, no caso da visualizao, ou como parte essencial do processo de
interao, no caso da modelagem. Por esse motivo, de fundamental importncia a
compreenso do significado da imagem nesses contextos. Isto requer uma
formulao rigorosa das diversas noes associadas imagem digital para
instrumentalizar a anlise das estruturas de dados utilizadas na sua representao e
o estudo dos algoritmos empregados na sua criao e manipulao.
Nesta seo vamos desenvolver uma conceituao da imagem digital,
apresentar modelos abstratos de uma imagem, e diversas formas de representao
e codificao de imagens no computador.

2.1.1 Paradigmas de Abstrao de Imagens


Para representar e manipular imagens no computador devemos definir
modelos matemticos adequados a esses objetivos.
A imagem o resultado de estmulos luminosos produzidos por um
suporte bidimensional. Essa a percepo da imagem no universo fsico no qual
habitamos, seja ela o resultado de um processo intermediado, como por exemplo
uma fotografia, ou ultimamente atravs da projeo do mundo tridimensional na
retina do olho humano.
Devemos estabelecer um universo matemtico no qual seja possvel
definir diversos modelos abstratos de uma imagem. Em seguida, criamos um
universo de representao onde procuramos esquemas que permitam uma
representao discreta desses modelos, com o objetivo de obter uma codificao da
imagem no computador.
A imagem um sinal bidimensional e, conseqentemente, podemos usar
os conceitos de Teoria de Sinais1. No que se segue, vamos particularizar aqueles
conceitos para imagens. Temos, portanto, trs nveis de abstrao que
correspondem a modelos contnuos, representaes discretas, e codificao
simblica de imagens, conforme ilustramos na Figura 2.1.
importante notar que esses nveis sero realizados concretamente de
maneiras distintas em um sistema de processamento de imagens. Por esse motivo,
para obter um esquema unificado para o processamento de imagens, temos que
empregar as diversas transformaes que permitam passar de um nvel para outro e
tambm manipular descries em um mesmo nvel.

2.2 MODELO ESPACIAL DE IMAGEM


Embora existam vrios modelos matemticos adequados para se
descrever imagens, daremos nfase ao chamado modelo espacial, que o mais
1

GOMES, J.; VELHO, L. Computao Grfica: imagem. Rio de Janeiro : IMPA/SBM, 1994.

21

indicado para aplicaes da computao grfica.

Figura 2.1 Nveis de abstrao na representao de uma imagem.

2.2.1 Imagem Contnua


Quando observamos uma fotografia, ou uma cena real, recebemos de
cada ponto do espao um impulso luminoso que associa uma informao de cor a
esse ponto. Dessa forma, um modelo matemtico natural para descrever uma
imagem o de uma funo definida em uma superfcie bidimensional e tomando
valores em um espao de cor.
Uma imagem contnua uma aplicao i: U C, onde U 3 uma
superfcie e C um espao vetorial. Na maioria das aplicaes U um subconjunto
plano, e C um espao de cor. No entanto, conveniente para o desenvolvimento
da teoria, que C seja um espao vetorial qualquer que, em geral, contm o espao
de cor como subespao. A funo i na definio chamada de funo imagem. O
conjunto U chamado de suporte de imagem, e o conjunto dos valores de i, que
um subconjunto de C, chamado de conjunto dos valores da imagem ou gamute
de cores da imagem.
Quando C um espao de cor de dimenso 1, dizemos que a imagem
monocromtica. Nesse caso, a imagem pode ser vista geometricamente como o
grfico G(i) da funo imagem i,
G(i) = {(x, y, z); (x, y) U e z = i(x,y)}

22

considerando os valores de intensidade como a altura z = i(x, y) em cada ponto


(x, y) do domnio. A Figura 2.2 mostra uma imagem em meio-tom, juntamente com
um esboo do grfico da funo imagem i(x, y) correspondente. Essa interpretao
geomtrica permite uma viso mais intuitiva de certos aspectos da imagem. No
grfico da Figura 2.2, por exemplo, fcil de identificar as regies de
descontinuidade da funo, que correspondem a variaes bruscas da intensidade
dos pontos da imagem. Com essa abordagem, que permite manipular uma imagem
como um modelo geomtrico e vice-versa, torna-se bastante clara a conexo entre o
processamento de imagem, a modelagem geomtrica e, numa segunda instncia, a
viso computacional.

Figura 2.2 Imagem meio-tom e grfico de sua funo


Em concordncia com a literatura corrente sobre processamento de
imagens, o conceito de imagem introduzido acima deveria, mais apropriadamente,
caracterizar uma imagem bidimensional. Nas aplicaes de computao grfica na
rea de visualizao cientfica, muito comum se falar em imagens volumtricas.
Podemos estender o conceito de imagem, dado acima, para incluir imagens
volumtricas, simplesmente deixando de exigir a bidimensionalidade do conjunto
suporte. No fizemos isso por duas razes: o conceito de imagem aqui introduzido,
se refere a imagens que podem ser realizadas em dispositivos grficos de exibio.
No entanto vrias das tcnicas descritas neste captulo se generalizam para
imagens volumtricas. Do ponto de vista da Computao Grfica, os problemas
associados a imagens volumtricas esto estreitamente relacionados com
problemas da rea de modelagem geomtrica.

2.2.2 Representao de uma Imagem


A representao mais comum de uma imagem espacial nas aplicaes da
computao grfica consiste em tomar um subconjunto discreto U U do domnio
da imagem, um espao de cor C associado a um dispositivo grfico, e a imagem
representada pela amostragem da funo imagem i no conjunto U. Nesse caso a
imagem i(x, y), ser espacialmente contnua ou discreta se as coordenadas (x, y) da
cada ponto variam no conjunto U ou U respectivamente. Cada ponto (xi, yi) do
subconjunto discreto U chamado de elemento da imagem ou pixel (do ingls
picture element).
Salientamos mais uma vez que o conceito de imagem contnua e discreta
se refere discretizao do domnio da funo imagem, e no continuidade
topolgica da funo imagem. Para codificar a imagem no computador devemos

23

tambm trabalhar com modelos de imagem onde a funo imagem i toma valores
em um subconjunto discreto do espao de cor C. Esse processo de discretizao do
espao de cor de uma imagem chamado de quantizao. Apesar de que a
representao por ponto flutuante uma discretizao do conjunto dos nmeros
reais, em processamento de imagens podemos considerar como um continuum o
espao de cor cujas coordenadas so especificadas em ponto flutuante. Essa
considerao vlida porque, apenas quando utilizamos um nmero muito reduzido
de bits na representao das cores de uma imagem, o erro introduzido se traduz em
problemas perceptveis ou computacionais.

Representao Matricial:

O caso mais utilizado de discretizao espacial de uma imagem consiste


em tomar o domnio como sendo um retngulo

U = [a, b] [c, d ] = (x, y ) 2 ; a x b e c y d

e discretizar esse retngulo usando os pontos de um reticulado bidimensional


= (x, y ) ,

= {(x j , y k )U ; x j = j x, y k = k y

j, k Z , x, y }

conforme mostramos na Figura 2.3. Cada pixel (xj, yk) da imagem pode portanto ser
representado por coordenadas inteiras (j, k). Portanto, a imagem pode ser
representada de forma conveniente no formato matricial. Nessa representao ela
est associada a uma matriz A de ordem m x n, A = (ajk)=(i(xj, yk)).

Figura 2.3 Reticulado uniforme da representao matricial da imagem


Cada elemento ajk, j=1, ..., m e k = 1, ..., n da matriz representa um valor
da funo imagem i no ponto de coordenadas (xj, yk) do reticulado, sendo pois um
vetor do espao de cor, representando a cor do pixel de coordenada (j, k). Se a
imagem for monocromtica, (ajk) uma matriz real, onde cada elemento um
nmero real que representa o valor de luminncia do pixel.
O nmero de linha m da matriz A de pixels chamado de resoluo
vertical da imagem, e o nmero de colunas n chamado de resoluo horizontal.
Denominamos resoluo espacial da representao matricial o produto m x n da
resoluo vertical pela resoluo horizontal. A resoluo espacial estabelece a
freqncia de amostragem final da imagem. Dessa forma, quanto maior a resoluo
mais detalhe, isto , altas freqncias, da imagem podem ser captados na

24

representao matricial. A resoluo espacial dada em termos absolutos no fornece


muita informao sobre a resoluo real da imagem quando realizada em um
dispositivo fsico. Isso ocorre porque ficamos na dependncia do tamanho fsico do
pixel do dispositivo. Uma medida mais confivel de resoluo dada pela
densidade de resoluo da imagem que fornece o nmero de pixels por unidade
linear de medida. Em geral se utiliza o nmero de pixels por polegada, dpi (dots per
inch).
Na Figura 2.4 mostramos uma imagem em quatro resolues espaciais
diferentes. Mostramos cada imagem com as mesmas dimenses, ampliando o
tamanho do pixel, de forma a obter uma melhor ilustrao da baixa resoluo da
imagem.

Figura 2.4 Diferentes resolues espaciais de uma imagem


Chamamos de resoluo de cor ao nmero de bits utilizado para
armazenar o vetor de cor ajk de cada pixel da imagem. A resoluo de cor ser
estudada com mais detalhe na seo sobre discretizao de cor.
A representao de uma imagem por uma matriz m x n ou um vetor de
dimenso mn, possibilita o uso de tcnicas de lgebra linear no processamento de
imagens.

2.2.3 Imagem Digital


Embora seja necessrio trabalhar no computador com representaes
dos modelos discretos de imagem, conceitualmente importante considerar que
podemos idealizar uma imagem em qualquer das possveis combinaes: contnuacontnua, contnua-quantizada, discreta-contnua e discreta-quantizada. Cada
caso acima corresponde natureza do domnio e do espao de cor da imagem.
Na prtica, de um lado a imagem contnua-contnua serve como conceito
utilizado no desenvolvimento dos mtodos matemticos para o processamento de
imagens; do outro lado, a imagem discreta-quantizada constitui a representao
utilizada por vrios dispositivos grficos. A imagem discreta-contnua um formato

25

conveniente para a maior parte das operaes com imagens, pois a funo imagem
assume valores de ponto flutuante que, embora representados por um nmero finito
de bits, aproximam valores reais. Uma imagem do tipo discreta-quantizada
chamada de imagem digital.

Elementos da Imagem Digital:

Os elementos da imagem consistem, essencialmente, das coordenadas


dos pixels e da informao de cor de cada pixel. Esses dois elementos esto
diretamente relacionados com a resoluo espacial e a resoluo de cor da imagem.
O nmero de componentes do pixel a dimenso do espao de cor utilizado.
Dessa forma, cada pixel em uma imagem monocromtica tem uma nica
componente. O gamute de uma imagem digital o conjunto das cores do espao de
cor quantizado da imagem. Uma imagem monocromtica cujo gamute possui
apenas duas cores chamada de imagem de dois nveis, imagem bitmap, ou
imagem binria. Uma imagem monocromtica cujo gamute possui mais de dois
nveis chamada de imagem com meio-tom ou imagem com escala de cinza (do
ingls halftone ou grayscale).
Se o espao de cor de uma imagem tem dimenso k, para grande parte
dos processos podemos considerar cada componente de cor em separado. Nesse
caso a imagem se reduz a k imagens com escala de cinza. Cada uma dessas
imagens chamada de componente da imagem original. muito comum efetuar
operaes com imagens trabalhando separadamente com cada componente. O
processamento por componentes simplifica bastante determinadas operaes. No
entanto, esse tipo de processamento no explora a correlao na informao de cor
que existe entre as diversas componentes de cada pixel da imagem.
Alm da informao de cor, as outras componentes de espao vetorial C,
do contra domnio de uma imagem, esto freqentemente associados a informaes
auxiliares, tais como: opacidade do pixel, profundidade do ponto da cena
correspondente ao pixel, etc. Essas informaes so produzidas e utilizada por
algoritmos grficos para diversas finalidades, que so estudadas na rea de sntese
de imagens.

2.2.4 Topologia Digital e Representao Matricial


A estrutura do formato matricial determina implicitamente uma relao de
conectividade entre os elementos da imagem. Nesse contexto podemos definir uma
topologia para o domnio da imagem de acordo com dois tipos de vizinhana
discreta. Essas vizinhanas so denominadas de 4-conectada e 8-conectada. Dado
um elemento aij, a vizinhana 4-conectada o conjunto dos elementos ai-1, j, ai+1, j,
ai, j-1, ai, j+1, conforme ilustrado na Figura 2.5(a). A vizinhana 8-conectada o
conjunto do elementos da vizinhana 4-conectada mais os elementos ai-1, j-1, ai+1, j-1,
ai-1, j-1, ai-1, j+1, conforme mostrado na Figura 2.5(b).

(a)

(b)

Figura 2.5 Tipos de vizinhana na representao matricial

26

Na Figura 2.6 mostramos uma curva que vai do pixel A at o pixel B. Essa
curva, numa linguagem mais prxima da rea de processamento de imagens, 8conectada, porm no 4-conectada.

Figura 2.6 Curva 8-conectada mas no 4-conectada

2.2.5 Geometria do Pixel


Considere a imagem digital e sua representao matricial mostrada na
Figura 2.3. Considerada em um domnio discreto, o reticulado define na realidade
uma malha poligonal uniforme de retngulos do plano. Nesse caso consideramos o
pixel geomtrico como sendo cada polgono da malha.
Associada a essa imagem contnua, definida por uma malha poligonal,
temos duas imagens discretas. Uma delas a imagem definida no reticulado de
pixels original, a outra, definida no reticulado de pixels dual. Nesse caso, cada
pixel est situado no centro de cada retngulo da malha poligonal. esse fato
ilustrado na Figura 2.7(a), (b) e (c).

(a)

(b)

(c)

Figura 2.7 Reticulado de pixels, malha poligonal e reticulado dual


Alm da representao matricial, podemos utilizar outras representaes
para uma imagem discretizada espacialmente. Nesse caso, a geometria do pixel
pode no ser retangular e possvel obter uma homogeneidade na definio da
vizinhana do pixel. Isso acontece, por exemplo, ao utilizarmos uma discretizao
hexagonal do domnio, conforme indicado na Figura 2.8(a). A Figura 2.8(b), mostra
que nessa discretizao cada pixel apresenta apenas um tipo de conectividade com
os pixel de sua vizinhana. Essa representao muito utilizada quando estamos
interessados em utilizar mtodos topolgicos para o processamento de imagens no
domnio discreto.
Um problema que surge ao trabalhar com representaes onde a
topologia do pixel no retangular que os diversos dispositivos grficos que
manipulam imagens digitais se utilizam da representao matricial. Esse um caso
tpico em que devemos reconstruir a imagem para reamostr-la na representao

27

matricial do dispositivo de sada.

(a)

(b)

Figura 2.8 (a) Representao hexagonal (b) Vizinhana na representao


hexagonal
No caso da discretizao hexagonal, mostrada na Figura 2.8, a malha de
poligonalizao dual, forma uma poligonalizao do domnio da imagem por
hexgonos.
Quando trabalhamos no domnio contnuo com o conceito de pixel
geomtrico, a informao de cor pode sofrer variao na regio poligonal que define
o pixel. Desse modo, para calcular a imagem digital no reticulado dual devemos
levar em considerao essa variao de forma a minimizar os problemas de aliasing.

2.3 COMPONENTES DE UM SISTEMA DE PROCESSAMENTO DE IMAGENS


Os elementos de um sistema de processamento de imagens de uso
genrico so mostrados na Figura 2.9. Este diagrama permite representar desde
sistemas de baixo custo at sofisticadas estaes de trabalho, utilizadas em
aplicaes que envolvem intenso uso de imagens. Ele abrange as principais
operaes que se podem efetuar sobre uma imagem, a saber: aquisio,
armazenamento, processamento e exibio. Alm disso, uma imagem pode ser
transmitida distncia utilizando meios de comunicao disponveis. Todas estas
operaes so descritas a seguir.
Aquisio

Processamento

Sada
Monitores de Vdeo

Cmeras de Vdeo
Computador
Scanners

Impressoras
Plotters

Discos pticos
Discos Magnticos
Fitas Magnticas
Vdeotape
Armazenamento
Figura 2.9 Elementos de um sistema de processamento de imagens

28

2.3.1 Aquisio
A etapa de aquisio tem como funo converter uma imagem em uma
representao numrica adequada para o processamento digital subseqente. Este
bloco compreende dois elementos principais. O primeiro um dispositivo fsico
sensvel a uma faixa de energia no espectro eletromagntico (como raio X,
ultravioleta, espectro visvel ou raios infravermelhos), que produz na sada um sinal
eltrico proporcional ao nvel de energia detectado. O segundo o digitalizador
propriamente dito converte o sinal eltrico analgico em informao digital, isto ,
que pode ser representada atravs de bits 0s e 1s. Um mdulo de aquisio de
imagens normalmente conhecido pelo nome de frame grabber.

2.3.2 Armazenamento
O armazenamento de imagens digitais um dos maiores desafios no
projeto de sistemas de processamento de imagens, em razo da grande quantidade
de bytes necessrios para tanto. Este armazenamento pode ser dividido em trs
categorias: (1) armazenamento de curta durao de uma imagem, enquanto ela
utilizada nas vrias etapas do processamento, (2) armazenamento de massa para
operaes de recuperao de imagens relativamente rpidas, e (3) arquivamento de
imagens, para recuperao futura quando isto se fizer necessrio. O espao de
armazenamento requerido normalmente especificado em bytes e seus mltiplos.
Para o armazenamento de curta durao, a alternativa mais simples
utilizar parte da memria RAM do computador principal. Outra opo consiste no uso
de placas especializadas, chamadas frame buffers, que armazenam uma ou mais
imagens completas e podem ser acessadas em alta velocidade, tipicamente 30
imagens por segundo. O uso de frame buffers permite tambm que operaes de
zoom, scroll (rolagem na vertical) e pan (rolagem na horizontal) sejam executadas de
forma praticamente instantnea. Placas frame buffers, disponveis no mercado
atualmente, apresentam capacidade de armazenamento na faixa de dezenas de MB
de memria.
A segunda categoria de armazenamento normalmente requer o uso de
discos magnticos de no mnimo algumas dezenas de GB e recentemente passou a
utilizar tambm discos magneto-pticos, por vezes agrupados em jukeboxes
contendo de 30 a 100 discos. Nesta categoria o fator "tempo de acesso" to ou
mais importante que a capacidade do meio de armazenamento. Atravs de clculos
simples (no de pixels na horizontal x no de pixels na vertical x no de bits necessrios
para a escala de cinza / 8), pode-se estimar a quantidade de bytes necessrios para
armazenar uma imagem monocromtica em disco. Este clculo entretanto considera
a imagem representada como uma matriz, cujos elementos so os valores de tons
de cinza dos respectivos pixels. Na prtica, informaes adicionais so necessrias;
por exemplo o tamanho da imagem, o nmero de cores ou tons de cinza, etc. Estas
informaes costumam ser colocadas em um cabealho (header) no incio do
arquivo. Infelizmente, no existe um nico cabealho ou formato de armazenamento
de imagens padronizado. Alguns dos formatos mais conhecidos so o BMP, PCX,
TIFF, JPEG e GIF.
Finalmente, o arquivamento de imagens caracterizado por quantidades
gigantescas de bytes contendo imagens cuja recuperao espordica. Nesta
categoria, as fitas magnticas esto dando lugar aos discos pticos, com capacidade
que pode chegar a mais de 10 GB por disco, e que tambm podem ser agrupados

29

em jukeboxes, com capacidade total de armazenamento superior a 1 TB.

2.3.3 Processamento
O processamento de imagens digitais envolve procedimentos
normalmente expressos sob forma algortmica. Em funo disto, com exceo das
etapas de aquisio e exibio, a maioria das funes de processamento de
imagens pode ser implementado via software. O uso de hardware especializado para
processamento de imagens somente ser necessrio em situaes nas quais certas
limitaes do computador principal forem intolerveis, por exemplo a velocidade de
transferncia dos dados atravs do barramento.
A tendncia atual do mercado de hardware, para processamento de
imagens, a comercializao de placas genricas compatveis com os padres de
barramento consagrados pelas arquiteturas mais populares de microcomputadores e
estaes de trabalho. O software de controle dessas placas que determinar sua
aplicao especfica a cada situao. As vantagens mais imediatas so: reduo de
custo, modularidade, reutilizao de componentes de software em outra aplicao
rodando sobre o mesmo hardware e independncia de fornecedor. Convm notar,
entretanto, que sistemas dedicados continuam sendo produzidos e comercializados
para atender tarefas especficas, tais como processamento de imagens transmitidas
por satlites.

2.3.4 Transmisso
Imagens digitalizadas podem ser transmitidas distncia utilizando redes
de computadores e protocolos de comunicao j existentes. O grande desafio da
transmisso de imagens distncia a grande quantidade de bytes que se
necessita transferir de uma localidade a outra, muitas vezes atravs de canais de
comunicao de baixa velocidade e banda passante estreita. Este problema ainda
mais srio quando se deseja transmitir seqncias de vdeo (imagens em movimento
com udio associado) em tempo real, onde outros fatores, como por exemplo
sincronizao, devem ser considerados. Nestes casos, o uso de tcnicas de
compresso e descompresso de imagens obrigatrio.

2.3.5 Exibio
O monitor de vdeo um elemento fundamental de um sistema de
processamento de imagens. Os monitores em uso atualmente so capazes de exibir
imagens com resoluo de pelo menos 640 x 480 pixels com 256 cores distintas. A
tecnologia usual ainda o CRT (Tubo de Raios Catdicos).
Um CRT para um sistema de processamento de imagens normalmente
segue um padro de vdeo. O padro de vdeo mais comum para sistemas
monocromticos o RS-170. Ele prev 480 linhas horizontais entrelaadas, isto , a
varredura de um quadro feita em duas etapas, abrangendo primeiramente as
linhas mpares e posteriormente as linhas pares. Cada uma destas etapas
denominada campo. O tempo necessrio para percorrer um campo 1/60 s;
conseqentemente, o tempo total de um quadro 1/30 s. As caractersticas de
persistncia visual do olho humano fazem com que, nesta velocidade, a varredura

30

individual de cada campo no seja perceptvel, bem como do a impresso de que a


seqncia de quadros explorados perfeitamente contnua.
A resoluo espacial dos monitores normalmente especificada em
pontos por polegada (dots per inch dpi). Um valor tpico de resoluo 72 dpi,
suficiente para exibir uma imagem de 640 x 480 num monitor de 14 polegadas. A
ttulo de comparao, uma tela de TV tem resoluo na faixa de 40 dpi.
Um CRT colorido difere radicalmente de seu antecessor monocromtico,
por apresentar trs feixes eletrnicos, cada um correspondente a uma das trs cores
primrias (vermelho, verde e azul). A superfcie interna da tela constituda por trs
tipo de fsforo, disposto de forma triangular, cada qual sensvel a uma das cores
primrias e excitado pelo respectivo canho eletrnico. Isto significa dizer que, do
ponto de vista construtivo, cada pixel na verdade uma combinao de trs
pequenos pixels, um para cada cor primria. A Figura 2.10 mostra uma
representao esquemtica deste tipo de monitor.

Figura 2.10 Representao esquemtica de um monitor CRT tricromtico


A indstria de dispositivos de exibio vem apresentando
sistematicamente novas tecnologias de fabricao de monitores de vdeo, dentre
eles os monitores de cristal lquido (LCD), cada vez mais populares graas
disseminao dos computadores portteis.
Existem diversas formas de reproduo de imagens em papel. A melhor,
e mais cara, a reproduo fotogrfica, onde o nmero de gradaes de cinza
funo da densidade de grnulos de prata no papel. Outra possibilidade o uso de
papel sensvel temperatura, cuja composio qumica faz com que ele apresente
colorao mais escura medida que a temperatura aumenta. Este tipo de impresso
ainda o mais difundido em equipamentos de fax. Uma de suas desvantagens o
desvanecimento das imagens com o tempo. Nos ltimos anos, aumentou
consideravelmente a oferta de impressoras trmicas coloridas no mercado. Estas
impressoras baseiam-se na deposio de cera colorida sobre um papel especial
para produzir a impresso.
Dispositivos perifricos de sada, especializados na produo de cpias
da imagem em forma de fotografias, slides ou transparncias, tambm esto se
tornando cada vez mais usuais.
Uma alternativa s tcnicas fotogrficas consiste no uso de tcnicas de
halftoning. o mtodo usado por jornais e por impressoras convencionais (laser,

31

matricial ou jato de tinta) para a impresso de imagens. Esta tcnica consiste,


basicamente, em imprimir pontos escuros de diferentes tamanhos, espaados de tal
maneira a reproduzir a iluso de tons de cinza. medida que a distncia entre o
observador e a imagem impressa aumentam, os detalhes finos vo desaparecendo e
a imagem parece cada vez mais uma imagem contnua monocromtica.
No jargo computacional, d-se o nome de dithering ao processo de
produo do efeito de halftoning, bem como a todas as tcnicas de converso de
uma imagem para adapt-la a resolues menores, tanto para efeito de exibio
como para impresso. Existem vrios algoritmos de dithering, sendo o mais comum
o de Floyd-Steinberg, que consiste de um processo adaptativo no qual o padro de
dither a ser atribudo a um pixel depende de seu tom de cinza e de seus vizinhos.

2.4 ELEMENTOS DE SISTEMAS DE VISO ARTIFICIAL


O objetivo da implementao de sistemas de viso artificial dotar robs
com a capacidade de enxergar. Ao relacionarmos as dificuldades inerentes ao
processo de dotar o computador de uma capacidade visual semelhante dos seres
humanos, deparamo-nos com trs admirveis caractersticas do processo de
percepo visual humano, que so:

uma base de dados muito rica;


altssima velocidade de processamento; e
a capacidade de trabalhar sob condies muito variadas.

Os avanos na tecnologia de dispositivos de armazenamento de massa e


o surgimento de novas CPUs e arquiteturas computacionais cada vez mais rpidas,
com alto grau de paralelismo, nos induzem a crer que dispomos de condies cada
vez melhores de modelar as duas primeiras caractersticas relacionadas
anteriormente. O grande desafio permanece sendo o de fazer com que os sistemas
de viso artificial trabalhem em diferentes condies de luminosidade, contraste,
posicionamento relativo dos objetos em uma cena, sem perder a capacidade de
interpretar a cena, de forma anloga nossa capacidade de reconhecer um amigo
ou parente com relativa facilidade, independentemente de ele estar usando culos
ou no, ter deixado crescer a barba ou estar no carro ao lado do nosso em uma
esquina num final de tarde, onde no dispomos de outra imagem seno a vista de
perfil e onde as condies de luminosidade so bastante inferiores s que
obteramos ao meio-dia.

2.4.1 Estrutura de um Sistema de Viso Artificial


Definiremos um Sistema de Viso Artificial (SVA) como um sistema
computadorizado capaz de adquirir, processar e interpretar imagens
correspondentes a cenas reais. A Figura 2.11 mostra esquematicamente um
diagrama de blocos de um SVA. Suas principais etapas so explicadas a seguir,
partindo da premissa de que um problema prtico deve ser solucionado; por
exemplo, a leitura do Cdigo de Endereamento Postal (CEP) de um lote de
envelopes.

32

Problema

Aquisio

Pr-processamento

Segmentao

Base
de
Conhecimento

Extrao de
Caractersticas

Reconhecimento
e Interpretao

Resultado
Figura 2.11 Um Sistema de Viso Artificial (SVA) e suas principais etapas

2.4.2 Domnio do Problema e Resultado


O domnio do problema, neste caso, consiste no lote de envelopes e o
objetivo do SVA ler o CEP presente em cada um deles. Logo, o resultado
esperado uma seqncia de dgitos correspondentes ao CEP lido.

2.4.3 Aquisio da Imagem


O primeiro passo no processo de aquisio de imagens dos envelopes.
Para tanto so necessrios um sensor e um digitalizador. O sensor converter a
informao ptica em sinal eltrico e o digitalizador transformar a imagem
analgica em imagem digital.
Dentre os aspectos de projeto envolvidos nesta etapa, pode-se mencionar
a escolha do tipo de sensor, o conjunto de lentes a utilizar, as condies de
iluminao da cena, os requisitos de velocidade de aquisio, a resoluo e o
nmero de nveis de cinza da imagem digitalizada, dentre outros. Esta etapa produz
sada uma imagem digitalizada do envelope.

33

2.4.4 Pr-Processamento
A imagem resultante do passo anterior pode apresentar diversas
imperfeies, tais como: presena de pixels ruidosos, contraste e/ou brilho
inadequado, caracteres interrompidos ou indevidamente conectados, etc. A funo
da etapa de pr-processamento aprimorar a qualidade da imagem para as etapas
subseqentes. As operaes efetuadas nesta etapa so ditas de baixo nvel porque
trabalham diretamente com os valores de intensidades dos pixels, sem nenhum
conhecimento sobre quais deles pertencem aos dgitos do CEP, a outras
informaes impressas no envelope ou ao fundo. A imagem resultante desta etapa
uma imagem digitalizada de melhor qualidade que a original.

2.4.5 Segmentao
A tarefa bsica da etapa da segmentao a de dividir uma imagem em
suas unidades significativas, ou seja, nos objetos de interesse que a compem. Esta
tarefa, apesar de simples de descrever, das mais difceis de implementar.
No caso especfico do CEP, possvel que o problema seja dividido em
duas etapas: em um primeiro momento, os algoritmos de segmentao tentaro
localizar o CEP para, posteriormente, trabalhando sobre esta sub-imagem,
segmentar cada dgito individualmente. Segundo esta linha de raciocnio, este bloco
produzira sada oito sub-imagens, cada qual correspondendo a um dgito do CEP.

2.4.6 Extrao de Caractersticas


Esta etapa procura extrair caractersticas das imagens resultantes da
segmentao atravs de descritores que permitam caracterizar com preciso cada
dgito e que apresentem bom poder de discriminao entre dgitos parecidos, como
o 5 e o 6. Estes descritores devem ser representados por uma estrutura de dados
adequada ao algoritmo de reconhecimento. importante observar que nesta etapa a
entrada ainda uma imagem, mas a sada um conjunto de dados correspondentes
quela imagem.
Para maior clareza, suponhamos que os descritores utilizados para
descrever um caractere sejam as coordenadas normalizadas x e y de seu centro de
gravidade e a razo entre sua altura e largura. Neste caso, um vetor de trs
elementos uma estrutura de dados adequada para armazenar estas informaes
sobre cada dgito processado por essa etapa.

2.4.7 Reconhecimento e Interpretao


Nesta ltima etapa do sistema, denominamos reconhecimento o processo
de atribuio de um rtulo a um objeto baseado em suas caractersticas, traduzidas
por seus descritores. A tarefa de interpretao, por outro lado, consiste em atribuir
significado a um conjunto de objetos reconhecidos. Neste exemplo, uma forma
simples de interpretao seria a verificao do CEP em uma base de dados de
CEPs vlidos, para descobrir se o conjunto dos oito caracteres faz sentido ou no.

34

2.4.8 Base de Conhecimento


Todas as tarefas das etapas, descritas antes, pressupem a existncia de
um conhecimento sobre o problema a ser resolvido, armazenado em uma base de
conhecimento, cujo tamanho e complexidade podem variar enormemente.
Idealmente, esta base de conhecimento deveria, no somente guiar o
funcionamento de cada etapa, mas tambm permitir a realimentao entre elas. Por
exemplo, se a etapa de representao e descrio (extrao de caractersticas)
recebesse 7 caracteres ao invs de 8, ela deveria ser capaz de realimentar a etapa
de segmentao para que esta procurasse segmentar novamente a sub-imagem
suspeita (aquela de maior largura), buscando dividi-la em duas. Esta integrao
entre as vrias etapas, atravs da base de conhecimento, ainda um objetivo difcil
de alcanar e no est presente na maioria dos SVAs existentes atualmente.

2.5 PROPRIEDADES ESTATSTICAS DE IMAGENS


Medidas estatsticas so capazes de sintetizar, numericamente, algumas
caractersticas das imagens digitais. As propriedades abordadas nesta seo so a
mdia, varincia, covarincia e correlao. Outro elemento da estatstica capaz de
sintetizar, graficamente, caractersticas das imagens o histograma de freqncias.

2.5.1 Histograma
O histograma de uma imagem simplesmente um conjunto de nmeros
indicando o percentual de pixels, naquela imagem, que apresentam um determinado
nvel de cinza. Estes valores so normalmente representados por um grfico de
barras que fornece para cada nvel de cinza o nmero ou o percentual de pixels
correspondentes na imagem. Atravs da visualizao do histograma de uma imagem
obtemos uma indicao de sua qualidade quanto ao nvel de contraste e quanto ao
seu brilho mdio, ou seja, se a imagem predominantemente clara ou escura.
Cada elemento deste conjunto calculado como:

p r (rk ) =

nk
n

onde:
- 0 rk 1;
- k = 0, 1, ..., L 1, onde L o nmero de nveis de cinza da imagem digitalizada;
- n = nmero total de pixels na imagem;
- pr(rk) = probabilidade do k-simo nvel de cinza;
- nk = nmero de pixels cujo nvel de cinza corresponde a k.

Exemplo 2.1:

Os dados da Tabela 2.1 correspondem a uma imagem de 128 x 128 pixels, com 8
nveis de cinza. O nmero de pixels correspondentes a um certo tom de cinza est
indicado na coluna nk, enquanto as respectivas probabilidades pr(rk) aparecem na
coluna seguinte. A representao grfica equivalente deste histograma mostrada
na Figura 2.12.

35

TABELA 2.1 Exemplo de histograma


Nvel de Cinza
0
1/7
2/7
3/7
4/7
5/7
6/7
1
Total

nk
1120
3214
4850
3425
1995
784
541
455
16384

pr(rk)
0,068
0,196
0,296
0,209
0,122
0,048
0,033
0,028
1

0,4
0,3
0,2
0,1
0

Nvel de cinza (rk)

Figura 2.12 Exemplo de histograma para imagem com oito nveis de cinza
A Figura 2.13 apresenta cinco exemplos de tipos de histogramas
freqentemente encontrados em imagens.
O histograma da Figura 2.13(a) apresenta grande concentrao de pixels
nos valores mais baixos de cinza, correspondendo a uma imagem
predominantemente escura. Na Figura 2.13(b) os pixels esto concentrados em
valores prximos ao limite superior da escala de cinza, caracterizando uma imagem
clara. Na parte (c) da figura, os pixels esto agrupados em torno de valores
intermedirios de cinza, correspondendo a uma imagem de brilho mdio. Nas figuras
(a), (b) e (c) a maioria dos pixels esto concentrada em uma estreita faixa da escala
de cinza, significando que as imagens correspondentes apresentam baixo contraste.
A Figura 2.13(d) corresponde a uma imagem com pixels distribudos ao
longo de toda a escala de cinza. comum dizer que uma imagem com estas
caracterstica apresenta um bom contraste. A Figura 2.13(e) mostra um histograma
tipicamente bimodal, isto , apresentando duas concentraes de pixels, uma delas
em torno de valores escuros e outra na regio clara do histograma. Pode-se dizer
que a imagem correspondente apresenta alto contraste entre as duas
concentraes, uma vez que elas se encontram razoavelmente espaadas.

(a)

(b)

36

(d)

(c)

(e)

Figura 2.13 Exemplos de histogramas


Para verificar a relao entre imagens e respectivos histogramas, a Figura
2.14 mostra cinco imagens monocromticas cujos histogramas so aqueles da
Figura 2.13.

(a)

(b)

(c)

(d)

37

(e)

Figura 2.14 Imagens correspondentes aos histogramas da Figura 2.13


Histogramas no se restringem a imagens em tons de cinza e podem ser
aplicados individualmente aos componentes RGB de imagens coloridas (Figura
2.15). A manipulao cuidadosa dos histogramas ferramenta fundamental na
melhora da visualizao de imagens bem como na extrao de informaes pouco
perceptveis nas imagens originais.

RED

GREEN

BLUE

Figura 2.15 - Histograma de imagem colorida por banda


Para computar o histograma de uma imagem monocromtica, inicializa-se
com zero todos os elementos de um vetor de L elementos, onde L o nmero de
tons de cinza possveis. Em seguida, percorre-se ao imagem, pixel a pixel, e
incrementa-se a posio do vetor, cujo ndice corresponde ao tom de cinza do pixel
visitado. Aps toda a imagem ter sido percorrida, cada elemento do vetor conter o
nmero de pixels, cujo tom de cinza equivale ao ndice do elemento. Estes valores
podero ser normalizados, dividindo cada um deles pelo total de pixels na imagem.
O histograma de uma imagem fornece diversas informaes qualitativas e
quantitativas sobre ela como, por exemplo, o nvel de cinza mnimo, mdio e
mximo, predominncia de pixels claros ou escuros, etc. Entretanto, outras
concluses de carter qualitativo, como por exemplo a qualidade subjetiva global da
imagem, presena ou no de rudo, etc, somente podem ser extradas dispondo-se
da imagem propriamente dita.

38

2.5.2 Mdia Amostral


Dada uma imagem digital monocromtica g, com m linhas e n colunas,
podemos calcular a mdia amostral mg

mg =

1 m1 n1
g ( j, k )
m n j =0 k =0

A mdia de uma imagem representa a impresso geral de brilho. Uma


imagem escura, com pouco brilho, apresenta mdia baixa enquanto que uma
imagem com alto brilho apresenta mdia alta, maior que 128 por exemplo.

2.5.3 Varincia
A varincia de uma imagem uma medida da variao dos nveis de
cinza da imagem em relao sua mdia. Esta medida d uma idia de contraste da
imagem: uma imagem com grande Vg tem alto contraste.

Vg =

1 m 1 n 1
(g ( j, k ) mg )2

m n j =0 k =0

2.5.4 Covarincia
A covarincia uma grandeza que relaciona duas varincias especficas
e descreve o grau de correlao existente entre cada par de imagens (ou bandas). O
valor da covarincia entre as imagens g1 e g2 pode ser calculada da seguinte forma:

C g1 g 2

1 m 1 n 1
=
g1( j, k ) mg1 g2 ( j, k ) mg 2
m n j =0 k =0

)(

onde mg1 e mg2 so as mdias das imagens g1 e g2, respectivamente. A


covarincia d uma medida do quanto de informaes contidas em um par de
imagens comum a ambas. A covarincia pode ser tanto positiva, quanto negativa.
Neste ltimo caso os dados so ditos negativamente correlacionados.

2.5.5 Correlao
A correlao possui a mesma interpretao que a covarincia. A
correlao uma medida normalizada: -1 < < 1.

g g =
1 2

C g1 g 2
Vg1 Vg 2

39

2.6 DISCRETIZAO DE COR


Vimos anteriormente que o processo de discretizao de cor conhecido
pelo nome de quantizao. Esse processo permite a converso de uma imagem
com um conjunto contnuo de cores, em uma imagem com um conjunto de cores
discreto. Ressaltamos mais uma vez que, muito embora a converso de um nmero
real para a representao de ponto flutuante tambm implique numa discretizao,
vamos considerar que essa representao fiel para os propsitos da computao e
no envolve um processo de quantizao.
Nesta seo vamos estudar com detalhe os diversos problemas
existentes na discretizao de cor. Para isso, precisamos caracterizar de forma mais
precisa o conceito de quantizao. Chamamos de quantizao a uma
transformao sobrejetiva q: C C', de um slido de cor C no qual as cores so
representadas usando M bits, para um slido de cor C' que utiliza uma codificao
do vetor de cor com N bits, sendo M > N. Denominamos q de transformao de
quantizao, ou simplesmente quantizao de N bits. O espao de N bits C'
chamado de espao de quantizao.
A quantizao de uma imagem digital consiste em quantizar o gamute de
cores da imagem, o que acarreta na quantizao da informao de cor de cada pixel
da imagem. Mais precisamente, se i: U C, uma imagem discreta-contnua ou
discreta-discreta, o resultado da quantizao de i(x, y) uma imagem discretadiscreta i': U C', tal que i'(x, y) = q(i(x, y)), onde q a transformao de
quantizao. Desse modo, a quantizao altera a resoluo de cor da imagem.
Se os espaos de cor C e C' so unidimensionais, a quantizao
chamada de quantizao escalar, ou quantizao unidimensional. Caso
contrrio, ela chamada de quantizao vetorial ou quantizao
multidimensional. Note que se os espaos de cor no so unidimensionais,
podemos fazer uma quantizao vetorial usando um mtodo de quantizao escalar
em cada uma das componentes do espao. Esse mtodo de quantizao vetorial, no
entanto, no explora a correlao existente entre as diversas componentes de cor
de uma imagem.

Exemplo 2.2 Quantizao de dois nveis:

Consideremos o problema de quantizar um espao monocromtico de


cores com 256 nveis de intensidade de cinza (gamute de 8 bits), para um espao de
cor com apenas dois nveis (gamute de 1 bit). Um possvel mtodo consiste em
quantizar as cores com intensidade abaixo do valor mdio de intensidade para 0, e o
restante das cores para o valor mximo de intensidade 255. Esse processo de
quantizao faz um particionamento do espao de cor em dois conjuntos. Os
elementos de um dos conjuntos so quantizados para a intensidade 255. O trecho
de pseudo-cdigo abaixo mostra essa quantizao:
if (Colot_Intensity < 127) {
Color_Intensity = 0;
} else {
Color_Intensity = 255;
}

Por que quantizar uma imagem? Existem duas motivaes bsicas que
justificam a importncia do problema de quantizar uma imagem: exibio e

40

compresso.

Exibio de imagens:

Para exibir uma imagem em algum dispositivo grfico, o gamute de cor da


imagem no pode ser maior do que as cores disponveis no espao fsico de cor do
equipamento. Nesse caso, o espao de quantizao C est diretamente ligado ao
espao de cor do dispositivo grfico de exibio.

Compresso de imagens:

A quantizao de uma imagem, permite uma reduo do nmero de bits


utilizado para armazenar o seu gamute de cores. Reduzimos desse modo o espao
necessrio para o armazenamento da imagem, e diminumos o volume de dados no
caso de transmisso da imagem atravs de algum canal de comunicao.

2.6.1 Clula de Quantizao


Conforme vimos no exemplo anterior, uma quantizao para um espao
de cor de 1 bit, gamute de 2 cores, determina uma partio do espao inicial de
cores em 2 conjuntos. Em cada um desses conjuntos a funo de quantizao
assume um valor constante. Esse um fato que ocorre em geral. Consideremos
uma transformao de quantizao q: C C. A cada cor quantizada ci C,
corresponde um subconjunto de cores Ci C, determinado pelas cores do espao C
que so quantizadas para a cor ci, ou seja,
Ci = q -1(ci) = {c C; q(c) = ci}
A famlia, finita, de conjunto Ci, constitui uma partio do espao de cor C.
Cada um dos conjuntos Ci da partio chamado de clula de quantizao. Em
cada uma dessas clulas a funo de quantizao assume um valor constante ci,
que chamado de nvel de quantizao ou valor de quantizao.
No caso da quantizao unidimensional, sejam qi, 1 i L, os nveis de
quantizao assumidos pela transformao de quantizao q. As clulas de
quantizao neste caso so intervalos
c1-i < c ci, 1 i L
Na Figura 2.16(a) mostramos trs intervalos de quantizao [ci-1, ci], e em
cada intervalo temos o nvel de quantizao associado qi, que constante em cada
intervalo de quantizao.

Figura 2.16 Nveis de quantizao e grfico da funo de quantizao

41

Na quantizao unidimensional a clula de quantizao sempre um


intervalo e podemos variar apenas o seu comprimento. Na quantizao
multidimensional as clulas de quantizao so regies do espao de cor que
podem apresentar uma geometria bem mais complexa. A Figura 2.17 mostra um
exemplo de quantizao bidimensional com oito clulas e, portanto, oito nveis de
quantizao (3 bits).

Figura 2.17 Clula de quantizao bidimensional

2.6.2 Percepo e Quantizao


Considere uma funo imagem f: U C monocromtica cujo espao de
cor est quantizado em L nveis. Essa quantizao determina uma partio do
domnio U da imagem em subconjuntos (clulas de quantizao) Ci definidos por
Ci = f 1(ci) = {(x, y) U; f(x, y) = ci}
Ou seja, cada subconjunto Ci da partio constitudo pelos pixels da
imagem cuja intensidade assume o nvel de quantizao ci. Se tivermos um nmero
pequeno de nveis de quantizao, teremos um nmero pequeno de regies Ci na
partio. Alm disso, se a funo imagem for bem comportada a fronteira que
separa essas regies ser definida por uma curva regular. Dependendo da diferena
de valor entre os nveis de quantizao de duas clulas vizinhas, a curva de fronteira
ser perceptvel ao olho humano. Esse fenmeno conhecido pelo nome de
contorne de quantizao.
As imagens (a), (b), (c) e (d) da Figura 2.18 ilustram o problema de
contorno de quantizao. Na imagem (a) temos uma imagem com 256 nveis de
quantizao; na figura (b) temos apenas 16 nveis; na figura (c) temos 8 nveis e na
figura (d) temos 2 nveis de quantizao. claro, que medida que diminumos o
nmero de nveis de quantizao, o contorno de quantizao fica mais perceptvel.
Do ponto de vista perceptual, o estudo de diferentes mtodos de quantizao est
ligado obteno de uma quantizao na qual o contorno de quantizao no seja
perceptvel.
A percepo do contorno de quantizao depende do nmero de nveis
de quantizao e do mtodo de quantizao utilizado. Em geral, para imagens
monocromticas de meio tom, 256 nveis de quantizao (8 bits) so suficientes para
evitar a percepo do contorno de quantizao, independente do mtodo de
quantizao utilizado. Esse fato ilustrado pela Figura 2.18(a) onde a imagem
mostrada est quantizada em 8 bits. Para imagens a cores, em geral suficiente
utilizar uma quantizao de 24 bits, com 8 bits de quantizao para cada
componente de cor do espao RGB.

42

Figura 2.18 Contorno de quantizao para diferentes nveis de quantizao


No entanto, dependendo da imagem e do mtodo de quantizao
utilizado, podemos reduzir o nmero de nveis de quantizao sem que seja possvel
perceber o contorno de quantizao.
A percepo do contorno de quantizao agravada devido ao fenmeno
perceptual conhecido por bandas de mach ("mach band"): o olho humano acentua
transio de intensidade de cor, o que faz com que possamos perceber mais
facilmente nveis de intensidade, mesmo prximos, se eles constituem regies
adjacentes da imagem. Esse fenmeno ilustrado pelas duas imagens da Figura
2.19. A imagem (A) mostra 5 faixas verticais de intensidades diferentes. As faixas da
esquerda so mostradas na imagem (B), porm com uma separao. Pode-se
perceber claramente que a diferena de intensidade entre faixas adjacentes bem
mais acentuada na imagem (a), quando as faixas formam regies contguas da
imagem.
O forte correlacionamento do erro de quantizao entre os diversos pixels
da imagem faz com que a fronteira entre duas regies de quantizao com nveis
distintos seja uma curva conexa, sendo portanto mais fcil de ser percebida pelo
olho humano devido ao fenmeno das bandas de Mach descrito anteriormente.

Figura 2.19 - Bandas de Mach

43

Na quantizao de dois nveis o fenmeno de contorno aparece de forma


bastante acentuada pois temos apenas duas intensidades na imagem final: preto e
branco. Um mtodo utilizado para se evitar a percepo do contorno de quantizao,
mesmo no caso mais crtico de quantizao de imagens de meio-tom para dois
nveis, o "dithering".
O dithering consiste em um processo de filtragem cuja finalidade
descorrelacionar o erro de quantizao, evitando desse modo que a fronteira entre
dois nveis de quantizao seja uma curva conexa. O processo de dithering de
grande importncia no caso da quantizao de dois nveis.
O fato de que a qualidade dos mtodos de quantizao est ligada a
aspectos perceptuais de cor, tem sido bastante explorado, tecnologicamente, na
busca de bons mtodos de quantizao. Um exemplo desse fato ocorre no sinal de
televiso a cores NTSC, que codificado a partir de coordenadas de cor no espao
YUV onde Y a luminncia e (U, V) so as coordenadas de crominncia. Na
quantizao das componentes, podemos usar um nmero maior de bits para
quantizar a informao de luminncia, e um nmero menor para quantizar cada
componente com a informao de crominncia. Isso pode ser feito porque o olho
humano muito mais sensvel variao de luminncia do que variao de
crominncia.

2.6.3 Mtodo Geral de Quantizao


O processo de quantizao de um espao de cor consiste de duas
etapas:

Determinar as clulas de quantizao;


Determinar o nvel de quantizao em cada clula.

A funo de quantizao q ento definida de forma a associar s cores


de uma clula, o nvel de quantizao correspondente. A funo q portanto
constante em cada clula de quantizao. Uma vez conhecida a transformao de
quantizao q do espao de cor, o processo de quantizar uma imagem se torna uma
tarefa simples: para cada cor c do pixel na imagem original, identifica-se a clula de
quantizao a que ela pertence, e substitumos a cor c pelo valor de quantizao,
q(c), da clula.
Os diferentes mtodos de quantizao existentes refletem a descrio
acima, e funcionam de trs modos distintos:

Determinamos inicialmente as clulas de quantizao, e em seguida calculamos


o nvel de quantizao de cada clula;
Determinamos inicialmente os nveis de quantizao, e em seguida
determinamos as cores que devem ser quantizadas para cada nvel;
Determinamos de forma interdependente e simultnea as clulas e os nveis de
quantizao.

2.6.4 Erro de Quantizao


A determinao tima das clulas de quantizao, e dos nveis de
quantizao em cada clula, depende do critrio utilizado para medir o erro de

44

quantizao, bem como da distribuio de cor na imagem. Vamos examinar esse


problema com mais detalhe. Se q a transformao de quantizao e c uma cor a
ser quantizada, ento
c q(c) = eq
onde eq o erro introduzido no processo de quantizao, tambm chamado de
rudo de quantizao. O quadrado e2q do rudo de quantizao pode ser
considerado como uma medida d(c, q(c)) entre a cor c e seu valor quantizado q(c).
De modo mais preciso, devemos tomar uma mtrica d no espao de cor C e
considerar o espao de quantizao C como um subconjunto de C. A medida de
distoro da quantizao q(c) da cor c dada ento pelo erro mdio quadrtico
+

E ((c, q (c) ) = p (c)d (c, q (c))dc

onde p a funo de distribuio de probabilidade da cor c no espao de cor da


imagem. O uso da equao acima para medida da distoro introduzida pela
quantizao bastante intuitivo: na medida do erro devemos levar em considerao
a probabilidade de ocorrncia da cor c no espao de cores a ser quantizado, o erro
de quantizao ento modulado pela probabilidade, resultando em uma mdia
ponderada.
Diversas mtricas d no espao de cor podem ser escolhidas, com o
objetivo de medir a qualidade do processo de quantizao, a escolha dessas
mtricas deve levar em conta critrios perceptuais de cor. Alm disso, devemos
tambm levar em considerao problemas de eficincia computacional. Por essa
razo, comum a utilizao de pseudo-mtricas ou at mesmo outras funes
positivas que, de algum modo, forneam informaes sobre "proximidade" no
espao de cor. Uma escolha possvel o quadrado da distncia euclidiana, ou seja,
d(c1, c2) = <c2 - c1, c2 - c1>, onde <> um produto interno no espao de cor.
2.6.5 Quantizao Uniforme e Adaptativa
Vimos anteriormente que um mtodo de quantizao pode facilmente ser
definido a partir da escolha das clulas de quantizao. Como determinar a clula de
quantizao? Uma escolha natural e simples primeira vista, consiste em dividir o
espao de cor em clulas congruentes e em cada clula tomar o seu "centro" como
sendo o nvel de quantizao associado. Esse mtodo chamado de quantizao
uniforme. No caso de quantizao escalar com L nveis as clulas de quantizao
so intervalos (ci-1, ci] de igual comprimento, isto , ci - ci-1 = constante, e em cada
clula o valor de quantizao dado pela mdia

qi =

c i + c i 1
, 1 i L
2

Se o espao de cor o cubo RGB, e utilizamos quantizao uniforme em


cada uma das componentes de cor, as clulas de quantizao so cubos do espao
de cor, e em cada cubo o valor de quantizao dado pela cor no centro do cubo. A
Figura 2.20(a) ilustra as clulas de quantizao para o caso bidimensional. Na
Figura 2.20(b) ilustramos uma outra geometria de clulas de quantizao uniforme
bidimensional.

45

Figura 2.20 - Clulas de quantizao uniforme bidimensional


Apesar de que a quantizao uniforme fcil de ser obtida, sua utilizao
pode no ser a mais recomendada. Basta observar que nesse mtodo algumas
clulas de quantizao podem nem sequer possuir cores existentes no gamute da
imagem.
Suponha que os valores de cor da imagem no esto uniformemente
distribudos e que, portanto, certas cores contidas em uma regio do espao de cor
ocorrem na imagem com uma freqncia maior do que as outras cores. Se
subdividirmos esta regio em um nmero maior de clulas de quantizao,
estaremos diminuindo o tamanho das clulas, e portanto haver uma diminuio do
erro de quantizao dos elementos da imagem que possuem aquelas cores. Como
essas cores ocorrem em grande nmero estamos, conseqentemente, minimizando
a diferena entre a imagem original e a imagem quantizada.
Um mtodo de quantizao que no utiliza um particionamento do espao
de cor em clulas congruentes chamado de quantizao no-uniforme. A
quantizao no uniforme dita adaptativa quando a geometria das clulas
escolhida de acordo com caractersticas especficas da distribuio de cor na
imagem.

2.6.6 Mtodos Adaptativos de Quantizao


Nesta seo vamos analisar vrios mtodos de quantizao adaptativa de
cor. Esses mtodos podem ser descritos em duas etapas: na primeira etapa, feita
uma estimativa das propriedades estatsticas relevantes da imagem. Na segunda
etapa, aplica-se o mtodo geral de quantizao, particionando-se o espao de cor
com base nos dados obtidos na fase anterior.
Dessa forma, inicialmente devemos construir um histograma de
freqncia da imagem que nos d uma aproximao da funo de distribuio de
probabilidade das cores na imagem. Para reduzir o tamanho da memria ocupada
pelo histograma, comum fazer-se previamente uma quantizao uniforme da
imagem. Em geral utilizam-se 5 bits para cada uma das trs componentes. Estamos
supondo que uma imagem a cores quantizada inicialmente, sem perda perceptual,
utilizando 8 bits por componente de cor no espao RGB.
Na Figura 2.21 mostramos uma imagem que utilizaremos para comparar
os mtodos de quantizao a serem apresentados. A imagem da figura foi
quantizada em 24 bits (8 bits por canal R, G e B), no apresentando, portanto,
contornos de quantizao perceptveis.
Para efeitos de comparao posterior com outros algoritmos de
quantizao, mostramos na Figura 2.22(a) e (b) uma quantizao uniforme da
imagem na Figura 2.21 utilizando, respectivamente, 8 e 4 bits. Os contornos de
quantizao so perceptveis nessas duas imagens.

46

Figura 2.21 - Reproduo de uma imagem digital a cores com 24 bits

(a)

(b)

Figura 2.22 - Quantizao uniforme com 8 bits(a) e 4 bits(b)

Quantizao por seleo direta:

O mtodo de seleo direta escolhe, inicialmente, com base em


propriedades estatsticas da imagem, os nveis de quantizao a serem utilizados e
a partir da determina a funo de quantizao de forma a minimizar o erro de
quantizao. Um exemplo desse mtodo o algoritmo de populosidade.
Esse mtodo (algoritmo de populosidade) constri inicialmente o
histograma de freqncia da imagem e, em seguida, escolhe para os K nveis de
quantizao as K cores que ocorrem com maior freqncia no gamute da imagem
(cores mais populosas). A funo de quantizao pode ser definida tomando para
cada cor c do gamute da imagem, q(c) como sendo o nvel de quantizao mais
prximo usando, por exemplo, o quadrado da mtrica euclidiana. claro que se
houver mais de um nvel de quantizao atendendo a condio de minimalidade,
devemos tomar uma deciso sobre o valor de q(c). Uma possvel soluo escolher
aleatoriamente um dos possveis nveis. Uma escolha mais prudente deve levar em
conta os valores de quantizao dos pixels vizinhos.
O problema do algoritmo de populosidade est em ignorar totalmente
cores em regies de baixa densidade do espao de cor (um "highlight" em uma
imagem pode desaparecer completamente nesse processo de quantizao, uma vez
que ele ocupa apenas um pequeno nmero de pixels da imagem). O algoritmo pode
ser utilizado, com resultados satisfatrios, para imagens que apresentem uma

47

distribuio uniforme de cor.


A Figura 2.23(a) mostra uma reproduo das Figura 2.21 quantizada para
8 bits com o algoritmo de populosidade. Na Figura 2.23(b) mostramos a mesma
imagem quantizada para 4 bits com o mesmo algoritmo. O leitor deve lembrar que a
quantizao uniforme da imagem acima, para 8 e 4 bits, pode ser vista nas Figuras
2.23(a) e (b), respectivamente.

(a)

(b)

Figura 2.23 - Algoritmo de populosidade


(a) quantizao com 8 bits (b) quantizao com 4 bits

Quantizao por subdiviso recursiva:

Enquanto os mtodos de seleo direta partem da escolha dos nveis de


quantizao para determinar a funo de quantizao, os mtodos de subdiviso
recursiva determinam inicialmente as clulas de quantizao, para em seguida
calcular a funo de quantizao em cada clula. O nome para o mtodo deve-se ao
fato de que ele utiliza um processo de subdiviso recursiva do espao de cores com
a finalidade de determinar as clulas de quantizao.
Iniciamos com uma regio do espao de cor contendo o gamute de cores
da imagem. Em cada iterao, essa regio subdividida em duas ou mais
subregies do espao. Essa subdiviso baseada em caractersticas estatsticas
sobre a distribuio de cores nos diversos pixels da imagem. O processo de
recurso continua at que no existam mais cores da imagem original contidas em
algum conjunto da diviso, ou at que se obtenha o nmero desejado de clulas de
quantizao, que corresponde ao nmero de nveis. Uma vez determinadas as
clulas de quantizao, a funo de quantizao obtida atravs da escolha de um
nvel de quantizao em cada clula.
Um mtodo simples e eficaz de quantizao por subdiviso recursiva,
consiste em quantizar uma imagem escolhendo os nveis de quantizao de forma
que cada nvel de quantizao seja utilizado pelo mesmo nmero de pixels. Usando
o histograma da imagem, essa transformao de quantizao efetua uma
equalizao do histograma da imagem, ou seja, substitui o histograma original por
um histograma correspondente a uma distribuio uniforme das intensidades dos
pixels, conforme ilustrado na Figura 2.24.
A medida estatstica que permite obter uma transformao de
quantizao, com a propriedade de equalizar o histograma, a mediana.

48

Figura 2.24 (a) Histograma original; (b) Histograma equalizado


A mediana mC de um conjunto finito e ordenado de pontos do espao
C = {c1 c2 ... cn-1 cn} pode ser definida como o elemento do meio c(n+1)/2 se n
mpar, e pela mdia dos dois elementos intermedirios, se n par. A mediana uma
medida de localizao estatstica que divide o conjunto de dados C em duas partes
com igual nmero de elementos. Observe que, ao contrrio da mdia, a mediana
no influenciada pela magnitude dos elementos do conjunto. Um fato importante a
ser mencionado que no clculo da mediana devemos levar em considerao a
freqncia de cada elemento ci do conjunto C. Desse modo, a construo do
histograma de freqncia associado ao conjunto de dados uma etapa importante
do clculo da mediana.
O processo de quantizao por equalizao de histograma para imagens
monocromticas, consiste em se fazer subdivises sucessivas do intervalo de
intensidades da imagem utilizando a mediana do conjunto de intensidades em cada
processo de subdiviso.
A extenso do algoritmo de quantizao por equalizao de histograma
descrito acima, para imagens a cores, conhecido na literatura pelo nome de
algoritmo do corte mediano. Esse um dos algoritmos de quantizao mais
populares dentro da comunidade de computao grfica. Isso se d devido
facilidade de implementao, aliada sua eficincia computacional, juntamente com
os bons resultados perceptuais conseguidos na quantizao de imagens de 24 para
8 bits. De forma simples, o mtodo consiste em utilizar o algoritmo de quantizao
por equalizao de histograma em cada uma das componentes de cor do gamute da
imagem.
Algoritmo do Corte Mediano:

Indicamos por K o nmero de nveis de quantizao desejado. Tomamos


um paraleleppedo
V = ([r0, r1] x [g0, g1] x [b0, b1]},
de volume mnimo que contm todas as cores do gamute da imagem a ser
quantizada. Em seguida, tomamos a componente do espao de cor em cuja direo
o paraleleppedo V possui a aresta de maior comprimento. Vamos supor que essa
a componente verde g. Fazemos ento uma ordenao das cores no gamute da
imagem pela componente g, e calculamos a mediana mg do conjunto de cores com
base nessa ordenao. Dividimos assim a regio V em duas sub-regies
V1 = {(r, g, b) C; g mg}
V2 = {(r, g, b) C; g mg}
Aplicamos ento o mesmo mtodo de subdiviso a cada uma das regies
V1 e V2. Continuamos o processo de subdiviso, recursivamente, at que uma das

49

duas condies seguintes sejam satisfeitas: as duas sub-regies V1 e V2 obtidas no


contm cores do gamute da imagem, ou o nmero desejado, K, de clulas de
quantizao j foi obtido.
Aps a subdiviso do espao de cor no nmero de clulas desejado,
determinamos o nvel de quantizao de cada clula. Para se obter o valor de
quantizao de um pixel da imagem, devemos localizar a clula que contm a cor
desse pixel, e fazer a quantizao para o nvel correspondente a essa clula. A
implementao do algoritmo pode ser feita de modo eficiente utilizando-se uma
estrutura de dados espaciais adequada no processo de subdiviso recursiva do
espao de cor.
Vejamos um exemplo para o caso de um espao de cor bidimensional.

Exemplo 2.3:

Considere um conjunto bidimensional de 9 cores distintas, mostrado na


Figura 2.25(a), cujas freqncias so dadas pela Tabela 2.2 esquerda.
TABELA 2.2 Cores e suas freqncias obtidas na anlise da Figura 2.25(a)
Cor
c1
c2
c3
c4
c5
c6
c7
c8
c9

Freqncia
2
3
2
1
2
1
1
1
2

Cor
c1
c9
c8
c2
c3
c4
c7
c5
c6

Freqncia
2
2
1
3
2
1
1
2
1

A direo mais longa do retngulo de cores a vertical. Ordenando as


cores pela ordenada y, obtemos a Tabela 2.2 direita.
imediato verificar que a mediana do conjunto est na posio 7,5 e,
portanto, dada pela mdia das cores nas posies 7 e 8. Como essas posies
so ocupadas pela cor c2, conclumos que a mediana c2. A Figura 2.25(b) mostra a
subdiviso do conjunto em sua mediana c2.

Figura 2.25 Subdiviso recursiva pelo corte mediano (a), (b), (c);
nveis de quantizao (d)
Temos portanto dois retngulos de cores resultantes da subdiviso. A
aresta mais longa de cada um desses retngulos a horizontal. Ordenando as cores
pela componente horizontal x, obtemos a Tabela 2.3.

50

TABELA 2.3 Cores e freqncias da Figura 2.25 (b) ordenadas pela horizontal x
Cor
c1
c2
c9
c8
c3
c6
c4
c5
c2
c7

Freqncia
2
3
2
1
2
1
1
2
3
1

No primeiro caso, a mediana a cor c2, e no segundo caso, a mediana


a cor c5. As subdivises correspondentes no retngulo de cor aparecem na Figura
2.25(c).
Aps determinadas as quatro clulas de quantizao, o nvel de
quantizao em cada clula calculado tomando a mdias das cores do gamute em
cada clula. As cores que esto no bordo da clula devem ser quantizadas para o
nvel de quantizao mais prximo. A Figura 2.25(d) mostra os quatro nveis de
quantizao associados a cada clula de quantizao. A funo de quantizao q
dada pela Tabela 2.4.
TABELA 2.4 Funo de quantizao q
c (cor)
c1, c2
c3, c4, c6
c5, c7
c8, c9

q(c)
q1
q2
q3
q4

Podemos mudar no algoritmo do corte mediano o clculo do nvel de


quantizao e o clculo do ponto de subdiviso utilizado. O uso da mediana no
processo de subdiviso das regies de cor corresponde a se fazer uma equalizao
do histograma da imagem. Portanto cada clula est associada, aproximadamente,
ao mesmo nmero de pixels da imagem.
A Figura 2.26(a) mostra uma reproduo da imagem de Figura 2.21
quantizada com 8 bits pelo algoritmo do corte mediano. A Figura 2.26(b) uma
reproduo de uma quantizao em 4 bits pelo algoritmo do corte mediano.

(a)

(b)

Figura 2.26 Quantizao pelo algoritmo do corte mediano: (a) 8 bits; (b) 4 bits

51

A quantizao dessa imagem com o nmero correspondente de bits,


utilizando, respectivamente, quantizao uniforme e o algoritmo de populosidade,
pode ser vista nas Figura 2.22(a), (b), e 2.23(a) e (b), respectivamente.
Diversas mudanas podem ser efetuada no algoritmo de corte mediano,
dando origem a diversas variaes do algoritmo. Uma mudana simples consiste em
se escolher um particionamento de modo a minimizar a varincia entre as cores de
cada sub-regio e o nvel de quantizao associado. Em geral, para a grande
maioria das imagens, as diferentes mudanas que podem ser feitas no algoritmo
so, em geral, imperceptveis quando fazemos quantizao de 24 para 8 bits. Essas
mudanas devem ser analisadas, em grande parte, do ponto de vista da eficincia
computacional.

2.7 TCNICAS DE MODIFICAO DE HISTOGRAMAS


As tcnicas de modificao de histograma so conhecidas como tcnicas
ponto-a-ponto, uma vez que o valor do tom de cinza de um certo pixel, aps o
processamento, depende apenas de seu valor original. Em contraste, nas tcnicas
de processamento orientadas a vizinhana, o valor resultante depende tambm, de
alguma forma, dos pixels que circundam o elemento na imagem original.

2.7.1 Transformaes de Intensidade


Diversas tcnicas de modificao da distribuio dos pixels na escala de
cinza podem ser implementadas a partir do conceito de transformaes de
intensidade, ou seja,

0 f 1
onde f = 0 representa um pixel preto e f = 1 indica pixel branco.
Para qualquer f no intervalo [0, 1], denominaremos transformaes de
intensidade as funes do tipo:

g = T(f )

que mapearo cada pixel de tom de cinza f da imagem original em um novo tom de
cinza g, na imagem destino. Estas funes devem satisfazer duas condies:
i) devem retornar um nico valor para cada valor distinto de f e devem
crescer monotonicamente no intervalo 0 f 1;
ii) 0 T(f) 1 para 0 f 1.
Um exemplo de funo que satisfaz estes critrios dado na Figura 2.27.
O efeito desta transformao no-linear de intensidade sobre a imagem um
aumento de seu contraste.
As transformaes de intensidade podem ser lineares ou no-lineares. As
transformaes lineares podem ser genericamente descritas pela equao:

g = c f +b

52

onde o parmetro c controla o contraste da imagem resultante, enquanto b ajusta


seu brilho. A Figura 2.28 apresenta diversos exemplos de transformaes lineares e
seus respectivos valores de c e b.

Escuro Claro

T(r)

Escuro Claro

Figura 2.27 Exemplo de transformao de intensidade


g
255

g
255

c=1
b = 32

255
Nveis de Cinza
(a)

c=2
b = 32
f

g
255

255
Nveis de Cinza
(b)

g
255

c=1
b = -32

255
Nveis de Cinza
(c)

c=2
b = -32

255
Nveis de Cinza
(d)

Figura 2.28 Exemplos de transformaes de intensidade lineares


As transformaes no-lineares podem ser descritas por equaes tais
como:

g = 31,875 log 2 ( f + 1)

produzindo o resultado mostrado na Figura 2.29. Nos aplicativos para


processamento de imagens disponveis atualmente, freqentemente estas
transformaes so especificadas de forma interativa pelo usurio, utilizando o
mouse ou dispositivo equivalente e desenhando a curva desejada.

53

g
255

255
Nveis de Cinza

Figura 2.29 Exemplo de transformao de intensidade no-linear


O conceito de transformao de intensidade linear pode ser utilizado para
implementar uma funo que automaticamente expande a escala de tons de cinza
de uma imagem para que ela ocupe todo o intervalo possvel. Esta funo recebe o
nome de auto-escala. Para um sistema que opera com imagens com 256 nveis de
cinza, uma funo de auto-escala pode ser implementada calculando, para cada
pixel com tom de cinza f, o nvel de cinza resultante g, pela equao:

g=

255
( f f min )
f max f min

onde fmax e fmin so, respectivamente, os nveis mximo e mnimo de cinza


presentes na imagem original.

2.7.2 Uniformizao das Mdias e Varincias de imagens


Para se realizar transformaes sobre pares de imagens, capturadas em
tempos ou sob condies ambientais diferenciadas, torna-se necessrio o ajuste do
brilho e contraste destas imagens. Uma das formas de se fazer este ajuste o
processo de uniformizao das mdias e varincias de imagens.
Considere duas imagens, a imagem de referncia (gr) e a imagem de
ajuste (ga). Calcula-se, ento, suas mdias (mr e ma) e varincias (Vr e Va).
Dois fatores devem ser calculados no processo: o fator de ganho e o fator
de deslocamento (offset).

ganho =
offset = mr

Vr
Va
Vr
ma
Va

A correo da imagem de ajuste se d atravs da transformao linear


aplicada a todos seus pixels.

g = ganho f a + offset

54

O fator de ganho corresponde ao coeficiente angular da reta e modifica a


varincia da imagem (contraste) enquanto que o offset corresponde a um
deslocamento do histograma no eixo x, modificando a mdia da imagem (brilho).

2.7.3 Equalizao de Histograma


A equalizao de histograma uma tcnica a partir da qual se procura
redistribuir os valores de tons de cinza dos pixels em uma imagem, de modo a obter
um histograma uniforme, no qual o percentual de pixels de qualquer nvel de cinza
praticamente o mesmo. Para tanto, utiliza-se uma funo auxiliar, denominada
funo de distribuio acumulada (cdf cumulative distribution function), que pode
ser expressa por:
k

nj

j =0

s k = T (rk ) =

= p r (r j )
k

j =0

onde 0 rk 1 e k = 0, 1, ..., L 1;
A inversa desta funo dada por:

rk = T 1 (s k )

para 0 s k 1

e embora ela no seja necessria no processo de equalizao de histograma, ser


importante no mtodo descrito na seo seguinte. Convm dizer que outras funes
de transformao, que no a cdf, podem ser especificadas.

Exemplo 2.4:

Seja o histograma da Tabela 2.1, ilustrado graficamente na Figura 2.12, ambas


reproduzidas a seguir para maior facilidade. Equaliz-lo utilizando a funo de
distribuio acumulada e plotar o histograma resultante.
Nvel de cinza (rk)
0
1/7
2/7
3/7
4/7
5/7
6/7
7/7
Total

nk
1120
3214
4850
3425
1995
784
541
455
16384

pr(rk)
0,068
0,196
0,296
0,209
0,122
0,048
0,033
0,028
1

0.4
0.3
0.2
0.1
0
Nvel de cinza (rk)

Utilizando a cdf como funo de transformao, calculamos:

s0 = T (r0 ) = pr (r j )
0

j =0

= pr (r0 ) = 0,068

55

De forma similar,

s1 = T (r1 ) = p r (r j )
1

j =0

= p r (r0 ) + p r (r1 )
= 0,068 + 0,196 = 0,264
e

s 2 = 0,560

s 3 = 0,769

s 4 = 0,891

s 5 = 0,939

s 6 = 0,972

s7 = 1

Esta funo est plotada na Figura 2.30.


1
0,8
0,6
0,4
0,2
0
0

Figura 2.30 Funo de transformao utilizada para a equalizao


Como a imagem foi quantizada com apenas 8 nveis de cinza, cada valor
dever ser arredondado para o valor vlido (mltiplo de 1/7) mais prximo. Dessa
forma:

s1 = 2

s0 = 0
s4 = 6

s5 = 1

s2 = 4
s6 = 1

s3 = 5

s7 = 1

Concluindo o mapeamento, verificamos que o nvel original r0 = 0 foi


mapeado para s0 = 0 e, portanto, a raia correspondente no sofreu alterao. J os
3214 pixels que apresentavam tem de cinza 1/7 foram remapeados para s1 = 2/7.
Similarmente, os pixels com tom de cinza 2/7 foram modificados par 4/7, aqueles
com r = 3/7 passaram a 5/7 e os de 4/7 foram mapeados para 6/7. Convm
observar, entretanto, que as trs raias correspondentes aos pixels com tons de cinza
5/7, 6/7 e 1 foram somadas em uma s raia, com tom de cinza mximo, isto , 1.
Agrupando os resultados na Tabela 2.5, teremos o histograma aps a
equalizao, mostrado graficamente na Figura 2.31.
Pode-se notar que o histograma equalizado, apesar de estar longe de ser
perfeitamente plano, apresenta melhor distribuio de pixels ao longo da escala de
cinza em relao ao original.
A Figura 2.32 apresenta um exemplo de aplicao da tcnica de
equalizao de histograma para aumentar o contraste em uma imagem com 256
tons de cinza. A parte (a) apresenta a imagem original, cujo histograma plotado na
Figura 2.32 (b). A parte (d) mostra o histograma equalizado, correspondente
imagem da Figura 2.32(c).

56

TABELA 2.5 Histograma equalizado


Nvel de cinza (sk)
0
1/7
2/7
3/7
4/7
5/7
6/7
7/7
Total

nk
1120
0
3214
0
4850
3425
1995
1780
16384

ps(sk)
0,068
0,000
0,196
0,000
0,296
0,209
0,122
0,109
1

0.3
0.25
0.2
0.15
0.1
0.05
0
Nvel de cinza (rk)

Figura 2.31 Histograma equalizado

(a)

(b)

(c)

(d)

Figura 2.32 Aplicao da equalizao de histograma a imagens com baixo


contraste
As tcnicas de obteno e equalizao de histogramas tambm podem
ser aplicadas a trechos de imagens, por exemplo, janelas n x m. Estas tcnicas
locais servem principalmente para realar detalhes sutis de pequenas pores da
imagem.

57

2.7.4 Especificao Direta de Histograma


Apesar de sua grande utilizao em situaes de aprimoramento de
contraste de imagens, a equalizao de histograma apresenta como principal
limitao o fato de no permitir a especificao de nenhum parmetro, a no ser a
funo de transformao, que, como vimos na seo anterior, costuma ser a cdf da
distribuio de probabilidade original. Existem situaes, entretanto, em que seria
desejvel poder especificar que tipo de mudana se deseja sobre o histograma.
Nestes casos, uma das possveis tcnicas a especificao direta do histograma.
Dada uma imagem e, conseqentemente seu histograma, e um novo
histograma desejado, o procedimento de especificao direta de histograma
consistem em:
1) equalizar os nveis da imagem original usando a cdf discreta:
k

nj

j =0

s k = T (rk ) =

= p r (r j )
k

j =0

2) obter a funo de distribuio acumulada (cdf) do histograma desejado:

v k = G ( z k ) = p z (z j )
k

j =0

1
3) aplicar a funo de transformao inversa z = G (s ) aos nveis obtidos no
passo 1.

Exemplo 2.5:

Seja novamente histograma da Tabela 2.4. Deseja-se modificar este histograma de


modo que a distribuio de pixels resultante seja aquela da Tabela 2.6.
TABELA 2.6 Histograma desejado
Nvel de cinza (zk)
0
1/7
2/7
3/7
4/7
5/7
6/7
7/7
Total

nk
0
0
0
1638
3277
6554
3277
1638
16384

pz(zk)
0,000
0,000
0,000
0,100
0,200
0,400
0,200
0,100
1

O histograma aps equalizao j foi calculado no exemplo anterior e


seus resultados esto na Tabela 2.5.
O prximo passo consiste em obter a cdf da distribuio de probabilidade
desejada. Seguindo o mesmo raciocnio utilizado para o clculo da cdf do
histograma original, encontramos:

v0 = 0

v1 = 0

v2 = 0

v 3 = 0,1

v 4 = 0,3

v5 = 0,7

v 6 = 0,9

v7 = 1

58

O ltimo passo e o mais difcil de entender quando se estuda este


assunto pela primeira vez a obteno da inversa. Como estamos lidando com
nveis discretos, a obteno da funo inversa consistir basicamente em procurar,
para cada valor de sk, o valor de vk que mais se aproxima dele. Por exemplo, o valor
de vk que mais se aproxima de s1 = 2/7 0,286 G(z4) = 0,3, ou seja G-1(0,3) = z4.
Portanto, os pixels que, aps a equalizao do histograma original, foram
reposicionados no tom de cinza s1, sero mapeados para o tom de cinza z4. Em
outras palavras, os 3214 pixels que apresentavam originalmente tom de cinza 1/7 e
que foram remapeados para s1 = 2/7 devido equalizao, sero transladados
novamente para z4 = 4/7 por fora da especificao direta de histograma.
Procedendo de forma similar para os demais valores de sk, teremos:

s1 = 2 0,286 z4
7
s2 = 4 0,571 z5 s3 = 5 0,714 z5
7
7
s4 = 6 0,857 z6 s5 = 1 z7
7
s6 = 1 z 7
s7 = 1 z 7
s0 = 0 z 2

Neste caso, assumimos que o algoritmo de clculo da inversa, para um


valor de sk, percorreria os diversos valores de vk, armazenando o ndice do ltimo
valor que tenha resultado na menor diferena encontrada. Se o algoritmo possuir
outra forma de solucionar empates, o nvel de s0 poder mapear em z0 ou z1. A
Tabela 2.7 resume os histogramas original e desejado, suas respectivas cdfs e o
processo de mapeamento descrito anteriormente.
TABELA 2.7 Resumo da especificao direta de histograma
k
0
1
2
3
4
5
6
7
Total

pr(rk)
0,068
0,196
0,296
0,209
0,122
0,048
0,033
0,028

sk
0
2/7
4/7
5/7
6/7
1
1
1
16384

vk
0,00
0,00
0,00
0,10
0,30
0,70
0,90
1,00

pz(zk)
0,000
0,000
0,000
0,100
0,200
0,400
0,200
0,100
1

A Tabela 2.8 apresenta os valores obtidos para o histograma resultante.


Para uma comparao visual entre o histograma desejado e o obtido, plotamos cada
um deles nas Figuras 2.33 e 2.34, respectivamente.
TABELA 2.8 Histograma obtido
Nvel de cinza (zk)
0
1/7
2/7
3/7
4/7
5/7
6/7
1
Total

pz(zk)
0,000
0,000
0,068
0,000
0,196
0,505
0,122
0,109
1

59
0,4
0,5
0,3

0,4
0,3

0,2

0,2
0,1

0,1

Figura 2.33 Histograma desejado

Figura 2.34 Histograma obtido

Pode-se notar que o histograma obtido aproxima-se, dentro do possvel,


do histograma desejado.
A Figura 2.35 apresenta um exemplo de aplicao da tcnica de
especificao direta de histograma aplicada a uma imagem com 256 tons de cinza.
A parte (a) apresenta a imagem original, cujo histograma plotado na Figura 2.35(c).
A parte (d) mostra o histograma desejado, enquanto a Figura 2.35(e) mostra o
histograma obtido, que corresponde imagem da Figura 2.35(b).

(a)

(b)

(e)
(d)
(c)
Figura 2.35 Exemplo de aplicao da especificao direta de histograma

2.7.5 Limiarizao (Thresholding)


O princpio da limiarizao consiste em separar as regies de uma
imagem quando esta apresenta duas classes, o fundo e o objeto. Devido ao fato da
limiarizao produzir uma imagem binria sada, o processo tambm
denominado binarizao.
A forma mais simples de limiarizao consiste na bipartio do
histograma, convertendo os pixels cujo tom de cinza maior ou igual a um certo
valor de limiar (T) em brancos e os demais em pretos, como ilustra a Figura 2.36.

60

(a)
(b)
Figura 2.36 Limiarizao de uma imagem monocromtica utilizando limiar T: (a)
histograma original, (b) histograma da imagem binarizada
No caso de nveis de cinza divididos basicamente em duas classes, onde
o histograma apresenta dois picos e um vale, a limiarizao trivial. Ainda assim, os
efeitos decorrentes da escolha de um valor especfico de limiar dentre os diversos
pontos situados na regio de vale podem ser analisados na Figura 2.37.

(b)
(a)

(d)
(c)

(f)
(e)

61

(h)
(g)
Figura 2.37 Efeitos da escolha do limiar na binarizao de uma imagem grayscale.
As imagens (c), (e) e (g) correspondem bipartio dos histogramas (d), (f) e (h),
respectivamente, nos limiares indicados, a saber: 128, 64 e 192.
Matematicamente, a operao de limiarizao pode ser descrita como
uma tcnica de processamento de imagens na qual uma imagem de entrada f(x, y)
de N nveis de cinza produz sada uma imagem g(x, y), chamada de imagem
limiarizada, cujo nmero de nveis de cinza menor que N. Normalmente, g(x, y)
apresenta 2 nveis de cinza, sendo:

g ( x, y ) = 1 se f ( x, y ) T
= 0 se f ( x, y ) < T
onde os pixels rotulados com 1 correspondem aos objetos e os pixels etiquetados
com 0 correspondem ao fundo (background) e T um valor de tom de cinza
predefinido, ao qual denominamos limiar.
A Figura 2.38(a) mostra um exemplo de histograma particionado
utilizando dois valores de limiar: T1 = 37 e T2 = 233. As Figuras 2.38(b) e 2.38(c)
mostram a imagem original e a imagem aps a limiarizao.

(a)

(c)
(b)
Figura 2.38 Exemplo de utilizao de mltiplos limiares

62

A limiarizao pode ser vista como uma operao que envolve um teste
com relao a uma funo T do tipo T = T[x, y, p(x, y), f(x, y)], onde f(x, y) o tom
de cinza original no ponto (x, y) e p(x, y) indica alguma propriedade local deste
ponto, por exemplo a mdia de seus vizinhos. Quando T depende apenas de f(x, y),
o limiar chamado global; quando T depende de f(x, y) e de p(x, y), o limiar
chamado local. Se, alm disso, T depende das coordenadas espaciais de (x, y), o
limiar chamado dinmico ou adaptativo.

Influncia da Iluminao

A iluminao desempenha um papel significativo no processo de


limiarizao, uma vez que provoca alteraes no histograma original da imagem,
eventualmente eliminando uma regio de vale entre dois picos, naturalmente
propcia para a definio de um limiar global.
Pode-se provar que, sendo f(x, y) = i(x, y) . r(x, y) e sendo z(x, y) =
ln f(x, y) = ln i(x, y) + ln r(x, y) = i(x, y) + r(x, y), onde i(x, y) e r(x, y) so
variveis aleatrias independentes, o histograma de z(x, y) dado pela convoluo
do histograma de i(x, y) com o de r(x, y).
Uma tcnica comum utilizada para compensar a no uniformidade da
iluminao consiste em projetar o padro de iluminao em uma superfcie refletora
branca. Isto nos d uma imagem g(x, y) = K . i(x, y), onde k depende da superfcie
utilizada. Deste modo, para qualquer imagem f(x, y) = i(x, y) . r(x, y) obtida com a
mesma funo iluminao, simplesmente divide-se f(x, y) por g(x, y), obtendo-se
uma funo normalizada:

h ( x, y ) =

f ( x, y ) r ( x , y )
=
g ( x, y )
K

Logo, se r(x, y) pode ser limiarizada utilizando o limiar T, ento h(x, y) poder ser
segmentada usando um limiar T/K.
A Figura 2.39 ilustra as alteraes causadas por modificaes no padro
de iluminao na imagem binarizada resultante. Na parte (a) apresentada a
imagem original, cujo histograma exibido na Figura 2.41(e). O resultado da
limiarizao desta imagem com limiar T = 128 mostrada na Figura 2.41(c). Na
coluna da direita so mostradas a imagem com padro de iluminao alterado (b),
seu histograma (f) e o resultado da limiarizao com o mesmo limiar utilizado
anteriormente (d).

(a)

(b)

63

(c)

(d)

(f)
(e)
Figura 2.39 Influncia da iluminao no processo de limiarizao

Limiarizao pelas Propriedades Estatsticas da Imagem

Pelo exposto at aqui, assumiu-se que a escolha do valor de limiar


arbitrria e subjetiva. Sabendo que o histograma uma representao grfica da
distribuio de probabilidade de ocorrncia dos nveis de cinza em uma imagem,
lcito imaginar a possibilidade de uso de tcnicas de clculo do valor timo de limiar
com base nas propriedades estatsticas da imagem.
Uma destas tcnicas, denominada limiarizao tima, parte de uma
imagem da qual se conhecem as principais propriedades estatsticas, a saber:

1 = mdia dos tons de cinza da regio de interesse;


2 = mdia dos tons de cinza da regio de fundo (background);
1, 2 = desvios padro;
P1, P2 = probabilidade de ocorrncia dos pixels pertencentes a esta ou aquela
regio;
Pode-se mostrar que existe um valor timo de limiar T, dado por uma das
razes da equao

AT 2 + BT + C = 0
onde:

A = 12 22

B = 2 1 22 2 22

P
C = 22 12 12 22 + 2 12 22 ln 2 1
1 P2
Duas razes reais e positivas indicam que a imagem pode requerer dois

64

valores de limiar para obter uma soluo tima.


2
2
2
Se as varincias forem iguais = 1 = 2 , um nico valor T
necessrio:

T=

1 + 2
2

P
2
ln 2
1 2 P1

Se, alm disso, as duas classes forem equiprovveis:

T=

1 + 2
2

o que est em acordo com o conceito intuitivo de que o valor timo de limiar, quando
as classes apresentam a mesma distribuio de probabilidade, o ponto mdio
entre as mdias das classes.

2.8 OPERAES LGICAS E ARITMTICAS COM IMAGENS


Sabemos que aps uma imagem ter sido adquirida e digitalizada, ela
pode ser vista como uma matriz de inteiros e portanto pode ser manipulada
numericamente, utilizando operaes lgicas e/ou aritmticas. Estas operaes
podem ser efetuadas pixel a pixel ou orientadas vizinhana. No primeiro caso, elas
podem ser descritas pela seguinte notao:

X opn Y = Z
onde X e Y podem ser imagens (matrizes) ou escalares, Z obrigatoriamente uma
matriz e opn um operador aritmtico (+, -, *, /) ou lgico (and, or, xor) binrio.
Sejam duas imagens X e Y de igual tamanho. Estas imagens podem ser
processadas pixel a pixel, utilizando um operador aritmtico ou lgico, produzindo
uma terceira imagem Z, cujos pixels correspondem ao resultado de X opn Y para
cada elemento de X e Y, conforme ilustra esquematicamente a Figura 2.40.
opn

Figura 2.40 Operaes lgicas/aritmticas pixel a pixel.

2.8.1 Operaes Aritmticas Pixel a Pixel


Ao executarmos operaes aritmticas sobre imagens, devemos tomar
especial cuidado com os problemas de underflow ou overflow do resultado. A adio

65

de duas imagens de 256 tons de cinza, por exemplo, pode resultar em um nmero
maior que 255 para alguns pixels, ao mesmo tempo que a subtrao de duas
imagens pode resultar em valores negativos para alguns elementos. Para contornar
estes problemas, existem basicamente duas alternativas: (1) manter os resultados
intermedirios em uma matriz, na qual o espao em memria alocado para cada
pixel permita a representao de nmeros negativos e/ou maiores que 255 e, em
seguidas, proceder a uma normalizao destes valores intermedirios; (2) truncar os
valores maiores que o mximo valor permitido, bem como os valores negativos,
igualando-os a 255 e 0, respectivamente. A deciso depende do objetivo que se tem
em mente ao executar determinada operao. Efetivamente, a segunda alternativa
mais simples que a primeira.

Exemplo 2.6:

Dadas as matrizes X e Y a seguir, correspondentes a trechos 3 x 3 de imagens de


256 tons de cinza, adicion-las e informar:
a) o resultado intermedirio (sem consideraes de underflow e overflow);
b) o resultado final utilizando normalizao;
c) o resultado final utilizando truncamento.

200 100 100


X = 0
10 50
50 250 120

100 220 230


Y = 45 95 120
205 100
0

300 320 330

a) X + Y = 45 105 170
255 350 120
b) Fazendo com que a escala [45, 350] seja adequada ao intervalo [0, 255],
utilizando-se a relao

g=

255
( f f min )
f max f min

obtm-se:

( X + Y )N

213 230 238


= 0
50 105
175 255 63

d) Truncando os valores maiores que 255, obtm-se:

( X + Y )T

255 255 255


= 45 105 170
255 255 120

66

As principais aplicaes das operaes aritmticas sobre imagens so a


adio, a subtrao, a multiplicao e a diviso. Assim como Y foi, implicitamente,
considerado at aqui como sendo uma matriz, ela tambm pode ser um escalar. As
Figuras 2.41 e 2.42 mostram exemplos de cada operao aritmtica.
Na adio a imagem resultante Z, o resultado da soma dos valores de
intensidade de X e Y. Se Y for um escalar positivo, Z ser uma verso mais clara de
X; o acrscimo de intensidade ser o prprio valor de Y. A adio pode ser utilizada
na normalizao do brilho de imagens e na remoo de rudos.
Na subtrao Z o resultado da diferena dos valores de intensidade de
X e Y. Se Y for um escalar positivo, Z ser uma verso mais escura de X; o
decrscimo de intensidade ser o prprio valor de Y. A subtrao pode ser utilizada
para detectar eventuais diferenas entre duas imagens (eventualmente adquiridas
de forma sucessiva) da mesma cena.
Na multiplicao Z o produto dos valores de intensidades de X e Y. Se Y
for um escalar positivo, os valores de intensidade de Z sero diretamente
proporcionais a X por um fator Y. A multiplicao pode ser utilizada na calibrao de
brilho. A calibrao um processo semelhante normalizao de brilho, mas que
pode estar relacionado adequao a diferentes valores de luminncia sobre uma
mesma cena, por exemplo.
Na diviso Z a razo dos valores de intensidade de X pelos valores
correspondentes em Y. Se Y for um escalar positivo, os valores de intensidade de Z
sero inversamente proporcionais a X por um fator Y. Tambm utilizada na
normalizao de brilho.

(a)
(b)
(c)
Figura 2.41 Exemplo de adio de imagens monocromticas
(a) X, (b) Y, (c) (X + Y)N

(a)
(b)
(c)
Figura 2.42 Exemplos de subtrao, multiplicao e diviso das imagens das
figuras 2.41(a) e 2.41(b). (a) (X Y)N; (b) (X * Y)N; (c) (X/Y)N

67

2.8.2 Operaes Lgicas Pixel a Pixel


Todas as operaes lgicas (ou booleanas) conhecidas podem ser
aplicadas entre imagens, inclusive a operao de complemento (NOT), que uma
operao unria. Operaes lgicas podem ser efetuadas em imagens com qualquer
nmero de nveis de cinza mas so melhor compreendidas quando vistas em
imagens binrias, como ilustra a Figura 2.43. As Figuras 2.44 a 2.47 ilustram as
operaes AND, OR, XOR e NOT aplicadas a imagens com mltiplos tons de cinza.

X
(a)

Y
(b)

X and Y
(c)

X or Y
(d)

X xor Y
(e)

(not X) and Y
(f)

not X
not Y
(g)
(h)
Figura 2.43 Exemplos de operaes lgicas em imagens binrias

68

(a)
(b)
(c)
Figura 2.44 Exemplo de operao AND entre imagens monocromticas:
(a) X, (b) Y, (c) X and Y

(a)
(b)
(c)
Figura 2.45 Exemplo de operao OR entre imagens monocromticas:
(a) X, (b) Y, (c) X or Y

(a)
(b)
(c)
Figura 2.46 Exemplo de operao XOR entre imagens monocromticas:
(a) X, (b) Y, (c) X xor Y

(a)
(b)
Figura 2.47 Exemplo de operao NOT sobre imagens monocromticas:
(a) X, (b) not X

2.8.3 Operaes Orientadas a Vizinhana


As operaes lgicas e aritmticas orientadas a vizinhana utilizam o
conceito da convoluo com mscaras, que ser introduzido a seguir e detalhado na
prxima seo.

69

Seja uma sub-rea de uma imagem, onde Z1, ..., Z9 so os valores de


tons de cinza de cada pixel, e uma mscara 3 x 3 de coeficientes genricos W 1, ...,
W9.
Z1 Z2 Z3
Z4 Z5 Z6
Z7 Z8 Z9

W1 W2 W3
W4 W5 W6
W7 W8 W9

A mscara anterior percorrer a imagem, desde o seu canto superior


esquerdo at seu canto inferior direito. A cada posio relativa da mscara sobre a
imagem, o pixel central da sub-imagem em questo ser substitudo, em uma matriz
denominada imagem-destino, por um valor:
9

Z = Wi Z i
i =1

As operaes de convoluo com mscaras so amplamente utilizadas


no processamento de imagens. Uma seleo apropriada dos coeficientes W 1, ..., W 9
torna possvel uma grande variedade de operaes teis, tais como reduo de
rudo, afinamento e deteco de caractersticas da imagem. Deve-se observar,
entretanto, que a operao de convoluo com mscaras exige grande esforo
computacional. Por exemplo, a aplicao de uma mscara 3 x 3 sobre uma imagem
512 x 512 requer 9 multiplicaes e oito adies para cada localizao de pixel, num
total de 2.359.296 multiplicaes e 2.097.152 adies. Por esta razo, aliada
relativa simplicidade de implementao de multiplicadores, somadores e
registradores de deslocamento (shift registers), a literatura registra diversas
implementaes de convoluo com mscaras em hardware.

2.9 OPERAES DE CONVOLUO COM MSCARAS


Inmeras operaes teis em processamento de imagens so efetuadas
a partir de um mesmo conceito bsico, o de convoluo com mscaras.
A operao de convoluo unidimensional entre dois vetores A e B,
denotada A * B, pode ser entendida como um conjunto de somas de produtos entre
os valores de A e B, sendo que inicialmente o vetor B espelhado e, aps cada
soma de produtos, deslocado espacialmente de uma posio. Para ilustrar este
conceito, mostraremos a seguir, passo a passo, a convoluo do vetor A = {0, 1, 2,
3, 2, 1, 0} com o vetor B = {1, 3, -1}.
1) Inicialmente, o vetor B espelhado e alinhado com o primeiro valor de A. O
resultado da convoluo (0 x (-1)) + (0 x 3) + ( 1 x 1) = 1 e colocado em A * B na
posio correspondente ao centro do conjunto B.
A
B
A*B

-1

0
3
1

1
1

2) O conjunto B deslocado de uma posio. O resultado da convoluo A * B


(0 x (-1)) + (1 x 3) + (2 x 1) = 5.
A
B
A*B

0
-1
1

1
3
5

2
1

70

3) E assim sucessivamente at obtermos a ltima convoluo possvel, dada por


(1 x (-1)) + (0 x 3) + (0 x 1) = -1
A
B
A*B

0
1

1
5

2
8

3
9

2
4

1
-1
1

0
3
-1

O conjunto {1, 5, 8, 9, 4, 1, -1} o resultado final da operao de


convoluo.
Este raciocnio pode ser expandido para o caso bidimensional, onde a
imagem a ser processada uma matriz bidimensional relativamente grande e
correspondente ao conjunto A de nosso exemplo anterior, enquanto que a matriz de
pequenas dimenses (mscara) corresponde ao conjunto B. A mscara, aps ter
sido espelhada tanto na horizontal quanto na vertical, percorrer todos os pontos da
imagem deslocando-se ao longo de cada linha e entre as vrias colunas, da direita
para a esquerda, de cima para baixo, at ter processado o ltimo elemento da matriz
imagem. O resultado ser armazenado em uma matriz de mesmas dimenses que a
imagem original.
Seja a matriz A (imagem) dada por:

5
3

4
A=
9

5
1

8 3 4 6 2 3 7
2 1 1 9 5 1 0
9 5 3 0 4 8 3

2 7 2 1 9 0 6
7 9 8 0 4 2 4

2 1 8 4 1 0 9
8 5 4 9 2 3 8

7 1 2 3 4 4 6

e seja a matriz B (mscara) a seguir:

0
2 1

B = 1 1 1
0 1 2
A operao de convoluo bidimensional produzir como resultado a matriz:

2
26
23
6
9
4
20 10
18 1
8
2
7
3
3 11

14 22
5
1
9
2 8
1

29 21
9
9 10
12 9 9

A* B =
21 1
1 3 4 2
16
5

7
6
1
17
9
15 9 3
21 9
1
6
2 1 23
2

9 5 25 10 12 15 1 12

71

A Figura 2.48 ilustra em detalhes o clculo do resultado correspondente


ao pixel no canto superior esquerdo da imagem. Observar que a mscara B foi
espelhada em relao a x e y antes do clculo das somas de produtos.

Figura 2.48 Clculo do primeiro valor de convoluo de A por B


Para calcular os valores resultantes dos pixels prximos s bordas da
imagem, podem ser adotadas diversas estratgias, dentre elas:
a) preencher com zeros os contornos da imagem, de maneira condizente com o
tamanho da mscara utilizado, como ilustra a Figura 2.48;
b) preencher o contorno da imagem com os mesmos valores da(s) primeira(s) e
ltima(s) linha(s) e coluna(s);
c) prevenir a eventual introduo de erros nas regies de bordas da imagem
causados por qualquer um dos mtodos acima, considerando na imagem
resultante apenas os valores para os quais a mscara de convoluo ficou
inteiramente contida na imagem original.
A seguir, ilustraremos o uso do conceito de convoluo com mscaras,
aplicado deteco de caractersticas de imagens, particularmente pontos isolados,
linhas e bordas.

2.9.1 Deteco de Pontos Isolados e Deteco de Linhas


A mscara a seguir um exemplo de operador de convoluo que,
quando aplicado a uma imagem, destacar pixels brilhantes circundados por pixels
mais escuros.

1 1 1
1 8 1

1 1 1
As mscaras a seguir podem ser utilizadas para a deteco de linhas
horizontais e verticais (acima) e diagonais (abaixo).

1 1 1
2
2
2

1 1 1

1 2 1
1 2 1

1 2 1

72

1 1 2
1 2 1

2 1 1

2 1 1
1 2 1

1 1 2

2.9.2 Deteco de Bordas


O tema deteco de bordas (edge detection) vem desafiando os
pesquisadores da rea de Processamento de Imagens h muitos anos e sobre ele
continuam sendo experimentadas novas tcnicas, cujos resultados so publicados
ainda hoje nos mais conceituados peridicos cientficos mundiais. Trata-se, portanto,
de um tema em aberto, a deteco de bordas em cenas consideradas difceis.
Apenas a ttulo de ilustrao, da operao de convoluo com mscaras,
apresentamos a seguir alguns exemplos de mscaras que podem ser utilizadas para
a tarefa de deteco de bordas.
Define-se borda (edge) como a fronteira entre duas regies, cujos nveis
de cinza predominantes so razoavelmente diferentes. PRATT (1991) define uma
borda de luminosidade como uma descontinuidade na luminosidade de uma
imagem. Analogamente, pode-se definir borda de textura ou borda de cor, em
imagens onde as informaes de textura ou cor, respectivamente, so as mais
importantes. Aqui trataremos somente as bordas de luminosidade, s quais
denominaremos simplesmente bordas.
Para a deteco e realce de bordas, aplicam-se habitualmente filtros
espaciais lineares de dois tipos: (a) baseados no gradiente da funo de
luminosidade, I(x, y), da imagem, e (b) baseados no laplaciano de I(x, y).
Tanto o gradiente quanto o laplaciano costuma ser aproximados por
mscaras de convoluo ou operadores 3 x 3. Exemplos destas mscaras so os
operadores de Roberts, Sobel, Prewitt e Frei-Chen, mostrados na Tabela 2.9.
TABELA 2.9 Operadores 3x3 utilizados para estimar a amplitude do gradiente
atravs de uma borda
Operador
Vertical
Horizontal
1 0 0
0 0 1
0 1 0
0 1 0
Roberts

0 0 0
0 0 0
1 2 1
1 0 1
1
1

0
0
0
2 0 2
Sobel

4
4
1
1 0 1
2
1
1 0 1
1 1 1
1
1

1 0 1
0
0
0
Prewitt

3
3
1 0 1
1
1
1
1 2 1
1 0 1
1

1
2
0

2
0
0
0
Frei-Chen

2+ 2
2
+
2

1 0 1
2
1
1

73

A Figura 2.49 mostra os resultados da aplicao dos operadores de


Prewitt e Sobel a uma imagem monocromtica. Os resultados obtidos com a
aplicao dos operadores verticais e horizontais foram combinados por meio de uma
operao lgica OR.

(a)

(b)
(c)
Figura 2.49 Exemplos de realce e deteco de bordas, (a) imagem original, (b)
realce de bordas utilizando os operadores de Prewitt horizontal e vertical, (c) realce
de bordas utilizando os operadores de Sobel horizontal e vertical
O laplaciano um operador definido como:

2 f ( x, y ) =

2 f 2 f
+
x 2 y 2

e que pode ser aproximado pelas mscaras (3 x 3), (5 x 5) e (9 x 9):

0 1 0
1 4 1

0 1 0

1
1

1
1

1 1 1 1
1 1 1 1
1 24 1 1

1 1 1 1
1 1 1 1

1
1

1
1

1
1

1
1

1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1

1 1 8
8 8 1 1 1
1 1 8
8 8 1 1 1

1 1 8
8 8 1 1 1
1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1

74

A Figura 2.50 mostra o resultado obtido com a aplicao da mscara 3 x 3


sobre uma imagem monocromtica.

(a)
(b)
Figura 2.50 Resultado da aplicao da mscara do laplaciano: (a) figura original,
(b) laplaciano com mscara 3 x 3
Embora o laplaciano seja sensvel rotao, e portanto capaz de realar
ou detectar bordas em qualquer direo, seu uso restrito devido a sua grande
suscetibilidade a rudo.
Existem outros operadores direcionais, que nada mais so que conjuntos
de mscaras que representam aproximaes discretas de bordas ideais em vrias
direes. Estes operadores incluem as mscaras direcionais introduzidas por
Prewitt, Kirsch, e as mscaras simples de 3 e 5 nveis de Robinson. A Tabela 2.10
mostra estas mscaras com suas respectivas direes cardeais.
TABELA 2.10 Mscaras de Prewitt, Kirsch e Robinson
Direo
Direo
Prewitt
Kirsch
Robinson
Robinson 5
da Borda Gradiente
3 nveis
nveis
1
1 5
5
5 1
1
1 1
2
1
1
1 2 1 3 0 3 0

0
0 0
0
0
0
N



1 1 1 3 3 3 1 1 1 1 2 1
1 5
5 3 1 1
0
0
1 1
2 1
1 2 1 5

0 3 1 0 1
1
NO


1 0 1
1 1 1 3 3 3 0 1 1
0 1 2
1 1 1
5 3 3
1 0 1
1 0 1
1 2 1
5 0 3
1 0 1
2 0 2
2
O

1 1 1
5 3 3
1 0 1
1 0 1
1 1 1 3 3 3 0 1 1
0 1 2
1 2 1 5

1 0 1
0 3 1 0 1
3
SO

1 1
2 1
1 5
5 3 1 1
0
0
1 1 1 3 3 3 1 1 1 1 2 1
1 2 1 3 0 3 0
0
0 0
0
0
4
S



1
1
1 5
5
5 1
1
1 1
2
1

75

Direo
Direo
da Borda Gradiente
5

SE

NE

Fator de
escala

Prewitt

1
1

1
1
1

1
1
1

1 1
2 1
1 1
1 1
2 1
1 1
1 1
2 1
1 1
1
5

Kirsch

3
3

3
3
3

3
3
3

3 3
0
5
5
5
3 5
0 5
3 5
5
5
0
5
3 3
1
15

Robinson
3 nveis
1 1 0
1 0 1

0
1 1
1 0 1
1 0 1

1 0 1
1 1
0
1 0 1

1 1 0
1
3

Robinson 5
nveis
2 1 0
1 0 1

0
1 2
1 0 1
2 0 2

1 0 1
1 2
0
1 0 1

2 1 0
1
4

2.10 FILTRAGEM, REALCE E SUAVIZAO DE IMAGENS


O principal objetivo das tcnicas de realce de imagens processar uma
certa imagem de modo que a imagem resultante seja mais adequada, que a imagem
original, para uma aplicao especfica. Desta afirmativa decorrem duas importantes
concluses:
1) A interpretao de que o resultado mais adequado, ou no, normalmente
subjetiva e depende de conhecimento prvio do observador a respeito das
imagens analisadas;
2) As tcnicas de realce de imagens a serem estudas nesta seo so, por
natureza, orientadas a um problema que se deseja resolver. Logo, no existem
tcnicas capazes de resolver 100% dos problemas que uma imagem digital
possa apresentar, como tambm nem sempre uma tcnica que produz bons
resultados para imagens biomdicas, adquiridas atravs de um tomgrafo
computadorizado, apresentar desempenho satisfatrio, se aplicada a uma
imagem contendo uma impresso digital, por exemplo.
Os mtodos de filtragem de imagens discutidos nesta seo so
normalmente classificados em duas categorias: as tcnicas de filtragem espacial e
as tcnicas de filtragem no domnio da freqncia. Os mtodos que trabalham no
domnio espacial operam diretamente sobre a matriz de pixels que a imagem
digitalizada, normalmente utilizando operaes de convoluo com mscaras. Os
mtodos que atuam no domnio da freqncia se baseiam na modificao da
transformada de Fourier da imagem. Existem tcnicas de filtragem que combinam
ambas as abordagens.

2.10.1 Filtragem no Domnio Espacial


As tcnicas de filtragem no domnio espacial so aquelas que atuam
diretamente sobre a matriz de pixels que a imagem digitalizada. Logo, as funes

76

de processamento de imagens no domnio espacial podem ser expressas como:

g (x, y ) = T [ f (x, y )]
onde: g(x, y) a imagem processada, f(x, y) a imagem original e T um operador
em f, definido em uma certa vizinhana de (x, y). Alm disso, o operador T pode
tambm operar sobre um conjunto de imagens de entrada.
A vizinhana normalmente definida ao redor de (x, y) a 8-vizinhana do
pixel de referncia, o que equivale a uma regio 3 x 3, na qual o pixel central o de
deferncia, como indica a Figura 2.51. O centro dessa regio ou sub-imagem
movido pixel a pixel, iniciando no canto superior esquerdo da figura e aplicando a
cada localidade o operador T para calcular o valor de g naquele ponto.

(x, y)

Imagem
x
Figura 2.51 Uma vizinhana 3 x 3 ao redor de um
ponto de coordenadas (x, y) em uma imagem
Nos casos em que a vizinhana 1 x 1, o operador T torna-se uma
funo de transformao (ou de mapeamento), do tipo:

s = T (r )
onde: r o nvel de cinza de f(x, y) e s o nvel de cinza de g(x, y) em um certo
ponto.
Um exemplo deste tipo de operao a converso de uma imagem
colorida para tons de cinza em que, dada uma imagem f(x, y), podemos obter uma
imagem monocromtica g, calculando para cada pixel o valor da luminncia. Ou
seja, g(x, y) = L(f(x, y)), onde L o operador de luminncia. Mais precisamente, se
f(x, y) = (R(x, y), G(x, y), B(x, y)), dada por suas componentes no sistema RGB,
podemos calcular g usando o operador de luminncia NTSC, g(x, y) = 0,299R(x, y)
+ 0,587G(x, y) + 0,114B(x, y). Esse o mtodo de descolorizar uma imagem,
obtendo uma imagem grayscale a partir de uma imagem colorida. Este um
exemplo de operador unrio e pontual.
As tcnicas de processamento de imagem pertencentes a este caso so
freqentemente denominadas tcnicas ponto-a-ponto e outros exemplos foram
abordados na seo Transformaes de intensidade.

77

2.10.2 Filtragem no Domnio da Freqncia


A base matemtica das tcnicas de filtragem no domnio da freqncia
o teorema da convoluo. Seja g(x, y) a imagem formada pela convoluo
(denotada pelo smbolo *) da imagem f(x, y) com um operador linear h(x, y), ou seja,

g ( x, y ) = f ( x, y ) * h ( x, y )
Ento, pelo teorema da convoluo, a seguinte relao no domnio da freqncia
tambm vlida:

G (u , v ) = F (u , v )H (u , v )
onde G, F e H so as transformadas de Fourier de g, f e h, respectivamente. Na
terminologia de sistemas lineares, a transformada H(u, v) denominada funo de
transferncia do filtro.
Inmeros problemas de processamento de imagens podem ser expressos
na forma da equao anterior. Em uma aplicao de suavizao de imagens, por
exemplo, dada f(x, y), o objetivo, aps calcular F(u, v), selecionar H(u, v) de tal
maneira que a imagem desejada

g (x, y ) = 1 [F (u , v )H (u , v )]
remova componentes de alta freqncia (possivelmente ruidosos) de f(x, y). Isto
poderia ser obtido usando um filtro Butterworth passa-baixa, por exemplo.
A equao g (x, y ) = f (x, y ) * h( x, y ) descreve um processo espacial
anlogo ao explicado anteriormente e, por esta razo, h(x, y) freqentemente
denominada mscara de convoluo espacial.

2.10.3 Suavizao de Imagens no Domnio Espacial


O uso de mscaras espaciais no processamento de imagens
normalmente denominado filtragem espacial e as mscaras so conhecidas como
filtros espaciais. Nesta seo consideraremos filtros lineares e no-lineares
aplicados ao processamento de imagens.
Os filtros lineares se baseiam no conceito de que a funo de
transferncia de um sistema linear H(u, v) e sua funo de resposta a impulso
unitrio h(x, y) esto relacionadas entre si atravs da transformada de Fourier, como
ilustra a Figura 2.52.

f(x, y)

h(x, y)
(a)

g(x, y)

F(u, v)

H(u, v)

G(u, v)

(b)

Figura 2.52 Fundamentos de sistemas lineares. Na parte (a) (domnio espacial), a


sada do sistema obtida atravs da convoluo de sua entrada com sua funo de
resposta a impulso unitrio h(x, y). Em (b) (domnio da freqncia), a sada do
sistema o produto de sua funo de transferncia H(u, v) pela entrada

78

Os filtros so denominados passa-baixa quando atenuam ou eliminam


as componentes de alta freqncia no domnio das transformadas de Fourier. Como
as componentes de alta freqncia correspondem a regies de bordas e/ou detalhes
finos na imagem, o efeito da filtragem passa-baixa a suavizao da imagem,
provocando um leve borramento na mesma. J os filtros passa-alta atenuam ou
eliminam as componentes de baixa freqncia e, em funo disto, realam as
bordas e regies de alto contraste da imagem. Os filtros passa-faixa, capazes de
remover ou atenuar componentes acima de sua freqncia de corte superior e
abaixo de sua freqncia de corte inferior, embora existam, so de pouca utilidade
prtica, com exceo de algumas tarefas especficas de restaurao de imagens.
A Figura 2.53 mostra as respostas em freqncia dos trs principais tipo
de filtros existentes e os respectivos filtros espaciais correspondentes.
Passa-baixa

Passa-alta

Passa-faixa

Figura 2.53 (Acima) Resposta em freqncia dos principais tipos de filtros.


(Abaixo) Filtros correspondentes no domnio espacial
A suavizao de imagens no domnio espacial baseia-se no uso de
mscaras de convoluo adequadas para o objetivo em questo, normalmente o
borramento da imagem ou a remoo de rudos nela presentes. Dentre as tcnicas
mais conhecidas de suavizao esto a filtragem pela mdia e o filtro da mediana,
detalhadas a seguir.

Filtro da Mdia

Como se pode perceber na Figura 2.53, a resposta ao impulso de um filtro


passa-baixa indica que ele deve apresentar todos os seus coeficiente positivos. A
forma mais simples de implementar um filtro com tais caractersticas construir uma
mscara 3 x 3 com todos os coeficientes iguais a 1, dividindo o resultado da
convoluo por um fator de normalizao, neste caso igual a 9. Um filtro com esta
caracterstica denominado filtro da mdia. A seguir apresentamos as mscaras
3 x 3, 5 x 5 e 7 x 7.

79

1 1 1
1

1
1
1

9
1 1 1

1
1
1
1
25
1
1

1 1 1 1
1 1 1 1
1 1 1 1

1 1 1 1
1 1 1 1

1
1

1
1
1
49
1

1
1

1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1

1 1 1 1 1 1
1 1 1 1 1 1

1 1 1 1 1 1
1 1 1 1 1 1

Na escolha do tamanho da mscara, deve-se ter em mente que, quanto


maior a mscara, maior o grau de borramento da imagem resultante. A Figura 2.54
mostra exemplos de mscaras de filtragem pela mdia de diferentes dimenses
aplicadas a uma mesma imagem.

(a)

(b)

(c)
(d)
Figura 2.54 (a) Imagem original. (b)-(d) resultados da aplicao do filtro da mdia
com mscara de dimenses n x n, n = 3, 5, 7.
As Figura 2.55 e 2.56 mostram exemplos de aplicaes do filtro da mdia
para remoo de rudos em imagens monocromticas.

80

(a)

(b)

(c)
(d)
Figura 2.55 (a) Imagem original; (b) imagem contaminada por rudo impulsivo (sal
e pimenta); (c)-(d) resultado da filtragem com filtro da mdia com mscara 3x3 e 5x5

(a)

(b)

(c)
(d)
Figura 2.56 (a) Imagem original; (b) imagem contaminada por rudo gaussiano;
(c)-(d) resultado da filtragem com filtro da mdia com mscara 3x3 e 5x5

81

O algoritmo bsico de filtragem pela mdia pode ser alterado no sentido


de minimizar a perda de definio na imagem resultante. Uma possvel modificao
consistem em incluir uma comparao do valor calculado com um limiar (T), antes
de alterar seu tom de cinza. Se o valor absoluto da diferena entre o nvel de cinza
original do pixel (f(x, y)) e o valor calculado pela aplicao do filtro da mdia for
menor que T, substitui-se o tom de cinza do pixel pelo valor calculado; caso
contrrio, mantm-se o valor de cinza original. O objetivo principal desta modificao
diminuir o efeito de suavizao indesejvel das bordas dos objetos presentes na
imagem.

Filtro da Mediana

Uma das principais limitaes do filtro da mdia, em situaes onde o


objetivo remoo de rudos em imagens, est na sua incapacidade de preservar
bordas e detalhes finos da imagem. Para contorn-la, uma tcnica alternativa o
filtro da mediana. Nesta tcnica, o nvel de cinza do pixel central da janela
substitudo pela mediana dos pixels situados em sua vizinhana.
Este mtodo no-linear apresenta desempenho particularmente bom em
situaes nas quais a imagem contaminada por rudo impulsivo (sal e pimenta),
como ilustra a Figura 2.57. J para situaes em que o rudo do tipo gaussiano
(Figura 2.58), seu desempenho apenas satisfatrio, comparvel ao filtro pela
mdia.

(a)

(b)

(c)
(d)
Figura 2.57 (a) Imagem original; (b) imagem contaminada por rudo impulsivo (sal
e pimenta); (c)-(d) resultado da filtragem com filtro da mediana e mdia com
mscara 3x3

82

(a)

(b)

(c)
(d)
Figura 2.58 (a) Imagem original; (b) imagem contaminada por rudo gaussiano;
(c)-(d) resultado da filtragem com filtro da mediana e mdia com mscara 3x3
A mediana m de um conjunto de n elementos o valor tal que metade
dos n elementos do conjunto situem-se abaixo de m e a outra metade acima de m.
Quando n mpar, a mediana o prprio elemento central do conjunto ordenado.
Nos casos em que n par, a mediana calculada pela mdia aritmtica dos dois
elementos mais prximos do centro. A ordenao constitui uma etapa de tempo de
processamento relativamente alto, apesar de inmeros mtodos eficientes existentes
na literatura. Para reduzir o custo computacional do filtro da mediana foi proposto um
mtodo alternativo, denominado filtro da pseudomediana, o qual estabelece que a
pseudomediana de um conjunto de L elementos (SL) pode ser computada como:

PMED{S L } =

MAXMIN {S L } + MINIMAX {S L }
2

onde:

MAXMIN {S L } = MAX {[MIN (S 1 , L , S M )], [MIN (S 2 , L , S M +1 )], L , [MIN (S L M +1 , L , S L )]}


e
MINIMAX {S L } = MIN {[MAX (S1 , L , S M )], [MAX (S 2 , L , S M +1 )], L , [MAX (S L M +1 , L , S L )]}
para M =

L +1
.
2

83

Mdia de Mltiplas Imagens

Seja uma imagem ruidosa g(x, y) = f(x, y) + (x, y) onde f(x, y) a


imagem original e (x, y) um padro de rudo aditivo de mdia zero e
descorrelacionado, que se sobrepe imagem. Supondo tambm a existncia de M
imagens ruidosas, cada qual adquirida em um instante diferente, pode-se calcular
uma imagem mdia:

1
g ( x, y ) =
M

g ( x, y )
i

i =1

na qual a influncia do rudo ter sido minimizada. Pode-se mostrar que:

E {g ( x, y )} = f (x, y )
1
g ( x, y ) =
(x, y )
M
1
g2 ( x , y ) = 2( x , y )
M
onde E{g (x, y )} o valor esperado de g (x, y ) , g2 ( x , y ) e 2( x , y ) so, respectivamente,
as varincias da imagem filtrada e do rudo aditivo, enquanto g ( x , y ) e ( x, y ) so
seus respectivos desvios-padro.
Estas equaes nos permitem concluir que, quanto maior for o valor de
M, menor a varincia (e portanto o desvio-padro) dos pixels de g (x, y ) e mais a
imagem g (x, y ) ir se aproximar de f (x, y ) .
Esta tcnica opera de forma igualmente satisfatria para rudo gaussiano
ou aleatrio, quando o nmero de imagens utilizadas no clculo da imagem mdia
significativo, devido ao Teorema do Limite Central, que estabelece que a soma de
um grande nmero de termos, representando rudos aleatrios, tende a produzir um
rudo resultante do tipo gaussiano e independente dos tipos dos rudos includos
naquela soma.
A Figura 2.59 apresenta um exemplo de uso da tcnica da mdia de
mltiplas imagens para reduo de rudo.

(a)

(b)

(c)

84

(d)
(e)
(f)
Figura 2.59 Exemplo de reduo usando mdia de mltiplas imagens: (a) imagem
ruidosa; (b)-(f) resultados para M = 2, 4, 8, 16 e 32 imagens

Mdia dos k Vizinhos mais Prximos

Esta tcnica, consiste em uma variao do mtodo da filtragem pela


mdia, na qual o pixel central da janela substitudo pela mdia dos k vizinhos,
cujas amplitudes mais se aproximam da amplitude do pixel central. Seu objetivo
deliberadamente evitar incluir no clculo da mdia valores que possam estar sob a
janela em decorrncia de bordas ou regies de alto contraste. Quanto maior o valor
de k, mais o desempenho deste filtro se aproximar do filtro da mdia.

Filtro de Bartlett

Este filtro tambm conhecido pelo nome de filtro triangular. No caso


unidimensional o seu ncleo definido por

1 x se x 1
h1 (x ) =
se x 1
0
Podemos obter uma mscara de ordem 3 do filtro de Bartlett
unidimensional, tomando uma discretizao do suporte [-1, 1] do ncleo h1(x) nos
pontos x = -1/2, x = 0, x = 1/2. Obtemos ento a mscara:

1 1
1

1
2 2
2
ou, de forma equivalente,

1
[1 2 1]
4
Podemos obter uma mscara de ordem 5, fazendo a discretizao
uniforme do suporte do ncleo nos pontos do conjunto {-2/3, -1/3, 0, 1/3, 2/3}.
Obtemos ento

85

1 1

3 3

2
2
1
3
3

1
1
ou [1 2 3 2 1]

3
9

Procedendo de modo anlogo podemos obter uma discretizao do


ncleo do filtro triangular de qualquer ordem. O leitor pode verificar que o ncleo de
ordem 7 dado por:

1
[1 2 3 4 3 2 1]
16
Para obter uma mscara bidimensional do filtro de Bartlett, basta lembrar
que o ncleo deste filtro separvel, ou seja,
h2(x, y) = h1(x)h1(y)
Esse processo ilustrado abaixo, para obter a mscara de ordem 5 do
filtro de Bartlett.

1
2

3

2
1

1
2

2
1
[1

2 3 2 1
4 6 4 2
6 9 6 3

4 6 4 2
2 3 2 1
2 3 2 1]

No se pode esquecer que a mscara acima deve ser normalizada de


forma a ter mdia 1. O fator de normalizao nesse caso 1/81. Portanto a mscara
de ordem 5 para o filtro de Bartlett bidimensional dada por:

1
2
1
3
81
2
1

2 3 2 1
4 6 4 2
6 9 6 3

4 6 4 2
2 3 2 1

Na Figura 2.60 mostramos um exemplo de uma imagem filtrada utilizando


o filtro de Bartlett de ordem 5. A atenuao das altas freqncias com o filtro de
Bartlett bem mais acentuada que a atenuao efetuada pelo filtro da mdia.
O uso do filtro de Bartlett conhecido na literatura pelo nome de
interpolao bilinear. A razo desse nome provm do fato de que, quando utilizado
para reconstruo de imagens, seu valor em um pixel obtido fazendo duas
interpolaes lineares, uma na linha e outra na coluna da imagem que contm o
pixel. O leitor pode verificar esse fato no clculo dos pixels a, b, c, d e e da imagem
f(i, j)
b
f(i + 1, j)

a
c
e

f(i, j + 1)
d
f(i + 1, j + 1)

86

Figura 2.60 A imagem inferior mostra a filtragem da imagem superior


por um filtro de Bartlett de ordem 5
obtemos o resultado:

f (i, j ) + f (i, j + 1)
;
2
f (i, j ) + f (i + 1, j )
b=
;
2
f (i, j ) + f (i, j + 1) + f (i + 1, j ) + f (i + 1, j + 1)
c=
;
4
a=

d=

f (i, j + 1) + f (i + 1, j + 1)
;e
2

e=

f (i + 1, j ) + f (i + 1, j + 1)
.
2

Ao efetuar os clculos acima, os valores de a, b, c, d e e so


considerados nulos inicialmente.

Filtro Gaussiano

No caso unidimensional, no domnio contnuo, o filtro gaussiano tem um


ncleo G(x) dado pela funo de distribuio gaussiana

G (x ) =

x2

e 2

com mdia 0 e varincia 2. No caso bidimensional o ncleo definido por

G ( x, y ) =

1
2 2

x2 + y2

2 2

Uma anlise rpida no domnio contnuo, mostra que o filtro gaussiano

87

um filtro de passa-baixa.
Para obter uma discretizao unidimensional do filtro gaussiano, podemos
proceder como no caso da discretizao do filtro de Bartlett vista acima. No entanto,
devido expresso que define o ncleo do filtro gaussiano, esse processo nos
levaria a uma mscara discreta com valores contendo valores aproximados. Isso
acarreta problemas diversos, principalmente de ordem computacional. Um mtodo
mais elegante, e eficiente, consiste em obter por aproximaes sucessivas mscaras
para o filtro gaussiano. Com efeito, partimos de um filtro da mdia com mscara

1
[1 1]
2
obtendo a mscara

1
[1 2 1]
4
que, obviamente, coincide com a mscara de ordem 3 calculada anteriormente para
o filtro de Bartlett unidimensional. Repetindo a operao mais uma vez, obtemos a
mscara
1
[1 3 3 1]
8
Por induo fcil ver que a mscara unidimensional de ordem k + 1
dada por:

1
2k

1 k L
i 1

k

1

L k 1
i + 1

Esta mscara chamada de mscara binomial. O filtro binomial uma


aproximao do filtro gaussiano unidimensional, e pode portanto ser utilizado como
uma verso discreta do mesmo.
Usando o processo acima, juntamente com a separabilidade do filtro
gaussiano, podemos facilmente obter mscaras para o filtro gaussiano
bidimensional, de forma anloga ao que fizemos anteriormente para o filtro de
Bartlett. Abaixo so apresentadas as mscaras de ordem 2, 3 e 4.

1 1 1

4 1 1

1 2 1
1
2 4 2
16
1 2 1

1 3

64 3

3 3 1
9 9 3
9 9 3

3 3 1

claro que a mscara de ordem 3 coincide com a mscara de mesma


ordem do filtro de Bartlett. No caso de ordem 5, temos a mscara unidimensional

1
[1 4 6 4 1]
4
que permite calcular a mscara bidimensional, dada pela matriz

88

1 4 6 4 1
4 16 24 16 4

1
6 24 36 24 6
256

4 16 24 16 4
1 4 6 4 1
A imagem inferior da Figura 2.61 foi obtida da imagem superior por uma
filtragem com um filtro gaussiano de ordem 5. Observe que a perda de altas
freqncias nessa imagem bem mais acentuada do que na filtragem com o filtro de
Bartlett, mostrado na Figura 2.60.

Figura 2.61 Filtragem com um filtro Gaussiano de ordem 5

2.10.4 Realce de Imagens no Domnio Espacial


O principal objetivo das tcnicas de realce o de destacar detalhes finos
na imagem. So trs os mtodos de realce de imagens no domnio espacial, a
saber: filtro passa-altas bsico, realce por diferenciao e nfase em alta freqncia.

Filtro Passa-alta Bsico

O formato de resposta ao impulso de um filtro passa-alta (Figura 2.53)


deve ser tal que a mscara correspondente apresente coeficientes positivos nas
proximidades de seu centro e negativos longe dele. No caso de uma mscara 3 x 3,
isso significa projetar uma mscara com pixel central positivo e todos os oito
vizinhos, negativos. Um exemplo de mscara com estas caractersticas
apresentada a seguir. Pode-se notar que a soma algbrica dos coeficientes desta
mscara zero, significando que, quando aplicada a regies homogneas de uma
imagem, o resultado ser zero ou um valor muito baixo, o que consistente como
princpio da filtragem passa-alta. A Figura 2.62 mostra um exemplo de resultado de
aplicao da mscara seguinte a uma imagem monocromtica.

89

1 1 1
1
1 8 1
9
1 1 1

(a)
(b)
Figura 2.62 (a) Imagem original; (b) imagem resultante aps filtragem passa-alta

Realce por Diferenciao

Sabendo-se que o clculo da mdia dos pixels, em um trecho de imagem,


produz como efeito a remoo de seus componentes de alta freqncia e que o
conceito de mdia anlogo operao de integrao, razovel esperar que a
diferenciao produza o efeito oposto e, portanto, enfatize os componentes de alta
freqncia presentes em uma imagem. O mtodo mais usual de diferenciao, em
aplicaes de processamento de imagens o gradiente. Em termos contnuos, o
gradiente de f(x, y) em um certo ponto (x, y) definido como o vetor:

f

f = fx

y
A magnitude deste vetor dada por:
2

f f
f = mag (f ) = +
x y

e utilizada por vrias tcnicas de realce de imagens por diferenciao.


Para uma imagem digital, o gradiente pode ser aproximado por:

G[ f (x, y )] [ f ( x, y ) f ( x + 1, y )] + [ f ( x, y ) f ( x, y + 1)]
ou por

90

G[ f ( x, y )] f ( x, y ) f ( x + 1, y ) + f ( x, y ) f ( x, y + 1)
Outra aproximao, conhecida como gradiente de Roberts, utiliza as
diferenas cruzadas, isto , na diagonal:

G[ f ( x, y )] [ f ( x, y ) f ( x + 1, y + 1)] + [ f ( x + 1, y ) f (x, y + 1)]


2

ou

G[ f ( x, y )] f ( x, y ) f ( x + 1, y + 1) + f ( x + 1, y ) f ( x, y + 1)
As equaes acima podem ser implementadas usando mscaras de
tamanho 2 x 2, como as mostradas a seguir, ou de dimenses 3 x 3, como por
exemplo os operadores de Prewitt e Sobel, apresentados na seo Operaes de
Convoluo com Mscaras.

1 1
0 0

1 0
1 0

1 0
0 1

0 1
1 0

(a)

(b)

Estas mscaras representam discretamente o gradiente no formato 2 x 2.


(a) a forma discreta do gradiente convencional e (b) a forma discreta do
gradiente de Roberts.

Filtragem high-boost

A filtragem passa-alta tambm pode ser obtida subtraindo de uma


imagem original uma verso filtrada por um filtro passa-baixa, ou seja:
Passa-alta = Original Passa-baixa
O filtro high-boost ou tcnica de nfase em alta freqncia, nada mais
que uma extenso da idia original formulada acima, na qual a imagem original
multiplicada por um fator de amplificao A:
High-boost = (A)(Original) Passa-baixa
= (A 1)(Original) + Original Passa-baixa
= (A 1)(Original) + Passa-alta
Quando A = 1, o filtro se comporta de forma idntica a um passa-alta. Nos
casos em que A > 1, parte da imagem original adicionada ao resultado,
restaurando parcialmente os componentes de baixa freqncia. O resultado uma
imagem que se parece com a original, com um grau relativo de realce das bordas,
dependente do valor A. O processo genrico de subtrao de uma imagem borrada

91

da imagem original conhecido na literatura como unsharp masking.


A nfase em alta freqncia pode ser implementada utilizando a mscara
a seguir:
1 1 1
1
1 w 1

9
1 1 1
onde w = 9A 1. Com A 1. A Figura 2.63 mostra o efeito da variao de A no
resultado final da filtragem.

(a)

(b)
(c)
(d)
Figura 2.63 (a) Imagem original;
resultados da filtragem high-boost (b) A = 1,1 (c) A = 1,15 e (d) A = 1,2

Filtro Laplaciano
O laplaciano de uma funo duas vezes diferencivel definido por

2 f 2 f
f ( x, y ) = 2 + 2 .
x
y
O filtro laplaciano no domnio contnuo um filtro de passa-alta. A forma
discreta do laplaciano dada por:

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


= [ f (i + 1, j ) + f (i 1, j ) + f (i, j + 1) + f (i, j 1)] 4 f (i, j )
Uma mscara 3 x 3 do filtro definido por esse operador dada por

0 1 0
1 4 1

0 1 0
Note que a menos do fator de proporcionalidade 1/5, o lado direito da
equao acima pode ser escrito na forma

92

f (i, j )

1
[ f (i + 1, j ) + f (i 1, j ) + f (i, j ) + f (i, j + 1) + f (i, j 1)]
5

que exatamente a diferena entre a imagem original e uma verso filtrada da


imagem utilizando o filtro da mdia. Portanto o filtro laplaciano pode ser obtido, a
menos de um fator constante, subtraindo da imagem original uma outra imagem
obtida da imagem original atenuando as altas freqncias. Esse resultado
importante tanto do ponto de vista de aplicaes prticas como do ponto de vista
conceitual. Segue-se da, por exemplo, que o filtro laplaciano atenua as baixas
freqncias da imagem, e acentua as altas freqncias, sendo portanto um filtro de
passa-alta. O efeito desse filtro em uma imagem mostrado na Figura 2.64.

Figura 2.64 Filtragem Laplaciana de uma imagem


Nessa figura, a imagem inferior obtida da superior por uma filtragem
com um filtro laplaciano de ordem 3. Podemos observar que todos os detalhes de
baixas freqncias da imagem original (variaes suaves) so perdidos na filtragem.
O resultado anterior sobre o filtro laplaciano nos leva a obter outros filtros
de passa-alta com resultados melhores. Um desses filtros, que bastante utilizado
em viso computacional, consiste em utilizar inicialmente um filtro gaussiano de
forma a atenuar as altas freqncias da imagem, e em seguida aplicar o operador
laplaciano. Uma mscara discreta que implementa esse filtro dada por

1 0
0 1
1 2 2 1

1 2 2 1

1 0
0 1
Em termos gerais, a filtragem passa-alta reala detalhes, produzindo uma
agudizao ("sharpening") da imagem, isto , as transies entre regies diferentes
tornam-se mais ntidas. Estes filtros podem ser usados para realar certas
caractersticas presentes na imagem, tais como bordas, linhas curvas ou manchas,
mas enfatizam o rudo existente na imagem. Alguns exemplos podem ser dados por:

93

0 1 0 1 1 1 1 2 1
1 5 1 1 9 1 2 5 2

0 1 0 1 1 1 1 2 1
As trs mscaras a seguir diferem quanto intensidade de altos valores
de nveis de cinza presentes na imagem resultante. A mscara alta deixa passar
menos os baixos nveis de cinza, isto , a imagem fica mais clara. A mscara baixa
produz uma imagem mais escura que a anterior. A mscara mdia apresenta
resultados intermedirios.

Alta

Mdia

Baixa

1 1 1
1 8 1

1 1 1

0 1 0
1 4 1

0 1 0

1 2 1
2 3 2

1 2 1

Filtro de Roberts

Apresenta a desvantagem de certas bordas serem mais realadas do que


outras dependendo da direo, mesmo com magnitude igual. Como resultado de
sua aplicao, obtm-se uma imagem com altos valores de nvel de cinza, em
regies de limites bem definidos e valores baixos em regies de limites suaves,
sendo 0 para regies de nvel de cinza constante.
O operador consiste na funo

a' =

(a d )2 + (c b )2

onde a' o nvel de cinza correspondente localizao a, a ser substitudo; a, b, c,


d so as localizaes cujos valores sero computados para a operao.

a b
c d

Figura 2.65 Efeito da aplicao do filtro de Roberts

Filtro de Sobel
O filtro de Sobel reala linhas verticais e horizontais mais escuras que o

94

fundo, sem realar pontos isolados. Consiste na aplicao de duas mscaras,


descritas a seguir, que compem um resultado nico.
a

1 0 1
1
2 0 2

4
1 0 1

1 2 1
1
0
0
0

4
1
2
1

A mscara a detecta as variaes no sentido horizontal e a mscara b, no


sentido vertical. O resultado desta aplicao, em cada pixel, dado por

a' = a 2 + b 2
onde a' o valor de nvel de cinza correspondente localizao do elemento central
da mscara.

Figura 2.66 Efeito da aplicao do filtro de Sobel

95

UNIDADE 3 MORFOLOGIA MATEMTICA


Assim como na biologia, onde a expresso morfologia se refere ao estudo
da estrutura dos animais e plantas, a morfologia matemtica, elaborada inicialmente
por Georges Matheron e Jean Serra, concentra seus esforos no estudo da estrutura
geomtrica das entidades presentes em uma imagem. A morfologia matemtica
pode ser aplicada em vrias reas de processamento e anlise de imagens, com
objetivos to distintos como realce, filtragem, segmentao, deteco de bordas,
esqueletizao, afinamento, dentre outras.
O princpio bsico da morfologia matemtica consiste em extrair as
informaes relativas geometria e topologia de um conjunto desconhecido (uma
imagem), pela transformao atravs de outro conjunto completamente definido,
chamado elemento estruturante. Portanto, a base da morfologia matemtica a
teoria de conjuntos. Por exemplo, o conjunto de todos os pixels pretos em uma
imagem binria descreve completamente a imagem. Em imagens binrias, os
conjuntos em questo so membros do espao inteiro bidimensional Z2, onde cada
elemento do conjunto um vetor 2D cujas coordenadas so as coordenadas (x, y)
do pixel preto (por conveno) na imagem. Imagens com mais nveis de cinza
podem ser representadas por conjuntos cujos elementos esto no espao Z3. Neste
caso, os vetores tm trs elementos, sendo os dois primeiros as coordenadas do
pixel e o terceiro seu nvel de cinza.

3.1 DILATAO E EROSO


Iniciaremos nossa discusso de operaes morfolgicas pelas duas
operaes bsicas: dilatao e eroso. Para bem compreende-las, inicialmente
apresentaremos algumas definies teis da teoria de conjuntos.

3.1.1 Definies Bsicas


Sejam A e B conjuntos em Z2, cujos componentes so a = (a1, a2) e b =
(b1, b2), respectivamente. A translao de A por x = (x1, x2), denotada por (A)x,
definida como:
(A)x = {c | c = a + x, para a A}
A reflexo de B, denotada por B , definida como:

B = {x | x = -b, para b B}
O complemento do conjunto A :
Ac = {x | x A}
Finalmente, a diferena entre dois conjuntos A e B, denotada por A B,
definida como:
A B = {x | x A, x B} = A Bc

96

A Figura 3.1 ilustra geometricamente as definies apresentadas, onde os


pontos pretos identificam a origem do par de coordenadas. A Figura 3.1(a) mostra o
conjunto A. A parte (b) mostra a translao de A por x = (x1, x2). O conjunto B
exibido na parte (c), enquanto (d) mostra sua reflexo em relao origem.
Finalmente, a parte (e) apresenta o conjunto A e seu complemento, enquanto a
Figura 3.1(f) mostra a diferena entre este conjunto A e o conjunto B.
x2
x1
A

(A)x
(a)

(b)

(c)

(d)

B
A

Ac

(A B)

(e)
(f)
Figura 3.1 Exemplos de operaes bsicas sobre conjuntos

3.1.2 Dilatao
Sejam A e B conjuntos no espao Z2 e seja o conjunto vazio. A
dilatao de A por B, denotada por A B, definida como:
A B = {x | ( B )x A }
Portanto, o processo de dilatao consiste em obter a reflexo de B sobre

97

sua origem e depois deslocar esta reflexo x. A dilatao de A por B , ento, o


conjunto de todos os x deslocamentos para os quais a interseo de ( B )x e A inclui
pelo menos um elemento diferente de zero. Com base nesta interpretao, a
equao anterior pode ser escrita como:
A B = {x | [( B )x A] A}
O conjunto B normalmente denominado elemento estruturante. A Figura
3.2 mostra os efeitos da dilatao de um conjunto A usando trs elementos
estruturantes (B) distintos. Observar que as operaes morfolgicas so sempre
referenciadas a um elemento do conjunto estruturante (neste caso, o elemento
central).

B = B
AB
(a)

B = B
AB
(b)

AB
A

B = B
(c)
Figura 3.2 Dilatao

3.1.3 Eroso
Sejam A e B conjuntos no espao Z2. A eroso de A por B, denotada por
A B, definida como:
A B = {x | (B)x A}
o que, em outras palavras, significa dizer que a eroso de A por B resulta no
conjunto de pontos x tais que B, transladado de x, est contido em A.

98

A Figura 3.3 mostra os efeitos da eroso de um conjunto A usando trs


elementos estruturantes (B) distintos.

B = B
A

AB

(a)

B = B
AB

A
(b)

B = B
AB

A
(c)
Figura 3.3 Eroso

A dilatao e a eroso so operaes duais entre si com respeito a


complementao e reflexo. Ou seja,
(A B)c = Ac B
A prova desta dualidade est demonstrada a seguir. Partindo da definio
de eroso, temos:
(A B)c = {x | (B)x A}c
Se o conjunto (B)x est contido no conjunto A, ento (B)x Ac = .
Portanto, a equao anterior torna-se:
(A B)c = {x | (B)x Ac = }c
Porm, o complemento do conjunto dos xs que satisfazem (B)x Ac =
o conjunto dos xs tais que (B)x Ac . Logo,
(A B)c = {x | (B)x Ac }
(A B)c = Ac B
como queramos demonstrar.

99

3.2 ABERTURA E FECHAMENTO


Como vimos nas figuras da seo anterior, a dilatao expande uma
imagem, enquanto a eroso a encolhe. Nesta seo discutiremos duas outras
importantes operaes morfolgicas: a abertura e o fechamento.
A abertura, em geral, suaviza o contorno de uma imagem, quebra istmos
estreitos e elimina proeminncias delgadas. O fechamento, por sua vez, funde
pequenas quebras e alarga golfos estreitos, elimina pequenos orifcios e preenche
gaps no contorno.
A abertura de um conjunto A por um elemento estruturante B, denotada
por A B, definido como:
A B = (A B) B
o que equivale a dizer que a abertura de A por B simplesmente a eroso de A por
B seguida de uma dilatao do resultado por B.
O fechamento do conjunto A pelo elemento estruturante B, denotado por
A B, definido como:
A B = (A B) B
o que nada mais que a dilatao de A por B seguida da eroso do resultado pelo
mesmo elemento estruturante B.
A Figura 3.4 mostra um exemplo de operao de abertura, enquanto a
Figura 3.5 mostra um exemplo de operao de fechamento. Ambas utilizam um
elemento estruturante circular. A Figura 3.4 mostra a operao de abertura,
indicando no alto o conjunto original A, na linha intermediria, a etapa de eroso e
na linha inferior, o resultado da operao de dilatao aplicada ao conjunto
resultante da eroso. Na Figura 3.5 so detalhadas as operaes de dilatao do
conjunto original A e subseqente eroso do resultado.

AB

A B = (A B) B
Figura 3.4 Exemplo de abertura

100

AB

A B = (A B) B
Figura 3.5 Exemplo de fechamento

3.2.1 Interpretao geomtrica da abertura e do fechamento


A abertura e o fechamento podem ser interpretados geometricamente de
maneira simples. Suponha-se, por exemplo, o elemento estruturante circular B da
Figura 3.5 como um disco plano. A fronteira de A B composta pelos pontos da
fronteira de B que se distanciam mais para dentro da fronteira de A, medida que B
girado em torno da parte interna desta fronteira. Esta propriedade geomtrica de
encaixe da operao de abertura pode ser expressa em termos da teoria de
conjuntos como:
A B = {(B)x | (B)x A}
A Figura 3.6 mostra este conceito com um elemento estruturante de outro
formato.
De maneira similar, a operao de fechamento pode ser interpretada
geometricamente, supondo que o disco desliza pela parte externa da fronteira de A.
Geometricamente, um ponto z um elemento de A B se e somente se (B)x A
para qualquer translao de (B) que contenha z. A Figura 3.7 mostra esta
propriedade.

Figura 3.6 Propriedade de encaixe da abertura

101

Figura 3.7 Interpretao geomtrica do fechamento


Assim como no caso da dilatao e eroso, a abertura e o fechamento
so duais, ou seja:
(A B)c = (A B )

Propriedades da abertura
i. A B um subconjunto (sub-imagem) de A;
ii. Se C um subconjunto de D, ento C B um subconjunto de D B;
iii. (A B) B = A B.

Propriedades do fechamento
i. A um subconjunto A B;
ii. Se C um subconjunto de D, ento C B um subconjunto de D B;
iii. (A B) B = A B.

Estas propriedades auxiliam na interpretao dos resultados obtidos,


quando as operaes de abertura e fechamento so utilizadas para construir filtros
morfolgicos. Para um exemplo de filtro morfolgico, na Figura 3.8 apresentamos
uma imagem de um objeto retangular com rudo qual se aplica o filtro (A B) B.

(a)

(b)

(c)

(e)
(d)
Figura 3.8 Filtro morfolgico: (a) imagem original, ruidosa; (b) resultado da eroso;
(c) abertura de A; (d) resultado de uma operao de dilatao aplicada imagem
(c); (e) resultado final

102

Aps a operao de abertura, os pontos ruidosos externos ao objeto j


foram removidos. A etapa de fechamento remove os pixels ruidosos do interior do
objeto. Convm observar que o sucesso desta tcnica depende do elemento
estruturante ser maior que o maior aglomerado de pixels ruidosos conectados
presente na imagem original.

3.3 TRANSFORMAO HIT-OR-MISS


A transformao morfolgica hit-or-miss uma ferramenta bsica para o
reconhecimento de padres. Na Figura 3.9 se v um conjunto A que consiste de trs
padres (subconjuntos), X, Y e Z. O sombreado das partes (a)-(c) indica os
conjuntos originais, enquanto que as reas sombreadas das partes (d) e (e) da
figura indicam os resultados das operaes morfolgicas. Seja o objetivo: buscar a
localizao de um dos objetos de A, por exemplo, Y.

(a)

(b)

(c)

(d)

(f)
(e)
Figura 3.9 Transformao hit-or-miss
Seja a origem de cada forma localizada em seu centro de gravidade. Se
circundarmos Y com uma pequena janela W, o fundo local de Y com respeito a W
ser o conjunto diferena (W Y) mostrado na parte (b). A parte (c) da figura mostra
o complemento de A por Y. A parte (e) mostra a eroso do complemento de A pelo
conjunto fundo-local (W Y); a regio sombreada externa parte da eroso. Notar
que o conjunto dos lugares, para os quais Y cabe exatamente dentro de A, a
interseo da eroso de A por Y e a eroso de Ac por (W Y), como mostra a parte
(f). Esta interseo precisamente o lugar que se est buscando. Em outras
palavras, se B denota o conjunto composto por X e seu fundo, o encaixe de B em A,
denotado A hom B, :

103

A hom B = (A Y) [Ac (W Y)]


Generalizando, pode-se fazer B = (B1, B2), onde B1 o conjunto dos
elementos de B associados com um objeto e B2 o conjunto dos elementos de B
associados com o fundo correspondente. No caso anterior, B1 = Y e B2 = (W Y).
Com esta notao, pode-se escrever:
A hom B = (A B1) [Ac B2]
Usando a definio de diferenas de conjuntos e a relao dual entre
eroso e dilatao podemos escrever:
A hom B = (A B1) (A B 2)
Logo, o conjunto A hom B contm todos os pontos para os quais,
simultaneamente, B1 encontrou uma correspondncia (ou um hit) em A e B2
encontrou uma correspondncia em Ac.

3.4 ALGORITMOS MORFOLGICOS BSICOS


Comearemos agora a tratar dos usos prticos da morfologia matemtica
em processamento de imagens. Quando se est trabalhando com imagens
binarizadas, a principal aplicao da morfologia extrair componentes da imagem
que sejam teis na representao e descrio de formatos. A seguir, sero
apresentados algoritmos de extrao de contornos, extrao de componentes
conectados, delimitao do casco convexo de um objeto e esqueletizao de uma
regio. Tambm so apresentados algoritmos teis para as etapas de pr ou psprocessamento, tais como os de afinamento (thining), preenchimento de regies
(region filling), espessamento (thickening) e poda (pruning).

3.4.1 Extrao de contornos


possvel extrair o contorno de um conjunto A, denotado por (A),
executando a eroso de A por B e ento calculando a diferena entre A e sua
eroso. Isto ,

(A) = A (A B)
onde B um elemento estruturante adequado.
A Figura 3.10 mostra a mecnica da extrao de contornos. Na parte (a)
tem-se o conjunto original, na parte (b) o elemento estruturante, em (c) o resultado
da eroso e finalmente em (d) a diferena, que corresponde ao contorno de A.

3.4.2 Preenchimento de Regies (Region Filling)


Seja um contorno fechado A, que pode ser expresso como um conjunto
contendo um subconjunto cujos elementos so pontos do contorno 8-conectados.
Partindo de um ponto p, situado dentro do contorno, o que se deseja preencher o
interior desta regio com 1s.

104

(b)

(a)

(c)
(d)
Figura 3.10 Extrao de contornos
Assumindo que todos os pontos, que no esto sobre a fronteira, esto
rotulados como 0, atribumos o valor 1 a p para iniciar o procedimento. O processo a
seguir preenche a regio com 1s:
Xk = (Xk-1 B) Ac

k = 1, 2, 3, ]

onde X0 = p e B o elemento estruturante simtrico mostrado na parte (c) da Figura


3.11. O algoritmo termina na k-sima iterao se Xk = Xk-1. O conjunto unio de Xk e
A contm a fronteira e os pontos internos a ela.

(a)

(b)

(c)

(d)
(e)
Figura 3.11 Preenchimento de regies (Region filling)

105

Este procedimento ilustrado na Figura 3.11. Na parte (a) tem-se o


conjunto original A, cujo complemente mostrado em (b). A Figura 3.11(c) mostra o
elemento estruturante utilizado. A parte (d) indica o resultado obtido aps a sexta
iterao (a ltima que ainda produziu alguma diferena em relao iterao
anterior), em que os nmeros indicam que iterao contribuiu para o surgimento de
quais pixels no resultado parcial. Finalmente, o resultado da unio do conjunto da
Figura 3.11(d) com o conjunto original mostrado na parte (e).

3.4.3 Extrao de Componentes Conectados


Seja Y um componente conectado contido em um conjunto A e suponhase que um ponto p de Y conhecido. Ento, a expresso iterativa a seguir prov
todos os elementos de Y:
Xk = (Xk-1 B) A

k = 1, 2, 3, ]

onde X0 = p e B o elemento estruturante simtrico mostrado na parte (b) da Figura


3.12, que ilustra a mecnica da equao anterior. O algoritmo converge quando Xk =
Xk-1. O valor final de Xk ser atribudo a Y.

(b)
(a)

(c)

(d)

(e)
Figura 3.12 Extrao de componentes conectados

106

A Figura 3.12 mostra um exemplo de extrao de componentes


conectados. Em sua parte (a) so mostrados o conjunto original A e o pixel de
partida, indicado pelo nmero 0. O elemento estruturante utilizado est na Figura
3.12(b). As partes (c) e (d) mostram, respectivamente, os resultados aps a primeira
e a segunda iteraes. O resultado final (aps 6 iteraes) mostrado na Figura
3.12(e).
3.4.4 Casco Convexo (Convex Hull)
Define-se casco convexo H de um conjunto arbitrrio S como o menor
conjunto convexo que ainda contm S. Apresentaremos, a seguir, um algoritmo
baseado em morfologia matemtica para a obteno do casco convexo C(A) de um
conjunto A. Seja Bi, i = 1, 2, 3 e 4, representando quatro elementos estruturantes.
Notar que estes elementos possuem pontos indicados com X que significam uma
condio dont care, quer dizer, o pixel naquela posio pode ter valor 0 ou 1. O
procedimento consistem em implementar a equao:
Xik = (X hom Bi) A

i = 1, 2, 3 e 4 e

k = 1, 2, 3, ]

Com Xik = A. Agora, seja Di = Xiconv, onde o subscrito conv indica convergncia no
sentido que Xik = Xik-1. Ento, o casco convexo de A :
4

C (A ) = U D i
i =1

Em outras palavras, o procedimento consiste em se aplicar iterativamente


a transformada hit-or-miss sobre A com B1; quando no houverem mais mudanas,
executa-se a unio de A e d-se ao resultado o nome D1. O procedimento repetido
com B2 at que no existam outras mudanas e assim sucessivamente. A unio dos
quatro Ds resultantes constitui o casco convexo de A.
A Figura 3.13 mostra as etapas deste procedimento, iniciando pela
exibio dos quatro elementos estruturantes utilizados, na parte (a). A parte (b)
mostra o conjunto original A. As partes (c), (d), (e) e (f) mostram o resultado afinal do
processamento para cada elemento estruturante, indicando numericamente a
contribuio de cada iterao no resultado final para aquele elemento. O resultado
final aparece na parte (g) e detalhado na parte (h), que ilustra a contribuio de
cada elemento estruturante para o resultado final. Nesta figura, a notao Xik indica
a k-sima iterao (aquela em que no houve mudana em relao a Xik-1).
3.4.5 Afinamento (Thinning)
O afinamento de um conjunto A por um elemento estruturante B,
denotado A B, pode ser definido com a ajuda da transformada hit-or-miss:
A B = A (A hom B)
A B = A (A hom B)c
Outra expresso para o afinamento de A baseada em uma seqncia
de elementos estruturantes:
{B} = {B1, B2, B3, ..., Bn}

107

(a)

(b)

(c)

(d)

(e)

(f)

(g)

(h)
Figura 3.13 Casco convexo (convex hull)
onde B1 uma verso rotacionada de Bi-1. Usando este conceito, define-se o
afinamento por uma seqncia de elementos estruturantes como:
A {B} = ((...((A B1) B2)...) Bn)
Em outras palavras, o processo consiste em afinar A por um passo com
B , ento afinar o resultado com um passo de B2 e, assim sucessivamente, at que
A seja afinado com um passo de Bn. O processo todo repetido at que no
ocorram outras mudanas.
A Figura 3.14 mostra todas as etapas de afinamento de uma imagem,
usado oito elementos estruturantes, indicados no alto da figura. A partir do conjunto
original A, so ilustrados os resultados parciais mais relevantes, at a situao em
1

108

que nenhum elemento estruturante consiga remover nenhum outro pixel da imagem.
Como este resultado ainda possui conexes diagonais redundantes entre pixels
pretos, estas so removidas, utilizando o conceito de m-conectividade. Note que
nesta figura, todos os pixels, no representados explicitamente, podem ser
considerados brancos e que os nmeros, dentro de cada pixel, indicam o elemento
estruturante utilizado e no a iterao.

Aps B1

Aps B1, B2 e B3

Aps B4

Aps B5

Aps B6

Aps B7

Aps B8 e B1

Aps B2, B3, B4 e B5

Aps converso para m-conectividade


Aps B6, B7, B8, B1, ... e B6
Figura 3.14 Afinamento (Thinning)

3.4.6 Espessamento (Thickening)


O espessamento o dual morfolgico do afinamento e pode ser definido
como:
A thi B = A (A hom B)
onde B um elemento estruturante adequado. O espessamento tambm pode ser
definido como uma operao seqencial:
A thi {B} = ((...((A thi B1) thi B2)...) thi Bn)
Os elementos estruturantes usados para o espessamento tm o mesmo
formato dos usados para afinamento, porm com os 1s e 0s intercambiados.
Entretanto, um algoritmo separado para espessamento, raramente usado. O
procedimento usual afinar o fundo do conjunto e complementar o resultado. Ou

109

seja, para espessar o conjunto A, faz-se C = Ac, afina-se C, e ento obtm-se Cc. A
Figura 3.15 mostra o processo de espessamento, obtido pelo afinamento do
complemento de A, onde a parte (a) representa a imagem original, a parte (b) seu
complemento e a parte (c) a verso afinada do complemento de A. Na parte (d) da
figura observa-se que este procedimento resulta em alguns pixels isolados, que so
removidos em uma etapa complementar de processamento, como mostra a parte
(e).

(a)

(b)

(c)

(e)
(d)
Figura 3.15 Espessamento (Thickening) atravs do afinamento do fundo

3.4.7 Esqueletos
Uma abordagem importante para representar a forma estrutural de uma
regio plana reduzi-la a um grafo. Esta reduo pode ser implementada obtendo o
esqueleto da regio atravs de um algoritmo de afinamento (tambm denominado
esqueletizao).
O esqueleto de uma regio pode ser definido usando a Transformao do
Eixo Mdio (MAT Medial Axis Trasformation). A MAT assim definida:
A MAT de uma regio R com fronteira B obtida da seguinte forma: para
cada ponto p em R, encontra-se seu vizinho mais prximo em B. Se p tem mais de
um vizinho mesma distncia mnima, diz-se que p pertence ao eixo mdio
(esqueleto) de R. A Figura 3.16 mostra exemplos de MAT usando a distncia
euclidiana.

Figura 3.16 Exemplos de esqueletos obtidos atravs do conceito da MAT para trs
regies simples

110

O obteno do esqueleto de um objeto plano tambm possvel atravs


de tcnicas morfolgicas. O esqueleto de um conjunto (regio) A pode ser expresso
em termos de eroses e aberturas. Isto , sendo S(A) o esqueleto de A, pode-se
provar que:
K

S (A) = U Sk (A)
k =0

com
K

Sk (A) = U {( AkB ) [( AkB ) o B ]}


k =0

onde B um elemento estruturante, (A kB) indica k eroses sucessivas de A; ou


seja,
(A kB) = ((...(A B) B)...) B
k vezes, e K o ltimo passo iterativo antes de A resultar, por eroso, em um
conjunto vazio. Em outras palavras,
K = Max{k | (A kB) }
Estas equao indicam que S(A), o esqueleto de A, pode ser obtido pela
unio dos subconjuntos esqueletos Sk(A). Pode-se mostrar, alm disso, que A pode
ser reconstrudo a partir destes subconjuntos utilizando a equao
K

A = U (Sk (A) kB )
k =0

onde (Sk(A) kB) denota k dilataes sucessivas de Sk(A); ou seja,


(Sk(A) kB) = ((...(Sk(A) B) B)...) B
k vezes, sendo o limite K de unies o mesmo utilizado anteriormente.
A Figura 3.17 mostra estes conceitos. Nesta figura, a imagem original est
na primeira posio da primeira coluna e sua verso afinada, na ltima posio da
quarta coluna. Notar que o resultado no satisfaz os requisitos de um algoritmo de
afinamento, que so:

No remover pontos terminais de um segmento;


No violar a conectividade da imagem original;
No causar eroso excessiva da regio.

A imagem resultante tem dois graves problemas: mais espessa do que


deveria ser e, pior ainda, remove a conectividade dos elementos da imagem original.
Por estes motivos, apesar da elegante formulao matemtica dos algoritmos
morfolgicos, os algoritmos heursticos muitas vezes produzem melhores resultados.
A interseo da ltima linha com a ltima coluna contm o resultado da reconstruo
do conjunto A.

111

A kB

(A kB)
B

Sk(A)

U Sk (A)

k =0

Sk(A) kB

U Sk (A) kB

k =0

2
Figura 3.17 Esqueletos

3.4.8 Poda (Pruning)


Os mtodos de poda so complementos essenciais dos algoritmos de
afinamento, uma vez que estes, em geral, deixam componentes parasitas que
devem ser removidos em uma etapa de ps-processamento. O conceito de poda
ser apresentado atravs de um exemplo. Seja um caractere, cujo esqueleto contm
pontos esprios, causados por diferentes espessuras nos traos do caractere
original (antes do afinamento), mostrado na Figura 3.18(b). Assumindo que os
componentes parasitas tm comprimento menor ou igual a trs pixels, neste caso
podem ser definidos dois elementos estruturantes (cada qual com suas verses
rotacionadas de 90o) projetados para detectar pontos terminais, mostrados na parte
(a). Notar que quatro destes elementos tm duas quadrculas indicadas com X que
significam uma condio dont-care, quer dizer, o pixel naquela posio pode ter
valor 0 ou 1. A primeira etapa ser afinar o conjunto A com os elementos
estruturantes B, obtendo o conjunto X1, isto :
X1 = A {B}
onde {B} denota a seqncia dos oito elementos estruturantes.
Aplicando a equao acima, por exemplo, trs vezes (pois os ramos
parasitas tm comprimento menor ou igual a 3 pixels), produz-se o resultado X1,
mostrado na Figura 3.18(c). O passo seguinte restaurar o caractere sua forma
original, porm com os ramos parasitas removidos. Para faze-lo, inicialmente se
constri o conjunto X2, contendo todos os pontos terminais de X1 (Figura 3.18(d)):
8

X 2 = U X 1 hom B k
k =1

onde os Bk, so os mesmos detectores de pontos terminais usados anteriormente. O


passo seguinte a dilatao dos pontos terminais trs vezes, usando o conjunto A
como delimitador:
X3 = (X2 H) A

112

onde H um elemento estruturante de 3 x 3 composto por 1s. Este tipo de dilatao


previne a criao de pontos de valor 1 fora da regio de interesse, como se pode
comprovar na parte (e) da Figura 3.18. Finalmente, a unio de X3 e X1 d o resultado
final (Figura 3.18(f)):
X4 = X1 X3

(a)

(d)

(b)

(c)

(e)
Figura 3.18 Poda (pruning)

(f)

113

UNIDADE 4 COMBINAO ALGBRICA DE IMAGENS


A combinao de imagens digitais tem sido utilizada largamente para se
obter efeitos especiais no cinema e na televiso. A indstria do cinema, em
particular, se utiliza da combinao de imagens por processos analgicos desde a
dcada de 20.
A operao de combinao tem como objetivo juntar, em uma nica
imagem, objetos apresentados separadamente em imagens distintas. No caso de
imagens sintticas podemos gerar separadamente os diferentes elementos, e depois
combinar esses elementos em uma nica imagem. Por outro lado, a combinao o
nico mtodo possvel para juntar elementos de imagens geradas por processos
distintos, por exemplo, cenas reais com cenas geradas no computador.
Com o avano das tcnicas de computao grfica, de processamento e
de anlise de imagens, juntamente com a grande capacidade de processamento dos
computadores atuais, cada vez mais vm sendo utilizadas tcnicas de combinao
digital de imagens, tanto pela indstria cinematogrfica como pela indstria de vdeo
e televiso.
Para combinar imagens devemos definir uma operao, comp, entre
imagens que associa s imagens f e g, uma imagem h = comp (f, g). Em algumas
aplicaes a operao comp deve ser estendida para n imagens, comp (f1, ..., fn).
Porm, em geral, a combinao de n imagens se reduz a combinaes sucessivas
de duas imagens.
A operao comp (f, g) s est bem definida se as imagens f e g
pertencem a um mesmo espao de imagens, desse modo elas devem estar
definidas no mesmo conjunto suporte e devem assumir valores no mesmo espao
de cor.
Uma imagem f pode ser obtida usando a combinao linear:
f = c1f1 + c2f2 + ... + cnfn
A operao acima pode ser generalizada se tomarmos ao invs de n
nmeros reais, uma famlia de n funes reais i, definidas no mesmo conjunto
suporte do espao de imagens. A equao acima se escreve ento na forma:
n

f ( x , y ) = i ( x, y ) f i ( x, y ) = 1 ( x, y ) f i ( x, y ) + L + n ( x, y ) f n ( x, y )
i =1

Para que a imagem f na equao acima esteja bem definida em geral,


devemos supor que i(x, y) 0. Alm disso, a equao acima deve calcular uma
intensidade mdia da imagem em cada ponto, de forma a no resultar valores de
intensidade de cor no compatveis com a intensidade de cor em cada imagem. Para
isso devemos exigir que

1 ( x, y ) + L + ( x, y ) = 1,

( x, y ) U

Dessa forma calculamos, em cada ponto (x, y) do domnio U, uma mdia


ponderada dos valores de cada imagem fi em (x, y).
As duas condies impostas s funes i da famlia definem o que
chamamos de partio da unidade. Ou sejam uma partio da unidade finita de um
subconjunto U n uma famlia i, i = 1, 2, ..., n de funes i: U tais que,

114

para todo (x, y) U, tem-se:

i(x, y) 0;
1(x, y) + 2(x, y)+ ...+ n(x, y) = 1.

4.1 MISTURA DE IMAGENS


Um caso particular importante de operao de combinao algbrica de
imagens ocorre quando as funes i da partio so constantes no domnio U do
espao de imagens, ou seja, 1(x, y) = ci, para todo (x, y) U. Nesse caso a
operao se reduz combinao linear de imagens, e a operao chamada de
mistura de imagens: dadas duas imagens f e g, e um nmero real 0 t 1,
definimos o dissolve ht de f e g pondo
ht = dissolvet(f, g) = (1 t)f + tg
Se t = 0 obtemos dissolve0(f, g) = f, e para t = 1 temos dissolve1(f, g) = g.
No caso geral, isto 0 < t < 1, a imagem ht possui em cada ponto uma mdia
ponderada das cores dos pontos correspondentes nas imagens f e g, alm disso, os
pesos dessa mdia so os mesmos em todos os pontos do domnio da imagem,
uma vez que as funes da partio da unidade so constantes, e definidas por
1(x, y) = 1 t e 2(x, y) = t. Temos portanto uma mistura de imagens conforme
definimos acima.
A imagem (c) da Figura 4.1 mostra um dissolve das imagens (a) e (b),
onde o valor do parmetro t 0,4.

Figura 4.1 Dissolve de duas imagens

4.2 COMBINAO DE IMAGENS POR DECOMPOSIO


Na seo anterior vimos um mtodo algbrico para obtermos uma
determinada imagem a partir da combinao de um nmero finito de imagens.
muito comum em computao grfica obtermos uma imagem fazendo combinao
de elementos especficos de diferentes imagens, todas pertencentes a um mesmo
espao de imagens. Esse fato ilustrado na Figura 4.2, onde fazemos uma
superposio de um elemento da imagem (a), sobre a imagem (b), de modo a obter
a imagem em (c).
O estudo desse mtodo de construir uma imagem a partir de combinao
de elementos de diversas outras imagens, se reduz ao estudo de decomposio do
domnio U das imagens dadas. Com efeito, usando a decomposio do domnio U
em dois conjunto A e B conforme mostramos na Figura 4.3, a imagem g da Figura
4.2(c), obtida a partir da imagem f1 da Figura 4.2(a) e da imagem f2 da Figura

115

4.2(b), pondo

f ( x, y ) se ( x, y) A;
g ( x, y ) = 1
f 2 ( x, y ) se ( x, y ) B.

Figura 4.2 Combinao com superposio de elementos

Figura 4.3 Decomposio do domnio U


Nas Figuras 4.4 (a) e (b), mostramos duas imagens f1 e f2. Na Figura (c)
mostramos uma decomposio do domnio U em trs conjuntos A, B e C. Na Figura
(d) mostramos uma combinao f das imagens f1 e f2. A combinao f definida por

f 1 ( x, y )

f ( x, y ) = f 2 ( x, y )
dissolve ( f , f )
0,5
1
2

se ( x, y ) A;
se ( x, y ) B;
se ( x, y ) C.

Figura 4.4 Combinao de imagens

4.3 COMPOSIO DE IMAGENS


Perceptualmente, quando observamos uma imagem, ou mesmo uma
cena real, identificamos dois tipos de regies, que chamamos de figura e fundo
(foreground e background). A figura corresponde a elementos distintos da
imagem, em geral associados a objetos frontais da cena. O fundo corresponde ao
suporte visual dos objetos em cena.
A identificao de regies de figura e fundo em uma imagem define
naturalmente uma decomposio do domnio U da imagem em dois conjuntos Uf e
Ub que contm respectivamente os elementos da figura e do fundo.
Existe um caso particular do mtodo de combinar imagens por
decomposio que tem grande interesse nas aplicaes. Esse caso ocorre quando
cada imagem combinada atravs de uma decomposio figura-fundo. A essa

116

operao de combinao damos o nome de composio de imagens. Esse um


dos operadores de combinao mais utilizados em Computao Grfica.
Um caso particular da operao de composio definido pelo operador
de superposio de imagens. Nesse caso, dadas duas imagens f1 e f2, e uma
decomposio figura-fundo {Uf, Ub} definida do domnio dessas duas imagens, a
operao de superposio resulta em uma imagem f = over(f1, f2) definida por

f se ( x, y ) U f ;
f ( x, y ) = 1
f 2 se ( x, y ) U b .
Na Figura 4.5 mostramos a superposio de uma imagem sinttica, isto ,
gerada no computador, sobre uma imagem real de um ambiente que foi fotografado
e digitalizado.
claro que a operao de superposio de imagens no comutativa em
geral, uma vez que a ordem das imagens determina os elementos que vo compor
os elementos da figura e do fundo da cena.

Figura 4.5 Superposio de uma imagem sinttica sobre uma imagem real

4.4 COMBINAO NO DOMNIO DISCRETO


Quando fazemos uma mistura de imagens, as funes da partio so
constantes em todo o domnio. Portanto, supondo que as imagens esto amostradas
corretamente, no temos qualquer problema em trabalhar no domnio discreto. A
operao se reduz no domnio discreto a uma operao pixel a pixel, usando o valor
amostrado das imagens em cada pixel.
No caso da operao de composio, trabalhamos com a restrio das
imagens aos conjuntos de uma decomposio do domnio. Portanto, ao discretizar o
domnio da imagem devemos levar em considerao a geometria de cada conjunto
da decomposio no interior do pixel.
Considere o operador de superposio h = over(f, g), baseado em uma

117

decomposio figura-fundo do domnio. Trabalhando no domnio contnuo temos


duas opes para o valor h(p) = over{f, g}(p) da imagem final:

h(p) = f(p), ou seja, a cor do pixel da imagem final ser a cor do pixel da figura
(foreground);
h(p) = g(p), ou seja, a cor do pixel da imagem final ser a cor do pixel da imagem
de fundo.

Quando passamos para o domnio discreto devemos tomar um cuidado


especial com os pixels da fronteira dos conjuntos de decomposio. Esses pixels
esto na fronteira que separa os elementos da figura dos elementos do fundo. Eles
possuem informaes tanto da imagem da frente, como da imagem do fundo. Nesse
caso, temos mais uma opo de cor para o pixel da imagem superposta:

h(p) uma combinao das cores de f e g.

As trs condies acima para os valores de intensidade dos pixels na


imagem superposta h, so ilustradas na Figura 4.6.

Figura 4.6 Tipos de pixel na decomposio de uma imagem


Existem dois mtodos de combinar imagens. Um mtodo algbrico,
baseado em uma partio da unidade, e um mtodo geomtrico, baseado em uma
decomposio do domnio das imagens. Alm disso, esses dois mtodos esto
estreitamente relacionados.
Na combinao algbrica cada funo i da partio carrega informaes
sobre a subdiviso do domnio das imagens a serem compostas, e sob o ponto de
vista da geometria dessa subdiviso que devemos analisar a operao de
combinao de imagens no domnio discreto. Esse um ponto muito importante, e
deve ser enfatizado. Uma curva de fronteira de subdiviso divide o pixel em duas
regies conforme ilustrado na Figura 4.7(a). Esse caso ocorre, por exemplo, em uma
decomposio figura-fundo, uma das regies faz parte da figura, e a outra do fundo.
Quando fazemos composies genricas com imagens, precisamos obter
intersees das regies de decomposio. Na Figura 4.7(b) mostramos a interseo
de duas regies, o que resulta em uma decomposio do interior do pixel com quatro
regies.

Figura 4.7 Geometria da decomposio no interior do pixel

118

No processo de discretizao importante manter a informao da


geometria da decomposio no interior do pixel. No que se segue chamaremos a
geometria da subdiviso do pixel de geometria do pixel.

4.5 A FUNO DE OPACIDADE


til pensar na funo f da partio da unidade definida por uma
decomposio figura-fundo, como sendo uma medida do grau de opacidade do pixel
da imagem da frente: quando o pixel opaco, 1 = 1, o pixel do fundo no aparece;
quando o pixel transparente, 1 = 0, o pixel da imagem final assume a cor do pixel
de fundo; quando o pixel no totalmente transparente, 0 < 1 < 1, podemos ver
parcialmente a cor do pixel da imagem do fundo. Desse modo, a cor do pixel final
obtida a partir de uma mistura da cor do pixel na imagem da frente, com a cor do
pixel correspondente na imagem de fundo. A funo f que mede a opacidade do
pixel de grande importncia na definio de diversos operadores de combinao
de imagens.
A funo de opacidade obtida multiplicando-se a funo caracterstica
da figura pelo grau de opacidade, que um nmero entre 0 e 1.

h( p ) = 1 ( p ) f ( p ) + (1 1 )( p ) g ( p)
A equao acima define a combinao de duas imagens usando-se
partio da unidade. Devemos multiplicar a imagem de frente pelo seu canal de
opacidade, e fazer a soma que define a operao. A operao pode ser agilizada
armazenando cada canal de cor da imagem pr-multiplicado pelo canal . Ou seja,
ao invs de armazenar para cada pixel o valor (r, g, b, ), armazenamos (r, g, b,
).
O operador de superposio pode ser definido atravs de uma partio da
unidade definida por duas funes e 1 - , onde mede o grau de opacidade do
pixel da imagem da frente. A funo chamada de funo de opacidade do
pixel. Nos pixels que assumem informaes da frente e do fundo, a funo de
opacidade assume um valor entre 0 e 1.
O valor de representa a percentagem de rea do pixel coberta pela
regio da imagem da frente. Quando o pixel est contido na regio da imagem da
frente, Figura 4.8(a), sua rea totalmente coberta por essa regio. Nesse caso a
sua opacidade 100%, e pomos = 1. Quando ocorre a situao da Figura 4.8(b), a
rea do pixel no totalmente coberta pela regio da frente. Nesse caso o pixel no
tem uma opacidade de 100%, e atribumos funo de opacidade um valor 0 < <
1, que representa a percentagem de rea do pixel coberta pela regio da imagem da
frente. Quando o pixel disjunto da regio da frente, Figura 4.8(c), ento ele
totalmente transparente, e sua funo de opacidade assume valor = 0.

Figura 4.8 Canal alfa e geometria do pixel

119

4.6 DISCRETIZAO DA FUNO DE OPACIDADE


Quando temos uma partio da unidade i, i = 1, 2, ..., n do domnio de
uma imagem, cada funo i pode ser vista como uma imagem monocromtica.
Temos ento dois mtodos para discretizar cada funo i, de forma a minimizar
problemas de aliasing:

amostragem por rea;


superamostragem.

- Amostragem por rea: Esse mtodo de amostragem equivalente a


utilizar um filtro de suavizao (passa-baixa) antes de proceder amostragem da
funo i da partio da unidade.
- Superamostragem: Esse mtodo consiste em subdividir o pixel em subpixels e calcular o valor da partio da unidade em cada sub-pixel.
Os dois mtodos de amostragem acima descritos, do origem a duas
maneiras distintas de se fazer composio de imagens no domnio discreto.

4.6.1 Discretizao com Canal Alfa


No mtodo de amostragem por rea, procuramos manter a informao da
geometria do pixel calculando a rea ocupada por uma das regies. No caso de uma
decomposio figura-fundo, guardamos a informao da rea do pixel ocupado pela
figura.
Considere uma decomposio figura-fundo e seja e 1 - a partio da
unidade associada. Discretizando a funo de opacidade no mesmo reticulado da
imagem, usando amostragem por rea, e fazendo uma quantizao do valor de
em cada pixel, obtemos uma imagem digital monocromtica. Em geral essa imagem
digital resultante armazenada juntamente com os canais de cor da imagem,
constituindo assim mais um canal, que chamado de canal .
No devemos esquecer a interpretao geomtrica do valor do pixel
associado ao canal da imagem: o valor de representa a percentagem de rea do
pixel coberta pela figura. Quando o pixel est contido na regio da figura, sua rea
totalmente coberta por essa regio. Nesse caso o valor de 1. Quando o pixel
est contido na regio de fundo, o valor do canal ser zero. Quando o pixel est
na fronteira que divide a figura do fundo, o valor do canal da imagem um nmero
entre 0 e 1.
Na Figura 4.9 mostramos, esquerda, uma imagem sinttica, e direita,
o seu canal . Nessa figura percebemos claramente que o canal o anlogo
digital das mscaras utilizadas tradicionalmente no processo de composio
analgica na indstria do cinema e da televiso.
A funo 1 - , forma, juntamente com a funo de opacidade , a
partio da unidade da decomposio figura-fundo de uma imagem. Quando
discretizamos a funo 1 - e a representamos como uma imagem, obtemos a
contra-mscara da mscara definida pela funo opacidade. Essa contra-mscara
mostrada na Figura 4.10.

120

Figura 4.9 Imagem digital e seu canal alfa

Figura 4.10 Contra-mscara da mscara de opacidade


Na Figura 4.11(a) mostramos um detalhe do canal de uma imagem
sinttica mostrada na Figura 4.9 (o detalhe da extremidade direita da mesa de
mrmore). O leitor deve observar as gradaes de cinza na regio de fronteira da
mscara. Na Figura 4.11(b) mostramos o mesmo detalhe fazendo apenas
amostragem pontual, isto , sem levar em considerao o percentual da rea
ocupada pela figura e pelo fundo em cada pixel.

Figura 4.11 Detalhe do canal alfa de uma imagem

4.6.2 Discretizao com Mscara de Bits


O canal procura manter a informao da geometria do pixel fazendo
apenas uma amostragem de rea. As regies de fronteira entre os diversos
conjuntos da decomposio do domnio da imagem possuem, em geral, altas
variaes de freqncia. Isso ocorre porque nessas regies onde temos
descontinuidade das informaes da imagem da frente e do fundo. O mtodo do
canal minimiza os problemas de aliasing nessas regies no processo de

121

composio. No entanto, o canal no contm informaes detalhadas sobre a


geometria do pixel.
Para melhor preservar a informao da geometria do pixel no processo de
discretizao podemos utilizar o processo de superamostragem. Nesse caso,
fazemos uma subdiviso do pixel em sub-pixels, em cada sub-pixel avaliamos a
funo da partio, e utilizamos 1 bit para informar se o valor dessa funo no subpixel 1 ou 0, o que corresponde ao sub-pixel pertencer figura ou ao fundo.
Desse modo, ao invs de obter uma imagem monocromtica definindo a
geometria da subdiviso de cada pixel, obtemos uma mscara de bits com
informaes sobre essa geometria. Na Figura 4.12 ilustramos um pixel com duas
regies correspondendo a uma decomposio figura-fundo, mostramos a diviso do
pixel em sub-pixels, e uma mscara de bits correspondente.

Figura 4.12 Mscara de bits numa decomposio figura-fundo de um pixel

4.7 CLCULO DA FUNO DE OPACIDADE


O clculo da funo de opacidade est diretamente relacionado com o
mtodo utilizado para gerar a imagem. Podemos destacar trs casos principais,
baseados no tipo das imagens utilizadas em cada aplicao:

Imagens sintticas bidimensionais, criadas com o auxlio de um sistema de


pintura, ou de um programa de ilustrao;
Imagens sintticas tridimensionais geradas por um sistema de sntese de
imagens. Essas imagens esto associadas a cenas tridimensionais criadas no
computador;
Imagens de cenas reais capturadas por um dispositivo de digitalizao (cmera
de vdeo, scanner, etc.).

4.7.1 Imagens Sintticas Bidimensionais


Essas imagens sintticas podem ser geradas por um sistema de pintura,
ou por um programa de ilustrao, que so sistemas de sntese de imagens
bidimensionais. Nas imagens sintticas geradas em um sistema de pintura, em
geral, o canal de opacidade produzido pelo prprio programa de pintura, de forma
integrada aos canais de cor. O usurio determina os atributos do pincel, tais como
geometria, cor e transparncia. A cada nova pincelada, as informaes de cor e
opacidade so combinadas com as j existentes na tela, de acordo com a operao
de pintura selecionada. Os programas de ilustrao criam a imagem a partir de uma
definio precisa da geometria da cena, sendo portanto possvel a determinao
precisa da geometria de cada pixel, o que possibilita o clculo da funo de
opacidade de cada pixel.

122

4.7.2 Imagens Sintticas Tridimensionais


Nas imagens sintticas tridimensionais, o programa de visualizao
dispe de todos os dados geomtricos da cena, e pode portanto gerar com preciso
o canal de opacidade. Os objetos tridimensionais so projetados no plano da cmera
virtual e a cor de cada pixel determinada pelo modelo de iluminao. A projeo
dos objetos em cada pixel possibilita o conhecimento preciso da geometria do pixel,
o que permite o clculo da funo de opacidade do pixel. A representao discreta
dessa geometria depende do mtodo de visualizao utilizado, e pode ser atravs
da mscara de bits ou do canal alfa.
4.7.3 Imagens Digitalizadas
Quando capturamos uma imagem utilizando um dispositivo de
digitalizao, dispomos somente dos canais de cor da imagem. A funo de
opacidade precisa ser estimada a partir da informao de cor. Como todos os
problemas relativos a combinao de imagens, esse problema se reduz a se fazer
uma decomposio do domnio da imagem. Ou seja, queremos obter uma
decomposio figura-fundo da imagem de forma a determinar a funo de
opacidade associada. Essa decomposio do domnio , em geral, um dos
problemas difceis na rea de anlise de imagens. Nas aplicaes prticas porm a
geometria da decomposio simples e possvel prover mtodos bastante
robustos para calcular a decomposio figura-fundo. Uma vez obtida a
decomposio figura-fundo a funo de opacidade pode ser definida em cada pixel
utilizando algoritmos de rea fill. claro que neste caso a gerao de uma
mscara de bits , em geral, impossvel, uma vez que no temos uma definio
precisa da geometria de cada pixel.

Exemplo 4.1 Blue Screen:

Um caso especial, que torna bastante fcil o clculo da funo de


opacidade quando a imagem tem um fundo de cor nica (por exemplo: azul ou
verde). Esse artifcio, conhecido como blue screen ou chroma key largamente
utilizado, h vrias dcadas, na composio analgica de imagens em filme e vdeo.
Na Figura 4.13 mostramos a imagem de um toro com fundo azul, e o canal de
opacidade da imagem, obtido a partir do fundo azul. Mostramos tambm a
composio, por superposio, da imagem do toro com a imagem de um piso
xadrez.

Figura 4.13 Blue Screen e canal alfa

123

4.8 COMPOSIO NO DOMNIO DISCRETO


Os dois mtodos de discretizao da funo de opacidade estudados
anteriormente do origem a dois modos distintos de se obter composio de
imagens no domnio discreto: composio com canal , e composio com mscara
de bits.

4.8.1 Composio com Canal de Opacidade


O canal obtido atravs de uma discretizao da funo de opacidade.
Essa funo quantizada espacialmente, usando o mesmo reticulado da
discretizao da imagem. Alm disso a informao de opacidade quantizada
usando o mesmo nmero de bits da quantizao dos canais de cor da imagem. A
imagem resultante acrescentada s componentes de cor da imagem, dando
origem ao canal da imagem. Esse novo canal passa a fazer parte integrante da
imagem para a qual ela foi calculada. Obtemos desse modo uma representao
bastante homognea para a imagem juntamente com a sua funo de opacidade.
Estudamos anteriormente o operador de superposio de imagens que se
utiliza da funo de opacidade do pixel para sobrepor uma imagem sobre outra.
Veremos agora como podemos utilizar a funo de opacidade do pixel de forma a
definir outros operadores de combinao de imagens.
Quando fazemos a combinao de duas imagens f e g, obtendo uma
imagem h, devemos combinar no apenas as informaes de cor das imagens f e g,
mas tambm a informao dos canais de opacidade f e g dessas imagens. A
combinao desses canais, resulta no canal da imagem final, o que de grande
importncia para futuras combinaes dessa imagem com outras imagens.
O canal mede apenas a percentagem de rea do pixel ocupada pela cor
de uma determinada imagem, no dando qualquer informao sobre a geometria
exata da regio de cor no interior do pixel. Desse modo, quando combinamos o
canal de duas imagens temos de fazer determinadas suposies.
A ilustraes (a), (b) e (c) da Figura 4.14 mostram as trs possveis
configuraes para a geometria do pixel das imagens f e g. Temos trs opes: as
regies de cor das imagens f e g no se superpem, (a), ou essas regies se
superpem de modo completo ou parcial, (b) ou (c). Essa ltima configurao, que
a mais provvel genericamente, tem o nome de posio genrica.
Vamos sempre admitir que ocorre a posio genrica da Figura 4.14(c).
Nesse caso, os polgonos de cor de cada imagem f e g determinam uma partio do
pixel em quatro subconjuntos: f g , f g , f g e f g , onde a barra indica o
conjunto complementar em relao regio do pixel. Na Figura 4.15 mostramos o
pixel juntamente com os quatro conjuntos dessa partio.

Figura 4.14 Configuraes da geometria do pixel

124

Figura 4.15 Geometria do sub-pixel


Diferentes configuraes as geometria do pixel podem ser obtidas
fazendo operaes de conjuntos com as regies das parties. Por exemplo, a
regio da imagem f dada por f g [ f g ] .
Alm disso, se f e g representam os valores das funes de opacidade
de f e g em um pixel, vamos assumir que a percentagem de rea da interseo das
duas regies dada pelo produto fg. Essa suposio bastante plausvel de um
ponto de vista genrico, uma vez que o produto fg indica a probabilidade de um
ponto pertencer interseo das duas regies. Vale ressaltar que essa suposio
implica que a percentagem de rea da regio da imagem g que intersecta a regio
da imagem f dada por g.
claro que com todas as suposies acima poderemos ter graves erros
quando fazemos composies sucessivas de imagens. Esses erros de fato ocorrem,
porm so irrelevantes na maioria dos casos.
Como a percentagem de rea coberta pela regio f g f g ,
podemos calcular facilmente a percentagem de rea do pixel correspondente s
outras regies da partio. A rea do pixel coberta apenas pela imagem f dada por
f ( f g ) , portanto, a percentagem da rea coberta apenas pela imagem f
f ( f g ) . Analogamente, a percentagem coberta apenas por informao da

imagem g g f g . A percentagem de rea do pixel que no coberta por


elementos nem de f nem da imagem g, dada por

(1 )(1 )
f

4.8.2 Composio com Mscara de Bits


Vimos anteriormente que um dos mtodos de discretizar a funo de
opacidade de um pixel consiste em dividir o pixel em sub-pixels e atribuir a cada subpixel um bit de opacidade. Se o bit 1, o pixel opaco naquela regio, caso
contrrio, ele transparente. Ilustramos esse processo de discretizao na Figura
4.16.
A discretizao do domnio da funo de opacidade utilizando uma
mscara de bits traz vantagens na combinao de imagens em relao ao mtodo
de combinao da geometria do pixel.
Utilizando o processo de mscara de bits, a operao de composio se
d em trs etapas:
composio das mscaras de bits;
clculo do canal alfa;
combinao dos canais de cor.

125

Figura 4.16 Imagens usadas para ilustrar as operaes de composio


Composio das mscaras de bits: Na primeira etapa, as mscaras
de bits da figura e do fundo so combinadas por meio de operaes lgicas bit a bit,
de forma a determinar a decomposio do pixel em sub-regies. As operaes
lgicas utilizadas so definidos pelos operadores and e not. Mais especificamente,
indicando por Mf e Mg a mscara de bits de um pixel genrico nas imagens f e g,
respectivamente, podemos escrever:

f g = (not M f ) and (not M g )


f g = M f and (not M g )
f g = (not M f ) and M g
f g = M f and M g
Clculo do canal alfa: De posse da informao da mscara de bits de
cada pixel da imagem composta, utilizamos essa mscara para calcular a
informao de opacidade do pixel. Temos que calcular as percentagens da rea do
pixel correspondentes figura e ao fundo, Af e Ag. As percentagens so calculadas
por:

A=

nmero de bits " on"


nmero total de bits

Combinao dos canais de cor: Nesta etapa, utilizamos a informao


de opacidade, calculada na etapa anterior, para obter os valores de cor da imagem
composta. Isso feito de modo inteiramente anlogo ao processo utilizado no
mtodo do canal de opacidade :

A f f + Ag g
Conforme vimos acima, a composio utilizando mscara de bits

126

anloga composio pelo mtodo do canal de opacidade. Devemos determinar a


geometria
da
decomposio
do
pixel
em
quatro
subconjuntos:
f g , f g , f g e f g , para ento proceder ao clculo da opacidade e da
informao de cor da imagem composta. A diferena com o mtodo do canal
que neste caso a geometria do pixel conhecida, portanto nenhuma suposio
precisa ser feita. Desse modo, temos o resultado com a preciso da discretizao
dada pela mscara de bits construda no processo de superamostragem.

4.9 OPERAES DE COMPOSIO


As diferentes operaes de composio de imagens so obtidas a partir
de decomposies do domnio das imagens a serem compostas. A operao de
composio consiste de duas etapas:

determinar os diversos conjuntos que definem a composio;


fazer a atribuio de cor a cada um dos pixels nos diversos conjuntos da
decomposio.

O atributo de cor provm das cores nos pixels das imagens f e g a serem
compostas. Devemos salientar que alm das cores das imagens f e g, podemos
tambm atribuir a cor 0, para o caso em que desejamos eliminar qualquer
informao de cor em uma das regies da decomposio. A tabela abaixo indica as
possveis escolhas de cor em cada uma das regies.
Regio
f g

Possveis Cores
0

f g

0 ou f

f g
f g

0 ou g
0, f ou g

Com as diversas possibilidades de variao de cor em cada regio,


teremos um total de doze variaes possveis, o que d origem a 12 operadores de
composio de imagens. Vamos estudar brevemente 7 desses operadores. Em cada
caso, indicamos por Af e Ag a percentagem de rea do pixel ocupada com uma cor
proveniente da imagem f e g respectivamente. Desse modo, a cor resultante do pixel
na imagem composta dada por:

A f f + Ag g
De modo anlogo, o valor do canal de opacidade do pixel dado por

A f f + Ag g
Cada operador ser tambm analisado utilizando o mtodo da mscara
de bits. Nesse caso, devemos calcular a mascara de bits Mr da imagem composta,
bem como as percentagens Af e Ag, para cada uma das operaes de composio.
Para ilustrar as diversas operaes de composio, vamos utilizar as

127

duas imagens f e g mostradas na Figura 4.16. A imagem f um toro, e a imagem g


tambm um piso xadrez. Ambas as imagens foram geradas sinteticamente.
Mostramos tambm na figura o canal de cada uma das imagens.
Na Figura 4.17 mostramos em diferentes tons de cinza as parties
f g , f g , f g e f g , determinadas pelos elementos da imagem f e g no
conjunto suporte. A cor preta indica o fundo da imagem, onde no temos elementos
nem da imagem f nem da imagem g.

Figura 4.17 Partio do conjunto suporte das imagens f e g

4.9.1 Operador OVER


Esse o operador de superposio que estudamos anteriormente. A cor
dos elementos da imagem da frente f no pixel tm sempre predominncia sobre a
cor proveniente da imagem do fundo g. Na Figura 4.18 ilustramos o operador
juntamente com a tabela de atributos de cor em cada regio da partio do pixel.
Neste caso a percentagem de rea do pixel ocupado pela imagem f Af = 1, e a
percentagem ocupada pela imagem g Ag = 1 - f. claro que o operador no
comutativo.
Regio
f g

Cor
f

f g
f g

g
f

f g

0
Figura 4.18 Geometria do pixel do operador OVER

Utilizando o mtodo de mascada de bits, obtemos:

Mr = M f ;
Af = 1 ;
Ag =

nmero de bits M g

nmero de bits (not M f ) and M g .

Na Figura 4.19, mostramos o efeito do operador over nas imagens f e g,


bem como o canal da imagem resultante, obtido atravs da combinao do canal
de cada imagem.

128

Figura 4.19 Operador OVER

4.9.2 Operador INSIDE


Esse operador aplicado s imagens f e g, considera apenas a informao
da imagem f que est contida na imagem g. A ilustrao da Figura 4.20 esclarece a
definio, e mostra os valores de cor de cada regio da partio. A percentagem de
rea do pixel com informao de cor da imagem f Af = g. A percentagem de rea
ocupada pela cor da imagem g Ag = 0. Tambm aqui o operador no comutativo.
Regio
f g

Cor
0

f g
f g

0
f

f g

0
Figura 4.20 Geometria do pixel do operador INSIDE

Usando a composio com o mtodo da mscara de bits, obtemos:

M r = M f and M g ;
Af =

nmero de bits M r
;
nmero de bits M f

Ag = 0 .
Na Figura 4.21 mostramos o resultado do operador inside nas imagens f e
g, bem como a mscara da imagem resultante definida pela combinao do canal
de cada imagem.

Figura 4.21 Operador INSIDE

129

4.9.3 Operador OUTSIDE


O resultado da operao outside(f, g) consiste em considerar a regio da
imagem f fora da regio delimitada pelos elementos da imagem g. A Figura 4.22
ilustra a operao nas regies da partio do pixel, e fornece uma tabela de cores
de cada regio. A percentagem de rea do pixel com atributos de cor da imagem f
Af = 1 g; a percentagem correspondente imagem g 0. claro que o operador
no comutativo.
Pelo mtodo da mscara de bits, obtemos:

M r = M f and (not M g ) ;
Af =

nmero de bits M r
;
nmero de bits M f

Ag = 0 .
Regio
f g

Cor
f

f g
f g

0
0
0
f g
Figura 4.22 Geometria do pixel do operador OUTSIDE
A operao de composio outside ilustrada na Figura 4.23, onde
mostramos tambm o canal da imagem resultante.

Figura 4.23 Operador OUTSIDE

4.9.4 Operador ATOP


O resultado do operador atop(f, g) consiste em superpor a cor da imagem
f nas regies onde existem elementos de cor da imagem g. Esse operador
ilustrado na Figura 4.24. Nessa figura mostramos tambm uma tabela das cores nas
diversas sub-divises do pixel. A percentagem de rea do pixel ocupada com
informao de cor da imagem f Af = g; a percentagem para a imagem g dada
por Ag = 1 f.

130

Regio
f g

Cor
0

f g
f g

f
0
f g
Figura 4.24 Geometria do pixel do operador ATOP
Usando a discretizao do canal de opacidade com a mscara de bits,
obtemos:

Mr = Mg ;
Af =
Ag =

nmero de bits(M f and M g )


nmero de bits M f

nmero de bits M f and (not M g )


nmero de bits M g

O resultado de aplicar o operador atop nas imagens de teste f e g,


mostrado na Figura 4.25. Nessa figura mostramos tambm o canal da imagem
resultante. claro que o canal coincide com o canal da imagem g.

Figura 4.25 Operador ATOP

4.9.5 Operador XOR


O operador xor(f, g) executa a operao de diferena simtrica entre os
conjuntos de pixels das imagens f e g. Ou seja, xor(f, g) = (f g) (g f). A Figura
4.26 ilustra como o operador atua nas regies da partio do pixel, e fornece o valor
de cor de cada regio. A percentagem de rea do pixel com a cor da imagem f
Af = 1 g, e a percentagem de rea do pixel com a cor da imagem g Ag = 1 f.
Regio
f g

Cor
f

f g
f g

f g

0
0
Figura 4.26 Geometria do pixel do operador XOR

131

No processo com mscara de bits, obtemos os seguintes valores dos


parmetros:

] [

M r = M f and (not M g ) or (not M f ) and M g ;


Af =
Ag =

nmero de bits(M f and (not M g ))


nmero de bits M f

nmero de bits (not M f ) and M g


nmero de bits M g

Na Figura 4.27 mostramos o resultado da operao xor(f, g). Nessa figura


mostramos tambm o canal da imagem resultante.

Figura 4.27 Operador XOR


Os operadores de composio podem ser utilizados conjuntamente para
se obter diversas combinaes entre imagens. Nesse contexto conveniente definir,
utilizando o mesmo procedimento acima, dois operadores unrios de imagens: o
operador clear e o operador set.

4.9.6 Operador CLEAR


Faz atribuio da cor nula no pixel (cor de fundo), independente da
informao de geometria do pixel, e torna o pixel totalmente transparente. Temos
portanto Af = Ag = 0. Devemos atentar aqui para a diferena entre um pixel (0, 0, 0,
), com > 0, e um pixel (0, 0, 0, 0). No primeiro caso temos um pixel de cor nula e
no transparente, e no segundo caso temos um pixel de cor nula, e transparente. O
operador clear transforma o pixel em um pixel do tipo (0, 0, 0, 0). Na Figura 4.28
ilustramos essa operao.
Regio
f g

Cor
0

f g
f g

0
0

f g

0
Figura 4.28 Geometria do pixel do operador CLEAR

Utilizando mscara de bits, temos obviamente Af = 0, Ag = 0 e Mr = 0.

132

4.9.7 Operador SET

O operador set(f, g), considera apenas a informao da cor proveniente


da imagem f, desaparecendo portanto a cor da imagem g do pixel. Desse modo,
temos Af = 1 e Ag = 0. Na Figura 4.29 mostramos os valores de cor em cada regio
da partio do pixel, e ilustramos a operao a nvel da geometria do pixel. claro
que o operador no comutativo.
Utilizando mscara de bits, temos Mr = Mf, Af = 1 e Ag = 0.

Regio
f g

Cor
f

f g
f g

f g

f
0
Figura 4.29 Geometria do pixel do operador SET

As operaes de composio estudadas nesta seo, juntamente com as


duas operaes unrias introduzidas acima podem ser utilizadas para se obter
diversos efeitos de combinao de imagens.

133

UNIDADE 5 WARPING E MORPHING


Nesta seo vamos estudar os filtros topolgicos cujo objetivo deformar
objetos em uma imagem. Essas operaes de deformao de imagens so
comumente conhecidas na literatura de processamento de imagem pelo nome de
warping. Combinados com filtros de amplitude que permitem fazer alterao na cor
de uma imagem, podemos obter efeitos de transio entre os diversos objetos
presentes na imagem. Esses efeitos so conhecidos na literatura pelo nome de
morphing. O uso conjunto dos filtros de warping e de morphing so importantes em
diversas aplicaes desde a correo de distores em imagens, obteno de
efeitos especiais de transio na indstria de entretenimento.

5.1 FILTRO DE WARPING


Warping o nome dado ao processo de alterao de uma imagem de tal
modo que a relao espacial entre seus objetos e caractersticas alterada
conforme outra imagem ou gabarito (template).
Dada uma imagem f: U 2 C, um filtro de warping definido por
uma aplicao h: U 2 V 2. O efeito dessa transformao se manifesta
perceptualmente por uma deformao dos objetos na imagem. Na Figura 5.1,
mostramos um exemplo do uso de um filtro de warping em uma imagem.

Figura 5.1 Warping de uma imagem


Em geral fazemos algumas restries funo h que define o warping.
Uma restrio natural consiste em exigir que h seja uma aplicao injetiva e
contnua. A injetividade garante que no h superposio de pontos na deformao,
a continuidade garante que no h rupturas da imagem no processo de deformao.
Resumindo, a operao de warping faz uma mudana das coordenadas
(x, y) dos pixels da imagem, para um outro sistema de coordenadas (u, v).
Um exemplo simples de warping a reflexo de uma imagem digital n x n
em torno de sua diagonal. A transformao geomtrica definida por (x, y) (y, x),
ou seja, u(x, y) = y e v(x, y) = y. Portanto, g(u, v) = f(u(x, y), v(x, y)) = f(y, x).
Um outro exemplo simples de um filtro de warping dado pela rotao da
imagem por um ngulo de 90o em torno do pixel localizado na origem. Nessa caso, a
transformao dada por:

134

cos 90 sen 90 0 1
h ( x, y ) =
= 1 0 = ( y, x)
sen
90
cos
90

A Figura 5.2 mostra o efeito dessa transformao em uma imagem.

Figura 5.2 Rotao de uma imagem


Os dois exemplos acima, reflexo na diagonal e rotao de 90o, tm uma
particularidade que torna o filtro de warping extremamente simples de ser
implementado. A reflexo e a rotao so movimentos rgidos, portanto no h
deslocamento relativo entre os pixels aps a transformao de warping. Alm disso,
nessas duas transformaes os pixels do reticulado, aps a transformao, ficam
completamente alinhados com os pixels do reticulado original. Essa situao ideal.
Em geral, quando aplicamos um filtro de warp ocorre exatamente o oposto:

A posio relativa dos pixels da imagem muda aps a transformao;


O reticulado de pixels, aps transformado, no se alinha com o reticulado
original.

Esses dois fatos esto na origem da maioria dos problemas quando


trabalhamos com filtros e warping no domnio discreto.

5.2 EXPANSO E CONTRAO


Uma transformao T: U 2 2 uma expanso, se
|T(X) T(Y)| |X Y|, X, Y U,
onde > 1. Isso significa que a distncia entre dois pontos X e Y do domnio, aps
transformados, sempre maior do que a distncia entre os pontos originais.
De modo anlogo, T uma contrao, se
|T(X) T(Y)| |X Y|, X, Y U,
com < 1. Ou seja, a distncia entre os pontos X e Y, aps transformados, menor
do que a distncia entre os pontos originais.

135

Exemplo 5.1 Homotetia:

Um exemplo simples de contrao e expanso pode ser obtido usando a


transformao linear de homotetia, definida por T(X) = X, . Para > 1 temos
uma transformao expansiva, e para < 1 temos uma contrao. O nmero
chamado de fator de escala, ou razo de homotetia.
Se uma transformao no uma expanso, nem uma contrao, ento
ocorre a igualdade
|T(X) T(Y)| = |X Y|, X, Y U,
Nesse caso a transformao preserva a distncia entre pontos, e
portanto chamada de isometria.
Em geral, uma transformao de warping no realiza nem uma expanso
nem uma contrao globalmente, como no exemplo da homotetia acima. O caso
mais comum a transformao ser expansiva em uma determinada regio e fazer
uma contrao em outra regio do domnio.
Esse fato pode ser comprovado com o exemplo dado na Figura 5.3. A
imagem (b) mostra o resultado da aplicao de um filtro de warping na imagem (a).
Observando com ateno, o leitor pode perceber que, em algumas regies temos
expanso, em outras ocorre uma contrao, e h algumas regies onde no h
qualquer deformao da imagem inicial.

Figura 5.3 Exemplo de warping de uma imagem

5.3 WARPING NO DOMNIO DISCRETO


A dificuldade bsica ao utilizar um filtro de warping introduzida pelo fato
de trabalharmos com imagens no domnio discreto. Se pudssemos manipular
concretamente as representaes contnuas de imagens, as transformaes de
warping no apresentariam grandes problemas.
Na prtica, trabalhamos com o modelo discreto-contnuo: imagens
espacialmente discretas, com os valores de cor codificados com nmeros em ponto
flutuante. Assim, como o mapeamento leva a pontos de um reticulado em pontos
arbitrrios do plano, se simplesmente transformssemos cada elemento da imagem

136

copiando seu valor para os elementos mais prximos da outra imagem, o resultado
muito provavelmente conteria tantos elementos com valores indeterminados, quanto
com valores mltiplos.
Podemos ilustrar os fatos acima mencionado com um exemplo
unidimensional. Podemos entender esse exemplo como representando a
transformao de uma linha de uma imagem. Na Figura 5.4 mostramos o grfico da
transformao de warping. De forma aproximada, o grfico nos mostra que a
transformao efetua uma expanso entre os pixels 4 e 5, uma contrao entre os
pixels 5 e 6. Ela aproximadamente neutra, isto no realiza expanso nem
contrao, no intervalo que compreende os pixels de 1 a 4. Observando a figura,
podemos destacar dois fatos:

As coordenadas inteiras dos pixels no so transformadas em coordenadas


inteiras;
Apesar de h ser uma funo bijetiva, no temos uma transformao bijetiva no
domnio discreto.

Figura 5.4 Efeito da expanso e contrao no domnio discreto


Na regio onde a transformao expansiva (entre os pixels 4 e 6) alguns
pixels da imagem podem ser omitidos (pixel 5 por exemplo). Esses pixels ficam sem
atribuio de cor, criando um efeito de buracos na imagem deformada. Nas regies
onde a transformao faz uma contrao (entre os pixels 5 e 7 da figura) temos um
efeito contrrio: vrios pixels podem ser mapeados em um mesmo pixel (pixels 5 e 6
da figura), criando um efeito de superposio na imagem final. Esse efeito de
superposio resulta das altas freqncias introduzidas ao fazermos a contrao de
uma imagem, e pode dar origem a problemas graves de aliasing.
Portanto, trabalhando com imagens discretas, ao aplicar uma
transformao de expanso teremos vrios pixels na imagem resultante para os
quais teremos de calcular seus valores. Esse fato est ilustrado na Figura 5.5(a). Na
contrao a situao a oposta, o aumenta de freqncias se traduz, no domnio
discreto, no fato de que vrios pixels so colapsados em um nico pixels, conforme
mostramos na Figura 5.5(b).

137

Figura 5.5 Expanso (a) e contrao (b), no domnio discreto


Podemos resumir o problema acima afirmando que na expanso o
problema de reconstruir a imagem nos novos pixels introduzidos pela
transformao; na regio de contrao devemos usar um filtro de forma a obter a
amostragem correta da imagem em um determinado pixel. Os problemas de buracos
e superposio de pixels na imagem final podem ser resolvidos de forma unificada
usando um processo de reconstruo e reamostragem da imagem, conforme
explicado em seguida.

5.4 RECONSTRUO E REAMOSTRAGEM


Os problemas de superposio e existncia de buracos na imagem aps
ser processada por um filtro de warping podem ser resolvidos trabalhando com a
imagem no domnio contnuo: reconstrumos a imagem original, aplicamos o filtro de
warping na imagem contnua, e em seguida fazemos uma amostragem da imagem
transformada. Esse processo, que conhecido na literatura pelo nome de
reamostragem, ilustrado na Figura 5.6.
A imagem original, Figura 5.6(a), reconstruda de modo a obter uma
imagem contnua, Figura 5.6(b), utilizando um filtro de reconstruo. Aplicamos a
transformao de warping imagem no domnio contnuo obtendo uma outra
imagem no domnio contnuo, Figura 5.6(c). A imagem resultante ento amostrada
para se obter a imagem final na resoluo desejada, Figura 5.6(d).

Figura 5.6 Warping com reamostragem de uma imagem


Na expanso, reconstrumos a imagem e fazemos a amostragem nos
pixels do reticulado. Como as freqncias da imagem transformada diminuem, os
erros provenientes do processo de reconstruo e amostragem so minimizados. Ou
seja, no processo de expanso a transformao trabalha favorecendo o processo de
reconstruo/amostragem.

138

No caso da contrao, h um aumento das altas freqncias do sinal


transformado. Portanto, como em geral a imagem aps filtrada amostrada na
mesma resoluo da imagem original, podemos enfrentar graves problemas de
aliasing no processo de reamostragem. Devemos portanto usar um filtro de
suavizao antes de reamostrar a imagem. O processo de reamostragem, ilustrado
anteriormente na Figura 5.6, fica ento como indicado na Figura 5.7.

Figura 5.7 Warping com reamostragem e filtragem


O mtodo acima resolve por completo os dois problemas mencionados
anteriormente: a reconstruo inicial evita buracos na imagem resultante, enquanto
que a filtragem minimiza os problemas de aliasing decorrentes do fato de termos
vrios pixels na imagem original, mapeados no mesmo pixel.
Devido grande variao da transformao em cada regio do domnio
da imagem, no aconselhvel o uso de filtros espacialmente invariantes. Devemos
utilizar um tipo de filtragem que seja adequado s caractersticas da imagem numa
vizinhana de cada pixel. Esse processo de filtragem chamado de filtragem
adaptativa.

5.5 WARPING POR TRANSFORMAO PROJETIVA


A transformao matemtica mais comum, utilizada em warping,
baseada na transformao projetiva, dada pelas equaes:

aX + bY + c
iX + jY + 1
dX + eY + f
Y =
iX + jY + 1
X =

onde X e Y so as coordenadas antigas e X e Y as novas. Os coeficientes a, b, c,


d, e, f, i e j so determinados a partir de um conjunto de pontos de controle que
correspondem congruncia desejada entre as duas imagens ou entre a imagem
original e o template selecionado. A Figura 5.8 mostra um exemplo do processo de
warping aplicado a uma imagem binria simples.

139

A
A

B
B
Figura 5.8 Exemplo de warping
Neste exemplo, o ponto A movido para a posio A e B movido para
B. A projeo perspectiva exige que sejam selecionados quatro pares de pontos de
controle, para resultar um sistema de oito equaes a oito incgnitas. Os pares A-A
e B-B so duas escolhas bvias. Os outros dois pontos escolhidos, neste exemplos
so os dois cantos restantes do retngulo. Se tivssemos selecionado mais de
quatro pontos de controle, um ajuste por mnimos quadrados seria necessrio para
determinar os melhores valores para a transformao.
Na prtica, um programa para a soluo simultnea de um sistema de
equaes utilizado para calcular os valores dos coeficientes. Ento, entrando com
as coordenadas Xe Y da imagem destino, calcula-se os valores correspondentes
de X e Y na imagem original. O nvel de cinza do ponto de coordenadas (X, Y)
ento atribudo posio (X, Y) na imagem destino. Este processo de
mapeamento pode ser facilmente executado em paralelo, pois cada ponto, na
imagem resultante, depende de apenas um ponto da imagem original.
A Figura 5.9 mostra um exemplo de warping utilizando imagem
monocromtica.

Figura 5.9 Exemplo de warping de uma imagem monocromtica utilizando padro


(template) em forma de losango.

Exemplo 5.2:

Baseando-se na Figura 5.8, dadas as coordenadas originais dos vrtices


do quadrado e as coordenadas desejadas para o quadrado aps o warping,
indicadas na tabela a seguir e ilustradas na Figura 5.10, calcular os valores dos
coeficientes a, b, c, d, e, f, i e j correspondentes transformao desejada.

140

Ponto de
controle
1
2
3
4

Cooredenadas originais
(X, Y)
(0, 0)
(4, 4)
(4, 0)
(0, 4)

(0, 0)

Coordenadas aps warping


(X, Y)
(1, 1)
(3, 3)
(4, 0)
(0, 4)

(4, 0)
(1, 1)

(4, 0)

x
(3, 3)
(0, 4)

(4, 4)

(0, 4)

Figura 5.10 Coordenadas dos pontos de controle antes e depois do warping


Entrando com estes valores para as coordenadas na equao da
transformao projetiva, obtemos um sistema a 8 equaes; resolvendo este
sistema obtemos os seguintes valores para os coeficientes:
a = 0,75 b = -0,25 c = 1,00 d = -0,25 e = 0,75 f = 1,00 i = 0,00 j = 0,00
Para verificar se os coeficientes calculados esto corretos, podemos
escolher um ponto na imagem modificada, por exemplo o ponto de coordenadas (0,5
2,5), indicando com um x na Figura 5.10. Calculando os valores de X e Y
correspondentes a este ponto na imagem original, obteremos o par (0, 2), como
esperado.

5.6 ZOOM DE UMA IMAGEM


Chamamos de zoom de uma imagem ao processo de fazer uma
ampliao ou uma reduo do domnio da imagem usando uma transformao de
homotetia (Exemplo 5.1). No caso de expanso, temos o efeito de zoom in, e no
caso da contrao, o warping conhecido pelo nome de zoom out.
A transformao de zoom de uma imagem tem duas peculiaridades que
facilitam sua implementao:

apesar de haver movimento relativo dos pixels, se a razo de escala for um


nmero inteiro, haver um alinhamento do reticulado da imagem original com o
reticulado da imagem final;
a razo de expanso constante em todos os pixels.

O primeiro fato acima permite que possamos trabalhar diretamente com a


imagem digital sem recorrer a um processo de reamostragem, desde que a razo de
escalamento seja um nmero inteiro. O segundo fato permite o uso de filtros
espacialmente invariantes no processamento da imagem.

141

5.6.1 Zoom In com o Filtro Box


O problema de se fazer um zoom de expanso de uma imagem requer
um filtro de interpolao. Vamos discutir o processo utilizando um filtro box para
reconstruo, quando a razo de escala 2. Neste caso, a resoluo horizontal e
vertical da imagem duplicada. Aplicando o mtodo sucessivamente obtemos
ampliaes com razo 2, 22, 24, etc.
Fazemos inicialmente uma extenso da imagem, acrescentando entre
cada linha (e cada coluna) um linha (coluna) de zeros. Em seguida, reconstrumos a
nova imagem nos pixels acrescentados, fazendo a convoluo com o filtro box de
ordem 2, com mscara
1
1

1
1

Note que neste caso a mscara que define o filtro no tem mdia unitria.
Esse fato garante que a mdia de intensidades na imagem ampliada igual mdia
na imagem original.
fcil verificar que esse processo de convoluo equivalente a
reconstruir a imagem em cada pixel repetindo, para cada linha, o valor do pixel pelo
valor do pixel anterior, e em seguida fazendo o mesmo procedimento para cada
coluna. Por essa razo esse algoritmo de zoom com filtro box conhecido na
literatura pelo nome de zoom por replicao de pixels.
Considere a imagem.

L
L

M
f(i, j)
f(i + 1, j)

M
f(i, j + 1)
f(i + 1, j + 1)

L
L

Acrescentando linhas e colunas de zeros, obtemos

L
L

M
f(i, j)
0
f(i + 1, j)

0
0
0

M
f(i, j + 1)
0
f(i + 1, j + 1)

L
L

Aps o processo de filtragem temos a imagem reconstruda em tamanho


duplicado.

L
L

M
f(i, j)
f(i, j)
f(i + 1, j)
M

f(i, j)
f(i, j)
f(i + 1, j)

M
f(i, j + 1)
f(i, j + 1)
f(i + 1, j + 1)

L
L

A Figura 5.11 mostra uma imagem e duas ampliaes sucessivas


utilizando o filtro box. Como aumentamos os detalhes da imagem a cada

142

transformao de zoom, os defeitos de reconstruo inerentes ao filtro box ficam


mais perceptveis em cada imagem gerada. No entanto, esse algoritmo de zoom
bastante popular devido sua facilidade de implementao e eficincia
computacional. Esse algoritmo muito implementado em hardware para se obter
uma ampliao rpida de uma imagem.

Figura 5.11 Zoom de ordem 2 e 4 com o filtro box

5.6.2 Zoom In com o Filtro Triangular


A introduo de altas freqncias no processo de reconstruo com o
filtro de Bartlett bem menos acentuada. A interpolao com esse filtro conhecida
na literatura de Computao Grfica pelo nome de zoom por interpolao bilinear.
Como no caso anterior, onde utilizamos o filtro box, estendemos a imagem
acrescentando linhas e colunas de pixels com intensidade nula. Em seguida, a
imagem reconstruda nesses pixels fazendo interpolao linear sucessivamente
entre os dois elementos vizinhos nas linhas e em seguida nas colunas.
Na Figura 5.12, mostramos duas ampliaes sucessivas de uma imagem,
usando o filtro triangular para reconstruir a imagem ampliada. O leitor deve comparar
o resultado dessa figura com o resultado obtido usando o filtro box, na Figura 5.11.
Para grande parte das aplicaes, principalmente na indstria de
televiso, onde a resoluo espacial e de cor das imagens baixa, a ampliao com
interpolao bilinear d resultados bastante satisfatrios.

Figura 5.12 Zoom de ordem 2 e 4 com interpolao bilinear

143

5.6.3 Zoom Out de uma Imagem


A transformao de zoom com contrao provoca um aumento das altas
freqncias da imagem. Como sabemos, h o efeito de superposio no qual
diversos pixels so colapsados em um nico pixel. Devemos utilizar um filtro de
suavizao para minimizar os problemas de aliasing na imagem final. Como o fator
de escala constante, podemos utilizar um filtro espacialmente invariante. No caso
do zoom de razo 2, cada bloco de ordem 2 da imagem
f(i, j)
f(i + 1, j)

f(i, j + 1)
f(i + 1, j + 1)

mapeado em um pixel da imagem final.


Usando o filtro box com mscara

1
1

1
1

o valor desse pixel e dado por

1 4
[ f (i, j ) + f (i + 1, j ) + f (i, j + 1), f (i + 1, j + 1)]
4 i =1
Na Figura 5.13 mostramos o efeito do mtodo acima aplicado duas vezes
consecutivas em uma imagem.
Filtros de suavizao mais eficientes podem ser utilizados para se obter
melhores resultados na reconstruo da imagem final. claro que esses filtros
minimizam a introduo de altas freqncias no processo de reconstruo, em troca
de uma perda de definio da imagem reconstruda.

Figura 5.13 Zoom Out consecutivo de uma imagem com filtro box de ordem 2

5.7 MORPHING
Uma categoria importante de filtros so os filtros de amplitude, que
alteram apenas o espao de cor da imagem. Nesse caso, tomamos uma
transformao T: C C do espao de cor da imagem f, e obtemos uma nova
imagem g, fazendo a composio com T. Ou seja, g(x, y) = T(f(x, y)).

144

Os filtros de amplitude so bastante utilizados para se obter efeitos de


transio entre duas imagens. Um exemplo clssico desse fato a operao de
cross-dissolve, que transforma o gamute de uma imagem f, no gamute de uma
imagem g, dada atravs de uma seqncia de interpolaes lineares do espao de
cor. Mais precisamente, temos um conjunto de transformaes dependendo da
varivel t,
ht (x, y) = (1 t) f(x, y) + t g(x, y)
onde para t = 0, temos a imagem original h0(x, y) = f(x, y), e para t = 1, temos a
imagem final h1(x, y) = g(x, y).
Uma transformao de uma imagem que combina simultaneamente
transformao de domnio (warping) com transformao de amplitude (cor),
chamada de morphing. Como as transformaes de morphing combinam mudanas
de forma (filtros de warping) com mudanas na intensidade de cor (filtros de
amplitude), podemos obter efeitos de transio entre imagens com qualidade
extremamente superior ao efeito de cross-dissolve, uma vez que paralelamente
transformao de cor, utilizamos uma transformao de warp para obter uma
alinhamento de geometria.
Na Figura 5.14(c) mostramos um dissolve das imagens (a) e (b), onde a
imagem em(a) tem um peso de 40%.Na Figura 5.14(d), mostramos uma outra
combinao das imagens (a) e (b). Essa ltima combinao tem duas caractersticas
distintas:

Aplicamos um filtro de warp no domnio, de modo a obter um melhor alinhamento


da geometria do rosto da mulher com a geometria da cara do tigre (note o
alinhamento do contorno do rosto, da boca e do nariz);
A transformao de dissolve feita de forma adaptativa, ou seja, as funes de
combinao no so constantes. Isso significa que o percentual de intensidade
de cada imagem nos pixels, varia de pixel a pixel. Isso pode ser notado
comparando com ateno a regio do cabelo da mulher, no lado direito da
imagem (d) com essas regies na imagem (c), onde temos um dissolve
tradicional.

Figura 5.14 Morphing entre duas imagens

Você também pode gostar