Você está na página 1de 0

Conte udo

1 Visao Computacional Usando OpenCV 1


1.1 Introdu c ao . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Processamento de Imagens . . . . . . . . . . . . . 3
1.2 Domnio Espacial . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Histogramas . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 Transforma c ao de Intensidade . . . . . . . . . . . . 8
1.2.3 Filtros de suaviza c ao (passa-baixa) . . . . . . . . . 10
1.2.4 Filtros de acentua c ao (passa-alta) . . . . . . . . . 12
1.2.5 Convolu c ao x Correla c ao . . . . . . . . . . . . . . 14
1.3 Domnio de Frequencia . . . . . . . . . . . . . . . . . . . . 16
1.3.1 Filtros passa-baixa . . . . . . . . . . . . . . . . . 18
1.3.2 Filtros passa-alta . . . . . . . . . . . . . . . . . . . 19
1.4 Segmenta c ao de Imagens . . . . . . . . . . . . . . . . . . . 19
1.4.1 Segmenta c ao por Detec c ao de Borda . . . . . . . . 20
1.4.2 Segmenta c ao por Corte . . . . . . . . . . . . . . . 26
1.4.3 Segmenta c ao Baseada em Crescimento de Regi ao . 27
1.4.4 Segmenta c ao utilizando watersheds . . . . . . . . . 28
1.4.5 Segmenta c ao por Mean-Shift . . . . . . . . . . . . 30
1.5 Reconhecimento de Padr oes . . . . . . . . . . . . . . . . . 30
1.5.1 An alise de Padr ao . . . . . . . . . . . . . . . . . . 33
1.5.2 K-medias . . . . . . . . . . . . . . . . . . . . . . . 34
1.6 Aprendizado de M aquinas . . . . . . . . . . . . . . . . . . 36
1.6.1 Perceptrons de M ultiplas Camadas (MLP) . . . . . 37
1
1.6.2 Boosting . . . . . . . . . . . . . . . . . . . . . . . . 45
1.7 Rastreamento . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.7.1 Corner Finding . . . . . . . . . . . . . . . . . . . . 51
1.7.2 Subpixel Corners . . . . . . . . . . . . . . . . . . . 51
1.7.3 Optical Flow . . . . . . . . . . . . . . . . . . . . . 51
1.7.4 Mean-Shift e Camshift . . . . . . . . . . . . . . . . 52
1.7.5 Estimadores . . . . . . . . . . . . . . . . . . . . . . 53
1.8 Discuss ao Geral . . . . . . . . . . . . . . . . . . . . . . . . 54
Bibliograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Captulo 1
Vis ao Computacional Usando
OpenCV
Denise Stringhini, Ilana de Almeida Souza, Leandro
Augusto da Silva e Maurcio Marengoni
Universidade Presbiteriana Mackenzie
1.1 Introdu cao
N ao e clara a fronteira entre o processamento de imagens e vis ao compu-
tacional. Podemos dizer que processamento de imagens e um processo
onde a entrada do sistema e uma imagem e a sada e um conjunto de
valores numericos, que podem ou n ao compor uma outra imagem. A
vis ao computacional procura emular a vis ao humana, portanto tambem
possui como entrada uma imagem, porem, a sada e uma interpreta c ao
da imagem como um todo, ou parcialmente. Como ser a visto neste tu-
torial os processos de vis ao computacional geralmente iniciam com o
processamento de imagens. Conforme Gonzalez [11] o espectro que vai
do processamento de imagens ate a vis ao computacional pode ser divi-
dido em tres nveis: baixo-nvel, nvel-medio e alto-nvel. Os processos
de baixo-nvel envolvem opera c oes primitivas, tais como a redu c ao de
rudo ou melhoria no contraste de uma imagem. Os processos de nvel-
medio s ao opera c oes do tipo segmenta c ao (particionamento da imagem
em regi oes) ou classica c ao (reconhecimento dos objetos na imagem).
1
2 Vis ao Computacional Usando OpenCV
Os processos de alto-nvel est ao relacionados com as tarefas de cogni c ao
associadas com a vis ao humana.
Figura 1.1: Veculo em imagem escura (esquerda). Ap os uma equa-
liza c ao de histograma, em nvel de cinza, onde a placa do veculo pode
ser lida (direita). Informa c ao da placa e do veculo no ret angulo.
A Figura 1.1 mostra as diferen cas entre processamento de imagens e
vis ao computacional. A imagem da esquerda mostra o veculo, porem,
n ao e possvel ler a placa do veculo, pois a imagem est a muito escura. Na
imagem da direita foi feita uma opera c ao de equaliza c ao de histograma
da imagem (esta opera c ao ser a discutida mais a frente), tipicamente uma
opera c ao de processamento de imagem. O resultado e uma imagem mais
clara e que permite a leitura da placa do veculo. Uma opera c ao de vis ao
computacional e a aplica c ao de um operador que extrai a placa do veculo
e identica as letras e n umeros da placa, possibilitando que os dados do
veculo sejam encontrados em um banco de dados.
OpenCV (Open Source Computer Vision) e uma biblioteca de pro-
grama c ao, de c odigo aberto, desenvolvida inicialmente pela Intel Cor-
poration. O OpenCV implementa uma variedade de ferramentas de
interpreta c ao de imagens, indo desde opera c oes simples como um ltro
de rudo, ate opera c oes complexas, tais como a an alise de movimentos,
reconhecimento de padr oes e reconstru c ao em 3D. O pacote OpenCV
est a disponvel gratuitamente na Internet [17] bem como o manual de
referencia [13].
A biblioteca OpenCV foi desenvolvida pela Intel e possui mais de
500 fun c oes [3]. Foi idealizada com o objetivo de tornar a vis ao com-
1.1 Introduc ao 3
putacional acessvel a usu arios e programadores em areas tais como a
intera c ao humano-computador em tempo real e a rob otica. A biblioteca
est a disponvel com o c odigo fonte e os execut aveis (bin arios) otimizados
para os processadores Intel. Um programa OpenCV, ao ser executado,
invoca automaticamente uma DLL (Dynamic Linked Library) que de-
tecta o tipo de processador e carrega, por sua vez, a DLL otimizada
para este processador. Juntamente com o pacote OpenCV e oferecida
a biblioteca IPL (Image Processing Library), da qual a OpenCV de-
pende parcialmente, alem de documenta c ao e um conjunto de c odigos
exemplos.
A biblioteca est a em sua vers ao 2.1 (Abril 2010) e e dividida em
cinco m odulos de fun c oes: processamento de imagens (cv); entrada e
sada de vdeo (cvaux); estrutura de dados e opera c oes algebricas em
geral (cxcore); aprendizado de m aquina (ml); interface gr aca (high-
GUI). Algumas destas fun c oes s ao apresentadas a seguir, juntamente
com os conceitos de processamento de imagens e vis ao computacional
que devem ser empregados em seu uso.
1.1.1 Processamento de Imagens
Os processos de vis ao computacional, muitas vezes, necessitam de uma
etapa de inicial envolvendo o processamento de imagens. As imagens de
onde queremos extrair alguma informa c ao, em alguns casos, precisam ser
convertidas para um determinado formato ou tamanho e, muitas vezes,
necessitam ser ltradas para remover rudos provenientes, por exemplo,
do processo de aquisi c ao da imagem.
Os rudos podem aparecer de diversas fontes, como apresentado na
Figura 1.2, o tipo de sensor utilizado, a ilumina c ao do ambiente, as
condi c oes clim aticas no momento da aquisi c ao da imagem, a posi c ao
relativa entre o objeto de interesse e a c amera. Note que rudo n ao
e apenas interferencia no sinal de captura da imagem, mas tambem
interferencias que, de alguma forma, atrapalhem a interpreta c ao ou o
reconhecimento de objetos na imagem.
Durante o processo de aquisi c ao de uma imagem, podem surgir al-
guns rudos ou imperfei c oes, conforme apresentado na Figura 1.3. Estes
rudos podem ser tanto interferencias no proceso de captura da imagem
quanto um simples problema de amostragem no processo de captura.
4 Vis ao Computacional Usando OpenCV
Figura 1.2: Imagens de arvores obtidas em condi c oes diferentes, topo
` a esquerda uma imagem normal, topo ` a direita com interferencia de
ilumina c ao, baixo ` a esquerda interferencia do perodo do ano e baixo ` a
direita mudan ca do tipo de sensor.
Em ambos os casos o rudo obtido pode atrapalhar a interpreta c ao ou o
reconhecimento de objetos na imagem.
Com o intuito n ao apenas de remover rudos do processo de aqui-
si c ao, mas tambem de melhorar a qualidade das imagens, aumentando
seu contraste, melhorando o foco ou acentuando algumas caractersticas
especcas, as imagens precisam passar por uma etapa de processamento
normalmente conhecida como ltragem. Estes ltros podem ser aplica-
dos em uma imagem, pixel a pixel, considerando os valores de intensi-
dade de cada pixel e dos pixels vizinhos.
Os ltros podem ser classicados como espaciais (ltros que atuam
diretamente nos pixels da imagem) ou de frequencia, cujas tecnicas s ao
fundamentadas no teorema da convolu c ao, que e uma das propriedades
da transformada de Fourier.
1.2 Domnio Espacial 5
Figura 1.3: Do lado esquerdo uma imagem com rudo, e na direita a
mesma imagem ap os ltragem (Imagens retiradas de [18]).
1.2 Domnio Espacial
O termo domnio espacial refere-se ao conjunto de pixels que comp oem
uma imagem. Os metodos neste domnio s ao procedimentos que ope-
ram diretamente sobre os pixels. Os metodos no domnio espacial s ao
caracterizados pela equa c ao 1.1:
g(x, y) = T[f (x, y)] (1.1)
onde f(x,y) representa um pixel da imagem de entrada a ser ltrada,
g(x.y) o pixel correspondente da imagem ap os a ltragem e T e um
operador sobre f, denido sobre alguma vizinhan ca ao pixel de posi c ao
(x,y).Como apresentado na Figura 1.4, o ponto (x,y) o valor da imagem
de sada g nessas coordenadas e igual ao resultado da aplica c ao de T
` a vizinhan ca com origem em (x,y) na imagem f. Iniciando-se no canto
esquerdo superior da imagem de entrada, o processo percorre a ima-
gem horizontalmente (linha a linha), e verticalmente (coluna a coluna).
O procedimento e repetido gerando os valores da imagem de sada g.
Como os valores das bordas n ao preenchem uma vizinhan ca, os vizinhos
externos s ao ignorados ou ent ao a imagem e preenchida com uma borda
de zeros ou de valores pre-denidos [10]. A espessura da borda depen-
der a do tamanho da vizinhan ca considerada. Em geral, a vizinhan ca e
quadrada ou retangular, centrada em (x,y) e de tamanho (lado) mpar
6 Vis ao Computacional Usando OpenCV
menor que a imagem. No caso de imagens coloridas, separam-se os ca-
nais, que s ao tratados individualmente.
Figura 1.4: Vizinhan cas ao redor de um ponto (x,y) em uma imagem
no domnio espacial: (a) Vizinhan ca 3x3; (b) Vizinhan ca 5x5 e (c) Vizi-
nhan ca 5x3. Adaptado de [10].
1.2.1 Histogramas
Os histogramas s ao ferramentas de processamento de imagens que pos-
suem grande aplica c ao pr atica. Os histogramas s ao determinados a par-
tir de valores de intensidade dos pixels. Um histograma faz uma con-
tagem de quantos pixels de cada valor de intensidade existem em uma
imagem. O histograma pode ser representado gracamente.
Entre as principais aplica c oes dos histogramas est ao a melhora da de-
ni c ao de uma imagem, a compress ao de imagens, a segmenta c ao de ima-
gens ou ainda a descri c ao de uma imagem. Algumas destas aplica c oes
ser ao descritas com maiores detalhes ao longo deste artigo.
O histograma de uma imagem I, cujos valores de intensidade estejam
entre 0 e G, e denido pela fun c ao discreta 1.2:
h(I
k
) = n
k
(1.2)
onde I
k
e o k-esimo valor de intensidade, (0 = k = G) da imagem I
e n
k
e o n umero de pixels na imagem I que possuem a intensidade I
k
.
1.2 Domnio Espacial 7

E possvel normalizar o histograma, representando os valores em termos


de porcentagem, neste caso, cada valor do histograma e dividido pelo
n umero total de pixels da imagem, conforme mostrado na equa c ao 1.3:
p(I
k
) =
h(I
k
)
N
=
n
k
N
(1.3)
onde N e o n umero de pixels da imagem. A Figura 1.5(a) mostra
a imagem original, a gura 1.5(b) mostra a imagem original convertida
para tons de cinza e a gura 1.5(c) apresenta o histograma da imagem
em nvel de cinza.
Figura 1.5: (a) Imagem original; (b) Imagem em tons de cinza; (c)
Histograma da imagem cinza.
Uma importante opera c ao consiste na equaliza c ao de histogramas,
que e o ajuste ou redistribui c ao dos valores de intensidade de forma a me-
lhorar o contraste em uma imagem. A ideia desta opera c ao e mapear os
valores de intensidade de uma imagem de um intervalo pequeno (pouco
contraste) para um intervalo maior (muito contraste) e ainda distribuir
os pixels ao longo da imagem de forma a obter uma distribui c ao uni-
8 Vis ao Computacional Usando OpenCV
forme de intensidades (embora na pr atica isso quase sempre n ao ocorra).
Para realizar a equaliza c ao usa-se o histograma normalizado.
A express ao que fornece um histograma equalizado e apresentada na
equa c ao 1.4:
h
e
q(k) =
(L 1)
MN
k

j=0
n
j
(1.4)
onde k e a intensidade no histograma equalizado, L e o valor m aximo
de intensidade na imagem, M e N s ao as dimens oes da imagem e n
j
e o
n umero de pixels na imagem com valor de intensidade igual a j. A Figura
1.6(a) mostra o histograma equalizado da imagem da Figura 1.5(a) e o
resultado da equaliza c ao e mostrada na Figura 1.6(b).
Figura 1.6: (a) Histograma equalizado; (b) Imagem equalizada.
1.2.2 Transforma cao de Intensidade
Uma outra forma de se alterar a intensidade dos pixels de uma ima-
gem e atuar diretamente atraves do operador T apresentado na equa c ao
1.1, que, em seu caso mais simples e computado em uma vizinhan ca
de tamanho 1x1, isto e, g depende apenas do valor de f em um unico
ponto e T se torna a fun c ao de transforma c ao de intensidade (ou fun c ao
de transforma c ao de nveis de cinza ou fun c ao de mapeamento). Esta
1.2 Domnio Espacial 9
fun c ao e utilizada para alterar a intensidade da imagem, podendo ser
aplicada a toda a imagem ou a uma parte dela.
Uma das fun c oes T mais simples e a que executa realce de contraste,
que e dada pela equa c ao 1.5:
g(x, y) =
1
1 + (
m
f (x,y)
)
E
(1.5)
onde m e o valor medio da regi ao que se deseja real car o contraste e
E dene a inclina c ao da curva de mapeamento de contraste. A fun c ao
de transi c ao e apresentada na Figura 1.7. Note que os valores de sada
n ao s ao apenas 0 ou 1 mas, na regi ao de interesse existe uma varia c ao
no contraste na imagem de sada, onde os valores de f(x, y) menores que
k s ao comprimidos pela fun c ao de transforma c ao em uma faixa estreita
de g(x, y), na dire c ao do nvel mais escuro; o oposto se aplica a valores
de f maiores que k. Um valor de intensidade f e mapeado para obter o
valor correspondente em g.
Figura 1.7: Fun c ao de alargamento de contraste.
No caso limite, e possvel obter um mapeamento chamado bina-
riza c ao ou limiariza c ao.

E uma opera c ao bastante util, que utiliza um
certo valor de corte k (threshold). Este tipo de transforma c ao e denida
na equa c ao 1.6:
g(x, y) =

1 se f(x, y) k
0 caso contr ario
(1.6)
10 Vis ao Computacional Usando OpenCV
Na fun c ao de binariza c ao, o corte e feito de forma abrupta, todos
os valores acima de k (valores mais claros ou com a mesma intensidade
de k) s ao mapeados para o valor 1 (branco) e os valores menores que k
(mais escuros que k na imagem) s ao mapeados para 0 (preto). A fun c ao
de corte para a binariza c ao e apresentada na Figura 1.8.
Figura 1.8: Fun c ao de binariza c ao para um valor k.
Para alguns tipos de imagens, por exemplo, imagens representadas
no domnio de frequencia, e comum se obter valores de intensidade que
v ao de 0 a 10
7
, o que est a fora do espectro visvel para uma imagem.
Estas imagens, quando apresentadas no monitor n ao apresentam um
contraste que permita a identica c ao do espectro de frequencia. Para
estes casos pode-se utilizar uma transforma c ao logartmica, que e de-
nida pelo operador dado pela equa c ao 1.7:
g(x, y) = C log(1 +f (x, y)) (1.7)
onde C e uma constante qualquer (valores para ajustar os valores
dos pixels), geralmente maior que 1. O 1 na express ao do logaritmo e
para se resolver o caso de f(x, y) = 0.
1.2.3 Filtros de suaviza cao (passa-baixa)
O efeito de um ltro passa-baixa e de suaviza c ao da imagem e mini-
miza c ao dos rudos, atenuando as transi c oes abruptas que correspon-
dem a frequencias altas, porem, o efeito acaba sendo de embassamento
1.2 Domnio Espacial 11
ou borramento da imagem, removendo os detalhes nos existentes em
uma imagem.
Dentre os v arios ltros espaciais para suaviza c ao, os mais conhecidos
s ao o da media, mediana, moda, mnimo, m aximo e o gaussiano.
O ltro de media, tambem chamado de ltro-caixa, e implementado
construindo-se uma m ascara mxn com todos os seus coecientes iguais a
1 e depois dividindo-se o valor obtido pelo n umero de pixels da m ascara.
Sua express ao e dada pela equa c ao 1.8:
h(i, j) =

1
mn
se |i| <
m
2
e |j| <
n
2
0 caso contr ario
(1.8)
onde m e n s ao as dimens oes de uma m ascara qualquer. A equa c ao
1.9 mostra um exemplo de m ascara do tipo media para uma vizinhan ca
3 3. Quanto maior a m ascara, maior a area de redu c ao de contraste e
maior ser a a perda de deni c ao da imagem.
h(i, j) =
1
9

1 1 1
1 1 1
1 1 1

(1.9)
No ltro da mediana os valores dos pixels da imagem f(x, y) que
se encontram dentro da m ascara s ao ordenados em ordem crescente ou
decrescente e o valor que ocupa a posi c ao mediana nesta ordena c ao e
selecionado para a imagem de sada em g(x, y). O ltro da mediana
tende a reduzir o efeito de rudo de pulso, do tipo salt and peper, pois
valores pontuais raramente aparecem juntos e portanto nunca ocupam
a posi c ao mediana.
O ltro de moda e simples e seleciona para a posi c ao da imagem de
sada g(x, y) o valor que ocorre com maior frequencia na m ascara, este
tipo de ltro tende a homogeneizar os valores na imagem.
O ltro de m aximo substitui o valor da posi c ao f(x, y) pelo valor
m aximo da m ascara, este ltro tem a tendencia de clarear a imagem.
Analogamente o ltro de mnimo substitui o valor da posi c ao f(x, y)
pelo valor mnimo da m ascara, este ltro tem a tendencia de escurecer
a imagem.
Um ltro Gaussiano tem os valores da m ascara determinados a partir
de uma fun c ao bidimensional Gaussiana discreta, com media igual a zero
12 Vis ao Computacional Usando OpenCV
e desvio padr ao , como mostrado na equa c ao 1.10:
Gauss(x, y) =
1
2
2
e
(x
2
+y
2
)
2
2
(1.10)
Nessa equa c ao, x e y s ao as posi c oes na m ascara e Gauss(x, y) d a o
valor a ser colocado na posi c ao (x, y) da m ascara. Os ltros Gaussianos
s ao ltros do tipo media e s ao utilizados para suavizar a imagem de forma
ponderada e simetrica, atenuando os valores associados a cada pixel,
minimizando e ate eliminando informa c oes indesej aveis. Um exemplo
de m ascara Gaussiana de tamanho 5 5 e apresentado na equa c ao 1.11.
h(i, j) =
1
256

1 4 6 4 1
4 16 24 16 4
6 24 36 24 6
4 16 24 16 4
1 4 6 4 1

(1.11)
A Figura 1.9 mostra as imagens obtidas ap os aplica c ao dos ltros de
media, mediana e gaussiano usando tamanhos de m ascaras diferentes na
imagem em tons de cinza da Figura 1.5(b).
1.2.4 Filtros de acentua cao (passa-alta)
Estes ltros atenuam ou eliminam as baixas frequencias, real cando, con-
sequentemente, as altas frequencias. O ltro do tipo passa-alta e utili-
zado para real car bordas ou regi oes de interesse com transi c oes abruptas
de intensidade. O problema deste tipo de ltro e que ele geralmente
real ca tambem rudos provenientes do processo de aquisi c ao da imagem.
Alguns exemplos de m ascaras para ltros passa-alta s ao apresentadas
nas equa c oes 1.12 e 1.13.
h(i, j) =

0 1 0
1 4 1
0 1 0

(1.12)
h(i, j) =

1 1 1
1 8 1
1 1 1

(1.13)
1.2 Domnio Espacial 13
Figura 1.9: Filtros de suaviza c ao: (a)Filtro da media 3x3; (b) Filtro da
media 5x5; (c) Filtro da mediana 3x3; (d) Filtro da mediana 5x5; (e)
Filtro gaussiano 3x3; (f) Filtro gaussiano 5x5.
14 Vis ao Computacional Usando OpenCV
A Figura 1.10 mostra o resultado do ltro passa-alta na imagem em
tons de cinza da Figura 1.5(b).
Figura 1.10: Resultado da aplica c ao do ltro passa-alta.
1.2.5 Convolu cao x Correla cao
Existem dois conceitos, de certa forma similares, que est ao relacionados
com a transformada de Fourier e constituem no link entre os domnios
de espa co e de frequencia, s ao eles os de correla c ao e convolu c ao.
Como j a mencionado, as transforma c oes no domnio de espa co de-
pendem de uma vizinhan ca de inuencia (m ascara) do pixel que est a
sendo considerado. A ideia destas duas opera c oes e a seguinte: cria-se
uma m ascara com dimens ao d, onde cada posi c ao da m ascara possui um
determinado valor. Em seguida coloca-se a m ascara com sua posi c ao cen-
tral sobre a imagem de entrada na posi c ao (x, y) e, para cada posi c ao da
m ascara, executa-se o produto do valor da m ascara pelo valor do pixel,
faz-se a somat oria destes valores obtidos na multiplica c ao e substitui-
se o valor da imagem de sada na posi c ao (x, y) por este resultado. A
Figura 1.11 apresenta a sequencia executada no processo de correla c ao.
1.2 Domnio Espacial 15
Figura 1.11: Esquema da opera c ao de Correla c ao, no topo ` a esquerda
a imagem, ao centro a m ascara utilizada. No topo ` a direita a indica c ao
dos produtos dos valores da m ascara pelos valores dos pixels da imagem,
ponto a ponto. Embaixo ` a direita a somat oria dos valores multiplicados
e, nalmente, embaixo ` a esquerda o novo valor do pixel na imagem ap os
a correla c ao.
A diferen ca entre a correla c ao e a convolu c ao est a na forma como a
m ascara e utilizada: na correla c ao a opera c ao consiste em mover uma
m ascara pela imagem e calcular a soma dos produtos de cada posi c ao. J a
na opera c ao de convolu c ao, o funcionamento e o mesmo, mas m ascara
e rotacionada de 180 graus. As express oes que denem as opera c oes
de correla c ao e convolu c ao s ao apresentadas nas equa c oes 1.14 e 1.15,
respectivamente.
g(x, y) =
m
2

i=
m
2
n
2

j=
n
2
f (x +i, y +j) w(i, j) (1.14)
g(x, y) =
m
2

i=
m
2
n
2

j=
n
2
f (x i, y j) w(i, j) (1.15)
onde w e a m ascara utilizada no processo de correla c ao/convolu c ao,
e m e n s ao as dimens oes da m ascara. O tipo de ltro depende dos
16 Vis ao Computacional Usando OpenCV
valores da m ascara. No geral, as m ascaras s ao simetricas e, portanto, as
opera c oes de correla c ao e convolu c ao s ao identicas, podendo-se aplicar
qualquer uma das duas.
Matematicamente, o processo de convolu c ao no domnio espacial cor-
responde ` a multiplica c ao de duas express oes no domnio de frequencia,
como mostra a equa c ao 1.16.
g(x, y) = f (x, y) w(i, j) G(u, v) = F(u, v) W(r, s) (1.16)
onde indica a convolu c ao da imagemf(x, y) com a m ascara w(i, j).
G(u, v) e a transformada de Fourier de g(x, y), que e o produto de F(u, v)
por W(r, s) onde F(u, v) e a transformada de Fourier de f(x, y) e W(r, s)
e a transformada de Fourier de w(i, j).
1.3 Domnio de Frequencia

E possvel fazer uma troca de domnios em uma imagem e represent a-la


em termos de uma soma ponderada innita de um conjunto de sen oides.
Esta representa c ao mostra que mudan cas r apidas na imagem s ao repre-
sentadas por frequencias altas e, por outro lado, mudan cas suaves s ao
representadas por frequencias baixas. Esta mudan ca de domnios pode
ser feita utilizando a transformada de Fourier, n ao havendo perda de in-
forma c ao durante a transferencia, apenas a informa c ao visual da imagem
passa a ser representada de uma outra forma, no domnio da frequencia
[2].
As express oes que computam a transformada de Fourier no modo
contnuo e no modo discreto s ao apresentadas nas equa c oes 1.17 e 1.18:
F(u, v) =

f (x, y).e
j2(ux+vy)
(1.17)
F(u, v) =
M1

x=0
N1

y=0
f (x, y).e
j2(
ux
M
+
vy
N
)
(1.18)
O uso de ltros no domnio da frequencia implica, geralmente, em
primeiro transformar a imagem do domnio de espa co para o domnio
1.3 Domnio de Frequ encia 17
de frequencia (usando a transformada de Fourier discreta), aplicar os
ltros desejados no domnio de frequencia e depois transformar a ima-
gem de volta para o domnio de espa co (usando a transformada inversa
de Fourier discreta 1.19), de forma que o efeito da ltragem possa ser
visualizado.
F(X, Y) =
1
MN
M1

x=0
N1

y=0
F(u, v).e
j2(
ux
M
+
vy
N
)
(1.19)
O processo de execu c ao da transformada de Fourier em uma imagem,
n ao e direto e, geralmente, e executado atraves da trasnformada r apida
discreta de Fourier. O procedimento e apresentado abaixo e pode ser
encontrado em maiores detalhes em Gonzalez [11]:
1. Dada uma imagem f(x, y) de tamanho M N, obter uma imagem
com entorno fp(x, y) e tamanho P Q onde P = 2M e Q = 2N
preenchida com zeros no entorno.
2. Multiplicar fp(x, y) por (1)
(x+y)
para centralizar a transformada.
3. Determinar a DFT (Transformada de Fourier Discreta R apida) da
imagem obtida no item anterior.
4. Criar um ltro simetrico H(u, v) de tamanho P Q com centro em
(
P
2
,
Q
2
)
5. Fazer o produto H(u, v) F(u, v).
6. Obter a imagem no domnio de espa co fazendo o inverso da trans-
formada de Fourier gp(x, y).
7. Multiplicar gp(x, y) por (1)
(x+y)
8. Remover o entorno da imagem obtendo ent ao g(x, y), que e a ima-
gem ltrada.
Portanto, denir um ltro no domnio de frequencia corresponde a
encontrar uma m ascara para ser utilizada em conjunto com a imagem
transformada e assim obter a imagem ltrada desejada. A seguir vere-
mos alguns casos de ltros no domnio de frequencia.
18 Vis ao Computacional Usando OpenCV
1.3.1 Filtros passa-baixa
Um ltro passa-baixa ideal e dado pela express ao 1.20:
H(u, v) =

1 se F(u, v) < F
0
0 caso contr ario
(1.20)
onde F
0
e uma frequencia de corte, sendo o ponto de transi c ao entre
H(u, v) = 1 e H(u, v) = 0. Este ltro faz um corte abrupto em uma
certa frequencia, ou melhor, todas as frequencias dentro da regi ao de
interesse (circulo de raio r) s ao mantidas sem atenua c ao e todas fora s ao
retidas completamente, por isso o nome de ltro ideal, como mostra a
Figura 1.12.
Figura 1.12: Filtro ideal no domnio de frequencia: (a) Formato do ltro
em 3D mostrando o corte acentuado na frequencia de corte; (b) Uma
vista esquem atica do mesmo ltro.
Outro ltro do tipo passa-baixa e o ltro de Butterworth cuja ex-
press ao e mostrada na equa c ao 1.21:
H(u, v) =

1
1 + (
F(u,v)
F
0
)
2n
(1.21)
. onde n dene a ordem do ltro de Butterworth. Na pr atica, o valor de
n dene a forma como a fun c ao atenua a frequencia a partir da origem
do ltro. Um outro ltro do tipo passa-baixa e o ltro Gaussiano que
no domnio de frequencia e dado pela express ao 1.22.
H(u, v) = e

F
2
(u,v)
2
2
(1.22)
1.4 Segmentac ao de Imagens 19
O ltro Gaussiano obtem uma atenua c ao menos suave que o ltro
de Butterworth para a mesma frequencia de corte.
1.3.2 Filtros passa-alta
Os ltros passa-alta no domnio de frequencia s ao denidos de forma
similar aos ltros passa-baixa, mas, na ltragem passa-alta, os compo-
nentes de alta frequencia da transformada de Fourier n ao s ao alterados,
enquanto os de baixa frequencia s ao removidos, o que enfatiza os de-
talhes nos da imagem. O ltro passa-alta ideal e dado pela equa c ao
1.23:
H(u, v) =

1 se F(u, v) > F
0
0 caso contr ario
(1.23)
A express ao do ltro passa-alta de Butterworth e dada pela equa c ao
1.24:
H(u, v) =

1
1 + (
F
0
F(u,v)
)
2n
(1.24)
A express ao do ltro passa-alta Gaussiano e dada pela equa c ao 1.25:
H(u, v) = 1 e

F
2
(u,v)
2
2
(1.25)
1.4 Segmenta cao de Imagens
O processo de segmenta c ao e um processo importante em v arias aplica c oes
de imagens e vdeos, e consiste na extra c ao de caractersticas de uma
imagem, como por exemplo, cor ou proximidade, subdividindo-a em
regi oes ou objetos de interesse. A ideia e fazer com que objetos ou areas
de interesse tenham os seus pixels com as mesmas propriedades (valor de
intensidade) agrupados e destacados dos demais em uma imagem [10].
O nvel de detalhamento em um processo de segmenta c ao depende da
tarefa a ser executada e da resolu c ao da imagem que se tem, por exemplo,
se procuramos por uma casa em imagens que foram obtidas do nvel da
rua, estamos procurando regi oes que ocupam uma boa porcentagem da
20 Vis ao Computacional Usando OpenCV
imagem (regi oes grandes), porem, se procuramos por casas a partir de
imagens de satelite, estamos procurando regi oes pequenas. Embora a
tarefa seja a mesma, a resolu c ao das imagens e diferente e o tratamento
utilizado no processo de segmenta c ao muito provavelmente ser a diferente
tambem.
Existem diversas formas de segmentar imagens. A segmenta c ao pode
ser baseada em descontinuidades ou similaridades dos diferentes aspec-
tos da imagem. Podem ser baseadas em limites (ou bordas) ou em areas
(regi oes). As descontinuidades s ao representadas pelas mudan cas brus-
cas nos nveis de tons, cores e texturas. As similaridades baseiam-se no
quanto esses aspectos podem ser comuns aos diversos pixels [10].
Existem v arias tecnicas de segmenta c ao de imagens, nesta se c ao s ao
apresentadas e detalhadas as tecnicas listadas abaixo:
Segmenta c ao por detec c ao de borda.
Segmenta c ao por corte.
Segmenta c ao por crescimento de regi ao.
Segmenta c ao utilizando Watershed.
Segmenta c ao por Mean-Shift.
1.4.1 Segmenta cao por Detec cao de Borda
Uma borda em uma imagem e caracterizada por uma mudan ca, nor-
malmente abrupta, no nvel de intensidade dos pixels. Os detectores
de borda s ao denidos para encontrar este tipo de varia c ao nos pixels e
quando estes pixels est ao pr oximos eles podem ser conectados formando
uma borda ou um contorno e assim denindo uma regi ao ou objeto.
Varia c oes nos nveis de intensidade dos pixels podem ser determina-
das pelas derivadas de primeira e/ou de segunda ordem. Alguns metodos
de determina c ao de borda utilizam estas tecnicas. O processo consiste
em se denir m ascaras que caracterizem estas varia c oes e, em seguida,
fazer a convolu c ao da imagem pela m ascara.
Os operadores mais comuns baseados na derivada primeira (opera-
dores de gradiente) de uma imagem s ao os operadores de Prewitt e de
1.4 Segmentac ao de Imagens 21
Sobel, a Figura 1.13 mostra as m ascaras relacionadas a cada um destes
operadores para detec c ao de bordas verticais e horizontais.
Figura 1.13: M ascaras para Vertical e Horizontal de Prewitt e Sobel.
O operador de Sobel e semelhante ao de Prewitt sendo a unica di-
feren ca o valor 2 que multiplica o termo central nas linhas da m ascara.
Este fator tende a suavizar o resultado do operador, atenuando rudos.
A Figura 1.14 mostra a aplica c ao das m ascaras vertical e horizontal de
Prewitt e Sobel na imagem da Figura 1.5(b). E a Figura 1.15 mostra o
resultado nal para ambas as tecnicas.

E possvel ainda denir operadores que atuam utilizando a derivada


segunda dos pixels (operadores Laplacianos), estes operadores s ao base-
ados no fato que quando existe uma borda a derivada segunda atravessa
o eixo das abscissas (este efeito e conhecido como zero-crossing). Um
dos primeiros detectores de borda utilizando este conceito foi o de Marr-
Hildreth [15], que foi baseado nos seguintes conceitos:
A mudan ca de intensidade n ao e independente da escala da ima-
gem, logo os operadores devem ter tamanhos diferentes.
A mudan ca de intensidade de forma abrupta faz com que a deri-
vada segunda atravesse o eixo das abscissas.
Marr e Hildreth deniram um operador Laplaciano de uma fun c ao
Gaussiana, conforme a equa c ao 1.26, o formato da curva e a m ascara 55
que representa a fun c ao s ao apresentados na Figura 1.16. O operador
22 Vis ao Computacional Usando OpenCV
Figura 1.14: Filtro de Prewitt: (a) Vertical; (b) Horizontal; Filtro de
Sobel: (c) Vertical; (d) Horizontal.
1.4 Segmentac ao de Imagens 23
Figura 1.15: Imagens segmentadas por operadores de (a) Prewitt e (b)
Sobel.
e simetrico, uma caracterstica da curva Gaussiana, o que evita o uso
de operadores m ultiplos e tem um efeito de suaviza c ao da imagem. O
tamanho da m ascara deve ser denido de acordo com o valor do desvio
padr ao, normalmente este valor e um n umero impar maior que 6 ,
uma vez que 99, 7% do volume de uma Gaussiana esta denido entre
3. Note que os coecientes da m ascara somam zero, isto garante que
em locais onde a imagem e homogenea n ao e acrescentado valor algum
na imagem resultante.

2
G(x, y) = (
x
2
+y
2
2
2

4
)e

x
2
+y
2
2
2
(1.26)
O detector de borda de Marr-Hildreth pode ser implementado facil-
mente atraves de duas opera c oes:
Filtrar a imagem com uma Gaussiana do tipo passa-baixa de ta-
manho n n.
Computar a Laplaciana usando uma m ascara 3 3 do tipo lapla-
ciano, porem, com os sinais dos pesos trocados.
O resultado do detector de borda de Marr-Hildreth aplicado ` a ima-
gem da Figura 1.5(b) e apresentado na Figura 1.17.
24 Vis ao Computacional Usando OpenCV
Figura 1.16:
`
A esquerda a superfcie da Laplaciana de uma Gaussiana e
` a direita uma m ascara 5 5 representando a supercie.
Figura 1.17: Imagem segmentada por detector de borda de Marr-
Hildreth.
1.4 Segmentac ao de Imagens 25
A tecnica de detec c ao de borda desenvolvida por Canny [4], em-
bora seja a mais complexa, e tambem a de melhor desempenho entre as
tecnicas discutidas ate aqui. O detector de bordas de Canny possui tres
objetivos b asicos:
1. baixa taxa de erro (todas as bordas devem ser encontradas),
2. os pontos da borda devem ser bem localizados (as bordas localiza-
das devem ser pr oximas das bordas reais) e
3. resposta unica para os pontos de uma borda (o operador deve
retornar apenas um ponto para cada ponto sobre a borda).
Canny conseguiu representar estas ideias matematicamente e, utili-
zando otimiza c ao numerica, deniu um detector de borda baseado na
primeira derivada de uma Gaussiana. Numa primeira etapa e feita a
convolu c ao da imagem usando uma m ascara Gaussiana, em seguida s ao
determinados a magnitude das derivadas parciais e a dire c ao das nor-
mais em cada pixel, conforme indicado pelas express oes abaixo 1.27,
1.28, 1.29 e 1.30:
g(x, y) = f (x, y) Gauss(x, y) (1.27)
M(x, y) =

g
2
x
+g
2
y
(1.28)
(x, y) = tan
1
g
x
g
y
(1.29)
g
i
=
(x, y)

i
(1.30)
Os valores de g
i
podem ser obtidos a partir dos operadores de Prewitt
ou de Sobel. M(x, y) e uma imagem que contem a informa c ao da mag-
nitude das derivadas parciais em cada pixel e (x, y) e uma imagem que
contem a dire c ao da normal ` a borda para cada pixel. A ideia e, para
cada pixel p, verica se pelo menos um dos vizinhos de p possui a mesma
dire c ao do vetor normal que p, se sim, marca o pixel com M(x, y) (as
coordenadas de p), sen ao marca a imagem de sada com 0.
Finalmente utiliza-se um operador de corte para reduzir pontos de
borda falsos. O operador de corte, neste caso, e baseado em histerese.
26 Vis ao Computacional Usando OpenCV
O operador de corte baseado em histerese possui dois valores, um valor
chamado de alto e outro chamado de baixo. S ao feitas as opera c oes
de corte usando estes valores e s ao obtidas duas imagens bin arias, es-
tas imagens s ao subtradas uma da outra para se obter a imagem nal
(Img
baixa
Img
alta
). O tamanho da Gaussiana utilizada e o mesmo
denido para o operador de Marr-Hildreth.
A Figura 1.18 mostra um exemplo de segmenta c ao de imagem utili-
zando o operador de Canny.
Figura 1.18: Segmenta c ao usando operador de Canny. Foi utilizado um
valor de corte baixo de 64, um valor de corte alto de 128, com uma
m ascara 3x3.
1.4.2 Segmenta cao por Corte
A segmenta c ao de imagens por corte e simples de ser implementada,
e r apida em termos computacionais e utiliza de propriedades intuitivas
para criar a imagem segmentada. A segmenta c ao por corte particiona
uma imagem diretamente em regi oes baseado simplesmente nos valores
de intensidade e/ou propriedades destes valores. A ideia central deste
1.4 Segmentac ao de Imagens 27
tipo de operador e a de vericar no histograma da imagem quantas
regi oes existem (picos e vales) e segmentar a imagem baseando-se nesta
informa c ao. A Figura 1.19 apresenta um exemplo de imagem segmen-
tada utilizando a tecnica de corte.
Figura 1.19: Segmenta c ao de imagem utilizando a tecnica de corte, com
ponto de corte em 84.
Note que, utilizando esta tecnica e possvel denir mais de uma regi ao
e criar uma imagem segmentada que n ao seja simplesmente uma ima-
gem bin aria.

E possvel ainda fazer tratamentos no histograma para
minimizar efeitos de rudos que apare cam na imagem.
1.4.3 Segmenta cao Baseada em Crescimento de Regiao
Esta tecnica de segmenta c ao encontra regi oes diretamente na imagem
agrupando pixels ou sub-regi oes em regi oes maiores baseado em criterios
de crescimento pre-denidos. O procedimento parte de um conjunto de
pontos chamados de sementes e, a partir destes pontos, vai agrupando
pontos utilizando uma vizinhan ca de inuencia, formando as regi oes.
Nesta vizinhan ca s ao analisadas propriedades e s ao medidas similarida-
28 Vis ao Computacional Usando OpenCV
des para determinar se o pixel faz parte ou n ao da regi ao sendo consi-
derada.
As propriedades normalmente consideradas s ao: cor, intensidade de
nvel de cinza, textura, momentos, etc. Detalhes importantes desta
tecnica s ao a deni c ao das sementes e a deni c ao de um criterio de
parada para o crescimento de regi oes. Um algoritmo b asico de cresci-
mento de regi oes que considera uma vizinhan ca de 8 e descrito abaixo,
o algoritmo considera f(x, y) a imagem de entrada, S(x, y) uma ima-
gem que dene as sementes do processo de crescimento de regi ao e Q a
propriedade a ser considerada na deni c ao da regi ao:
1. Encontre as componentes conexas em S e ache, para cada uma
delas, o ponto central da regi ao.
2. Crie uma imagem t tal que, para cada posi c ao (x, y) em f, t(x, y) =
1 se f(x, y) possui a propriedade Q.
3. Crie uma imagem g fazendo a uni ao entre S e t se os pontos em t
estiverem conectados a uma semente, usando uma vizinhan ca de
8.
4. Rotule cada regi ao de g com um valor diferente. Esta e a imagem
nal segmentada.
Uma alternativa a este metodo e subdividir a imagem inicialmente
em um conjunto de regi oes disjuntas e unir ou n ao as regi oes de forma a
atender as caractersticas que est ao sendo utilizadas no processo de seg-
menta c ao. Este tipo de tecnica pode utilizar uma estrutura de quadtrees,
que s ao arvores onde um n o possui exatos quatro lhos. As imagens cor-
respondentes a cada lho s ao chamadas de quadregions ou quadimages.
1.4.4 Segmenta cao utilizando watersheds
A segmenta c ao de imagens por watersheds e uma tecnica baseada no
crescimento de regi oes, na qual a imagem e vista como um relevo to-
pogr aco e e inundada com agua, permitindo a forma c ao de bacias de
capta c ao e de linhas watersheds, ou linhas divisoras de aguas, possibili-
tando o particionamento da imagem em regi oes. Esta tecnica costuma
1.4 Segmentac ao de Imagens 29
ser eciente quando queremos segmentar uma imagem, mas n ao temos
como separar o background (fundo) da imagem.
Este metodo converte linhas em uma imagem em montanhase
regi oes uniformes em valesque podem ser usados para auxiliar na
segmenta c ao de objetos. Primeiro obtem o gradiente da imagem de
intensidade, formando vales ou bacias (pontos mais baixos) onde n ao
tem nenhuma textura e formando montanhas ou intervalos (cumes ele-
vados correspondentes ` as arestas) onde existem linhas dominantes na
imagem. Em seguida, inunda sucessivamente bacias especicadas pelo
usu ario (ou especicadas por algum algoritmo), ate que estas regi oes se
encontrem. Regi oes que se fundem entre as marcas geradas s ao segmen-
tadas como pertencentes umas ` as outras, enquanto a imagem est a en-
chendo. Desta forma, as bacias conectadas ao ponto marcado tornam-se
possudas por este marcador. Depois a imagem e segmentada nas regi oes
marcadas correspondentes [3].
Na Figura 1.20(a) e apresentada a imagem com os marcadores e na
Figura 1.20(b) a imagem segmentada utilizando watersheds.
Figura 1.20: (a) Imagem original com marcadores; (b) Imagem segmen-
tada com algoritmo de watershed.
30 Vis ao Computacional Usando OpenCV
1.4.5 Segmenta cao por Mean-Shift
O algoritmo de mean shift e uma tecnica poderosa para a segmenta c ao
de imagens. Este metodo utiliza toda a informa c ao de cor num modelo
tridimensional para obter grupos de pixels de cores semelhantes esta-
tisticamente, esperando que estes grupos formem objetos, diminuindo
drasticamente a quantidade total de cores na imagem. O algoritmo move
recursivamente para o n ucleo o centr oide suavizado para cada ponto de
dados.
Dado um conjunto de pontos de dados multidimensional, cujas di-
mens oes s ao (x, y, azul, verde, vermelho), o mean shift (deslocamento
da media) consegue encontrar o blococom maior densidade de dados
num determinado espa co escaneando uma janela dentro deste espa co.
Note porem que as vari aveis espaciais (x, y) podem ter valores muito
diferentes das magnitude de cores (azul, verde, vermelho). No entanto,
o deslocamento da media precisa permitir janelas de tamanhos diferen-
tes em dimens oes diferentes. Neste caso e preciso de um raio para as
vari aveis espaciais (Spatial Radius) e um raio para as magnitudes de cor
(Color Radius).
`
A medida que a janela do mean-shift se move, todos os
pontos percorridos pela janela que convergem para um pico nos dados
tornam-se conectadas ou propriedadesdesse pico. Esta propriedade,
irradiando para fora dos picos mais densos, forma a segmenta c ao da
imagem [3]. A Figura 1.21 mostra aplica c oes do ltro mean-shift com
valores diferentes para o raio espacial e para a magnitude de cor.
1.5 Reconhecimento de Padr oes
Reconhecer signica conhecer de novo, e isto implica num processo onde
existe algum conhecimento previo e algum tipo de armazenamento do
conhecimento sobre o objeto a ser reconhecido. Esta e a parte onde os
sistemas de vis ao possuem uma intersec c ao com a area de inteligencia ar-
ticial. Para fazer o reconhecimento um sistema de vis ao necessita uma
base de conhecimento dos objetos a serem reconhecidos, esta base de
conhecimento pode ser implementada diretamente no c odigo, atraves,
por exemplo, de um sistema baseado em regras, ou esta base de co-
nhecimento pode ser aprendida a partir de um conjunto de amostras
1.5 Reconhecimento de Padr oes 31
Figura 1.21: Imagens ap os segmenta c ao por mean-shift: (a) Spatial Ra-
dius=2 e Color Radius=20; (b) Spatial Radius=12 e Color Radius=25;
(c) Spatial Radius=3 e Color Radius=40; (d) Spatial Radius=6 e Color
Radius=50.
32 Vis ao Computacional Usando OpenCV
dos objetos a serem reconhecidos utilizando tecnicas de aprendizado de
m aquina.
O reconhecimento de objetos e uma das principais fun c oes da area
de vis ao computacional. O reconhecimento de padr oes e um termo ge-
ral para o processo de identica c ao de objetos a partir de um conjunto
de atributos.Os atributos de um objeto qualquer, que nesse contexto
pode-se considerar exclusivamente imagens, s ao caractersticas como cor,
forma ou textura que s ao devidamente extradas de uma imagem padr ao
para serem usadas em um futuro processo de reconhecimento. Na fase
de extra c ao, tambem chamada de extra c ao de caractersticas, as tecnicas
anteriormente apresentadas como remo c ao de rudos, melhora do con-
traste e segmenta c ao de imagens podem ser usadas. As caractersticas
extradas das imagens devem carregar informa c oes discriminantes sob
uma determinada classe ou grupo que a imagem pertence e ser ao usadas
pelo reconhecedor de padr oes num processo de tomada de decis ao. O
conjunto, extrator de caractersticas e reconhecedor de padr oes, forma
uma importante ferramenta de vis ao computacional.
Em geral estes algoritmos podem ser separados em aqueles que envol-
vem aprendizado de m aquina e aqueles que n ao envolvem aprendizado
de m aquina. Os algoritmos que n ao envolvem aprendizado reconhecem
padr oes atraves de compara c oes, estatsticas ou n ao entre o padr ao a
ser reconhecido e aqueles previamente conhecidos e armazenados. Por
outro lado, os algoritmos que envolvem aprendizado,aprendem a reco-
nhecer um padr ao a partir de um treinamento executado previamente
sobre os padr oes conhecidos. O processo de aprendizado e a realiza c ao
de ajustes em alguns par ametros livres do algoritmo, que uma vez apren-
didos permitem boas taxas de reconhecimento destes padr oes.
O reconhecimento pode ter signicados especcos em diferentes con-
textos. Classica c ao de padr oes, como por exemplo, determinar se uma
imagem da mama pode ter uma regi ao patol ogica e ou n ao-patol ogica
[16] e um caso especco de reconhecimento de padr oes que envolve
tecnicas de processamento de imagens, segmenta c ao de imagens, ex-
tra c ao de caractersticas e reconhecimento de padr oes. Outros exemplos
com o envolvimento de todas estas tecnicas podem ser: reconhecimento
de face, reconhecimento de impress oes digitais e todas aquelas que tem
como padr ao objetos que aparecem em imagens e que precisam ser de-
1.5 Reconhecimento de Padr oes 33
tectados ou reconhecidos.
Alem das tecnicas para a extra c ao de caractersticas, o OpenCV tem
em sua biblioteca uma variedade de algoritmos de reconhecimento de
padr oes como Malahanobis, K-medias, Classicador Bayesiano,

Arvore
de decis ao, Boosting, Redes Neurais Articiais (RNA) entre outros (veja
a lista completa em [3]).
1.5.1 Analise de Padrao
Uma forma simples de se fazer um reconhecimento de padr ao e vericar
se o padr ao desejado aparece em algum lugar na imagem que est a sendo
analisada. Neste caso marca-se cada posi c ao onde o padr ao for encon-
trado na imagem analisada. Este processo faz uma busca exaustiva na
imagem e pode ser lento em determinadas aplica c oes, porem, e simples
de ser executado.
O openCV oferece um comando especco para este tipo de reco-
nhecimento de padr ao, chamado de cvMatchTemplate que utiliza como
par ametros a imagem onde se deseja encontrar o padr ao, o padr ao, uma
imagem que mostra o resultado da verica c ao e o metodo de compara c ao
utilizado. Neste caso existem 3 metodos especcos de compara c ao das
imagens:
Diferen ca ao quadrado: subtrai a imagem do padr ao em cada
posi c ao e eleva a diferen ca ao quadrado. Melhor valor de cor-
respondencia e pr oximo a 0.
Correla c ao: faz a correla c ao entre o padr ao e a imagem em cada
posi c ao. Melhor valor de correspondencia e pr oximo a 1.
Coeciente de Correla c ao: faz uma correla c ao relacionada com a
media do padr ao com a media da imagem.Melhor valor de corres-
pondencia e pr oximo a 1.
Qualquer um destes metodos pode ser aplicado de forma normali-
zada que apresenta melhores resultados quando existirem varia c oes de
ilumina c ao signicativas.
A Figura 1.22 apresenta um conjunto de imagens utilizadas num
teste deste metodo. ` a esquerda a imagem de entrada, no centro esquerda
34 Vis ao Computacional Usando OpenCV
acima o padr ao centro esquerda abaixo a diferen ca quadr atica, no centro
direita acima a correla c ao e no centro direita abaixo o coeciente de
correla c ao, nalmente, ` a direita as regi oes encontradas na imagem.
1.5.2 K-medias
O algoritmo de K-medias n ao e exatamente um algoritmo de reconheci-
mento de padr oes, mas sim um algoritmo de agrupamento que procura
encontrar em cada imagens grupos de pixels que possuem caractersticas
semelhantes (geralmente proximidade). Neste caso, e possvel vericar,
ap os o agrupamento, se algum destes grupos possui uma determinada
caracterstica que existe no padr ao que est a sendo procurado.
O usu ario verica o n umero de grupos que deseja obter na imagem e
o algoritmo ir a procurar, de forma interativa, os centros de massa destes
grupos. Esta tecnica de agrupamento e r apida e e uma das mais usadas
[3]. O algoritmo em si funciona da seguinte forma:
1. Entrada: imagem e o n umero de grupos (K)
2. De forma rand omica dene K centros de grupos na imagem.
3. Associa cada ponto da imagem a um grupo.
4. Calcula o novo centro de cada grupo baseado nos pontos associa-
dos.
5. Retorna ao item 3 ate que exista a convergencia.
O algoritmo das K-medias apresenta, basicamente, os seguintes pro-
blemas:
N ao h a garantias de se encontrar os melhores centros para cada
grupo, porem, sempre converge.
O metodo n ao encontra o n umero ideal de grupos, o usu ario deve
fornecer esta informa c ao.
O metodo assume que a covari ancia do espa co de agrupamento
n ao importa ou que ele foi normalizado.
A Figura 1.23 mostra ` a esquerda uma imagem com pontos distintos
e ` a direita os 7 grupos encontrados na imagem.
1.6 Reconhecimento de Padr oes 35
Figura 1.22:
`
A esquerda a imagem de entrada, no centro esquerda acima
o padr ao centro esquerda abaixo a diferen ca quadr atica, no centro direita
acima a correla c ao e no centro direita abaixo o coeciente de correla c ao,
nalmente, ` a direita as regi oes encontradas na imagem.
36 Vis ao Computacional Usando OpenCV
Figura 1.23:
`
A esquerda uma imagem com pontos distintos e ` a direita
os 7 grupos encontrados na imagem.
1.6 Aprendizado de Maquinas
Em termos de aprendizado de m aquina ser ao apresentadas a tecnica
de Perceptrons de M ultiplas Camadas (MLP), que e um dos tipos de
Rede Neural Articial (RNA) e a tecnica de Boosting que e uma forma
de aprendizado que combina uma serie de reconhecedores fracose o
resultado e dado por um comitede especialistas.
Estas tecnicas ser ao aplicadas em um exemplo simples de reconheci-
mento de dgitos de placas de carro. Note que, n ao se pretende aqui apre-
sentar ou discutir quest oes relacionadas ao desempenho destas tecnicas
no exemplo em si, mas apenas exemplicar como a tecnica pode ser
utilizada.Uma introdu c ao destas duas tecnicas ser a feita, bem como o
metodo de tratamento das imagens para a extra c ao de caractersticas.
Duas tecnicas de an alise dos resultados, taxa de reconhecimento correto
e matriz de confus ao, tambem s ao apresentadas de forma introdut oria.
Porem o objetivo do experimento e apresentar o uso aplicado de algumas
tecnicas da biblioteca de aprendizado de m aquina do OpenCV.
1.6 Aprendizado de M aquinas 37
1.6.1 Perceptrons de M ultiplas Camadas (MLP)
As redes neurais de arquitetura MLP tipicamente s ao denidas atraves
da especica c ao do n umero de camadas, tipo de fun c ao de ativa c ao de
cada unidade e pesos de conex oes entre as diferentes unidades (n os)
que comp oem a arquitetura neural [12], [14]. A Figura 1.24 ilustra a
arquitetura de uma MLP com m ultiplas entradas e m ultiplas sadas. As
entradas e sadas podem ser valores anal ogicos e/ou digitais. A sada
da rede depende das fun c oes de transferencia de cada n o (neur onio,
representado na Figura por crculos) e tambem dos valores dos pesos
sin apticos (w
ij
), que ser ao ajustados pelo algoritmo de aprendizado, na
busca de um mapeamento Entrada Saida desejado.
Figura 1.24: Arquitetura de uma rede MLP.
O aprendizado no MLP e realizado pela apresenta c ao de exemplos
ou padr oes. O ajuste sin aptico tpico, em aprendizado supervisionado,
envolve 3 elementos distintos: vetores de entrada X, as sadas Y
rede
geradas pela rede em resposta a esses vetores de entrada, e o conheci-
mento dos valores de sada Y que se desejaria ver gerados pela rede. O
aprendizado ocorre, portanto, com o uso de um conjunto de pares de
entrada e sada (X; Y) que denem, atraves de exemplos, o sistema a
modelar. Na pr atica, o conjunto de pares e separado em treinamento
e teste. O aprendizado inicia-se com a apresenta c ao de X, do conjunto
de treinamento ` a entrada da rede, que se propaga ate a sada. Quando
a sada desejada n ao e igual ` a sada apresentada pela rede, ocorrem
ajustes nos pesos sin apticos. Esse ajuste se d a pela soma ou subtra c ao
38 Vis ao Computacional Usando OpenCV
de pequenas parcelas w aos pesos atuais w, visando melhorar o de-
sempenho da rede em gerar a sada esperada. Tal processo e repetido
v arias vezes, envolvendo v arias reapresenta c oes de cada caso (X; Y) do
conjunto de treinamento. Ao m desse processo iterativo e de apro-
xima c oes sucessivas, o conhecimento da rede neural passa a residir nos
pesos sin apticos.
O algoritmo de aprendizado usual para a rede MLP, ou seja, o algo-
ritmo de ajuste dos pesos da rede, e o Error Back-Propagation [12], [14].
Para efeito de ilustra c ao, a Figura 1.25 traz uma arquitetura de rede
MLP simples com tres camadas, uma de entrada (X = x1, x2, x3), uma
camada escondida (neur onios A e B), e um unico neur onio na camada
de sada (neur onio C).
Figura 1.25: Arquitetura MLP com vetor de entrada, pesos e sadas.
Ao se apresentar o padr ao X=x1, x2 e x3 na entrada, o c omputo da
propaga c ao ate a sada da rede ser a dado, para uma rede com n umero
generico de entradas (N
E
) e n umero generico de n os escondidos (N
0
),
pela equa c ao 1.31:
y
rede
(X) = (
N
0

j=1
v
j
(
N
E

i=1
w
ji
x
i
+b
0
)) (1.31)
Sendo a fun c ao de transferencia dos neur onios da rede, tangente
hiperb olica ou sigmoidal, v
j
os pesos sin apticos do neur onio de sada, pe-
sos esses que ponderam as sadas dos neur onios j da camada escondida,
1.6 Aprendizado de M aquinas 39
w
ji
os pesos sin apticos da camada escondida, b
0
o bias, N
0
o n umero de
neur onios na camada escondida e N
E
, o n umero de neur onios na camada
de entrada.
O erro quadr atico medio da rede, Eqm, e calculado com base na sada
da rede e na sada desejada, e serve como indicador de desempenho da
rede, na condu c ao do aprendizado, este erro e determinadao pela equa c ao
1.32:
Eqm =
1
M
(
M

=1
(y
rede
(X

) y

)
2
(1.32)
onde identica um dos M exemplos de treinamento X

.
O erro da rede deve ser diminuido durante o aprendizado, atraves de
adapta c oes no valor de todos os pesos da rede. A regra de atualiza c ao
de pesos e baseada no metodo do gradiente descendente, que dene re-
petidos passos no espa co de pesos, dados sempre na dire c ao contr aria ao
gradiente, visando assim obter a minimiza c ao do erro, dao pela express ao
1.41:
w
ji
=
Eqm
w
ji
(1.33)
Sendo o fator a taxa de aprendizado ou adapta c ao de pesos, observa-
se que se ela for muito alta, pode haver diculdades em localizar o ponto
de mnimo de Eqm, pois nesse caso, pode ocorrer oscila c ao na busca de
tal ponto de mnimo no espa co de pesos.
As etapas de adapta c ao de pesos, repetida com v arios exemplos de
treinamento de forma cclica visita v arias vezes cada exemplo, isto e
repetido ate que se obtenha um desempenho aceit avel da rede. O pesos
ajustados s ao denidas pela Regra Delta 1.34:
w
ji
(n +1) = w
ji
(n) +w
ji
(1.34)
O exemplo apresentado a seguir ilustra o uso das MLP em reconheci-
mento de padr oes. Neste exemplo a MLP ser a utilizada para reconhecer
o ultimo digito da placa de carros. Aqui n ao se discute o metodo para
identicar a placa e consequentemente extrair o dgito da mesma. Inte-
ressados em se aprofundar nos dois assuntos veja [6], [1], [5].
40 Vis ao Computacional Usando OpenCV
Para a forma c ao de uma base de imagens, v arios dgitos foram ma-
nualmente extrados de imagens de placas, formando um conjunto de
imagens entre 0s e 9s. Um total de 132 dgitos foram extrados e est ao
distribudos conforme o histograma da Figura 1.26.
Figura 1.26: Histograma da base de imagens.
Embora a extra c ao de dgitos tenha sido feita de maneira manual,
existem dois problemas que provavelmente ocorreriam mesmo que as
imagens fossem extradas de modo autom atico. Estes problemas devem
ser tratados antes de qualquer processo de reconhecimento.
O primeiro problema e a diferen ca na tonalidade de cor de cada ponto
(pixel) da imagem. Esta diferen ca pode causar baixas taxas de reconhe-
cimento, pois pode confundir o classicador, com a falsa impress ao de
estar tratando de imagens de natureza diferentes. Para que estes valores
sejam equalizados, pode-se aplicar normaliza c oes como, por exemplo, a
equalizac ao de histogramas ou ainda a usada neste experimento que e o
m aximo do desvio padr ao da imagem. Assim, a partir de uma opera c ao
linear, cada imagem i e normalizada para que o desvio padr ao seja igual
a 1, conforme a equa c ao 1.35:
1.6 Aprendizado de M aquinas 41

Img
i
=
Img
i
max(std
j
(Img
i
))
(1.35)
onde max e o valor m aximo do pixel e std e o desvio padr ao de
todos os pixels em cada coluna da imagem. Um exemplo do resultado
desta normaliza c ao e apresentado a seguir. Considere uma imagem de
dimens os 23 14, isto e, (23 linhas e 14 colunas) conforme indicado
abaixo:
Img
1(2314)
=

136 130 133 129


145 140 137 138
142 130 110 142
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
125 103 82 126

(1.36)
O desvio padr ao (std
j
) e um vetor calculado para cada coluna da
imagem (Img).
std
j
=

30 49 54 12

(1.37)
Assumindo que o std
j
m aximo para a imagem Img
1
seja 54, a ima-
gem normalizada resultante seria ent ao dada por:

Img
1(2314)
=

2.5 2.4 2.4 2.4


2.7 2.6 2.5 2.5
2.6 2.4 2 2.6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.3 1.9 1.5 2.3

(1.38)
O segundo problema com as imagens de dgitos de placa, j a com os pi-
xels normalizadas e a diferen ca entre o tamanho de cada uma delas. Este
problema implica diretamente no uso destas imagens pelo reconhecedor
de padr oes. Por isso, as imagens passar ao por uma nova normaliza c ao
para deix a-las com o mesmo tamanho. A normaliza c ao de tamanho ser a
feita da seguinte forma:
Img
inorm
= reshape(

Img
i
, l, c) (1.39)
42 Vis ao Computacional Usando OpenCV
onde l e o n umero da linhas e c e o n umero de colunas. A fun c ao
reshapeconsiste em eliminar o n umero de linhas ou colunas ate atingir
o valor de l e de c desejados. A redu c ao e feita calculando-se a media
entre as linhas e ou colunas reduzidas. Para os exemplos aqui mostrados
o redimensionamento provocar a uma normaliza c ao de forma que todas
as imagens quem com tamanho igual a 20 linhas e 10 colunas (2010).
A Figura 1.27 apresenta um exemplo completo de dgitos 9s extrados
de placas de carro e as consecutivas aplica c oes de normaliza c ao.
Figura 1.27: Processo de normaliza c ao das imagens.
O redimensionamento, em alguns casos, implica na redu c ao da ima-
gem, que e exatamente um dos objetivos da extra c ao de caractersticas.
Pela simplicidade do metodo, a imagem redimensionada pode ser consi-
derada como caractersticas da imagem e dessa maneira as imagens de
1.6 Aprendizado de M aquinas 43
dgitos ser ao representadas para os experimentos de classica c ao.
Para o problema de classica c ao, cada imagem de digito deve ser
transformada em um vetor, o qual ser a apresentado como entrada na
rede neural. A sada desejada ser a representada pelo correspondente
n umero que o digito pertence. Uma unica itera c ao do processo de trei-
namento da MLP para o digito 9 est a ilustrado na Figura 1.28
Figura 1.28: Transforma c ao da imagem de entrada para vetores e o
mapeamento entre entrada e sada da MLP (X:Y).
Para os exemplos a seguir, a transforma c ao das imagens em vetores
deve gerar uma base, onde nas primeiras colunas estar ao as sadas dese-
jadas (Y ) e as seguintes os valores dos pixels da imagem redimensionada
em forma de vetor (X). A ilustra c ao desta base est a na Tabela 1.6.1.
Tabela 1.1: Base de caractersticas na forma de Matriz, M, com 132
imagens e 200 valores de pontos, M[132x200].
1 2 3 200
Y x
1
x
2
x
3
x
200
1 0 0.82 0.79 0.75 0.69
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
132 9 0.99 0.94 0.83 0.92
Com a base formada, ela ser a aleatoriamente separada em:
Conjunto de treinamento: 80% de toda a base, ou seja, 105 vetores
de caractersticas usados para o treinamento do MLP.
44 Vis ao Computacional Usando OpenCV
Conjunto de teste: 40% da base, ou seja, 27 vetores de carac-
tersticas que ser ao usados para avaliar o desempenho do MLP na
classica c ao dos dgitos.
A congura c ao da MLP a ser usada e:
neur onios de entrada: 200;
camadas ocultas: duas com 5 neur onios cada;
fun c ao de transferencia: sigmoidal;
n umero m aximo de itera c oes: 180;
erro mnimo: 0.01;
taxa de apredizado: 0.01.
A apresenta c ao dos resultados de um sistema do tipo MLP pode ser
feita de duas formas. A primeira e vericando a taxa de acertos no
reconhecimento e a segunda e construindo a matriz de confus ao.
A taxa de acerto leva em considera c ao o n umero de reconhecimento
correto em rela c ao ao n umero de vetores de caractersticas do conjunto.
Esta taxa pode ser determinada pela f ormula 1.40:
Taxa de Acerto =
Num Total Acertos
Num Total Vetores Caractersticas
(1.40)
A medida de taxa de acerto foi usada para o conjunto de treinamento,
e o resultado foi 100%, e para o conjunto de teste, cujo resultado obtido
foi de 81.5%.
A matriz de confus ao e uma matriz construda em linhas com dgitos
de 0 a 9 e em colunas, tambem com dgitos de 0 a 9. O preenchimento
desta matriz e feito considerando em cada linha, o dgito que est a sendo
vericado e em cada coluna o n umero de reconhecimento correto/errado,
de forma que a diagonal principal represente o n umero de reconhecimen-
tos corretos. Por outro lado, as colunas, alem de representarem o n umero
de reconhecimento incorreto, elas permitem vericar ainda a confus ao
no processo de reconhecimento.
1.6 Aprendizado de M aquinas 45
A soma da diagonal principal da matriz de confus ao e o n umero total
de reconhecimento correto. O total de cada linha indica o n umero de
dgitos para cada classe.
A matriz de confus ao para o classicador MLP e apresentado na
Figura 1.29, onde a soma da diagonal principal em rela c ao ` a soma do
total de ocorrencias de cada dgito resulta no total de reconhecimento
correto do classicador, 81, 5%.
Figura 1.29: Matriz de confus ao para o MLP considerando apenas a
amostra de teste.
1.6.2 Boosting
O processo de aprendizado com Boosting pode ser visto como um pro-
cesso de aprendizado por refor co, e, como no processo de MLP, pode
ser visto como um mapeamento Entrada Saida. A ideia b asica e
treinar um comite de classicadores fracospara resolver uma tarefa
computacionalmente complexa. Essa forma de classica c ao e tambem
conhecida como M aquina de Comite, e os resultados individuais de cada
especialista s ao combinados para se conseguir um melhor desempenho
46 Vis ao Computacional Usando OpenCV
de generaliza c ao. Este processo e conhecido tambem como princpio de
dividir e conquistar[12].
Na m aquina de comite, o papel do classicador fraco e aumentar
a chance de resposta correta e por isso, em geral, o classicador pode
ser muito simples e computacionalmente barato. A combina c ao de um
conjunto de classicadores fracos, inteligentemente combinados, produz
respostas, teoricamente, melhores que as de classicadores fortes, como
o MLP.

Arvores de decis ao s ao os classicadores fracos mais comuns usados


no aprendizado por refor co. Em geral, para este metodo de classica c ao,
uma arvore de decis ao simples, com um unico n o por ramo e suci-
ente. Outros classicadores ingenuos podem ser usados desta forma ,
por exemplo, um MLP com um n umero pequeno de intera c oes e com
um valor alto de erro e outra abordagem para se considerar como um
classicador fraco [16].
Refor co e uma das maneiras de implementar a M aquina de Comite,
cujo objetivo e construir um modelo de aprendizado que seja indepen-
dente da distribui c ao do conjunto de padr oes de treinamento. O pro-
blema neste metodo e a necessidade de um elevado repert orio de amos-
tras (padr oes) no conjunto de treinamento [12], [7].
Esse problema pode ser superado usando-se o algoritmo chamado
AdaBoost (refor co adaptativo) [12]; este metodo de refor co tem a capa-
cidade de operar com uma quantidade de padr oes do conjunto de treina-
mento reduzido, pois permite a sua reutiliza c ao. O AdaBoost constr oi
uma composi c ao de especialistas com um comite de treinamento sequen-
cial.
O princpio da teoria do AdaBoost consiste em um sistema que pode
se ajustar adaptativamente aos erros das hip oteses de classica c ao re-
tornadas por um conjunto de especialistas. A hip otese nal ser a dada
combinando a hip otese de cada especialista. A Figura 1.30 ilustra o
processo deste aprendizado, estando os especialistas representados pelos
quadrados.
A proposta do AdaBoost e melhorar o desempenho de qualquer al-
goritmo de aprendizado, atraves de um processo interativo. Em cada
intera c ao deste processo, um novo especialista e adicionado ao comite.
O ndice de intera c ao e nomeado como ne, o qual representa o n umero
1.6 Aprendizado de M aquinas 47
Figura 1.30: M aquina de Comite com o aprendizado por refor co Ada-
Boost.
48 Vis ao Computacional Usando OpenCV
de especialistas incorporados ao comite e o ndice de itera c ao m aximo,
e nomeado como NTE, que representa o n umero total de especialistas
incorporado ao comite.
O algoritmo e baseado na deni c ao de um conjunto adaptativo de pe-
sos probabilsticos associados com os elementos do conjunto de padr oes
de treinamento. O particular peso probabilstico distribudo sobre o
conjunto de padr oes de treinamento em cada itera c ao ne e chamado
D
ne
(i), i = 1, 2, .., N., sendo N o n umero total do conjunto.
Inicialmente, para ne = 1, todos os pesos probabilsticos s ao iguais de
mesmos valores. Os pesos s ao atualizados em cada itera c ao ne com base
no sucesso ou falha da hip otese h
ne
1 determinada pelo especialista.
Quando o especialista recebe um conjunto de padr oes de treinamento
(X) pesos probabilsticos D
ne
, este produz uma hip otese h
ne
. A amostra
do conjunto de padr oes de treinamento classicada erroneamente por h
ne
ter a o seu peso probabilstico aumentado enquanto que a amostra clas-
sicada corretamente ter a o seu peso probabilstico diminudo quando
considerado durante o treinamento do novo especialista. Na pr oxima
itera c ao, o especialista e for cado a focar nas amostras mais difceis
(classica c oes incorretas) do conjunto de padr oes de treinamento.
A qualidade do resultado da hip otese h
ne
e calculada pelo seu erro
1.41:
=
N

i=1
D
ne
(i)|h
ne
((x
i
)) y(i)| (1.41)
Onde N e a cardinalidade do conjunto de treinamento.
Uma vez recebida a hip otese h
ne
do especialista e necess ario calcu-
lar um par ametro
ne
para mensurar a import ancia com que h
ne
foi
determinada.
Esse processo e repetido ate que o erro de cada itera c ao seja maior
que o erro m aximo ou enquanto o n umero de comite m aximo n ao seja
atingido. A hip otese nal H(x) ser a dada por 1.42:
H(x) = sign[(
NTE

ne=1

ne
h
ne
(x))] (1.42)
Como deve-se observar na proposta do aprendizado por refor co, a
1.6 Aprendizado de M aquinas 49
classica c ao por Boosting se aplica ` a apenas duas classes. Por essa
raz ao, houve a necessidade de adaptar o metodo para classicar mais de
duas classes, 10 (0 a 9). A solu c ao e a compara c ao de uma classe com
todas as outras e decidir por aquela de melhor resultado.
O n umero de especialistas m aximo denido (NTE) e um par ametro
que deve ser previamente denido. Nos experimento a seguir usou-se
100 especialistas ( arvore de decis ao) e os resultados est ao abaixo apre-
sentados.
Para o conjunto de treinamento a taxa de acerto foi de 100% e para o
conjunto de teste, aquele que n ao faz parte do treinamento foi de 85.2%.
A Figura 1.31 mostra a matriz de confus ao para o boosting e a media
da diagonal principal foi de 80% de reconhecimento correto.
Figura 1.31: Matriz de confus ao para o Boosting considerando apenas a
amostra de teste.
Comparando os resultados apresentados pelo MLP e pelo Boosting,
em termos de taxa de acerto e media da diagonal principal da matriz
de confus ao, temos, na Tabela 1.6.2, que o Boosting, como esperado,
apresentou os melhores resultados.
50 Vis ao Computacional Usando OpenCV
Tabela 1.2: Matriz de compara c ao entre os ndices do MLP e do Boos-
ting.
Taxa de Acerto Matriz de Confus ao
MLP 71.9% 81.5%
Boost 80.0% 85.2%

E evidente que existem muitas vari aveis que podem ser trabalhadas
para melhorar os resultados, como o n umero de imagens por dgito, a
varia c ao no n umero de neur onios na camada de sada do MLP, n umero
de itera c oes da MLP ou n umero de especialistas do Boosting. Outros
desaos podem ser considerados na forma de representar as imagens
pelos vetores de caractersticas. Aqui nenhuma tecnica de ltragem ou
segmenta c ao foi considerada.
1.7 Rastreamento
O processo de rastreamento e um processo de reconhecer um padr ao
em uma sequencia de imagens. O rastreamento poderia ser feito desta
forma, porem, a busca em cada imagem de uma sequencia sem o uso de
qualquer conhecimento especco e relativamente lenta. Os processos de
rastreamento atrelam um conhecimento sobre o movimento do objeto
que est a sendo rastreado para minimizar a busca entre as imagens em
uma sequencia.
Os processos de rastreamento podem ser aplicados em diversas areas,
indo de sistemas de seguran ca/vigil ancia ate o uso em sistemas de in-
terface humano-computador. Existem metodos para se prever a posi c ao
do objeto frame a frame, indo de ltros Kalman [8], ate processos com
ltros de partculas [9]. No openCV as tecnicas de rastreamento incluem
dois componentes principais: identica c ao de objetos e modelagem da
trajet oria. Existem algumas fun c oes que s ao utilizadas para o rastrea-
mento, baseadas nos algoritmos de meanshift e camshift.
1.7 Rastreamento 51
1.7.1 Corner Finding
Este tipo de tecnica pressup oe a busca por um mesmo objeto de interesse
em sequencias de frames num stream de vdeo. A ideia b asica e buscar
pontos diferenciados em uma imagem, passveis de serem novamente
encontrados em frames subsequentes.
O OpenCV possui uma fun c ao de reconhecimento de objetos que im-
plementa uma tecnica (descrita em [3]) baseada no c alculo de derivadas
de segunda ordem usando operadores de Sobel e que s ao usadas para o
c alculo dos eigenvalues necess arios.
A fun c ao cvGoodFeaturesToTrack retorna um array de localiza c oes
de pixels onde se espera encontrar outra imagem similar. Alem do re-
conhecimento de objetos em sequencia, esta tecnica pode ser aplicada
para relacionar imagens capturadas sob diferentes pontos de vista, entre
outras aplica c oes.
1.7.2 Subpixel Corners
A tecnica anterior retorna coordenadas inteiras, o que e suciente para
reconhecimento de objetos, mas pode n ao ser para a extra c ao de medidas
geometricas que requeiram maior precis ao. As tecnicas de localiza c ao
de subpixels s ao utilizadas para que se obtenha com maior precis ao a
localiza c ao de detalhes de uma imagem. Entre as aplica c oes est ao o
rastreamento em reconstru c oes tri-dimensionais, calibragem de c amera,
reconstru c ao de imagens repartidas, localiza c ao precisa de elementos em
uma imagem de satelite, entre outras.
O OpenCV implementa a fun c ao cvFindCornerSubpix que tem
como um dos argumentos de entrada as localiza c oes inteiras dos pi-
xels obtidas com a fun c ao cvGoodFeaturesToTrack. Alem disso, a
busca por subpixels e iterativa e o criterio de parada e estabelecido pelo
usu ario atraves de uma das fun c oes do OpenCV.
1.7.3 Optical Flow
Este tipo de tecnica possibilita a identica c ao de movimento entre se-
quencias de frames sem que se conhe ca a priori o conte udo destes. Ti-
picamente, o movimento em si indica que algo de interesse est a aconte-
cendo.
52 Vis ao Computacional Usando OpenCV
O OpenCV possui fun c oes que implementam tecnicas de detec c ao de
movimento esparsas e densas. Algoritmos de natureza esparsa conside-
ram algum conhecimento previo sobre os pontos que se deseja rastrear,
como por exemplo os corners descritos nas se c oes anteriores. Os al-
goritmos densos, por sua vez, associam um vetor de velocidade ou de
deslocamento a cada pixel na imagem, sendo, portanto desnecess ario o
conhecimento previo de pontos especcos da imagem. Para a maioria
das aplica c oes pr aticas, entretanto, as tecnicas densas possuem um custo
de processamento muito alto, sendo preferveis, portanto, as tecnicas es-
parsas. A Tabela 1.7.3 resume as fun c oes de detec c ao de movimento
presentes no OpenCV.
Tabela 1.3: Algoritmos de Optical Flow do OpenCV.
Algoritmo Tipo Comando
Lucas-Kanade Esparso cvCalcOpticalFlowLK
Lucas-Kanade Piramidal Esparso cvCalcOpticalFlowPyrLK
Horn-Schunk Denso cvCalcOpticalFLowHS
Block-Matching Denso cvCalcOpticalFlowBM
1.7.4 Mean-Shift e Camshift
Camshift (Continuously Adaptive Mean-SHIFT) e um algoritmo desen-
volvido para o rastreamento de cor, possibilitando tambem o rastrea-
mento de faces.

E baseado numa tecnica estatstica onde se busca o
pico entre distribui c oes de probabilidade em gradientes de densidade
e chamada de media por deslocamento(meanshift). Foi adaptada no
Camshift para tratar a mudan ca din amica das distribui c oes de probabili-
dade das cores numa sequencia de vdeo. Pode ser usada no rastreamento
de objetos e no rastreamento de faces, como descrito a seguir.
Para cada frame, a imagem (raw) e convertida para outra de dis-
tribui c ao de probabilidade de cor atraves de um modelo de histograma
da cor da pele. O centro e o tamanho da face que se quer rastrear s ao
encontrados atraves do camShift operando na imagem de probabilidade
de cores. O tamanho e a localiza c ao corrente da face s ao informados
e usados para denir o tamanho e a localiza c ao da janela de busca da
1.7 Rastreamento 53
pr oxima imagem de vdeo.
A fun c ao cvCamShift chama o algoritmo CamShift para buscar o cen-
tro, o tamanho e a orienta c ao do objeto sendo rastreado. A Figura 1.32
mostra o programa camshiftdemo.c em funcionamento. Este programa
acompanha o pacote OpenCV, assim como v arias outras demonstra c oes.
Figura 1.32: camshiftdemo.c em funcionamento (histograma, janela de
op c oes e imagem capturada pela c amera e sendo rastreada, o que e
demonstrado pela elipse ao redor da face).
1.7.5 Estimadores
Algoritmos deste tipo s ao capazes de estimar, por exemplo, a localiza c ao
de uma pessoa ou objeto em movimento numa sequencia de vdeo. Esta
tarefa e dividida, basicamente, em duas fases: predi c ao, baseada num
conhecimento previo de dados da imagem e corre c ao, que usa novas
medidas para apurar a predi c ao realizada anteriormente.
A tecnica mais conhecida para isto e o ltro de Kalman, implemen-
tado no OpenCV atraves de quatro fun c oes, a saber:
cvCreateKalman e cvReleaseKalman: servem para criar e des-
truir uma estrutura (struct) com os dados a serem processados
pelo algoritmo.
cvKalmanPredict: calcula as estimativas para o pr oximo passo
cvKalmanCorrect: corrige as medidas estimadas
54 Vis ao Computacional Usando OpenCV
Alem desta tecnica, o OpenCV traz a implementa c ao de uma alter-
nativa, o algoritmo de condensa c ao. Esta e um tecnica mais sosticada
que se baseia no c alculo de m ultiplas hip oteses para as estimativas a
serem realizadas, ao contr ario do ltro de Kalman. Maiores detalhes
podem ser encontrados em [3].
1.8 Discussao Geral
Neste tutorial foram mostrados conceitos b asicos de processamento de
imagens e de vis ao computacional. Os exemplos descritos foram im-
plementados utilizando a biblioteca openCV desenvolvida pela Intel. O
openCV facilita a implementa c ao de operadores simples ate o desen-
volvimento de sistemas mais complexos na area de processamento de
imagens e vis ao computacional.
1.8 Bibliografia 55
Bibliograa
[1] Al-Hmouz, R., and Challa, S. License plate localization based
on a probabilistic model. Journal Machine Vision and Applications
30(10) (2008), 138164.
[2] AZEVEDO, E., and CONCI, A. Computa c ao Gr aca. Elsevier,
2007.
[3] BRADSKY, G., and A., K. Learning OpenCV. OReilly, 2008.
[4] Canny, J. A computational approach for edge detection. IEEE
Trans. Pattern Analysis and Machine Intelligence 8(6) (1986), 679
698.
[5] D Amore, L., and Marengoni, M. Automatic license plate
detection in complex conditions of acquisition. Proceedings of VI-
SAPP 2010, Angers, Fran ca (2010), to appear.
[6] Deb, K., and Kang-Hyun, K.-H. A vehicle license plate detec-
tion method for intelligent transportation system applications. In-
ternational Journal of Cybernetics and Systems 40(8) (2009), 689
705.
[7] DUDA, R., HART, P., and STORK, D. Pattern Classication
and Scene Analysis. Wiley, 2000.
[8] E., K. R. A new approach to linear ltering and prediction pro-
blems. Transactions of the ASME: Journal of Basic Engineering
82 (1960), 3545.
[9] e Blake A., I. M. Condensation-conditional density propaga-
tion for visual tracking. International Journal in Computer Vision,
IJCV 29(1) (1998), 528.
[10] GONZALEZ, R., and WOODS, R. Digital Image Processing.
Pearson-Prentice-Hall, 2008.
[11] GONZALEZ, R. C., WOODS, R., and EDDINS, S. L. Digital
Image Processing using MATLAB. Pearson, 2006.
56 Vis ao Computacional Usando OpenCV
[12] HAYKIN, S. Neural networks: A comprehensive foundation.
Prentice-Hall, 1999.
[13] INTEL. Open source computer vision library - reference manual.
INTEL Corporation (2001).
[14] Jain, A., and Mohiuddin, K. Articial neural networks: A tu-
torial. IEEE Computer 29(3) (1996), 3144.
[15] Marr, D., and Hildreth, E. Theory of edge detection. Procee-
dings of The Royal Society of London B207 (1980), 187217.
[16] Silva, L., Del-Moral-Hernandez, E., and Rangayyan, R.
Classication of breast masses using a committee machine of arti-
cial neural networks. Journal of Electronic Imaging 17(1) (2008),
1317.
[17] Sourceforge. Opencv website.
http://sourceforge.net/projects/opencvlibrary (acessado em
01/06/2010).
[18] Velho, L. Material de aula do curso de
image processing and computer graphics-impa.
http://www.visgraf.impa.br/Courses/ipcg.html (acessado em
01/06/2010).