Acompanhamento de Cenas com
Calibração Automática de Câmeras
por
Flávio Szenberg
Orientadores:
Marcelo Gattass
Paulo Cezar Pinto Carvalho
Departamento de Informática, PUC-Rio
19 de dezembro de 2001
Juiz Virtual
pontos de objetos
pontos de referência
Problema
“Dada uma seqüência de imagens que
apresentam a visualização, total ou parcial,
de um determinado modelo, acompanhar
este modelo, calibrando as câmeras para
cada imagem de forma automática, a fim de
sobrepor objetos virtuais.”
Requisitos:
• Menor intervenção possível do usuário
• Processamento em tempo real
Modelos
 Os modelos utilizados na tese:
F1
F5
F7
F2
F4
F6
F3
F8
Modelo de um campo de futebol
F9
F9
F5
F1
F2
Modelo sem simetria
F8
F6
F7
F3
F4
Algoritmo básico
Imagem
A1
Filtragem para realce de linhas
A2
Extração de segmentos de retas longos
A3
Reconhecimento dos segmentos
A4 Cálculo da transformação projetiva planar
A5
Calibração da câmera
Filtragem para realce de linhas
 O filtro Laplaciano da Gaussiana (LoG) é aplicado à
imagem, baseado na luminância.
filtro gaussiano
1 2 1
1 

2
4
2

16 
1 2 1
filtro laplaciano
 0 1 0 
1 4 1


 0 1 0 
Filtragem para realce de linhas
 Problemas com linhas duplas
Filtragem para realce de linhas
 A transformação negativa é aplicada entre o cálculo da
luminância e o filtro LoG.
Filtragem para realce de linhas
 Resultado de uma segmentação (threshold) feita na
imagem filtrada.
(em negativo para visualizar melhor)
Extração de segmentos de retas longos
 O objetivo é localizar segmentos de retas longos
candidatos a serem linhas da imagem do modelo.
O procedimento é dividido em dois passos:
1. Eliminação de pontos que não estão sobre
nenhum segmento de reta.
2. Determinação de segmentos de retas.
Eliminando pontos que não estão sobre
um segmento de reta
 A imagem é dividida, por uma grade regular, em células retangulares.
Eliminando pontos que não estão sobre
um segmento de reta
 Para cada célula, os autovalores 1 e 2 (1  2) da matriz
de covariância, dada abaixo, são calculados.
n

2
ui  u 


1
 n i 1
n

ui  u vi  v 

 i 1

ui  u vi  v 

i 1

n
2



v

v

i

i 1
n
 Se 2 = 0 ou 1/ 2 > M (dado) então
o autovetor de 1 é a direção predominante
senão
a célula não tem uma direção predominante

1

2
u, v 
Eliminando pontos que não estão sobre
um segmento de reta
 Podemos atribuir pesos i aos pontos (resultado do LoG).
n

2


u

u
i
1 
 n i 1
n

ui  u vi  v 

 i 1


n

2



u

u
i
i
1  
i 1

n
n
  u  u v  v 

i
i
i

i 

 i 1
i 1




u

u
v

v
 i
i

n
i 1
n
2


v

v
 i
i 1










u

u
v

v
 i i
i

n
i 1
  v  v  
n
i 1
2
i
i



Eliminando pontos que não estão sobre
um segmento de reta
Células com pontos formando segmentos de retas:
Determinando segmentos de reta
 As células são percorridas de modo que as linhas são
processadas de baixo para cima e as células em cada
coluna são processadas da esquerda para direita. Um valor
é dado para cada célula:
 Se não existe uma direção predominate na célula, o valor é zero.
 Caso contrário, verifica-se os três vizinhos abaixo e o vizinho à
esquerda da célula corrente. Se algum deles tem uma direção
predominante similar ao da célula corrente, quando unidos, então a
célula corrente recebe o valor da célula que tem a direção mais
similar; senão, um novo valor é usado para a célula corrente.
Determinando segmentos de reta
 São formados grupos com células de mesmo valor,
representados na figura abaixo por cores distintas.

Extração de segmentos de reta
Cada grupo fornece um segmento de reta.
 A reta de equação v=au+b é encontrada por método de mínimos
quadrados:

2

u
i i
 a  
i 1


n
b 
   u
i i
 
i 1
n

 iui 

i 1

n
i 


i 1
n
1
n

 iui vi 
 i1n

 v 
i i
 

i 1
 O segmento é obtido limitando a reta pela caixa envoltória dos
pontos usados.
v
u
Extração de segmentos de reta
Os segmentos de reta que estão sobre a mesma reta suporte são
unidos, formando segmentos longos, usando mínimos quadrados.
e
a
b
c
f
d
No final do processo, tem-se um conjunto de segmentos de reta.
f7

f4
f5
f3
f2
f6
f1
Extração de segmentos de reta
Sobrepondo as linhas extraída na imagem, temos o seguinte
resultado:
Reconhecimento dos segmentos
 A partir do conjunto de segmentos, as linhas do modelo são
detectadas e o modelo reconhecido [Grimson90].
 Método baseado na Transformada de Hough.
 Método de reconhecimento baseado em modelo.
• Conjunto de restrições
Reconhecimento dos segmentos
Método de Reconhecimento baseado em Modelo
f7
Modelo
F1
F5
F7
F6
F2
f4
Árvore de Interpretação
F4
f5
f3
f6
f2
f1
F3
Visualização
f 1:
f 2:
F1
F1 F2 F3 F4 F5 F6 F7 
F2
F3
F1 F2 F3 F4 F5 F6 F7  F1 F2 F3 F4 F5 F6 F7 
F4
F5
F1 F2 F3 F4 F5 F6 F7  F1 F2 F3 F4 F5 F6 F7 
F6
F7
F1 F2 F3 F4 F5 F6 F7  F1 F2 F3 F4 F5 F6 F7 

F1 F2 F3 F4 F5 F6 F7 
Reconhecimento dos segmentos
Discardando nós
Visualização
Modelo
F1
F5
F6
F2
f4
Árvore de Interpretação
F7
f2
F4
f1
F3
f 1:
f 2:
f3
f6
F1
F1 F2 F3 F4 F5 F6 F7 
f7
f5
F2
F3
F1 F2 F3 F4 F5 F6 F7  F1 F2 F3 F4 F5 F6 F7 
F4
F5
F1 F2 F3 F4 F5 F6 F7  F1 F2 F3 F4 F5 F6 F7 
F6
F7
F1 F2 F3 F4 F5 F6 F7  F1 F2 F3 F4 F5 F6 F7 

F1 F2 F3 F4 F5 F6 F7 
O nó {f1: F1, f2:F6 , f3:F3} é discardado por que viola a restrição:
f 3:
A linha representante de F6 deve estar entres as linhas que
representam F1 e F3, na visualização.
F1 F2 F3 F4 F5 F6 F7 
Reconhecimento dos segmentos
Problema relacionado com a perspectiva
( su 2  su1 )(tu 2  tu1 )   2 ( sv 2  sv1 )(tv 2  tv1 )
( su 2  su 1 )   ( sv 2  sv1 )
2
2
2
(tu 2  tu 1 )   (tv 2  tv1 )
 1  2
  1    0.8
2
2
2

Reconhecimento dos segmentos
Problema relacionado com a perspectiva
f3
f2
f1
Reconhecimento dos segmentos
Escolhendo a melhor solução
f7
Modelo
F1
F5
F2
F7
F6
f4
F4
f5
f3
f6
f2
f1
F3
Visualização
• Em geral, existem diversas interpretações possíveis;
• Escolhemos a interpretação onde a soma dos
comprimentos dos segmentos representativos é máxima.
f1 : F4
f 2 : F3
f3 : 
f4 : 
f5 : F6
f6 : F7
f7 : F1
f1 : F4
f2 : 
f3 : 
f4 : F3
f5 : F6
f6 : F7
f7 : F1
Vencedor
Reconhecimento dos segmentos
f7
f5
f4
f3
f6
f2
f1
Visualização
Resultado final
Modelo
F1
F5
F7
F6
F2
F4
F3
f 1 : F4
f 2 : F3
f3 : 
f4 : 
f 5 : F6
f6 : F7
f 7 : F1
f6 : F5
f 7 : F1
ou
Modelo
F1
F5
F2
F7
F6
F4
F3
f1 : F2
f2 : F3
f3 : 
f4 : 
f 5 : F6
Cálculo da transformação projetiva planar
 Uma transformação projetiva planar H (homografia) correspondente
às linhas reconhecidas é encontrada (usando pontos de interseção e
pontos de fuga como pontos de referência).
pontos de fuga
H

pontos de interseção
Modelo reconstruído
Calibração da câmera
Modelo de Câmera - “pinhole”
r3
Plano da imagem
projetada
P
Z
v~
r2
f
C
y
z
~
p
x
o
u~
p
Y
imagem
O
X
r1
v
u
p = (u, v)
us  fr1  u0 r3
vs    fr  v r
   2 03
 s   r3
 x
ft x  u0t z   
y


ft y  v0t z 
z
  
tz
1 
P = (x, y, z)
Calibração da câmera
 A câmera é calibrada usando método de Tsai para a
reconstrução de elementos que não estão no plano do modelo.
 Erros de sobreposição
Algoritmo estendido
Imagem
A1
Filtragem para realce de linhas
A2
Extração de segmentos de retas longos
A3
Reconhecimento dos segmentos
B1 Cálculo da transformação projetiva planar preliminar
B2
Reconstrução da visualização do modelo
B3
Reajuste das Linhas
A4
Cálculo da transformação projetiva planar
A5
Calibração da câmera
Reajuste das linhas
 São usadas faixas de tolerância para descartar pontos distantes.
tolerância para reajuste das linhas reconstruídas
Reajuste das linhas
linha
reconstruída
pontos da
imagem
faixa de
tolerância
nova linha
localizada
A nova linha
localizada é obtida
pelo método dos
mínimos quadrados
Reajuste das linhas
Resultado do reajuste das linhas:
Cálculo da transformação projetiva planar
 Depois do reajuste das linhas do modelo na visualização,
uma nova transformação é encontrada e uma nova
reconstrução pode ser obtida.
Calibração da câmera
 A câmera é calibrada usando o método de Tsai, com erro
de sobreposição aceitável.
Trabalhando com uma seqüência
• Para a primeira imagem,
aplicamos o algoritmo
proposto por inteiro.
Próxima imagem da seqüência
A1
Filtragem para realce de linhas
B3
Reajuste das Linhas
• Para otimizar o processo, da
segunda imagem em diante,
tiramos proveito do resultado
da imagem anterior.
A4 Cálculo da transformação projetiva planar
A5
Calibração da câmera
• A transformação projetiva
planar final da imagem
anterior é usada como a
transformação preliminar para
a imagem corrente.
Reajuste dos segmentos


pontos da cena n
novo ajuste
posição do segmento na cena n-2
posição do segmento na cena n-1

estimativa de posição do segmento para cena n

Estimativa de posição do segmento na cena n dada suas posições nas cena n-1 e n-2.





Faixa de tolerância sem estimativa



Faixa de tolerância com estimativa
Algoritmo proposto
Primeira imagem da seqüência
Filtragem para realce de linhas
Reajuste dos segmentos
Extração de segmentos de retas
longos
Cálculo da transformação projetiva
planar
Reconhecimento dos segmentos
Cálculo da transformação projetiva
planar preliminar
Reconstrução da visualização do
modelo
Próxima imagem da
seqüência
Filtragem para realce de
linhas
Calibração da câmera
Heurística para determinar o limiar de
corte usado na segmentação
 Procura um patamar com valor máximo no gráfico que informa
o número de segmentos extraídos para cada valor do limiar de
corte.
9
Segmentos extraídos
8
7
6
5
4
3
2
1
0
6
7
8
9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
Limiar
Resultados
Seqüência real
Seqüência artificial
Resultados
Resultados
Algoritmo inteiro
Diferença
Via acompanhamento
Resultados
Protótipo para testar o algoritmo usando uma câmera 8mm
Resultado do algoritmo usando a câmera posicionada conforme a imagem acima:
Resultados
webcam
Sem oclusão
Com oclusão
Resultados
Outro modelo
Resultados
 Onde o algoritmo falha
Falta de nitidez
Sombra parcial
Resultados
 A seqüência real de teste tem 67 imagens
 Computador: Pentium III 600MHz
Tempo de processamento: 1140 milisegundos
 Computador: Pentium 4 1.7GHz
Tempo de processamento: 500 milisegundos
(<< 2234 milisegundos necessários para processamento em tempo real – 30 fps)
Resultados (precisão)
Pontos do Campo
Coordenadas
Corretas
Coordenadas
Reconstruídas
Erro
x
y
z
u
v
u
v
105,0
68,00
0,00
81,707
216,584
81,731
215,972
0,612
88,5
13,84
0,00
230,117
78,133
228,747
77,525
1,499
88,5
54,16
0,00
1,236
183,463
0,424
183,197
0,854
99,5
24,84
0,00
259,039 134,206
258,566
133,815
0,614
99,5
43,16
0,00
146,690 174,826
146,067
174,484
0,711
105,0
30,34
0,00
269,817 155,102
269,629
154,697
0,446
105,0
30,34
2,44
270,921 181,066
270,215
180,863
0,735
105,0
37,66
2,44
224,101 194,645
223,291
194,407
0,845
105,0
37,66
0,00
223,405 170,271
223,082
169,876
0,510
Erro Médio
0,696
Comparação entre as coordenadas corretas e reconstruídas para a primeira cena.
Resultados (precisão)
Pontos do Campo
Coordenadas
Corretas
Coordenadas
Reconstruídas
Erro
x
y
z
u
v
u
v
105,0
68,00
0,00
97,167
205,940
96,791
205,585
0,517
88,5
13,84
0,00
243,883
66,434
243,549
66,022
0,530
88,5
54,16
0,00
16,101
173,174
15,655
172,623
0,709
99,5
24,84
0,00
273,344 124,029
273,125
123,715
0,382
99,5
43,16
0,00
160,672 164,798
160,366
164,421
0,486
105,0
30,34
0,00
284,160 145,173
283,992
144,914
0,309
105,0
30,34
2,44
285,241 171,290
284,886
171,090
0,407
105,0
37,66
2,44
238,127 184,768
237,744
184,538
0,447
105,0
37,66
0,00
237,462 160,349
237,252
160,063
0,355
Erro Médio
0,452
Comparação entre as coordenadas corretas e reconstruídas para uma outra cena.
Conclusões
• A estratégia de dividir a imagem em células resolve bem o
problema da extração de segmentos de retas quando a
imagem contém regiões com características diversas.
• Uma boa maneira para identificar linhas do modelo na
imagem é a utilização do método baseado na árvore de
interpretações. Um conjunto de apenas 5 restrições é
suficiente.
• O reajuste das linhas utilizando uma faixa de tolerância e
operando com a imagem filtrada e segmentada apresentou
bons resultados para a nova localização dos segmentos na
seqüência de quadros. Uma estimativa de localização de
segmentos baseada em quadros passados é importante,
podendo conduzir a resultados melhores.
Conclusões
• A heurística apresentada para determinar um valor de limiar
utilizado no método de segmentação apresentou na prática
resultados satisfatórios.
• O critério que suaviza a restrição de paralelismo
( su 2  su1 )(tu 2  tu1 )   2 ( sv 2  sv1 )(tv 2  tv1 )
( su 2  su 1 )   ( sv 2  sv1 )
2
2
2
(tu 2  tu 1 )   (tv 2  tv1 )
2
2
2
mostrou-se eficiente quando existe uma distorção
perspectiva na imagem.

Conclusões
• O algoritmo proposto gerou bons resultados mesmo quando
aplicado às imagens com ruídos capturadas de uma
transmissão de TV.
• O algoritmo pode ser usado em computadores pessoais
(nenhum hardware especializado é necessário).
• O tempo de processamento é bem abaixo do necessário para
processamento em tempo real. O tempo extra pode ser
usado, por exemplo, para desenhar anúncios ou
propagandas.
Trabalhos futuros
• Pesquisar outros filtros para realce de linhas e métodos de
segmentação. Obter métodos para determinar o valor do
limiar usado na segmentação.
• Utilizar de forma mais eficiente os valores dos pontos da
imagem resultante do filtro LoG, através de funções de
transferência.
• Critério de paralelismo: determinar valores para  e .
• Desenvolver outras técnicas de coletas de pontos para o
reajuste das linhas.
Trabalhos futuros
• Investigar métodos para suavizar a seqüência de câmeras
através da aplicação do filtro de Kalman.
• Desenvolver técnicas para acompanhar outros objetos que
se movem sobre o modelo, tais como bola e jogadores
sobre as linhas do gramado.
• Desenhar objetos no campo atrás dos jogadores, dando a
impressão de que os jogadores estão andando sobre eles.
Trabalhos futuros
Chroma Key
Download

apres_tese - PUC-Rio