Anda di halaman 1dari 8

FILIPE AZIZ E ARTHUR COSTA: VISÃO ESTÉREO – OCTOBER 15, 2018 1

000
001
002
Projeto Demonstrativo 3
003 Visão Estéreo
004
005
Filipe Aziz Batista Departamento de Ciência da
006
filipe.aziz@gmail.com Comptutação
007
Matrícula: Universidade de Brasília
008 Campus Darcy Ribeiro, Asa Norte
16/0080118
009 Brasília-DF, CEP 70910-900, Brazil,
010 Arthur Reichert Costa
011 arreico@gmail.com
012 Matrícula:
013 16/0024277
014
015 1
016
017 Abstract
018
A visão estéreo é um modelo suficiente para se obter algumas informações extras
019
a respeito do mundo, estimando profundidades. Computacionalmente, tem sido objeto
020
de estudo e é um tópico em alta na comunidade, tendo diversas aplicações e métodos
021 consolidados. No presente projeto exploramos algumas dessas ferramentas e técnicas do
022 meio, tais como geração de mapas de disparidade/profundidade, retificação de imagens,
023 determinação de pontos equivalentes, estimação de dimensões e comprimentos e técnicas
024 para lidar com erros e desafios em cada um desses processos. Os tópicos são explorados
025 através da implementação de uma aplicação que satisfaz um conjunto de requisitos rela-
026
cionados aos temas.
027
028
029
1 Introdução
030 Visão estéreo, como conceito biológico, é o efeito realizado pelo cérebro ao associar as duas
031 imagens vistas pelos olhos. Essas imagens tem diferenças de translação e são aproximada-
032 mente paralelas se o objeto visualizado tende ao infinito. Caso o objeto esteja bem próximo,
033 as imagens visualizadas apresentam uma certa rotação. Apesar de as imagens não serem
034 iguais, o cérebro é capaz de processar as informações e interpretar as imagens como uma
035 imagem e gerar noção de profundidade, noção de três dimensões.
036 A visão computacional tenta aproximar o efeito que o cérebro realiza ao processar duas
037 imagens capturadas pela mesma câmera em diferentes posições. Este projeto demosntrativo
038 traz como foco o aprendizado sobre esses efeitos, tanto com imagens transladadas como com
039 imagens rotacionadas. Essa aproximação é feita por meio de várias relações matemáticas que
040 envolvem o mundo real e ambas as imagens utilizadas.
041 c
2018. The copyright of this document resides with its authors.
042 It may be distributed unchanged freely in print or electronic forms.
1 O trabalho foi desenvolvido em conjunto pelos dois autores, em pair programming, portanto ambos partici-
043
param da escrita de código e testes. Na escrita do relatório, as tarefas foram divididas, e frequentemente auxiliá-
044
vamos um ao outro esclarecendo dúvidas e equações no papel, gerando imagens através de execuções repetidas do
045 programa e outras tarefas auxiliares (como correção de erros ortográficos e revisão dos textos)
2 FILIPE AZIZ E ARTHUR COSTA: VISÃO ESTÉREO – OCTOBER 15, 2018

Ao considerar imagens como matrizes onde em cada posição são armazenados os níveis 046
de cores RGB ou da escala de cinza, e tendo dois pares de imagens paralelas sendo uma 047
apenas transladada em relação à outra, é possível relacionar os pontos em comum visíveis nas 048
duas imagens por meio de buscas detalhadas em cada pixel. Como há apenas deslocamento 049
em x, a busca se estende apenas a uma linha para cada pixel. Dessa forma, é possível saber a 050
disparidade, distância, entre cada pixel em comum e assim obter um mapa de profundidade. 051
Esse processo é direto para imagens paralelas, porém é possível que as imagens estejam 052
não só transladadas como rotacionadas. Dessa forma, as imagens estão deslocadas tanto em 053
x como em y, o que exigiria uma busca em toda a imagem, gerando uma custo computa- 054
cional muito grande. Para evitar esse processo há duas formas mais comumente utilizadas, a 055
homografia e determinação de linhas epipolares, as quais se baseiam ambas no princípio da 056
restrição epipolar: dado um par de pontos equivalentes x e x’, o ponto x’ estará sempre sobre
057
a linha epipolar formada pela projeção do raio que une x e o centro ótico da sua imagem na
058
imagem de x’ (e vice-versa). É possível ver todo esse conceito em [1].
059
A homografia gera a retificação de uma das imagens, isto é, uma das imagens é tran-
060
ferida para o mesmo plano da outra imagem, ficando apenas com deslocamento em x, e uti-
061
lizando a busca já mencionada para associar as imagens. A partir dos parâmetros intrínsecos
062
e extrínsecos das imagens obtidas, é possível relacionar cada uma com as coordenadas do
mundo, podendo transferir as coordenadas de uma imagem para o plano da outra imagem. 063
As equações 1 e 2 mostram como esse processo, onde x representa as coordenadas da im- 064
agem 1 (matriz 3x1), x’ as coordenadas da imagem 2 (matriz 3x1), X as coordenadas do 065
mundo (matriz 4x1) e P1 e P2 as matrizes de projeção das imagens 1 e 2 (matrizes 3x4), 066
respectivamente. 067
068
069
x = P1 X
(1) 070
x0 = P2 X 071
072
x = P1 P2 −1 x0 (2)
073
A determinação de linhas epipolares, por outro lado, tem como objetivo selecionar um 074
ponto de uma imagem 1 e identificar uma linha, na imagem 2, que é paralela a linha de foco 075
da imagem 1 e que contém o ponto equivalente ao selecionado. Essa linha é chamada de linha 076
epipolar. Para isso, é necessária uma matriz chamada matriz fundamental que gera para todos 077
os pontos as linhas epipolares que contém seus pontos equivalentes. Relacionando os pontos 078
de uma imagem com as linhas epipolares da outra imagem, é possível, por meio de uma 079
busca simples, encontrar o ponto equivalente. A matriz fundamental é obtida utilizando-se 8 080
pares de pontos equivalentes entre as imagens, ou seja, é preciso gerar uma busca por toda
081
a imagem e recolher 8 pares de pontos equivalentes. A equação 3 mostra como é possível
082
obter a matriz fundamental, onde x são as coordenadas na imagem 1 (matriz 3x1), x’ as
083
coordenadas na imagem 2 (matriz 3x1) e F a matriz fundamental (matriz 3x3). Usando os 8
084
pares de pontos e a equação 3, são determinadas 8 equações e assim é possível encontrar o
085
valor das 8 incógnitas internas a matriz fundamental (equaçõe 4 e 5).
086
0T
x Fx = 0 (3) 087
088
   089
f11 f12 f13 x1
x10 y01 (4) 090
 
1  f21 f22 f23   y1  = 0
f31 f32 f33 = 1 1 091
FILIPE AZIZ E ARTHUR COSTA: VISÃO ESTÉREO – OCTOBER 15, 2018 3

092
093    
f11 0
x10 x1 x10 y1 x10 y01 x1 y01 y1 y01
 
094 x1 y1 1
f12 0
x20 x2 x20 y2 x20 y02 x2 y02 y2 y02
   
095  x2 y2 1    
f13 0
x30 x3 x30 y3 x30 y03 x3 y03 y3 y03
    
096  x3 y3 1    
f21 0
x40 x4 x40 y4 x40 y04 x4 y04 y4 y04
    
097  x4 y4 1   
=

f22 0 (5)
x50 x5 x50 y5 x50 y05 x5 y05 y5 y05
  
098  x5 y6 1    
f23 0
x60 x6 x60 y6 x60 y06 x6 y06 y6 y06
    
099  x6 y6 1    
f31 0
x70 x7 x70 y7 x70 y07 x7 y07 y7 y07
    
100  x7 y7 1    
f32 0
x80 x8 x80 y8 x80 y08 x8 y08 y8 y08
   
101 x8 y8 1
f33 = 1 0
102
103
104
105 2 Metodologia
106
107 2.1 Sistema
108
Esse projeto foi implementado em conjunto em dois sistemas operacionais diferentes, um
109
linux Ubuntu 16.04 LTS e um linux Mint 19 Cinnamon. O Ubuntu tem intel core i3 com
110
5,6 GB de memória. O Mint tem intel core i7 com 15,6 GB de memória. Foi utilizada a
111
versão 3.2.0 da biblioteca OpenCV em ambos os sistemas somente para uso da classe Mat e
112 dependentes como a função inv() (classes e funções para álgebra matricial).
113
114
115 2.2 Requisitos
116
Nesse projeito foram desenvolvidos 3 requisitos práticos visando desenvolver a área de visão
117
estéreo.
118
119 • Requisito 1 - Estimativa de mapa de profundidade
120
121
Para esse requisito foram dados dois pares de imagens retificadas, sendo, em cada
par, as imagens registradas com deslocamento horizontal de posição. A partir dessas
122
imagens, é necessário desenvolver um algoritmo que seja capaz de localizar pontos
123
da imagem à esquerda na imagem à direita. Como próximo passo, é requerido que
124
sejam encontradas as coordenadas do mundo referentes aos pontos associados entre as
125
imagens. Por fim, com os resultados obtidos, é necessário gerar mapas de disparidade
126
e de profundidade para cada par de imagens.
127
128 • Requisito 2 - Câmeras estéreo com convergência
129
São dadas duas imagens referentes a mesma cena, porém com a câmera rotacionada
130
em relação ao centro do objeto (Morpheus). Com essas imagens dadas, é necessário
131
seguir os passos do requisito 1 nesse requisito, porém as imagens são convergentes em
132
relação ao objeto, logo é preciso retificar as imagens para realizar os procedimentos do
133 requisito 1. Para a retificação das imagens, são sugeridos dois processos. O primeiro
134 processo seria retificar a partir da homografia de uma das imagens, trazendo uma im-
135 agem para o mesmo plano da outra e deixando suas linhas epipolares paralelas ao eixo
136 X. O segundo processo tem o mesmo efeito, porém é utilizada uma matriz fundamental
137 para se obter as linhas epipolares, simplificando a busca semelhantemente.
4 FILIPE AZIZ E ARTHUR COSTA: VISÃO ESTÉREO – OCTOBER 15, 2018

• Requisito 3 - Paralelepípedo 138


139
Nesse requisito são utilizadas as mesmas imagens do requisito 2, no entanto o objetivo
é diferente. É necessário que seja possível clicar na tela e selecionar dois pontos de 140
uma diagonal da cadeira do Morpheus, sendo o resultado o volume de uma caixa na 141
qual fosse possível inserir a cadeira. 142
143
• Requisito 4 - Análise de parâmetros 144
Por último, é pedido que sejam discutidos os processos realizados, os resultados obti- 145
dos, vantagens e desvantagens das escolhas realizadas para o trabalho e comentários 146
sobre possíveis melhorias do projeto. 147
148

2.3 Código 149


150
• Requisito 1 - Estimativa de mapa de profundidade 151
Para encontrar os pontos correspondentes das imagens, foi feita uma função que sele- 152
ciona um pixel e procura, na linha correspondente, pixels com cores próximas, sele- 153
cionando os mais prováveis para testes de compatibilidade. A cada pixel com possível 154
compatibiliadade, são vizualizadas áreas (matrizes) equivalentes nas duas imagens, 155
com qualquer tamanho definido pelo usuário, que se adapta a vizinhaça existente nas 156
duas imagens e então faz a soma dos valores absolutos internos a essas matrízes, com- 157
parando o resultado para cada pixel com possibilidade de compatibilidade e assim 158
determinando o pixel mais compatível. Com a associação de pontos feita, é realizada 159
a diferença entre as coordenadas ’x’ das imagens (xL -xR ) e esse valor é registrado em 160
uma matriz que será o mapa de disparidade desnormalizado. Um loop realiza esse 161
processo para todos os pontos em comum entre as duas imagens. Para normalizar o 162
mapa de disparidade, seriam utilizados o menor e maior valores de disparidade para 163
gerar uma reta que normalize os pontos com valores de 0 a 255, no entanto, os val- 164
ores obtidos ficaram bem distribuidos dentro dos limites [0,255] e não precisaram de
165
normalização para que foi possível vizualizar corretamente o mapa.
166
Com o mapa de disparidade, o foco e a linha base, foi estimado o mapa de profudi- 167
dade utilizando a equação 8. Um loop foi responsável por calcular o Z (profundidade) 168
e preencher uma matriz referente a todos os pontos em comum das fotos, sendo esse 169
o mapa de profundidade. Para normaliza-lo, foram utilizados o menor e maior valores 170
de profundidade, obtendo-se uma reta que normaliza os pontos com valores de 0 a 171
255, sendo 255 o valor utilizado para pixels onde não foi possível calcular a profundi- 172
dade, efeito de problemas em calcular a disparidade do ponto. Para voltar aos valores
173
de profundidade antes da normalização, deve-se saber o valor máximo de profundi-
174
dade normalizada e assim associa-lo à equação Vmax = 254*G, onde G é o ganho para
175
todos valores normalizados. Com o ganho multiplicando todos os valores de profun-
176
didade normalizada, obtem-se a profundidade desnormalizada. Não foi implentada a
177
vizualização dessa imagem dado que era uma imagem completamente errada.
178
• Requisito 2 - Câmeras estéreo com convergência 179
Com câmeras estéreo com convergência, é necessário retificar as imagens para deixar 180
a linhas epipolares paralelas ao eixo x das imagens e então seja possível a associação 181
dos pontos entre as imagens. Para essa retificação, podem ser utilizados dois métodos, 182
a homografia ou a determinação de linhas epipolares. 183
FILIPE AZIZ E ARTHUR COSTA: VISÃO ESTÉREO – OCTOBER 15, 2018 5

184 A homografia foi feita utilizando os parâmetros intrínsecos e extrínsecos de cada im-
185 agem dados junto com o par de imagens. Como é possível, com esses parâmetros,
186 determinar as coordenadas do mundo relacionadas com cada coordenada da imagem,
187 foi possível associar as coordenadas de cada imagem com as coordenadas no mundo
188 e usar as coordenados do mundo em comum em cada imagem para associar uma im-
189 agem a outra (como mostra a equação 2). O código gerado realiza as contas matriciais
190 e determina a nova imagem retificada. Dessa forma, foi retificada a imagem da es-
191 querda para o plano da imagem da direita, gerando linhas epipolares paralelas entre si
192 entre as duas imagens. A partir dai, foi possível utilizar o requisito 1 para determinar
193
o mapa de disparidade e o mapa de profundidade do Morpheus.
194 A determinação de linhas epipolares, por outro lado, utiliza a equação 3 para gerar
195 uma matriz fundamental. Essa matriz é determinada a partir de 8 pontos de uma im-
196 agem e seus equivalentes na outra imagem. O código busca na imagem as primeiras
197 8 melhores correspondências e utiliza esses 8 pares de pontos na equação 3 para en-
198 contrar as 8 equações e assim achar os coeficientes da matriz fundamental (equaçõe 4
199 e 5).
200 • Requisito 3 - Paralelepípedo
201
Implementamos uma função que utiliza a CallBackFunc para capturar os pontos onde
202
o usuário clica na imagem e a cada dois cliques o código faz o módulo das diferenças
203
entre as três coordenadas dos dois pontos (|X1 -X2 |,|Y1 -Y2 | e |Z1 -Z2 |). Com essas difer-
204
enças, tem-se as medidas de cada lado da caixa necessária pra englobar o objeto es-
205
colhido. Com os três lados é calculado o volume da caixa necessária e são imprimidos
206
nos terminais o comprimento da reta traçada e o volume obtido. AS coordenadas X,Y
207 e Z de cada ponto selecionado foram obtidas a partir do mapa de disparidade e da
208 implementação das equações 6, 7 e 8.
209
210 b(xL + xR )
211 X= (6)
2(xL − xR )
212
213 b(yL + yR )
Y= (7)
214 2(xL − xR )
215
bf
216 Z= (8)
(xL − xR )
217
218
219 3 Resultados e Análise
220
A forma de interação com o terminal proposta foi implementada com sucesso, exceto que
221
o programa deve ser executado de dentro da pasta src, caso contrário a leitura e escrita dos
222
arquivos de imagem fica prejudicada. O comando make também deve ser executado de
223
dentro da pasta src.
224
225
226 3.1 Requisito 1
227 A busca de pixels realizada foi perfeitamente funcional para qualquer tamanho de template
228 escolhido e pode-se gerar os mapas de disparidade e de profundidade corretamente, no en-
229 tanto para imagens em que o mapa de disparidade possui muitos outliers (pontos para os
6 FILIPE AZIZ E ARTHUR COSTA: VISÃO ESTÉREO – OCTOBER 15, 2018

quais a disparidade é muitíssimo baixa em relação ao resto da imagem, resultantes de erros 230
na determinaçào dos pares de pixels equivalentes), o mapa de profundidade torna-se muito 231
escuro. O mapa de disparidade funciona muito bem, no entanto, diferente da convenção us- 232
ada pela maioria dos autores, neste trabalho optou-se por marcar de vermelho os pontos para 233
os quais o programa não localizou pontos equivalentes na outra imagem, e não preto, a fim 234
de diferenciar os pontos no infinito dos pontos sem correspondência. 235
236
237
238
239
240
241
(a) (b) (c) (d) 242

Figure 1: Disparidade da Aloe (a) e do Baby (c) e profundidade da Aloe (b) e do Baby (d) 243
244
245
246
3.2 Requisito 2 247
No requisito 2, começamos por realizar uma homografia entre o plano da imagem da es- 248
querda e o plano da imagem da direita, a qual foi computada segundo a equação 2 conhecendo-249
se os parâmetros intrínsecos e extrínsecos das câmeras empregadas. Ambas as imagens 250
foram retificadas, mas os mapas foram feitos com a retificação da imagem da esquerda. Em 251
seguida, utilizamos as funções implementadas no requisito 1, assumindo que após a homo- 252
grafia as linhas epipolares tornaram-se paralelas ao eixo x (horizontal). O procedimento 253
funcionou bem, mas devido a oclusão, algumas regiões da imagem retificada não possuem 254
equivalente. 255
O método de determinação de linhas epipolares não apresentou resultados, então foi 256
descartada essa parte da implementação. 257
258
259
260
261
262
263
264
(a) (b) (c) (d)
265
Figure 2: Imagens direita (a) e esquerda (b) retificadas e disparidade (c) e profundidade (d) 266
267
268
3.3 Requisito 3 269
270
Foi implementada uma interface neste requisito que permite ao usuário traçar uma linha na
imagem indo de um canto ao canto oposto da cadeira do Morpheus (ou entre quaisquer outros 271
dois pontos na imagem, na verdade), de modo a calcular o volume de um paralelepípedo que 272
possui esta diagonal como o volume de uma caixa onde poderia ser colocada a cadeira do 273
Morpheus. Como resultado, obtivemos um volume de 5,10627x107 mm3 , que pode ser visto 274
na figura 3. 275
FILIPE AZIZ E ARTHUR COSTA: VISÃO ESTÉREO – OCTOBER 15, 2018 7

276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
Figure 3: Medição da cadeira do Morpheus para obter o volume de sua caixa
291
292
293
3.4 Requisito 4
294
295 A determinação de pares de pontos equivalentes foi feita sem muitas dificuldades usando
296 SAD (sum of absolute differences). No entanto, além de ser um processo custoso na deter-
297 minação de um mapa de disparidades, ruídos prejudicam a criação do mapa de profundidade
298 normalizado. A retificação das imagens através de uma homografia de um plano para o outro
299 se mostrou adequada, apesar dos problemas relacionados à oclusão. Durante o desenvolvi-
300 mento, foram feitos alguns progressos interessantes:
301
302 • O desenvolvimento de um algoritmo para computar SAD numa vizinhança que aceita
303 qualquer tamanho de janela e se adapta a bordas;
304
305
306
• O desenvolvimento de uma solução para a ambiguidade entre pontos no infinito e
pontos sem correspondência;
307
308
309
310
4 Conclusão
311
312
Foi possível constatar a dificuldade de se implementar um método para geração dos mapas de
313
disparidade e profundidade no menor tempo e com o menor custo computacional possível.
314
Diversas sutilezas, como determinar quais pixels devem ter suas vizinhanças comparadas,
315
de onde começar as buscas e qual janela usar influenciam o desempenho dos métodos. O
316
processo contém imprecisões, causadas pelas limitações dos dispositivos e modelos empre-
317 gados (dispositivos físicos e modelos matemáticos). Além disso, é importante ter em mente
318 a aplicação em que um determinado método será empregado; na determinação dos pares de
319 pontos equivalentes, por exemplo, se soubermos de antemão que nenhum objeto da cena es-
320 tará mais perto que um certo limiar, podemos restringir o comprimento do trecho de busca
321 por um ponto equivalente, poupando tempo e otimizando a aplicação.
8 FILIPE AZIZ E ARTHUR COSTA: VISÃO ESTÉREO – OCTOBER 15, 2018

References 322
323
[1] Maikon Cismoski dos Santos. Revisão de conceitos em projeção, homografia, cali- 324
bração de câmera, geometria epipolar, mapas de profundidade e varredura de planos. 325
https://aprender.ead.unb.br/pluginfile.php/574187/mod_ 326
resource/content/1/dosSantos_Rocha_Unicamp2012.pdf, 2012. 327

[2] Flávio Vidal. Visão computacional - aula 06 - geometria para múltiplas vistas - visão es- 328
téreo. https://aprender.ead.unb.br/mod/resource/view.php?id= 329
282873, 2012. 330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367

Anda mungkin juga menyukai