Anda di halaman 1dari 17

Trabalho de Concluso de Curso (2012) 2: 117

DOI 10.1007/s00002-012-0002-5

GENERIC ARTICLE

Reconstruo de Modelos 3-D em tempo real utilizando Kinect e GPU


Mrcio Cerqueira de Farias Macedo Antonio Carlos dos Santos Souza

Recebido: 10/07/2012 / Aceito: 03/09/2012


Springer-Verlag 2012

Resumo A digitalizao de modelos 3-D tem crescido rapi- necessria a interferncia humana para a melhoria das apli-
damente nos ltimos anos devido principalmente aos dispo- caes durante a fase de produo [17].
sitivos de captura 3-D, como o Kinect. A digitalizao desses
Com o avano das pesquisas na rea, a necessidade de
modelos tem aplicao em vrias reas como engenharia ci-
interferncia humana no processo de produo de imagens e
vil, medicina e artes. Este trabalho descreve um sistema que
vdeos mais realsticos tem diminudo, pois, com a utilizao
permite a reconstruo de objetos 3-D a partir de mapas de
de dispositivos de captura 3-D, a forma tridimensional dos
profundidade adquiridos do Kinect. O sistema executa em
objetos pode ser adquirida, permitindo a estimativa de seus
tempo real com o auxlio das GPUs (Graphics Processing
movimentos associados, alm da medio de luminosidade
Unit Unidade de Processamento Grfico). Neste traba-
do ambiente [17].
lho, o sistema ser descrito de acordo com suas principais
funcionalidades (aquisio dos mapas de profundidade, ali- Os dispositivos de captura 3-D fornecem mapas de pro-
nhamento das nuvens de pontos, integrao volumtrica e fundidade capturados da cena instantaneamente visualizada.
raycasting sobre o modelo). Alm disso, a modelagem do Os mapas de profundidade so imagens que contm valo-
sistema e os resultados obtidos sero descritos e analisados. res de profundidade da cena associados para cada pixel. Para
algumas aplicaes, no interessante obter somente o for-
mato tridimensional visualizado de um ngulo pela cmera:
reconstruo de rgos capturados por CT (Computed To-
1 Introduo
mography Tomografia Computadorizada), de esculturas,
cidades e prdios. No caso das cidades e prdios, um modelo
Pesquisas no campo da computao grfica tradicionalmente
parcial/completo permitiria que fossem realizados walkth-
so baseadas em trs objetivos: representao das formas tri-
roughs ou visitas tcnicas. J para os rgos capturados por
dimensionais (modelagem), descrio do movimento dessas
CT e para as esculturas, uma reconstruo tridimensional
formas (animao) e simulao da luminosidade no ambi-
mais completa permitiria uma anlise mais eficiente e pre-
ente produzindo imagens foto-realsticas (renderizao). A
cisa, seja para algum exame, ou para anlise dos detalhes
produo de imagens e vdeos de formas mais complexas
da obra. Para esses casos, faz-se necessrio o uso de tcni-
exige um maior detalhamento em cada uma dessas fases,
cas para reconstruo 3-D (parcial ou completa) da forma
o que tambm exige maior quantidade de processamento e
desejada.
uma maior dificuldade na produo dos mesmos, sendo ainda
Outra rea que pode utilizar a reconstruo tridimensio-
Mrcio Cerqueira de Farias Macedo nal para suas aplicaes a Realidade Aumentada. Ela con-
Instituto Federal de Educao, Cincia e Tecnologia da Bahia
E-mail: marciomacedo@ifba.edu.br
siste em um conjunto de tcnicas para integrao dos objetos
do mundo real com os objetos virtuais (gerados computa-
Antonio Carlos dos Santos Souza
cionalmente) no mesmo espao do mundo real. Uma das
Instituto Federal de Educao, Cincia e Tecnologia da Bahia suas propriedades a necessidade de execuo interativa e
E-mail: antoniocarlos@ifba.edu.br em tempo real [1]. Com o avano dos dispositivos grficos, e
com o surgimento da GPU, tornou-se possvel a realizao da
2 Mrcio Cerqueira de Farias Macedo, Antonio Carlos dos Santos Souza

reconstruo tridimensional em tempo real, reconstruindo-se a reconstruo completa de um modelo 3-D em tempo real
modelos de alta qualidade e muito precisos. utilizando apenas o processamento da CPU. Enquanto algo-
O presente trabalho tem como objetivo a reconstruo ritmos bastante velozes so utilizados para a reconstruo
tridimensional de um modelo a partir do alinhamento dos tridimensional, o sistema apresenta baixa qualidade nos mo-
diversos mapas de profundidade fornecidos pelo Kinect, em delos reconstrudos.
tempo real, utilizando GPU. O alinhamento dos mapas de KinectFusion de Izadi et al. [9]: sistema que utiliza a
profundidade, representados num ambiente 3-D por nuvens paralelizao proporcionada pela GPU e o Kinect como dis-
de pontos, permite uma integrao de vises de diferentes positivo de captura para realizar reconstruo de cenas em
ngulos de uma mesma cena. 3-D. Alm disso, o KinectFusion possui a funcionalidade da
O sistema ser analisado a partir de trs verses: realidade aumentada sem o uso de marcadores. Durante a
reconstruo tridimensional, o KinectFusion utiliza o algo-
A primeira verso foi feita somente em CPU; ritmo ICP implementado em GPU para o alinhamento das
A segunda verso foi feita utilizando CPU e GPU utili- nuvens de pontos. A diferena entre o nosso trabalho e o
zando a linguagem OpenCL [22], sendo que foram utili- KinectFusion est nos testes realizados e no algoritmo do
zados mapas de profundidade sintticos para os testes de clculo do SDF para a grid volumtrica.
reconstruo; Sistema de animao facial de Weise et al. [27]: sistema
A terceira verso consiste numa adaptao do sistema que utiliza blendshapes para representar o modelo facial re-
de reconstruo 3-D implementado como um projeto do construdo. Diferente dos outros trabalhos citados, este seg-
PCL [18], que utiliza a linguagem CUDA [19] e funciona menta a face em regies rgidas e no-rgidas para o ali-
em tempo real com os mapas de profundidade adquiridos nhamento com ICP e, a partir de um modelo probabilstico,
diretamente do Kinect. identifica qual blendshape representa a expresso do usurio.
A desvantagem desta abordagem est na perda de preciso
As duas primeiras verses foram utilizadas para os testes
associada utilizao do blendshape, visto que ele representa
com modelos sintticos, permitindo tambm testes compa-
um modelo facial padro, no sendo especfico para cada tipo
rando o tempo de processamento em CPU e GPU dos algo-
de usurio.
ritmos utilizados. J a adaptao feita na terceira verso do
Sistema de reconstruo de objetos baseado em surfels
sistema teve como objetivo melhorar o encapsulamento e re-
de Weise et al. [28]: Diferente dos outros sistemas mencio-
duzir o acoplamento entre os mdulos implementados pelo
nados, este sistema representa um objeto como um surfel [8].
sistema de reconstruo 3-D do PCL.
A partir disso, um algoritmo ICP no-rgido aplicado para
O presente trabalho est estruturado da seguinte forma:
o alinhamento dos frames sucessivos com o modelo em re-
A seo 2 apresenta os principais trabalhos relacionados
construo, e uma abordagem similar ao KinectFusion uti-
rea de reconstruo tridimensional em tempo real. A seo
lizada para a integrao volumtrica. Esse sistema funciona
3 apresenta a fundamentao terica relativa reconstruo
em tempo real e consegue reconstruir objetos com qualidade
tridimensional. Nessa seo, os algoritmos so apresentados
superior a outras abordagens que no funcionam em tempo
baseados em CPU. A seo 4 apresenta a fundamentao te-
real.
rica sobre a Unidade de Processamento Grfico (GPU), alm
das adaptaes e otimizaes feitas nos algoritmos mostra-
dos na seo 3 para a execuo em GPU nas duas ltimas 3 Reconstruo tridimensional
verses do sistema. A seo 5 apresenta a documentao
do sistema, com os diagramas de classes e sequncia para as Nesta seo sero examinadas algumas das tcnicas e algo-
duas primeiras verses do sistema; casos de uso e arquitetura ritmos utilizados para cada passo da reconstruo tridimen-
para todas as trs verses do sistema. J a seo 6 apresenta sional.
uma anlise sobre o tempo de processamento do sistema para
cada frame obtido, bem como uma discusso sobre a quali-
dade do modelo reconstrudo e outros testes realizados sobre 3.1 Aquisio dos mapas de profundidade e gerao das
os modelos em reconstruo. nuvens de pontos

Os dispositivos de captura de profundidade da cena podem


2 Trabalhos Relacionados ser classificados em ativos e passivos. Os ativos so os que
fornecem e controlam a sua prpria iluminao; os passivos
Como exemplos de trabalhos que realizam a reconstruo apenas absorvem as radiaes do ambiente, e a partir delas
tridimensional em tempo real, temos: buscam extrair informaes de profundidade da cena [31].
Sistema de aquisio e renderizao em tempo real de Um dos mtodos mais utilizados com sensores passivos
modelos 3-D de Szymon Rusinkiewicz [17]: sistema que faz a viso estreo. Um exemplo de aplicao em tempo real
4 Mrcio Cerqueira de Farias Macedo, Antonio Carlos dos Santos Souza

registro [25]. A transformao rgida porque possivelmente que possurem os parmetros supracitados acima de um
o modelo no sofrer deformaes (mudanas de forma) du- valor limite pr-definido.
rante o processo de aquisio. Associao do erro entre as correspondncias: A medio
O registro pode ser classificado em dois tipos: frame- de erro feita a partir da mtrica [5]:
frame e frame-model. O frame-frame consiste no registro X n

das diversas nuvens de pontos sequenciais e apresenta baixa


2
= ||(pm (u) T pi (u)) nm (u)||2 (1)
qualidade de reconstruo para suas aplicaes. O frame- u=1

model consiste no registro entre a nuvem de pontos capturada sendo definida como a soma das distncias quadrticas
pelo dispositivo de captura 3-D com uma nuvem de pontos entre cada ponto e o plano tangente do seu correspon-
que representa o modelo reconstrudo. Esse tipo de registro dente. Para esta mtrica, os nicos pixels u vlidos so
apresenta menor acmulo de erros durante a reconstruo [9]. aqueles que esto associados a um par de pontos corres-
Para o alinhamento das diversas nuvens de pontos, o al- pondentes.
goritmo ICP (Iterative Closest Point - Ponto mais prximo Minimizao de erro: Para a minimizao de erro, utili-
iterativo) [2,5] tem sido o mtodo mais utilizado para a apro- zada a soluo descrita em [7], este assumindo que a rota-
ximao de alta preciso de duas nuvens de pontos, dada o incremental, num registro em tempo real, geralmente
uma boa estimativa inicial de alinhamento. No sistema de muito pequena. Linearizando a rotao, aproximando
reconstruo 3-D, o ICP utilizado para estimar a pose da cos por 1 e sin por 0, podemos reescrever a rotao
cmera para cada mapa de profundidade gerado. Isto feito completa (em todos os eixos) R da seguinte forma 1 :
baseado no registro frame-model, tendo em vista a sua me-
lhor qualidade de reconstruo final [9]. Uma vez com a pose Tabela 1 Tabela dos smbolos utilizados na descrio da minimizao
da cmera estimada, podemos converter o sistema de coor- do erro
denadas da cmera para o sistema de coordenadas global e Smbolo Descrio
vice-versa, como mencionado na seo anterior. R Matriz de Rotao 3-D
O algoritmo ICP pode ser sumarizado em 6 passos: t Vetor de Translao 3-D
ngulo de rotao no eixo X
Seleo de pontos de uma ou das duas nuvens de pontos; ngulo de rotao no eixo Y
ngulo de rotao no eixo Z
Correspondncia dos pontos selecionados entre as nu-
Somatrio para a mtrica ponto-plano [5]
vens de pontos; c

Produto vetorial entre um ponto p e um vetor normal nm
Atribuio de peso para os pares com correspondncia; tr Indicao de transposio em um vetor/matriz
Rejeio de alguns pares com correspondncia; r [ ]tr
Associao de um erro baseado nas correspondncias; (w) pi (w) pm (w)) nm (w)
Minimizao do erro.

Foram desenvolvidos muitos variantes do ICP. O variante



1
descrito por [9] conhecido por ser veloz e eficiente para R = 1 (2)
alinhar nuvens de pontos adquiridas em tempo real. Esse 1
variante pode ser descrito a partir do seguinte algoritmo: Com isso, podemos reescrever (1) da seguinte forma:

Seleo de pontos: So selecionados todos os pontos com n


Di (u) > 0. Isso significa que so selecionados todos os
X
2 = ||(pi (w) pm (w)) nm (w)
pontos visveis na cena, que representam o modelo. w=1
As correspondncias so feitas a partir da associao pro-
+ = t nm (w) + r c (w)||2 (3)
jetiva de dados [16]. Nesse algoritmo, cada ponto vi
A partir da equao de minimizao (3), um sistema li-
transformado em coordenadas da cmera e projetado
near na forma Cx = b pode ser calculado:
em um plano 2-D, assumindo como seu correspondente
n  
o ponto do modelo vm de mesma coordenada, se existir. X Acc (w) Acn (w)
C= (4)
Atribuio de peso para as correspondncias: atribudo w=1
Anc (w) Ann (w)
peso constante para todas as correspondncias feitas.
sendo A definida por:
Rejeio de correspondncias: A rejeio feita a partir
da distncia euclidiana dos pontos selecionados e do n- aw,x bw,x aw,x bw,y aw,x bw,z
gulo entre os seus vetores normais. Tanto os pontos vi e Aab (w) = aw,y bw,x aw,y bw,y aw,y bw,z (5)
vm quanto os vetores normais ni e nm so convertidos aw,z bw,x aw,z bw,y aw,z bw,z
do sistema de coordenadas da cmera para o sistema de 1
A Tabela 1 apresenta o significado de cada smbolo utilizado du-
coordenadas global, e a rejeio feita para aqueles pares rante a descrio do algoritmo de minimizao de erro
Reconstruo de Modelos 3-D em tempo real utilizando Kinect e GPU 5

x = [ tx ty tz ]tr (6)
cx (w)(w)

cy (w)(w)
n
X cz (w)(w)
b=
ni1,x (w)(w)
(7)
w=1
ni1,y (w)(w)
ni1,z (w)(w)
Aplicando a decomposio de Cholesky sobre a equao
Cx = b, pode-se encontrar a transformao T que define
a relao entre as nuvens de pontos.
Aps a utilizao do ICP e o consequente alinhamento
entre a nuvem de pontos adquirida no instante i e o modelo
em reconstruo, obtm-se a transformao Ti que define a
pose da cmera no instante i, permitindo que os dois modelos Figura 3 Viso lateral do modelo inserido na grid volumtrica. A SDF
especifica a distncia do voxel em relao ao modelo, sendo positiva se
sejam relacionados, e a nuvem de pontos seja integrada ao
estiver posicionado frente do modelo, e negativa na situao oposta.
modelo reconstrudo final. O modelo (cor vermelha) definido a partir das posies onde ocorre
o zero-crossing.

3.3 Reconstruo
exigida por este variante, ele reduz a incerteza nos dados do
Aps a obteno da matriz de transformao que define a modelo final reconstrudo, tratando de forma eficiente as ml-
pose da cmera, pode-se converter a nuvem de pontos Vi do tiplas medies feitas pelo dispositivo de captura [9]. Alm
sistema de coordenadas da cmera para o sistema de coor- disso, o mapa de profundidade Di utilizado nesta fase, um
denadas global e vice-versa. Uma vez com a pose global, mapa de profundidade sem aplicao de filtro, uma vez que
podemos integrar as diversas nuvens de pontos obtidas em deseja-se integrar os pontos reais do modelo adquirido [13].
um nico modelo final.
3.3.2 Integrao volumtrica
3.3.1 Representao volumtrica
A integrao das diferentes nuvens de pontos adquiridas pelo
Ao invs de concatenarmos todas as nuvens de pontos com Kinect pode ser feita a partir do Algoritmo 1.
coordenadas globais em um nico modelo, o que resultaria O algoritmo de integrao volumtrica pode ser descrito
em uma nuvem com uma grande quantidade de pontos muito da seguinte forma:
prximos entre si, utilizada uma representao volumtrica Dada uma posio (x, y), o eixo Z percorrido. gridVo-
baseada em [6]. Essa representao volumtrica, alm de lumeSize uma varivel interna do algoritmo (linhas 1 at
lidar com o problema da falta de decimao da nuvem de 3).
pontos, permite que seja realizada, de forma mais fcil, a Localiza-se o voxel associado a posio atualmente per-
triangulao do modelo reconstrudo. Isso pode ser feito a corrida (linha 4) e converte-se este do sistema de coordenadas
partir de algoritmos como Marching Cubes [12]. da grid para o sistema de coordenadas global. g, v g e o vetor
Nessa representao, uma grid com voxels 3-D de tama- voxel so variveis internas do algoritmo (linha 5).
nho pr-definido utilizada para mapear as nuvens de pontos Converte-se ento o ponto de coordenadas globais para
obtidas em uma dimenso especfica. Cada voxel armazena coordenadas da cmera (linha 6) e o ponto projetado num
a mdia ponderada de um variante da SDF [14] (Signed Dis- plano 2-D, permitindo a obteno do pixel correspondente
tance Function - Funo de distncia com sinal), medido para ao ponto v. As variveis v e pixel so criadas internamente,
cada nova nuvem de pontos a ser integrada. enquanto a varivel T 1 representa um dado de entrada do
A SDF especifica a distncia do voxel em relao ao mo- algoritmo (linha 8).
delo. Esses valores so positivos, se o voxel estiver posicio- Se existir um ponto real do modelo no pixel obtido (linha
nado frente do modelo, e negativos, na situao oposta. O 9), calcula-se a distncia entre um voxel de posio (x, y) e
modelo definido a partir das posies onde ocorre o zero- o ponto do mapa de profundidade Di de mesma coordenada
crossing, em que os sinais das distncias mudam (Figura 3). (clculo do SDF). A condio feita na linha 12 verifica se
Assim como em [9], ns usamos um variante da SDF, a o ponto do mapa de profundidade possui grau de incerteza
TSDF (Truncated SDF - SDF Truncada), que apenas arma- abaixo de um valor pr-definido trunc. Caso esse ponto pos-
zena o valor da distncia para uma regio prxima ao mo- sua menor grau de incerteza do que trunc, efetua-se o clculo
delo atual [6]. Alm da menor quantidade de processamento do TSDF. Di representa um dado de entrada do algoritmo,
6 Mrcio Cerqueira de Farias Macedo, Antonio Carlos dos Santos Souza

Algoritmo 1 Integrao volumtrica na grid [9]. O Algoritmo 2 realiza o raycasting sobre a grid
1: for x 1, gridV olumeSize.x do e baseado em [14].
2: for y 1, gridV olumeSize.y do
3: for z 1, gridV olumeSize.z do
4: g voxel[x][y][z]
Algoritmo 2 Raycasting sobre a grid volumtrica
5: v g converta g do sistema de coordenadas da grid para
o sistema de coordenadas global 1: for pixel 0, 640 480 do
6: v Ti1 v g 2: x pixel % 640
7: if v na viso da cmera then 3: y pixel/640
8: pixel projete v num plano 2-D 4: ray inicio converta voxel [x][y][0] do sistema de coordena-
9: if Di (pixel).z > 0 then das globais em coordenadas da grid.
10: ti adquira o vetor de translao associado a nu- 5: ray proximo converta voxel [x][y][1] do sistema de coorde-
vem de pontos do mapa Di nadas globais em coordenadas da grid.
11: sdfi Di (pixel).z v g .z 6: ray direcao normalize (ray proximo ray inicio )
12: if sdf < trunc then 7: ray tamanho 0
13: if sdfi > 0 then 8: RIi (pixel) (x, y, 0)
14: tsdfi M IN (1, sdfi /trunc) 9: g extraia o primeiro voxel na direo ray direcao
15: else 10: tsdf g.tsdf
16: tsdfi M AX(1, sdfi /trunc) 11: while voxel g contido na grid do
17: end if 12: ray tamanho raycaster tamanho + 1
18: pesoi M IN (maxpeso, g.peso + 1) 13: g extraia o prximo voxel na direo ray direcao
tsdfi1 pesoi1 +tsdfi pesoi 14: if g no est contido na grid then
19: tsdf avg pesoi+1 +pesoi 15: break
20: g.peso peso 16: end if
21: g.tsdf tsdf 17: tsdf anterior tsdf
22: end if 18: tsdf g.tsdf
23: else 19: if tsdf anterior < 0 e tsdf > 0 then
24: break 20: break
25: end if 21: end if
26: end if 22: if tsdf anterior > 0 e tsdf < 0 then
27: end for 23: g converta voxel (g.x 0.5, g.y 0.5, g.z 0.5) do
28: end for sistema de coordenadas da grid em coordenadas globais.
29: end for 24: RIi (pixel) g
25: end if
26: end while
sdf e t representam variveis criadas internamente e trunc 27: end for
um parmetro pr-definido.
O clculo do SDF feito a partir da distncia, no eixo Z,
entre o ponto Di (pixel) e o voxel v g (linha 11). Diferente O algoritmo de raycasting pode ser descrito da seguinte
de [9], ns calculamos o SDF considerando apenas o eixo Z, forma:
uma abordagem mais simples e com resultados similares do Seleciona-se um novo pixel para o raycasting sobre a grid
que foi feito em [13], em que o SDF calculado considerando volumtrica (linhas 1 at 3). Os valores 640 e 480 represen-
os 3 eixos (X, Y, Z) e em seguida dividido por ||||, sendo tam as dimenses da imagem de sada.
um vetor com valores (v g .x, v g .y, 1) para os eixos X, Y e Inicializa-se o raio de acordo com as coordenadas do pixel
Z respectivamente. selecionado, sendo que ele percorrer a grid no eixo Z (linhas
Normaliza-se o SDF para um TSDF (linhas 13 at 17) e 4 at 7). O pixel convertido do sistema de coordenadas
atribui-se um peso ao TSDF calculado (linha 18). globais para o sistema de coordenadas da grid. A varivel
Pondera-se o TSDF obtido com o TSDF calculado na ray interna ao algoritmo.
iterao anterior (linha 19). pesoi uma varivel criada in- Atribui-se o valor mnimo para a imagem RIi , que repre-
ternamente. senta a imagem aps o raycasting. Isso feito como precau-
O peso e o TSDF calculados so armazenados no voxel o para o caso de no haver posio zero-crossing durante a
g (linhas 20 e 21) e caso a grid no tenha sido percorrida passagem do raio ray (linha 8). RIi o nico dado de sada
totalmente, retorna-se ao passo 1. do algoritmo.
Esse algoritmo no possui nenhum dado de sada. Extrai-se o primeiro voxel g na direo do raio ray (linha
9) e armazena-se o TSDF associado ao voxel g (linha 10).
Se o voxel g estiver contido na grid, incrementa-se o
3.3.3 Raycasting tamanho do raio e captura-se o novo voxel g percorrido pelo
raio de novo tamanho. Se o novo voxel no estiver contido na
O raycasting feito sobre a grid volumtrica para extrair uma grid, encerra-se a passagem do raio pelo pixel selecionado
imagem de alta qualidade representando o modelo inserido (linhas 11 at 16).
Reconstruo de Modelos 3-D em tempo real utilizando Kinect e GPU 7

Se localizada uma posio de zero-crossing, interpola-se Na fase de reconstruo, cada thread foi responsvel por
trilinearmente o voxel g, convertendo-o do sistema de coor- calcular o TSDF e o seu peso associado para cada voxel
denadas da grid para o sistema de coordenadas global, e g da grid;
armazenado na imagem RIi (linhas 17 at 24). A subtrao Para o algoritmo de raycasting, cada thread foi respon-
do voxel g por 0.5 permite acesso ao centro do voxel. svel por calcular cada pixel de sada da imagem RIi ;
O algoritmo de raycasting tambm utilizado para ex- Como a maioria dos algoritmos em CPU foram desen-
trao da nuvem de pontos do modelo Vm em uma projeo volvidos pensando-se na paralelizao, tornou-se muito mais
perspectiva. Essa nuvem de pontos utilizada como nuvem fcil a adaptao para execuo em GPU.
base para o registro frame-model.

3.3.4 Extrao da nuvem de pontos parcial/completa 5 Modelagem do Sistema

Para a extrao completa do modelo tridimensional recons- Nesta seo apresentada a documentao da primeira e se-
trudo, faz-se necessria a utilizao de um algoritmo base- gunda verses do sistema a partir dos seguintes artefatos:
ado somente em CPU. A exibio da composio no modelo arquitetura do sistema, diagrama de classe, casos de uso e
no feita em tempo real. A exibio da imagem extrada diagrama de sequncia, respectivamente. A maioria dos as-
pelo raycasting representar o modelo em reconstruo. pectos de modelagem da terceira verso do sistema esto
O algoritmo pode ser resumido da seguinte forma: Para presentes nas duas primeiras verses. As diferenas entre as
cada coordenada (x, y) da grid volumtrica, lanado um trs verses so descritas ao longo desta seo.
raio ao longo do eixo Z, e, para cada posio em que houver
um zero-crossing, ser extrado um ponto correspondente a
5.1 Arquitetura do Sistema
interpolao trilinear daquela posio.
O sistema foi subdividido de forma que cada grupo de fun-
4 Unidade de Processamento Grfico - GPU cionalidades possusse um modulo especfico que as imple-
mentasse e disponibilizasse. A Figura 4 mostra o diagrama
Os microprocessadores das CPUs tiveram rpido crescimento, componente-conector do sistema.
em termos de desempenho, por mais de 2 dcadas. Contudo, O componente ImageProcessing responsvel por lidar
a partir de 2003, esse crescimento vem reduzindo cada vez com todas as operaes que so feitas com os mapas de pro-
mais devido s limitaes da prpria tecnologia do equipa- fundidade. Esse componente carrega um mapa de profun-
mento. A alternativa para essa reduo de evoluo da CPU didade a partir do componente OpenCV [4], que tambm
foi realizar a construo de mltiplos processadores, ao invs responsvel por aplicar o filtro bilateral sobre a imagem.
de somente um nico, como era feito at ento [10]. O componente CloudProcessing responsvel por pro-
A rea de multiprocessamento pode ser dividida a partir cessar e manipular a nuvem de pontos. Este componente
de dois equipamentos: CPUs multi-core e GPUs. A diferena responsvel pela converso da imagem para uma represen-
principal entre essas duas tecnologias que, enquanto a pri- tao tridimensional, alinhamento das nuvens sequenciais,
meira tem como objetivo tornar mais veloz a execuo de agrupamento iterativo dessas nuvens para a obteno de um
programas/algoritmos sequenciais, a segunda tem como ob- nico modelo tridimensional da superfcie e renderizao do
jetivo tornar mais veloz a execuo de aplicaes/algoritmos modelo acumulado. Este componente utiliza o componente
paralelos [10]. Eigen [20] que responsvel pelas funes referentes s ope-
Existem duas linguagens de programao bastante uti- raes de clculos de matrizes.
lizadas para manipulao das threads disponibilizadas pela O componente View permite visualizar a superfcie tridi-
GPU: CUDA [19] e OpenCL [22]. A segunda verso do sis- mensional capturada pelo Cloud Processing e os mapas de
tema foi desenvolvida com a linguagem OpenCL, enquanto a profundidade. A interface provida QGLWidget somente est
terceira verso do sistema foi desenvolvida com a linguagem presente nas duas primeiras verses do sistema. Na terceira
CUDA, j utilizada para outros algoritmos pelo PCL. verso, a interface provida PCLVisualizer.
A paralelizao feita pelas verses do sistema com GPU O conector signal and slot um conector que permite a
pode ser descrita da seguinte forma: comunicao entre dois componentes sem invocao expl-
Na fase de aplicao do filtro bilateral, cada thread foi cita de mtodo entre eles.
responsvel pelo clculo do novo valor de profundidade
para cada pixel do mapa de profundidade Di . 5.2 Diagrama de classe
Na fase de alinhamento, cada thread foi responsvel pela
seleo, associao e rejeio de pares correspondentes Assim como foi mencionado na Introduo deste trabalho,
para cada pixel do mapa de profundidade Di ; o sistema de reconstruo tridimensional foi desenvolvido
Reconstruo de Modelos 3-D em tempo real utilizando Kinect e GPU 9

um voxel inserido na grid. A classe Raycaster representa faz a extrao completa da superfcie implcita na grid
o raio que atravessar a grid na fase de raycasting. volumtrica.
A classe MainWindow responsvel pela inicializao do A classe RegistrationUtils responsvel por disponibi-
sistema. Esta classe serve como ponte entre a interface lizar uma srie de implementaes relativas fase de
grfica e as classes de negcio do sistema. alinhamento. Esta classe armazena principalmente os al-
As classes DepthImageWidget e RaycastWidget so res- goritmos que permitem a associao de correspondncias
ponsveis pela visualizao do mapa de profundidade e os algoritmos de estimativa de transformao, no nosso
sendo processado e da imagem obtida via raycast. caso, o algoritmo baseado na decomposio de Cholesky.
A classe PointCloudWidget responsvel por exibir as A classe PointCloud representa uma nuvem de pontos
nuvens de pontos base e alvo processadas durante a fase no sistema. Ela armazena dados como: conjunto de pon-
de alinhamento. Essa exibio feita a partir do OpenGL tos da nuvem, vetores normais de cada ponto, matriz de
[30] integrado ao Qt. transformao 3-D que permite converso de coordenada
A classe FullReconstructionWidget responsvel por exi- da cmera para global e vice-versa. Alm disso, a classe
bir a nuvem de pontos extrada da grid no sistema de co- PointCloud, atravs do mtodo alignPointClouds realiza
ordenadas globais, permitindo que seja possvel acompa- o registro entre duas nuvens de pontos. Isso feito em
nhar, em tempo real, o alinhamento entre os frames su- conjunto com a classe RegistrationUtils descrita acima.
cessivos. Assim como na classe PointCloudWidget, essa
exibio tambm feita a partir do OpenGL [30] inte-
grado ao Qt. 5.3 Casos de Uso
A classe Image armazena o mapa de profundidade ob-
tido, ou mesmo cria um novo mapa de profundidade, Existem apenas dois casos de uso para o sistema: O usu-
sendo tambm responsvel pela aplicao do filtro sobre rio pode adicionar uma nuvem de pontos ao sistema, o que
o mesmo. O mtodo convert sem parmetros converte corresponderia inicializao do sistema com o Kinect, ou
um mapa de profundidade obtido para uma representa- ento, de fato, a adio de uma nuvem de pontos ao sistema,
o interna, aplicando o filtro (quando necessrio) sobre caso o sistema esteja realizando a reconstruo de um ob-
o mapa. O mtodo convert com parmetros permite a jeto a partir de mapas de profundidade gravados em disco. O
criao de uma imagem a partir de dados externos. usurio tambm pode optar por visualizar a nuvem de pon-
A classe Reconstruction a classe principal do sistema, tos reconstruda completa, ou somente sua viso perspectiva,
sendo responsvel por estruturar todo o processo de re- como mencionado na seo 3.3.4.
construo tridimensional. Essa classe, uma vez criada
pela classe MainWindow, recebe como parmetros todos
os objetos que sero necessrios para a reconstruo tri- 5.4 Diagrama de Sequncia
dimensional, e, atravs do mtodo staticMethod(), faz as
iteraes do sistema. Essa classe tambm responsvel O diagrama de sequncia do sistema de reconstruo tridi-
por enviar os dados ps-processados do sistema para as mensional para o primeiro caso de uso pode ser visto a partir
classes de interface grfica atravs das primitivas signal da Figura 7. A partir da ao do usurio de adicionar uma
e slot do Qt. nova nuvem de pontos ao sistema, uma instncia da classe
A classe SDF responsvel pelas fases de integrao vo- MainWindow invoca o mtodo staticMethod do objeto re-
lumtrica e raycasting (em conjunto com a classe Raycas- construction. Uma vez em funcionamento, o objeto recons-
ter), tendo como principal atributo a prpria grid (con- truction carrega o mapa de profundidade atual com e sem
junto de voxels). O mtodo integrateTsdfVolumeBase- filtro, a partir dos objetos image e imageWithoutFilter res-
dOnKinectFusion faz a integrao volumtrica baseada pectivamente. A partir disso, temos as seguintes condies:
em [9], onde se d prioridade reconstruo dinmica:
Se o mapa de profundidade for o primeiro adquirido,
para cada pixel da grid, mantm-se no mximo um ponto
carregamos a nuvem de pontos alvo a partir dele, pois
do modelo real; enquanto o mtodo integrateTsdfVolu-
queremos alinhar o mapa de profundidade adquirido no
meBasedOnFullReconstruction faz a integrao volum-
instante i com o mapa adquirido no instante i 1. Aps
trica baseada na nossa adaptao de [13], em que se d
isso, inserimos a nuvem de pontos na grid. Isso tudo est
prioridade reconstruo completa: para cada pixel da
encapsulado no mtodo renderBasedOnKinectFusion da
grid, a quantidade mxima de pontos do modelo real que
classe SDF.
pode ser inserido na grid definida pelo usurio. Alm
Se o mapa de profundidade for o segundo adquirido pelo
disso, temos os mtodos raycastTsdfVolume que faz o
sistema, carregamos a nuvem de pontos base a partir dele.
algoritmo de raycasting sobre a grid, e o mtodo extract-
Uma vez com as nuvens de pontos Vi e Vi1 , chamamos
PointCloudFromGrid, que funciona apenas em CPU e
o mtodo alignPointClouds do objeto basePC passando
12 Mrcio Cerqueira de Farias Macedo, Antonio Carlos dos Santos Souza

Figura 8 Modelo poligonal utilizado para o teste de comparao por Figura 9 Desempenho do algoritmo raycasting em CPU e GPU.
tempo de processamento entre CPU e GPU.

O algoritmo de integrao volumtrica teve um com-


portamento diferente dos outros algoritmos testados, pois,
quanto menor a densidade da nuvem de pontos, muito me-
nor foi seu tempo de execuo em CPU, de tal forma que o
tempo de execuo a partir de uma determinada densidade
foi menor do que em GPU. Uma thread da CPU possui me-
nor tempo de execuo em relao a uma thread da GPU,
uma vez que ela executa rapidamente sobre todo o sistema, e
no somente em um trecho de cdigo, como no caso das th-
reads da GPU. O que faz a execuo da GPU ser mais rpida
do que a execuo em CPU o fato de que a GPU possui
uma quantidade de threads muito maior do que a CPU, e que Figura 10 Desempenho do algoritmo de integrao volumtrica em
s executam um trecho bem especfico do sistema. Contudo, CPU e GPU.
para esse algoritmo, mesmo com a grande quantidade de th-
reads utilizadas em GPU paralelamente, a nica thread em
execuo na CPU foi mais veloz para uma nuvem de pontos
com densidade baixa.
O algoritmo de associao projetiva de dados, por ser
altamente paralelizvel, apresentou grande reduo do tempo
de processamento quando executado com o auxlio da GPU.
A reduo variou de 83% a 99,36%, relativas respectivamente
a menor e maior densidade testadas.
J para o tempo total de processamento por frame, a exe-
cuo em CPU com a GPU conseguiu reduzir em torno de
90% o tempo de execuo feito somente pela CPU. Vale lem-
brar que, mesmo com a reduo de 90%, o tempo de execuo
com GPU ainda estava muito alto, chegando a mais de 700
ms para a nuvem com 90000 pontos. Isso se deve ao fato de Figura 11 Desempenho do algoritmo de associao projetiva de dados
em CPU e GPU.
que: as imagens sintticas eram carregadas diretamente do
disco rgido; algumas nuvens de pontos foram mantidas e
processadas, sendo que estas no existiriam na verso final
(terceira verso) do sistema e o algoritmo de estimativa da Apesar de a reconstruo ser realizada sobre o mapa de
transformao baseado na decomposio de Cholesky no profundidade no-filtrado, o registro feito sobre o mapa de
foi paralelizado. profundidade ps-filtro bilateral. A aplicao do filtro bilate-
ral permitiu melhor qualidade para a reconstruo do modelo,
sendo que o ICP falhou poucas vezes para pequenas rotaes.
6.3 Segundo Teste: Influncia do filtro bilateral para a J para as situaes em que o filtro no foi aplicado, o ICP fa-
reconstruo do modelo lhou vrias vezes mesmo para pequenas rotaes feitas com o
Kinect. Contudo, se o objetivo fosse reconstruo instantnea
Este teste teve como objetivo verificar a influncia do filtro para superresoluo do modelo, poderia-se utilizar o modelo
bilateral sobre o modelo reconstrudo. Para isso, a terceira sem filtro (Figura 13), ainda que este mantivesse uma quan-
verso do sistema foi utilizada. tidade maior de buracos e pontos com descontinuidade.
Reconstruo de Modelos 3-D em tempo real utilizando Kinect e GPU 13

de detalhe, apesar de possuir poucos pontos (em torno de


4000 pontos). O plano (Figura 16) foi extrado de um cubo
e no possui quase nenhum detalhe. O plano considerado
um modelo difcil para alinhamento, e muitos variantes no
conseguem reduzir o erro inicial medido para esse modelo,
mesmo quando o ngulo de variao muito pequeno [16].
Apesar de esses modelos no inclurem todos os tipos exis-
tentes, eles representam uma grande classe de objetos.

Figura 12 Tempo total de processamento por frame em CPU e GPU.

Figura 14 Modelo Bunny utilizado no terceiro teste.

Figura 13 Modelo com alta qualidade reconstrudo a partir de somente


uma viso, sem aplicao do filtro bilateral. O teclado do notebook no
possui nenhum buraco, ao contrrio da tela do mesmo.

6.4 Terceiro Teste: Eficincia do algoritmo de alinhamento


x ngulo de variao entre frames

Este teste teve como objetivo avaliar a eficincia do algoritmo


Figura 15 Modelo Fractal utilizado no terceiro teste.
de alinhamento utilizado na medida em que o ngulo de va-
riao entre os frames foi aumentado. Somente a primeira
verso do sistema foi utilizada para esse teste. O motivo da utilizao de modelos sintticos nesse teste
Para esse teste, foram utilizados trs modelos sintticos que ns conhecemos a transformao correta que permite
para avaliar o variante do algoritmo ICP utilizado para apli- o alinhamento das nuvens de pontos. Isso permite que o al-
caes que funcionam em tempo real. O objetivo do teste goritmo de alinhamento seja avaliado tanto em relao re-
avaliar, para cada um dos modelos, qual o ngulo mximo duo do erro inicial medido quanto em relao ao ngulo de
de variao em que o ICP consegue estimar a transformao rotao encontrado pelo algoritmo. Nesse teste, os modelos
rgida corretamente. foram rotacionados em relao ao eixo Y , e o erro mdio
Assim como feito em [16], foram escolhidos trs modelos foi calculado a partir do RMS (Root Mean Square - Valor
que possuem diferentes caractersticas: O Bunny (Figura 14) Quadrtico Mdio), definido por (8):
representa um modelo com altas curvaturas, geometria rela- r
tivamente suave e consiste em modelo fcil para alinhamento 1
RM S = (8)
para muitos variantes do ICP. O modelo fractal, semelhante n
a uma rvore em que os ns so semelhantes a rvore ori- sendo o somatrio definido na Equao 1 e n a quan-
ginal (Figura 15), representa um modelo com muitos nveis tidade de pontos utilizada.
Reconstruo de Modelos 3-D em tempo real utilizando Kinect e GPU 15

medido, e, para a variao de 8 graus, o ICP no conseguiu


estimar uma transformao rgida. Isso se deve ao fato de que
o modelo Fractal, dentre todos os modelos, o que possui
a menor quantidade de pontos, e eles esto bem distribudos
(e espacialmente distantes) ao longo do modelo. A partir do
momento em que h uma grande diferena de rotao entre
as nuvens de pontos base e alvo, a quantidade de correspon-
dncias realizadas pela associao projetiva de dados reduz
bastante, sendo que a maioria das correspondncias realiza-
das sejam incorretas e faam com que o ICP estime uma
transformao rgida incorreta.

Figura 21 RMS medido para o Bunny da Figura 14.

Figura 24 RMS medido para o Fractal da Figura 15.

Figura 22 ngulo de variao medido pelo algoritmo de alinhamento


para o modelo Bunny da Figura 14. O variante do ICP conseguiu estimar
o ngulo de variao correto somente para ngulos de variao abaixo
de 1 grau.

Figura 23 Viso superior das nuvens de pontos base (preta) e alvo Figura 25 ngulo de variao medido pelo algoritmo de alinhamento
(vermelha) para uma pequena variao de grau entre os modelos. As para o modelo Fractal da Figura 15. O variante do ICP conseguiu es-
retas tracejadas indicam a associao dos pontos correspondentes. timar o ngulo de variao correto somente para ngulos de variao
abaixo de 2 graus.

6.4.3 Anlise para o modelo Fractal

Para o modelo Fractal, o variante do ICP obteve um com- 6.5 Quarto Teste: Qualidade do Modelo Reconstrudo
portamento diferente em relao aos outros modelos. O al-
goritmo de alinhamento foi robusto at a variao de 2 graus Assim como feito em [13] e [28], o sistema proposto ser
(Figuras 24 e 25), contudo, para uma variao acima de 7 validado quanto a qualidade do modelo reconstrudo. A rea
graus, o variante do ICP teve um comportamento diferen- da imagem destacada na Figura 13 mostra que o sistema
ciado, aumentando o erro final em relao ao erro inicial proposto reconstri modelos de alta qualidade mesmo sem
16 Mrcio Cerqueira de Farias Macedo, Antonio Carlos dos Santos Souza

a aplicao do filtro bilateral para facilitar o alinhamento e


consequente integrao das nuvens de pontos. J a rea da
imagem destacada na Figura 26 mostra o nvel de preciso
do sistema de reconstruo, mesmo para o Kinect que prov
mapas ruidosos e com buracos.

Figura 27 Distribuio de erro num modelo com muitas superfcies


planas. (Legenda: Cor Azul = Erro < 6mm; Cor Vermelha = 6mm <
Erro < 30mm; Cor Verde = Erro > 30mm.)

Figura 28 Distribuio de erro num modelo com altas curvatu-


ras.(Legenda: Cor Azul = Erro < 6mm; Cor Vermelha = 6mm <
Erro < 30mm; Cor Verde = Erro > 30mm.)
Figura 26 Modelo reconstrudo a partir do sistema proposto. A tesoura
em destaque na elipse mostra a preciso do sistema.
com GPU (CUDA-PCL). As duas primeiras verses foram
utilizadas para testes de tempo de processamento e anlise
das fases do algoritmo de reconstruo. Nesses dois siste-
mas foram utilizados mapas de profundidade criados sinte-
6.6 Quinto Teste: Distribuio de Erro no Modelo ticamente, simulando mapas de profundidade adquiridos do
Reconstrudo Kinect aps a aplicao do filtro bilateral. J para o terceiro
sistema, que executou na mdia de 90 ms, foram testados
Este teste teve como objetivo verificar a distribuio de erro aspectos de qualidade da reconstruo do modelo, sendo ela
nos modelos reconstrudos. A terceira verso do sistema foi parcial ou completa. Vale lembrar que o tempo de processa-
utilizada para esse teste. mento obtido, para o sistema em que foi utilizado, foi ade-
Similarmente ao que foi feito na subseo 6.4, a distri- quado, uma vez que permitiu interaes em tempo real com
buio de erro foi analisada a partir de dois tipos de modelos: o usurio.
um modelo com muitas superfcies planas e outro modelo cir- Para cada fase da reconstruo tridimensional foram fei-
cular com altas curvaturas, sendo que a cor azul indica erro tas as seguintes avaliaes:
menor do que 6mm, a cor verde indica um erro entre 6mm Aquisio dos mapas de profundidade: Verificou-se que a
e 30mm, enquanto a cor vermelha indica um erro maior do aplicao do filtro bilateral sobre o mapa de profundidade
que 30mm. tornou o sistema mais robusto, uma vez que reduziu a
Os dois modelos comportaram-se de forma similar em quantidade de falhas do ICP.
relao distribuio de erro. A maior concentrao de erro Alinhamento das nuvens de pontos: Foi verificado que o
ocorreu nas regies de incerteza e nas regies onde esto variante veloz do ICP muito robusto para modelos de
localizados os buracos, o que nesse caso foram as bordas "fcil"geometria, desde que a rotao incremental seja
do modelo. Isso ocorreu pois essas regies apresentam uma menor do que 10 graus. Enquanto que para os modelos
grande variao nos valores de profundidade entre frames. de "difcil"geometria, a rotao incremental no pode ser
maior do que 5 graus.
Integrao volumtrica e raycasting: Mostrou-se que o
7 Concluso
sistema proposto bastante preciso, reconstruindo mo-
O presente trabalho teve como objetivo descrever e avaliar delos de alta qualidade, e que a grande concentrao de
um sistema de reconstruo tridimensional utilizando Kinect erro ocorre nas bordas dos modelos reconstrudos.
e GPU. Para tanto, o sistema proposto foi dividido em trs Alm disso, assim como visto na seo 6.2, o processa-
verses: somente CPU, CPU com GPU (OpenCL), e CPU mento da GPU conseguiu reduzir mais de 90% do tempo de
Reconstruo de Modelos 3-D em tempo real utilizando Kinect e GPU 17

processamento dos algoritmos paralelizveis em comparao 13. Newcombe, R.A., Izadi, S., Hilliges, O., Molyneaux, D., Kim, D.,
com a CPU. Davison, A.J., Kohli, P., Shotton, J., Hodges, S., Fitzgibbon, A.W.:
Kinectfusion: Real-time dense surface mapping and tracking. In:
ISMAR, pp. 127136. IEEE (2011)
14. Osher, S.J., Fedkiw, R.P.: Level Set Methods and Dynamic Implicit
7.1 Trabalhos Futuros Surfaces, 1 edn. Springer (2002)
15. Posdamer, J.L., Altschuler, M.D.: Surface measurement by space-
O sistema de reconstruo tridimensional apresentado neste encoded projected beam systems. Computer Graphics and Image
Processing 18(1), 117 (1982)
trabalho restrito situao em que o modelo no tem seu
16. Rusinkiewicz, S., Levoy, M.: Efficient variants of the ICP algo-
formato alterado durante a sua reconstruo. rithm. In: Third International Conference on 3D Digital Imaging
Como trabalho futuro, pretende-se integrar ao sistema and Modeling (3DIM) (2001)
de reconstruo em tempo real um algoritmo de registro de- 17. Rusinkiewicz, S.M.: Real-time acquisition and rendering of large
three-dimensional models. PhD Thesis, Stanford University
formvel, ampliando a possibilidade de interaes entre o
(2001). 113
usurio e o sistema, uma vez que este permitir que haja re- 18. Rusu, R.B., Cousins, S.: 3d is here: Point cloud library (pcl). In:
construo de modelos que, naturalmente, tem seu formato International Conference on Robotics and Automation. Shanghai,
constantemente modificado (face, pessoas em movimento, China (2011)
19. Sanders, J., Kandrot, E.: CUDA by Example: An Introduction to
etc..).
General-Purpose GPU Programming, 1st edn. Addison-Wesley
Alm disso, pretende-se futuramente avaliar quo pre- Professional (2010)
ciso o modelo reconstrudo por este sistema, de forma que 20. Eigen: (2012). URL http://eigen.tuxfamily.org/. Acessado em 12
se verifique se este pode ser aplicado na rea de realidade de agosto de 2012.
21. Tomasi, C., Manduchi, R.: Bilateral filtering for gray and color
aumentada aplicada medicina, em que o nvel de preciso
images. In: Proceedings of the Sixth International Conference on
do modelo reconstrudo deve ser muito alto. Computer Vision, ICCV 98, pp. 839. IEEE Computer Society,
Washington, DC, USA (1998)
22. Tsuchiyama, R., Nakamura, T., Iizuka, T., Asahara, A., Miki, S.:
Referncias The OpenCL Programming Book. Fixstars Corporation (2010)
23. Turk, G., Levoy, M.: Zippered polygon meshes from range ima-
ges. In: Proceedings of the 21st annual conference on Computer
1. Azuma, R., Baillot, Y., Behringer, R., Feiner, S., Julier, S., Ma-
graphics and interactive techniques, SIGGRAPH 94, pp. 311318.
cIntyre, B.: Recent advances in augmented reality. IEEE Comput.
ACM, New York, NY, USA (1994)
Graph. Appl. 21(6), 3447 (2001)
24. Vasudevan, R., Zhou, Z., Kurillo, G., Lobaton, E., Bajcsy, R.,
2. Besl, P., McKay, N.: A method for registration of 3-d shapes. IEEE
Nahrstedt, K.: Real-time stereo-vision system for 3d teleimmersive
Transactions on Pattern Analysis and Machine Intelligence 14,
collaboration. In: IEEE International Conference on Multimedia
239256 (1992)
and Expo, pp. 12081213 (2010)
3. Besl, P.J.: Active, optical range imaging sensors. Mach. Vision
25. Vieira, T., Velho, L., Lewiner, T., Peixoto, A.: Registro automatico
Appl. 1, 127152 (1988)
de superficies usando spin-images. In: Proceedings of SIBGRAPI.
4. Bradski, G., Kaehler, A.: Learning OpenCV: Computer Vision with
VI Workshop de Teses de Dissertaes (2007)
the OpenCV Library. OReilly, Cambridge, MA (2008)
26. Weise, T.: Real-time 3d scanning. Ph.D. thesis, ETH Zurich (2010)
5. Chen, Y., Medioni, G.: Object modelling by registration of multiple
27. Weise, T., Bouaziz, S., Li, H., Pauly, M.: Realtime performance-
range images. Image Vision Comput. 10, 145155 (1992)
based facial animation. ACM Trans. Graph. 30(4), 77:177:10
6. Curless, B., Levoy, M.: A volumetric method for building complex
(2011)
models from range images. In: Proceedings of the 23rd annual
28. Weise, T., Wismer, T., Leibe, B., Gool, L.V.: Online loop closure
conference on Computer graphics and interactive techniques, SIG-
for real-time interactive 3d scanning. Comput. Vis. Image Underst.
GRAPH 96, pp. 303312. ACM, New York, NY, USA (1996)
115(5), 635648 (2011)
7. Gelfand, N., Ikemoto, L., Rusinkiewicz, S., Levoy, M.: Geometri-
29. Witkin, A.P.: Scale-space filtering. In: Proceedings of the Eighth
cally stable sampling for the ICP algorithm. In: Fourth International
international joint conference on Artificial intelligence - Volume
Conference on 3D Digital Imaging and Modeling (3DIM) (2003)
2, IJCAI83, pp. 10191022. Morgan Kaufmann Publishers Inc.,
8. Habbecke, M., Kobbelt, L.: A Surface-Growing Approach to Multi-
San Francisco, CA, USA (1983)
View Stereo Reconstruction. Computer Vision and Pattern Recog-
30. Woo, M., Neider, J., Davis, T., Shreiner, D.: OpenGL Programming
nition, 2007. CVPR 07. IEEE Conference on pp. 18 (2007)
Guide: The Official Guide to Learning OpenGL, Version 1.2, 3rd
9. Izadi, S., Kim, D., Hilliges, O., Molyneaux, D., Newcombe, R.,
edn. Addison-Wesley Longman Publishing Co., Inc., Boston, MA,
Kohli, P., Shotton, J., Hodges, S., Freeman, D., Davison, A., et al.:
USA (1999)
Kinectfusion : Real-time 3d reconstruction and interaction using a
31. Young, T.: Handbook of Pattern Recognition and Image Proces-
moving depth camera. interactions p. 559568 (2011)
sing: Computer Vision. Academic Press (1994)
10. Kirk, D.B., Hwu, W.m.W.: Programming Massively Parallel Pro-
cessors: A Hands-on Approach, 1st edn. Morgan Kaufmann Pu-
blishers Inc., San Francisco, CA, USA (2010)
11. Kolb, A., Barth, E., Koch, R., Larsen, R.: Time-of-flight cameras
in computer graphics. Computer Graphics Forum 29(1), 141159
(2010)
12. Lorensen, W.E., Cline, H.E.: Marching cubes: A high resolution
3d surface construction algorithm. In: Proceedings of the 14th an-
nual conference on Computer graphics and interactive techniques,
SIGGRAPH 87, pp. 163169. ACM, New York, NY, USA (1987)

Anda mungkin juga menyukai