DOI 10.1007/s00002-012-0002-5
GENERIC ARTICLE
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
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
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.
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.
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.
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.
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
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)