Você está na página 1de 6

Reconstruo de Objetos 3D utilizando Estruturas de

Indexao Espacial com o Microsoft Kinect


Fernando Akio Arajo Yamada, Luciano Walenty Xavier Cejnog, Renan Augusto Dembogurski,
Marcelo Bernardes Vieira, Rodrigo Luis de Souza da Silva
Departamento de Cincia da Computao
Universidade Federal de Juiz de Fora
Juiz de Fora, Brasil
akio@ice.ufjf.br, luciano.wxc@gmail.com, ad.renan@gmail.com,marcelo.bernardes@ufjf.edu.br, rodrigoluis@ice.ufjf.br

ResumoO registro de superfcies representa ainda hoje


um desafio na rea de viso computacional. Para auxiliar
neste problema diversos equipamentos podem ser utilizados,
mas seu preo muitas vezes inviabiliza sua utilizao. Neste
contexto, um equipamento com preo mais acessvel, suporte
a imagens de profundidade e cmera RGB a ser considerado
o Microsoft Kinect. O objetivo deste trabalho propor um
mtodo de reconstruo de objetos reais a partir das nuvens de
pontos geradas pelo Kinect, otimizado com uso de K-D Trees.
Keywords-Reconstruo geomtrica; Microsoft Kinect; Iterative Closest Point; K-D Tree;

I. I NTRODUO
Na rea de Viso Computacional, um problema recorrente
o mapeamento de superfcies. Este pode ser definido como
mapear um ou mais objetos reais, gerando um modelo de
representao virtual dos mesmos. De forma geral, esse
processo pode ser realizado atravs de Scanners 3D, porm
o alto custo destes aparelhos pode representar um empecilho sua utilizao. Com o Kinect, dispositivo utilizado
no trabalho aqui apresentado, tem-se uma alternativa mais
econmica para a realizao dessa tarefa.
Outro problema muito explorado na viso computacional
o registro de superfcies. Neste problema o objetivo
determinar as transformaes espaciais que otimizam os
alinhamentos entre conjuntos de pontos que representam um
determinado objeto. Um dos algoritmos mais utilizados para
fazer registro de superfcies o ICP (Iterative Closest Point).
O objetivo deste trabalho desenvolver uma tcnica
utilizando K-D Trees, para otimizar a busca do vizinho mais
prximo no algoritmo ICP, utilizando nuvens de pontos 3D
obtidas com um Kinect. Esta otimizao resulta em uma
melhoria significativa em relao ao algoritmo de busca
original.

Figura 1.

Microsoft Kinect

emissor infravermelho, uma cmera RGB, um sensor de profundidade (infravermelho) e uma sequncia de microfones
utilizada para capturar udio direcional. A cmera e o sensor
funcionam na frequncia de 30Hz, ambas com resoluo de
640x480.
O Kinect apresenta algumas limitaes tcnicas em seu
funcionamento. So mapeados os pontos cuja distncia em
relao ao Kinect est entre aproximadamente 70 centmetros e 6 metros. Pontos fora dessa faixa no so reconhecidos.
A. A nuvem de pontos
Tanto a cmera RGB quanto o sensor de profundidade
possuem resoluo 640x480, ou seja, a cada frame gerada
uma nuvem de pontos que possui 307200 pontos. Para cada
ponto mapeado, so fornecidas informaes de profundidade
e de cor (RGB). A Figura 2 apresenta um exemplo de nuvem
de pontos obtida pelo Kinect sem informao de cor.
B. Framework Utilizado

II. Kinect
O Kinect (Figura 1) um dispositivo de controle baseado em movimentos e fala para o console Xbox 360,
desenvolvido pela Microsoft em colaborao com a empresa
israelita Primesense. O dispositivo composto por um

Aps o lanamento do Kinect a comunidade movimentouse no sentido de desenvolver um meio de uso do dispositivo
em plataformas alm do Xbox 360. Em pouco tempo, foram
desenvolvidos drivers para simplificar o acesso s informaes obtidas pelo Kinect em um ambiente de programao.

Figura 2.

Exemplo de nuvem de pontos gerada pelo Kinect.


Figura 3.

Entre os mais conhecidos atualmente, podemos destacar o


OpenNI, que foi desenvolvido pela Primesense, o Microsoft
Kinect SDK, da prpria Microsoft, e o OpenKinect, driver open-source desenvolvido por uma comunidade aberta.
Utilizou-se neste trabalho o OpenKinect, para a gerao das
nuvens de pontos.
O OpenKinect [1] utiliza uma biblioteca denominada
libfreenect, que fornece uma API capaz de retornar informaes de cor, profundidade, motores, acelermetro e LED
do Kinect.
As imagens fornecidas pela libfreenect apresentam o valor
da profundidade em cada ponto variando entre 0 e 1024.
Para os pontos que no so mapeados (ou seja, que no
obtm resposta do sensor IR), atribudo o valor 0 para a
profundidade. A cada frame, o libfreenect fornece um array
com os dados relativos profundidade dos 307200 pontos, e
outro array com a informao de cor (RGB) relativa a cada
ponto.
C. Captura das malhas
Neste trabalho, cada malha capturada foi salva em um
arquivo com extenso .dat no qual a primeira linha contm
o nmero de pontos da malha e em cada linha que se segue,
esto os valores de x, y, z, r, g e b de cada ponto. Os valores
de r, g e b foram utilizados somente para exibio e no
possuem relevncia no alinhamento das malhas.
D. Filtragem das malhas
Devido densidade dos pontos e a detalhes de outros
objetos do cenrio foi realizada uma filtragem dos pontos
por profundidade, mantendo na nuvem de pontos somente
os pontos do objeto de interesse.
Em [11] h exemplos de filtragens de pontos por amostragens, mas neste trabalho utilizou-se um mtodo mais
simples. Nesta abordagem possvel realizar filtragens por
fatores arbitrrios definidos pelo usurio na malha M ou P .
Este mtodo reduz o nvel de detalhes a fim de diminuir
o tempo de execuo. Definido um fator x, o algoritmo de
filtragem passar por todos os pontos e selecionar um a

Exemplo do ICP

cada x pontos da malha escolhida; desta forma este novo


conjunto possuir x1 pontos.
Uma filtragem por profundidade tambm foi utilizada,
semelhante aplicada em [12]. A fim de capturar apenas os
pontos pertencentes ao objeto, uma faixa de profundidade foi
determinada, onde pontos fora desta faixa foram descartados.
III. O A LGORITMO ICP
O ICP (Iterative Closest Point) [3] um processo iterativo
utilizado para realizar o alinhamento entre duas nuvens de
pontos, minimizando a distncia entre elas. As entradas
do algoritmo so duas malhas distintas, e como sada, o
algoritmo fornece uma transformao rgida, composta por
uma rotao e uma translao, que alinha essas duas malhas.
Um exemplo de alinhamento realizado atravs do ICP pode
ser observado na Figura 3.
Alternativas para uso de cor foram apresentadas em [4],
onde pesos so atribudos para cor e profundidade dos
pontos. Em [10] as cores so contadas como uma dimenso a
mais, desta forma os pontos possuem seis dimenses (espao
3D + RGB).
Utilizou-se neste trabalho apenas a profundidade dos
pontos para os clculos do ICP.
A. Viso Geral
O processo se resume a:
procedure I TERATIVE C LOSEST P OINT(M, P, t)
while d t do
for all m M do
Busca vizinho mais prximo em P ;
end for
Calcula a distncia mdia d;
Calcula a matriz de transformao T , que aproxima
os pontos;
Aplica T a todos os pontos de M
end while
end procedure

Enquanto a distncia mdia d entre as duas malhas for


menor que um threshold t, a cada iterao o ICP buscar,
para cada ponto da malha M , o vizinho mais prximo em P ,
ou seja, o ponto em P que possui menor distncia euclidiana.
Com este conjunto de pontos calculada a distncia mdia e
estimada uma transformao rgida que aproxima o conjunto
P a M.
B. Aspectos Tcnicos
Conforme apresentado em [8], o ICP tem como entrada
duas malhas, equivalentes a dois pontos de vista distintos de
um mesmo objeto, M e P , com Nm e Np pontos em R3 ,
respectivamente.
Para cada ponto mi M , define-se o operador de ponto
mais prximo C(mi , P ), como a operao que retorna o
ponto na malha P cuja distncia euclidiana at mi mnima.
Em cada iterao do algoritmo, definido o conjunto de
pontos yi Y , tal que yi = C(mi , P ). importante notar
que o conjunto Y e o conjunto P possuem o mesmo nmero
de elementos.
Um quatrnio um vetor em R4 que representa um arco
em R3 . A unidade quatrnio dada pela qudrupla:
t

~qr = [q0 q1 q2 q3 ] , q0 0 e q02 + q12 + q22 + q32 = 1


t

Associa-se ao vetor ~qr um vetor ~qt = [q4 q5 q6 ] de


translao, constituindo assim o vetor completo de registro
de estado ~q = [~qr | ~qt ]
O vetor ~q, tal que:
~q = Q(P, Y )
onde Q o operador de quatrnio de mnimos quadrados.
Para encontrar o operador Q, necessrio definirmos os
centrides
~ p de P e
~ y de Y como:

~p =

Np
1 X
p~i
Np i=0

~y =

Np
1 X
~yi
Ny i=0

A fim de evitar que a transformao caia em um timo


local, ou seja, estimar uma transformao que no alinha
corretamente as malhas, aplica-se uma pequena translao
de 10 unidades no eixo y, em
~ p.
Definidos os centrides, calculamos a matriz de covarincia cruzada de P e Y:
py

Np
1 X
=
(~
pi ~yit ) (~
p
~ ty )
Np i=0

A partir da equao anterior, definimos a matriz A =


py tpy , e utilizamos os componentes cclicos da matriz
t
A para compr um vetor = [A23 A31 A12 ] . Tambm
importante a definio do trao da matriz :
tr(py ) = 11 + 22 + 33
Utilizando as definies anteriores, finalmente definimos o
operador de quatrnio de mnimos quadrados Q(py ), como:




.
t
py + py tr(py )I3


tr(py )

Q(py ) =

onde I3 a matriz identidade 3x3. A dimenso de Q


4x4.
O quatrnio de rotao ~qr descrito como o autovetor
associado ao maior autovalor de Q(py ). Utilizando o
quatrnio, construmos a matriz de rotao R(~qr ):
2
q0 + q12 q22 q32

2(q q + q q )
1 2
0 3


2(q1 q3 q0 q2 )

2(q1 q2 q0 q3 )




2(q2 q3 q0 q1 )

q02 + q32 q12 q22
2(q1 q3 + q0 q2 )

q02 + q22 q12 q32


2(q2 q3 + q0 q1 )

A partir da matriz de rotao calculada, e dos centrides


definidos anteriormente, definimos o vetor de translao:
~qt =
~ y R(~qr )~
p
Por fim, montamos a matriz final de transformao 4x4:

R(~qr )11


R(~qr )21
T =
R(~qr )31

0

R(~qr )12

R(~qr )13

R(~qr )22

R(~qr )23

R(~qr )32

R(~qr )33


~qt1

~qt2

~qt3

1

Essa matriz T deve ser aplicada a todos os pontos do conjunto P . Como os pontos de P so tridimensionais, so usadas as coordenadas homogneas (xi , yi , zi , 1) e normaliza-se
o ponto pela quarta coordenada aps a transformao. Mais
detalhes podem ser encontrados em [6].
O resultado do alinhamento entre duas malhas salvo
e em seguida uma nova malha representando um novo
ponto de vista do objeto alinhada a esta, compondo uma
representao completa do objeto.
C. Otimizao do processo
Devido ao tamanho das malhas geradas pelo Kinect, o
algoritmo original de busca do vizinho mais prximo muitas
vezes se torna invivel. Desse modo, possvel otimizar
essa etapa do algoritmo utilizando uma estrutura eficiente
de indexao. Nesse trabalho, utilizou-se a K-D Tree, por
sua simplicidade e eficincia [12] [7].
IV. K-D T REE
A K-D Tree uma estrutura de indexao espacial, para
pontos de K dimenses. uma rvore binria facilmente
balancevel, que realiza buscas em aproximadamente log(n)
[2].

A. Estrutura da K-D Tree


Cada nvel de profundidade da K-D Tree est associado a
uma dimenso do espao. Cada n no-folha da K-D Tree
pode ser pensado como um hiperplano que divide o espao
em dois sub-espaos. Pontos esquerda desse hiperplano
representam a sub-rvore esquerda do n. De forma
equivalente, os pontos direita representam a sub-rvore
direita. O hiperplano representado por um n perpendicular
dimenso associada ao nvel de profundidade do ponto.
Um exemplo de espao 2D indexado pode ser visto na Figura
4 e a representao da K-D Tree resultante na Figura 5.

O ponto na posio referente mediana da lista de


pontos inserido no n atual, garantindo dessa forma uma
rvore balanceada [5]. Todos os pontos antes da mediana
sero includos na sub-rvore esquerda, e todos os pontos
depois sero includos na sub-rvore direita.
function CONSTROI KDT REE(pontos, eixo)
eixo eixo mod K;
ordena(pontos, eixo);
mediana pontos[tamanho/2];
no.localizacao mediana;
no.esquerda constroiKDTree (pontos[0 :
mediana], eixo + 1);
no.direita constroiKDTree (pontos[mediana :
tamanho], eixo + 1);
end function
C. Mtodo de busca

Figura 4.

Figura 5.

Exemplo de espao em R2 indexado por uma K-D Tree

Representao em rvore correspondente ao exemplo anterior

Como visto em [9], dado um ponto p, deseja-se saber seu


correspondente mais prximo na K-D Tree K e a distncia
dm entre eles.
A busca inicia-se percorrendo K at achar a folha que
seria pai de p. Define-se o valor inicial de dm como a
distncia euclidiana dessa folha at p. Caso p K, retornase p.
Na sequncia, passa-se a checar em K quais sub-rvores
podem conter um ponto mais prximo que o atual. Comeando da raiz de K, verifica-se se a distncia dp (distncia
de p ao n atual) menor que dm . Se sim, atualiza-se qual
o ponto mais prximo e sua respectiva distncia.
Para identificar em qual sub-rvore a busca deve prosseguir, deve-se fazer a interseo entre o hiperespao do n
atual com uma hiperesfera de raio igual menor distncia,
centrada em p. Para tal, checa-se se a distncia paralela ao
eixo atual entre o ponto em questo e o ponto procurado
menor que dm . Se esta distncia no for menor, no se
pode afirmar em qual sub-rvore est o ponto mais prximo
e a checagem feita em ambas. Caso seja menor, pode-se
afirmar que um dos hiperespaos no contm pontos que
sejam mais prximos que o atual. A seguir faz-se um teste,
verificando se a coordenada do ponto no eixo atual maior
que a coordenada de p tambm no eixo atual. Se sim, a
busca prossegue na sub-rvore esquerda, caso contrrio,
na sub-rvore direita.
A busca termina quando cada uma das checagens chegar
a uma folha.
V. R ESULTADOS

B. Algoritmo de construo da K-D Tree


Dado um conjunto de pontos P em Rk , inicia-se a
construo da rvore ordenando P em relao coordenada
associada profundidade atual. Para o n raiz inicia-se, por
convenincia, com a coordenada x.

Foram testados os alinhamentos entre dois pontos de vista


diferentes de uma caneca (Figura 6) e de um bichinho de
pelcia (Figura 7). O resultado dos alinhamentos pode ser
observado na Figura 8. As Tabelas I, II, III apresentam os
resultados numricos referentes aos tempos gastos para o

processamento do ICP com e sem o uso da K-D Tree e


diferentes fatores de reduo.
Tabela I
R ESULTADOS DO ICP COM E SEM A K-D T REE
Exemplo
Caneca
Pelcia

NM
6820
10243

NP
7621
11202

Toriginal
7.738s
15.740s

Totimizado
0.109s
0.100s

Tabela II
R ESULTADOS DO ICP COM E SEM A K-D T REE , COM FATOR DE
REDUO DE 3 X
NM
2274
3415

Reduo 3x
Caneca
Pelcia

NP
2541
3734

Toriginal
0.873s
1.778s

Totimizado
0.047s
0.030s

Tabela III
R ESULTADOS DO ICP COM E SEM A K-D T REE , COM FATOR DE
REDUO DE 5 X
NM
1364
2049

Reduo 5x
Caneca
Pelcia

NP
1525
2241

Toriginal
0.343s
0.655s

Totimizado
0.031s
0.010s

Figura 8.

Resultado do alinhamento da caneca e do bicho de pelcia

O algoritmo com a K-D Tree apresentou, como esperado,


um funcionamento muito mais rpido em relao ao algoritmo original do ICP, apresentando mais de uma ordem de
grandeza de diferena.
Conclui-se que a utilizao do algoritmo ICP e a K-D Tree
fazem com que o uso do Kinect para captura de geometria
seja vivel.
VI. T RABALHOS F UTUROS
A prxima etapa deste projeto implementar mtodos
de triangulao para gerar malhas triangulares a partir das
nuvens de pontos geradas.
Pretende-se implementar o ICP considerando as cores
dos pontos, o que possibilitaria um melhor alinhamento das
nuvens de pontos, especialmente em objetos simtricos.
Realizar alinhamentos em tempo real sucessivos entre as
nuvens, possibilitando a captura da geometria completa de
um determinado objeto a partir do Kinect tambm um dos
projetos futuros deste trabalho.
R EFERNCIAS
[1] Openkinect project, 2010.

Figura 6.

Diferentes pontos de vista da caneca

[2] J. L. Bentley. Multidimensional binary search trees used for


associative searching. Commun. ACM, 18(9):509517, Sept.
1975.
[3] P. Besl and H. McKay. A method for registration of 3-d
shapes. Pattern Analysis and Machine Intelligence, IEEE
Transactions on, 14(2):239 256, feb 1992.
[4] S. Druon, M. Aldon, and A. Crosnier. Color constrained icp
for registration of large unstructured 3d color data sets. In
Information Acquisition, 2006 IEEE International Conference
on, pages 249 255, aug. 2006.
[5] J. H. Friedman, J. L. Bentley, and R. A. Finkel. An algorithm
for finding best matches in logarithmic expected time. ACM
Trans. Math. Softw., 3(3):209226, Sept. 1977.

Figura 7.

Diferentes pontos de vista do bicho de pelcia

[6] B. K. P. Horn. Closed-form solution of absolute orientation


using unit quaternions. volume 4, pages 629642. Journal of
the Optical Society of America A, Apr 1987.

[7] S. Izadi, D. Kim, O. Hilliges, D. Molyneaux, R. Newcombe,


P. Kohli, J. Shotton, S. Hodges, D. Freeman, A. Davison, and
A. Fitzgibbon. Kinectfusion: real-time 3d reconstruction and
interaction using a moving depth camera. In Proceedings of
the 24th annual ACM symposium on User interface software
and technology, UIST 11, pages 559568, New York, NY,
USA, 2011. ACM.
[8] M. B. V. J. L. R. DE SOUZA FILHO. Alinhamento de nuvens
de pontos adquiridos atravs de digitalizador cmera-projetor
com luz estruturada, 2010.
[9] A. Milev. Kd tree - searching in n-dimensions, part i, 2007.
[10] D. Neumann, F. Lugauer, S. Bauer, J. Wasza, and J. Hornegger. Real-time rgb-d mapping and 3-d modeling on
the gpu using the random ball cover data structure. In
Computer Vision Workshops (ICCV Workshops), 2011 IEEE
International Conference on, pages 1161 1167, nov. 2011.
[11] S. Rusinkiewicz and M. Levoy. Efficient variants of the
icp algorithm. In 3-D Digital Imaging and Modeling, 2001.
Proceedings. Third International Conference on, pages 145
152, 2001.
[12] D. A. Simon, M. Hebert, and T. Kanade. Techniques for
fast and accurate intra-surgical registration. Journal of image
guided surgery, 1:1729, 1995.