Post on 18-Apr-2018
Evandro Kondrat
Scanner 3D: Aquisição de pontos 3D por
raio Laser
Trabalho apresentado ao curso de
Bacharelado em Ciência da Computação da
Universidade Federal do Paraná, como
requisito parcial à obtenção do título de
Bacharel em Ciência da Computação.
Orientador:
Bruno Müller Junior
Universidade Federal do Paraná
Curitiba
2011
2
Resumo
A proposta desse trabalho é apresentar uma técnica de aquisição de
pontos 3D de um objeto, utilizando apenas um raio laser e uma câmera
simples.
Com ajuda do laser, iremos projetar uma luz sobre o objeto a ser
reconstruído. A partir dessa luz projetada, serão calculadas equações, que
permitirão determinar as coordenadas em três dimensões dos pontos da
superfície do objeto.
Ao final demostraremos os resultados obtidos com a utilização da técnica,
para obter os pontos da superfície de um objeto exemplo.
3
Sumário 1. INTRODUÇÃO .................................................................................................................... 4
1.1. Motivação do Projeto .............................................................................................. 4
1.2. Histórico ..................................................................................................................... 5
1.2.1. Aplicações .......................................................................................................... 5
1.2.2. Técnicas de reconstrução 3D ....................................................................... 5
2. DEFINIÇÃO CONCEITUAL .............................................................................................. 8
2.1. Sistema cartesiano .................................................................................................. 8
2.2. Calibração da câmera.............................................................................................. 9
2.3. Propriedades de captura de imagem. ............................................................... 10
2.3.1. Propriedades intrínsecas ............................................................................. 11
2.3.2. Propriedades extrínsecas ............................................................................ 11
2.4. Transformando pontos 2D para 3D ................................................................... 12
2.5. Geometria analítica ................................................................................................ 12
2.5.1. Equação da reta .............................................................................................. 12
2.5.2. Equação do plano .......................................................................................... 13
2.5.3. Interseção de reta e plano ............................................................................ 13
3. O Projeto ........................................................................................................................... 14
3.1. Cenário de captura ................................................................................................. 15
3.2. Cálculo do ..................................................................................................... 16
3.3. Reconstrução 3D .................................................................................................... 17
3.3.1. Aquisição de dados ....................................................................................... 17
3.3.2. Alinhamento das imagens ........................................................................... 18
3.3.3. Integração das imagens ............................................................................... 19
4. Detalhes do Projeto ....................................................................................................... 20
4.1. Calibração da câmera............................................................................................ 20
4.2. Extração da informação ........................................................................................ 22
4.3. Cálculo da ............................................................................................... 22
4.4. Isolando da informação do laser sobre o objeto ........................................... 24
4.5. Obtendo pontos 3D do objeto ............................................................................. 25
4.6. Scaneando a face de um objeto ......................................................................... 26
5. Resultados obtidos ........................................................................................................ 27
6. Conclusão ........................................................................................................................ 29
7. Bibliografia ....................................................................................................................... 30
4
1. INTRODUÇÃO
Este trabalho tem como objetivo descrever um software capaz de
reconstruir um objeto 3D a partir de imagens 2D do objeto.
Existem várias técnicas de reconstrução. A que será vista neste texto utiliza
um raio laser. O laser irá projetar uma linha sobre a superfície do objeto, o
que irá destacar seus contornos. Uma câmera captura a imagem dessa
projeção, e com base na análise dessa imagem, junto com informações
sobre o posicionamento câmera e do laser [1], é possível calcular as
coordenadas 3D de pontos da superfície do objeto.
O desafio adicional é que, inicialmente não conhecemos nenhuma
informação sobre o posicionamento do laser, esta informação deverá ser
inferida com o auxílio de um plano de fundo que será utilizado na cena
juntamente ao objeto que será escaneado.
1.1. Motivação do Projeto
A motivação do projeto se deu após uma aula de Computação Gráfica.
Onde em uma pesquisa na internet encontrei o site de um sujeito chamado
David Heckner [2]. Ele oferecia um software que apenas com uma webcam
e uma ponteira laser que projeta uma luz em linha, era possível reconstruir
objetos em três dimensões. Como eu dispunha dos itens necessários,
resolvi testar o software, que em uma versão demo, é disponibilizado
gratuitamente.
Surpreendido com o excelente resultado e simplicidade de uso do mesmo,
comecei a pesquisar mais sobre o assunto e me aprofundar sobre
reconstrução 3D de imagens.
Meu trabalho se propõe a entender e reproduzir a técnica utilizada no
programa original, e também ser uma alternativa livre para reconstrução 3D
de objetos.
5
1.2. Histórico
Um problema bastante estudado na literatura computacional é a reconstrução tridimensional de objetos. Tal interesse se deve a uma variada gama de aplicações que necessitam de modelagem 3D de objetos.
1.2.1. Aplicações
Dentre as aplicações de modelos digitais 3D podemos citar:
Na área médica, a tomografia computadorizada entre outros procedimentos, a ajuda de modelos tridimensionais auxiliam a analise das superfícies estudadas e assim os médicos podem dar um diagnostico com mais exatidão [3].
Na indústria é comum a utilização de moldes, modelos ou protótipos que precisam ser digitalizados para produção em larga escala ou até mesmo para uma analise computacional. Assim como a indústria cinematográfica se utiliza de modelos reais para construção dos personagens digitais [4].
A preservação e arqueologia digital também necessitam de modelos 3D na forma digital para melhor detalhamento e fidelidade com o objeto real estudado. Além da capacidade do modelo digital ser facilmente replicável e disponibilizado em diversos centros de estudos ou até mesmo em museus digitais [5].
Além de odontologia, topografia cartográfica dentre outros. [3;6]
1.2.2. Técnicas de reconstrução 3D
A seguir será elaborada uma visão geral de algumas técnicas existentes para reconstrução 3D, com a finalidade de dar uma visão geral do assunto, no qual esse projeto se insere.
Imagens estéreo: É uma técnica que tenta reproduzir a forma que nosso cérebro usa para estimar a distancia dos objetos. São tiradas fotos de pontos de vista diferentes e com base na diferença delas é possível estimar a profundidade [7].
Digitalizador 3D: Trata-se de um dispositivo vetorial e consiste em uma espécie de braço mecânico com um sensor de toque na ponta. A cada vez que o sensor atinge um ponto na superfície de um objeto, a coordenada deste ponto em relação a um ponto referencial (origem) é transmitida ao computador. A captura é feita ponto a ponto, por esse motivo o resultado é bem preciso, mas extremamente demorado [8].
6
Luz estruturada: É projetado um padrão de luz sobre a superfície do objeto e um sensor captura a imagem do objeto com o padrão projetado. Conhecendo a geometria entre o sensor e o feixe de luz padronizado é possível fazer a reconstrução do pedaço do objeto observado [9].
Varredura Laser: Existem duas variantes que utilizam laser para reconstrução 3D.
o Um baseado em LIDAR (Light Detection And Ranging) que estima a distância baseado no tempo que a luz leva para refletir no objeto e voltar ao sensor [10].
o A outra a técnica é similar ao da luz estruturada. O raio laser projeta um padrão de luz. E conhecendo esse padrão, juntamente com a posição da câmera e do laser, é feita uma triangulação para se obter as coordenadas da superfície [1].
Figura 1: Digitalizador 3D desenvolvido pela FaroArm [8]
Figura 2: Exemplo de luz estruturada [9]
7
Este trabalho utiliza uma variação da ultima técnica citada. Como já
mencionamos inicialmente não conhecemos nenhuma informação sobre o
posicionamento do laser. Sem essa informação, não é possível fazer tal
triangulação. Por isso, faremos uso de um plano de fundo conhecido na
imagem para inferir o posicionamento do laser. [2;11]
Figura 3: Exemplo de triangulação com laser [20]
8
2. DEFINIÇÃO CONCEITUAL
Para o desenvolvimento do projeto, é necessário que se entenda o sistema
cartesiano usado (seção 2.1), o que é calibração da câmera (seção 2.2) e quais
propriedades ela visa obter (seção 2.3). Como podemos transformar um ponto
2D para 3D (seção 2.4) e um embasamento em geometria analítica e espacial
(seção 2.5).
2.1. Sistema cartesiano
Para entender como o projeto funciona, é importante compreender o sistema
de coordenadas que ele utiliza.
Primeiro as coordenadas dos pontos que são obtidas das imagens
capturadas, exemplificada na Figura 4.
Depois, definimos um sistema de coordenadas para representar as
coordenadas do mundo real, como podemos observar na Figura 5.
Figura 4: Sistema de coordenadas de uma imagem
9
É em relação a este sistema cartesiano que todas as coordenadas,
equações e pontos da superfície do objeto vistos ao longo desse projeto serão
calculados.
2.2. Calibração da câmera
Tem como objetivo, descrever uma correspondência entre as coordenadas
do espaço objeto 3D (mundo real) e pontos da imagem (2D).
Essa correspondência se dá por uma função
Essa função pode ser escrita como a multiplicação das propriedades
intrínsecas e extrínsecas. [12;13] (que serão abordadas nas seções 2.3.1
e 2.3.2)
Figura 5: Sistema de coordenadas
Figura 6: Correspondência de coordenadas
10
Para fazer essa associação, devemos conhecer n pontos no mundo real e
saber as coordenadas destes pontos, na imagem.
Para conseguir fazer isso, usamos uma imagem com um padrão de pontos
conhecidos.
A câmera deve ser fixada de forma que não se mova durante a execução
de todo o processo de captura das imagens. Isso garante que as
propriedades extrínsecas permaneçam as mesmas durante a execução do
projeto.
Uma vez fixada, a calibração da câmera precisa ser feita apenas uma vez.
Quando realizada com sucesso, retorna três matrizes. A intrínseca,
rotação e translação, que juntas formam a função de correspondência da
Figura 6.
2.3. Propriedades de captura de imagem.
Quando uma câmera captura uma foto, precisamos ter em mente que a
imagem resultante é a projeção da imagem real ( ), no sensor de captura
dentro da câmera ( ) como podemos ver no diagrama da Figura 7.
Figura 7: Modelo geométrico de uma câmera [14]
11
As informações sobre como a imagem é projetada na câmera podem ser
divididas em duas propriedades [14]: Intrínsecas e extrínsecas, que são
obtidas através de um processo chamado calibração da câmera. Os quais,
veremos a seguir.
2.3.1. Propriedades intrínsecas
São as propriedades sobre a geometria interna da câmera, uma vez
medidos, não se alteram [12].
São elas, distância focal e centro óptico.
Essas informações serão armazenadas numa matriz com o seguinte
formato:
100
0
0
cyfy
cxfx
Onde são as distancias focais nos respectivos eixos e definem
o centro óptico da projeção.
2.3.2. Propriedades extrínsecas
São as propriedades da perspectiva que imagem foi capturada, em relação
a um referencial.
Tem como finalidade estimar as posições e rotações da câmera em relação
ao sistema de coordenadas do espaço objeto. Pode ser determinada por
um modelo que relaciona os pontos na imagem com pontos no espaço
objeto. Em geral usa-se um padrão conhecido na imagem como referencia,
para fazer a relação entre os pontos [14].
Essas propriedades variam conforme a mudança de posição da câmera em
relação à imagem observada.
São usadas duas matrizes para armazenar respectivamente, as
propriedades de rotação e translação da câmera em relação a uma
referência. Como em geometria analítica, as matrizes representadas da
seguinte forma [12]:
12
333231
232221
131211
rrr
rrr
rrr
R E
3
2
1
t
t
t
T
2.4. Transformando pontos 2D para 3D
É essa transformação que o projeto espera conseguir. Transformar pontos de
uma imagem para um sistema cartesiano de três dimensões.
O problema é que quando analisamos um ponto especifico em uma imagem,
temos apenas duas informações . E precisamos mapear esse ponto da
imagem, para o sistema cartesiano visto anteriormente.
Como vimos na calibração da câmera (seção 2.2), existe uma função que
converte pontos . Mas ela não é bijetora, logo não temos uma função
. Isso acontece porque quando representamos o mundo real em uma
imagem 2D, há perda de informação.
Para tornar essa transformação possível, temos duas alternativas. Ter
informação adicional sobre os pontos em e assim suprimos a perda de
informação que ocorre na representação do mundo real em uma imagem.
Ou podemos arbitrar valores na função de correspondência, a fim de
transforma-la em uma função bijetora.
O projeto utiliza as duas alternativas mais adiante serão explicado como
esses valores são arbitrados e também como extraímos informações
adicionais sobre os pontos.
2.5. Geometria analítica
Como a técnica utilizada nesse texto envolve o cálculo de retas (seção 2.5.1)
do raio laser projetadas sobre planos (seção 2.5.2) e também suas
intersecções (seção 2.5.3), faremos aqui uma breve revisão dos principais
conceitos de geometria analítica que serão utilizados ao longo do texto.
2.5.1. Equação da reta
Para o espaço tridimensional são consideradas três coordenadas . A
determinação da equação de uma reta nesse espaço tem as mesmas
13
características que a equação da reta no espaço , diferenciando apenas no
número de coordenadas.
É definida através de dois pontos distintos. E pode ser escrita na forma [15]:
2.5.2. Equação do plano
O plano é um subconjunto do espaço de tal modo que quaisquer dois
pontos desse conjunto pode ser ligado por um segmento de reta inteiramente
contida no conjunto.
Há diversas formas de se determinar a equação do plano, nesse trabalho ele
será determinado através de três pontos distintos e não lineares.
Esse plano pode ser representado por uma equação na forma [15]:
2.5.3. Interseção de reta e plano
A intersecção entre uma reta e um plano é um ponto no , como vemos
na Figura 8.
Para determinar as coordenadas desse ponto, basta resolvermos o sistema
linear composto pela equação da reta e pela equação do plano .
Figura 8: Interseção de reta e plano
14
3. O Projeto
Este projeto se propõe a demostrar uma forma de se obter pontos
tridimensionais da superfície de um objeto, utilizando uma técnica de varredura
laser de curta distância e de baixo custo.
Uma técnica bastante conhecida [1] consiste em fazer uma triangulação entre
câmera, laser e objeto para se calcular a distancia da superfície do objeto com
a câmera ( ) como vemos no esquema da Figura 9.
O problema, é que para ser aplicada, precisa-se conhecer a distância e ângulo
de inclinação do laser em relação à câmera. Isso implica no uso de algum
mecanismo ou equipamento que provenha essa relação do laser com a
câmera.
O que estamos propondo aqui é que o laser possa ser manuseado livremente
em relação à câmera, e que qualquer mecanismo adicional deve ser obtido
através da imagem que a câmera captura.
Mas como dito anteriormente, uma imagem não tem toda a informação
necessária para reconstruir um objeto em três dimensões. E para obter a
informação restante, iremos analisar a deformação que linha do laser sofre,
quando projetada sobre a superfície do objeto.
Nessa análise, precisamos ter alguma referência, para poder comparar o que
seria a projeção normal da linha com sua projeção deformada na superfície.
Essa referência sobre a projeção do laser é obtida através de um plano de
fundo, também conhecido como cenário, previamente preparado atrás do
objeto.
Figura 9: Esquema de triangulação [1]
15
Veremos a seguir como deve ser preparado o cenário de captura de imagens
(seção 3.1), porque que esse cenário nos ajuda a calcular o que chamamos de
f dos pontos (seção 3.2) e explicar o que é reconstrução 3D (seção 3.3)
assim como o que esperamos conseguir fazer.
3.1. Cenário de captura
O cenário de captura deve ser preparado de forma que a câmera capture
simultaneamente, além do objeto a ser scaneando, um plano de fundo com
uma posição específica.
O plano de fundo foi escolhido de forma que seus eixos coincidam com o
sistema cartesiano escolhido para o projeto. Na Figura 10 temos um esquema
de como deve ficar cenário de captura.
O fundo é composto por dois planos perpendiculares. A projeção do laser pode
ser interpretada como sendo um plano, e a equação formada por esse plano,
chamaremos de .
No canto inferior direito do esquema, temos a representação da imagem
capturada pela câmera. Sobre essa imagem, temos uma função chamada
Figura 10: Esquema do cenário
16
, que dado um qualquer na imagem capturada, retorna o onde o pixel
formado por é um dos pontos da linha laser na imagem.
O objeto a ser escaneado deve ficar entre o plano de fundo e o laser, de forma
que a possa interceptá-lo.
O ponto é o ponto real representado por na imagem capturada. A reta
imaginária formada por esses dois pontos, chamamos de ou
simplesmente . O ponto representa a projeção que o laser no ponto
teria se não tivesse sido interceptada pelo objeto.
A intersecção entre a e nos dará as coordenadas no do
ponto .
3.2. Cálculo do
Agora vamos mostrar, o porquê que conhecer o fundo é importante para que
possamos calcular o dos pontos laser na imagem.
Como vemos na Figura 11, um que intercepte o fundo a esquerda,
passará pelo ponto .
Logo, podemos eliminar da fórmula de correspondência (seção 2.2) as
transformações relativas ao eixo :
Figura 11: Visão transversal do cenário
17
Obtendo:
[ ] [
] [
] [ ]
Manipulando algebricamente a equação, teremos:
[ ] ([
] [
])
[ ]
Assim temos uma função de transformação para todos os pontos
onde o eixo é zero.
De forma análoga, obtemos uma função para todos os pontos onde o
eixo é zero.
Com essas duas funções, é possível calcular as coordenadas dos pontos
, e, portanto calcular a equação da reta formada entre eles, obtendo
assim o chamado .
3.3. Reconstrução 3D
Quando falamos de reconstrução 3D, temos que ter em mente que a
reconstrução completa de um objeto envolve três etapas [16]: a aquisição de
pontos de profundidade, o alinhamento das imagens e a integração das
imagens.
Como as etapas são bastante distintas, esse trabalho limitou-se a fazer apenas
a primeira etapa, aquisição de pontos de profundidade. As demais etapas
seguem outra linha de pesquisa que envolve computação gráfica e podem ser
vistas em trabalhos relacionados à área [2;17].
Esse capítulo fará apenas uma breve introdução de todas as etapas que
envolvem a reconstrução.
3.3.1. Aquisição de dados
Consiste na utilização de algum meio ou dispositivo para digitalizar um objeto.
Gerando geralmente uma malha de pontos ou polígonos. De modo que essa
malha consiga traduzir a profundidade da superfície analisada, por isso
também é chamada de mapa de profundidade.
É esse mapa de profundidade que este projeto visa gerar e que será
explicado detalhadamente no capítulo 4.
18
3.3.2. Alinhamento das imagens
Por mais que existam diversas formas de se fazer a aquisição dos dados, em
geral, todas elas só podem varrer o objeto a partir de uma única direção.
Por isso que a aquisição de dados precisa ser feita de diferentes pontos de
vista, de modo que seja possível adquirir toda a superfície do objeto.
Ao final, é preciso que esses dados sejam alinhados para que formem um
objeto único. Esse processo também é chamado de registro.
Como vemos na Figura 12, temos um objeto em que os pontos foram adquiridos
de 4 pontos de vista diferentes, o alinhamento visa agrupar todas as vistas em
uma única formação, visto na Figura 13. Nesta figura, as cores indicam quais
imagens da Figura 12 foram usadas para gerar a composição de cada pedaço da
Figura 13.
As técnicas de solução para esse problema consistem em achar
transformações nas diferentes vistas para achar o alinhamento correto ou que
resulte no menor erro possível [16].
Figura 12: Objeto adquirido sob vários pontos de vista [2]
Figura 13: Vistas alinhadas [2]
19
3.3.3. Integração das imagens
Após o alinhamento das imagens ainda é possível observar pequenas
imperfeições, buracos e distorções.
A integração é a etapa que tenta recriar a superfície do objeto a partir dos
pontos obtidos, o mais fielmente possível.
Comparando a Figura 13 com a Figura 14, podemos ver que os pontos foram
suavizados deixando a superfície mais lisa, buracos foram preenchidos e que
todas as vistas agora fazem parte de um único objeto.
Figura 14: Objeto recriado após a integração [2]
20
4. Detalhes do Projeto
Esse capítulo descreve como o projeto foi desenvolvido detalhadamente.
O passo a passo do processo consiste em:
1. Calibração da câmera.
2. Posicionamento do laser sobre uma parte do objeto.
3. Extração da informação do laser no frame
4. Cálculo da .
5. Isolamento da informação do laser sobre o objeto
6. Obtendo pontos 3D do objeto
7. Armazenar as coordenadas obtidas.
8. Voltar ao passo 2 até que toda a superfície do objeto seja
escaneada.
Ao final do processo, devemos ter a malha de pontos de uma face do objeto
que corresponde à seção 3.3.1 vista anteriormente.
4.1. Calibração da câmera
A calibração da câmera, como visto na seção 2.2, tem como objetivo
extrair as propriedades intrínsecas e extrínsecas da câmera. Como a
biblioteca OpenCv [12] já tem procedimentos para extrair estas informações
usando um padrão xadrez, esse padrão foi adotado (Figura 15). Esse padrão foi
projetado sobre duas paredes com um ângulo de 90º entre si a fim de
maximizar a percepção de profundidade da imagem capturada.
Figura 15: Padrão xadrez usado na calibração
21
A função cvDrawChessboardCorners(), detecta e retorna uma lista com as
coordenadas dos pontos de interseção dos quadrados do tabuleiro
xadrez, na imagem.
No exemplo da Figura 16, o ponto nº 30 corresponde às coordenadas
na imagem e ao ponto do modelo de coordenadas 3D adotado.
Para cada um dos 48 pontos marcados na imagem, foi dada, arbitrariamente,
uma coordenada R³ associada.
Com base nesse mapeamento, a função cvCalibrateCamera2() calcula as
propriedades intrínsecas do sistema e a cvFindExtrinsicCameraParams2() as
propriedades extrínsecas.
Como dito anteriormente, esse processo é feito apenas uma vez, pois
assumimos que a câmera ficará fixa durante o resto do processo.
Figura 16: Lista de corners
Figura 17: Testando a função de correspondência
22
Para verificar a precisão da função de correspondência, fizemos um teste.
Mapeamos pontos 3D em uma imagem 2D. Os pontos escolhidos foram as
interseções entre os quadrados do tabuleiro. O resultado desse teste pode ser
visto na Figura 17, onde os círculos em vermelho indicam os pontos mapeados.
Como pode ser observado, esse mapeamento envolve certo erro.
4.2. Extração da informação
Após a calibração o laser deve ser posicionado sobre a cena. Essa etapa visa
discretizar a imagem de modo que apenas a informação sobre a posição da
linha do laser seja relevante. Todos os outros elementos da imagem são
desnecessários.
De cada imagem analisada (Figura 18- a), isolamos o laser do resto da imagem.
Isso é feito, selecionando o espectro de cor vermelha na imagem. (Figura 18- b)
Como vemos (Figura 18 – a, b) o laser dispersa um pouco e a linha fica um
pouco espessa.
Para facilitar a utilização dessa informação mais adiante, defini que para cada
na imagem deveríamos ter apenas um a ele associado.
Por isso, pegamos a imagem com o laser isolado (Figura 18 - b) e tiramos a
média da altura dos pixels brancos. Como resultado temos apenas o pixel
central da linha (Figura 18 – c).
Como resultado final dessa etapa temos uma função que retorna a altura dos
pixels laser para cada pixel horizontal na imagem.
a mesma função esquematizada na Figura 10.
4.3. Cálculo da
Como vimos anteriormente, a luz projetada pela linha laser faz parte de um
plano. Para calcular sua equação, precisamos de três pontos distintos que
pertençam a esse plano.
Figura 18: Foto original (a); Isolado o laser da imagem original (b); Laser com espessura de um pixel (c)
23
Assim, com auxílio da função selecionamos três pontos aleatórios
distintos da linha laser (pontos vermelhos na Figura 19). Assumimos que eles
são não lineares. Assumimos também que eles estejam refletindo no plano de
fundo (e não no objeto), porque como vimos em 3.2 apenas temos uma
relação quando os pontos estão no eixo .
Com os três pontos selecionados, podemos calcular a .
Uma vez calculada a , podemos projetar os pontos do plano que
deveriam corresponder aos do laser. (pontos azuis na Figura 19)
Para validar essa equação, defini empiricamente um método que consiste em:
Se ao menos 40% de todos os pontos retornados pela função
pertencerem a equação do plano, significa que, o que assumimos era
verdadeiro, senão devemos selecionamos outros três pontos e repetimos o
processo.
Na pratica isso é visto como, para ser obtida uma equação válida, o objeto
não pode cobrir mais que 60% da imagem.
Quanto maior a porcentagem do objeto na imagem, menos precisa é a
equação calculada. Isso porque, quanto maior o objeto, menos luz é projetada
no fundo e assim temos menos pontos para verificar a validade da equação
do plano.
Como vemos na Figura 19, na esquerda, os três pontos selecionados
resultaram em uma bem diferente da projetada pelo laser.
Isso aconteceu por que os pontos selecionados são muito próximos e,
portanto não são completamente linearmente independentes e/ou não
pertencem ao plano de fundo, como assumimos.
Figura 19: Equação projetada na imagem
24
À direita, vemos o resultado de uma que traduz quase fielmente a
equação real do laser.
4.4. Isolando da informação do laser sobre o objeto
Depois de calibrada a câmera e de compreendido o método de obtenção da
equação do plano formado pelo laser, o próximo passo é obter informação
sobre o objeto que será escaneado.
Vamos lembrar que o processo de escaneado envolve analisar uma
sequencia de vídeo, e que para cada frame analisado, espera-se que o laser
intercepte duas coisas diferentes simultaneamente:
O fundo, como vimos anteriormente (seção 4.3) sem isso, não seria
possível obter a .
O objeto, o laser tem que interceptar também o objeto que esperamos
mapear, sem isso não teríamos a informação adicional para reconstruí-
lo.
Na Figura 20, podemos ver um exemplo, onde três pontos da linha laser que
intercepta o objeto foram selecionados (marcação em verde).
Para mapear o objeto com fidelidade, devemos selecionar o maior número de
pontos quanto possível, isto é, o ideal seria selecionar todos os pontos do
laser que interceptam o objeto para cada imagem. O desafio aqui é separar o
laser que intercepta o fundo, do que intercepta o objeto.
Figura 20: Selecionando alguns pontos que interceptam o objeto
25
Como vemos na Figura 21, do frame da Figura 20, extraímos toda informação da
linha do laser (seção 4.2) e com base na , descartamos a informação,
que não é pertinente ao objeto. Nesse caso, onde o laser intercepta o fundo já
foi usado para calcular a , e nesse ponto não é mais necessário.
Desse processo, restam apenas os pontos onde o laser intercepta o objeto
(Figura 21 -b).
4.5. Obtendo pontos 3D do objeto
Nessa etapa, já conhecemos a , os pontos laser que interceptam o
objeto (seção 4.4) e também como calcular os formados por cada um
desses pontos (seção 3.2). Com isso, temos toda a informação necessária
para obter pontos 3D do objeto na imagem.
Agora, basta calcular a intersecção dos formados por cada ponto na
imagem que reflete no objeto com a obtida anteriormente.
Figura 21: Informação extraída do frame da Figura 20 (a); Pontos relativos apenas ao objeto scaneando (b);
Figura 22: As coordenadas do objeto são calculadas para cada ponto do laser que o intercepta. (pontos em verde)
26
A Figura 22 mostra a imagem de um frame, em azul está a projeção do plano do
laser ( ), em verde são todos os pontos onde o laser intercepta o objeto.
Para cada um desses pontos será calculada sua coordenada 3D com base na
intercessão de seu feixe com a .
4.6. Scaneando a face de um objeto
O processo que acabamos de explicar detalha o passo a passo para obter as
coordenadas do objeto de uma imagem. Devemos lembrar que só é possível
recuperar as coordenadas dos pontos onde o laser passa sobre. Se
quisermos mapear toda a face de um objeto, devemos passar o laser por toda
a superfície do mesmo. Para tanto, o processo acima deve ser repetido até
que o laser tenha percorrido todo o objeto.
Não há diferenças entre o processo realizado em uma imagem ou em vídeo.
Com exceção da já explicada, calibração da câmera (seção 4.1), que é
realizada apenas no inicio.
Com os movimentos do laser sobre o objeto, a e dos pontos se
alteram, então a cada frame todos os outros passos tem que ser recalculados.
Ao final, espera-se que o os pontos calculados formem uma malha de
profundidade que seja o mais fiel possível do objeto escaneado.
27
5. Resultados obtidos
Para realização dos testes, foi utilizada uma webcam com resolução de
640x480, com foco ajustável. A mesma que foi utilizada para as capturas das
imagens que vimos até aqui.
Para ilustrar o processo, vamos mostrar o resultado do escâner de um frasco
de desodorante sobre um cubo. Os objetos foram pintados de branco a fim de
facilitar a reflexão do laser. Foi gravado um vídeo de um minuto, onde o laser
tenta percorrer toda a superfície dos objetos.
Os pontos obtidos foram armazenados linha a linha em um arquivo de texto e
visualizados com o auxílio de um software chamado ArcBall [18].
O ArcBall é um software usado para visualização de pontos em três
dimensões. Ele usa como entrada um arquivo texto onde cada linha representa
um ponto. Os pontos são plotados na tela de forma que com o auxílio do
mouse o usuário possa alterar o ponto de vista que visualiza os pontos.
Na Figura 24 e Figura 25, podemos ver a projeção dos pontos obtidos no
software ArcBall sob vários ângulos. Com elas temos uma boa dimensão da
qualidade do resultado final.
Figura 23: Frasco de desodorante que foi escaneado
28
Podemos observar alguns pontos interessantes sobre o resultado.
Alguns pontos do fundo foram contabilizados como sendo objeto;
Provavelmente devido à imperfeição e ondulações no plano de fundo.
Objeto no centro da imagem tem mais pontos detectados; observem que
a ponta do cubo quase não foi localizada.
Ficam nítidas nas laterais do cubo, linhas de pontos; O que prova que
elas vêm das linhas do laser.
Nos pontos que ficam na direção da quina dos planos de fundo,
observasse uma grande falha de pontos e pontos dispersos;
Provavelmente a função que calcula os feixes dos pontos (seção 3.2)
não consegue tratá-los corretamente nessa região.
No resultado exemplificado, foi obtido um total de 33 mil pontos.
Figura 24: Visão da direita; frontal; esquerda do objeto.
Figura 25: Visão de cima dos pontos
29
6. Conclusão
Esse trabalho mostra que a aquisição de dados da superfície de um objeto
através da técnica de varredura laser, com o laser sendo movimentado
livremente, é uma técnica viável e simples.
Superado os desafios matemáticos e conceituais, a implementação da técnica
é de relativa facilidade. Os resultados demonstraram-me uma qualidade acima
do que esperava no início do projeto.
Alguns pontos não condizem com o objeto escaneado, Mas devemos lembrar
que todo o processo foi automático. Em alguns quadros era notório que a
equação do plano calculada estava equivocada. Esse equívoco, na maioria
das vezes, ocorreu na seleção dos três pontos que dão origem a equação do
plano. Um refinamento no código certamente diminuiria essas distorções, mas
também elevaria o tempo gasto no cálculo. Assim como utilização de
algoritmos mais robustos como o ransac [19] poderiam melhorar a precisão
das equações calculadas.
Mas como o objetivo se focou em demostrar o funcionamento da técnica, o
código foi escrito em linguagem de alto nível (python), por isso o desempenho
ficou um pouco prejudicado. A biblioteca OpenCv suporta a linguagem C,
então esta linguagem deve ser preferida se quisermos obter mais
desempenho.
Acredito que, por ser uma técnica de fácil utilização e de baixo custo, é uma
alternativa viável para aquisição de pontos tridimensionais a curta distância. O
refinamento e melhora do código podem aumentar a precisão e em condições
ideais o erro pode ficar abaixo dos 0,4 mm [2].
Trabalhos futuros podem seguir as ideias aqui citadas, ou até mesmo explorar
as outras etapas da reconstrução 3D que não foram abordadas nesse projeto.
30
7. Bibliografia
1. A Simple Surface Mapping Technique using Laser Triangulation Method. Tjie Hok Hoo, Mohd
Rizal Arshad. Jakarta, Indonesia : ICOLA, 2002.
2. Heckner, David. David 3D Lasser. [Online] http://www.david-laserscanner.com.
3. O USO DA PROTOTIPAGEM RÁPIDA NA ÁREA MÉDICO-ODONTOLÓGICA. Foggiatto, José
Aguiomar. Tecnologia & Humanismo, 2006.
4. Desenvolvimento de Jogos 3D: Concepção, Design e Programação. Esteban Walter Gonzalez
Clua, João Ricardo Bittencourt. São Leopoldo : Congresso da sociedade brasileira de
computação, 2005.
5. Museu Virtual 3D. Grupo Imago. [Online] [Citado em: 01 de Novembro de 2010.]
http://www.imago.ufpr.br/museu3d/.
6. Engenharia Geográfica, FCUP. Fotogrametria Geográfica. [Online] [Citado em: 10 de
dezembro de 2010.] http://www.fc.up.pt/lic_eg/fotogrametria.html.
7. José, Marcelo A. Reconstrução Tridimensional de Baixo Custo a Partir de Par de Imagens
Estéreo. 2008, Vol. Dissertação de Mestrado na Escola Politécnica da USP.
8. FaroArm. [Online] [Citado em: 1 de Novembro de 2010.]
http://www.faro.com/FaroArm/Home.htm.
9. Li Zhang, Brian Curless, and Steven M. Seitz. Rapid Shape Acquisition Using Color Structured
Light and Multi-pass Dynamic Programming. 2002.
10. Wikipedia. LIDAR (Light Detection And Ranging). [Online] [Citado em: 10 de dezembro de
2010.] http://en.wikipedia.org/wiki/LIDAR.
11. Low-Cost Laser Range Scanner and. Simon Winkelbach, Sven Molkenstruck, Friedrich M.
Wahl. : DAGM, 2006.
12. Camera Calibration and 3D Reconstruction. [Online] [Citado em: 18 de Novembro de 2010.]
http://opencv.willowgarage.com/documentation/camera_calibration_and_3d_reconstruction.
html.
13. Tsai, R.Y. A versatile camera calibration technique for high-accuracy 3D machine vision
methodology using off-the-shelf TV cameras and lenses. IEEE. 1987.
14. Polidório, Bortolozzi, Figueiredo. Calibração geométrica de câmeras, aplicando o método
dos. ISSN. 1998.
15. Venturi, Jacir J. Álgebra Vetorial e Geometria Analítica. s.l. : 9ª Edição.
16. Albuquerque, Landecir Alves de. Alinhamento de imagens de profundidade na
reconstrução 3D de objetos de forma livre. Dissertação de mestrado - Universidade de Brasília,
2006.
31
17. Luciano Silva, Olga R. P. Bellon and Kim L. Boyer. Robust Range Registration by Combining
GAs and the SIM . 2005, Vol. World Scientific.
18. Shoemake, Ken. ARCBALL: a user interface for specifying three-dimensional orientation
using a mouse. 1992, Vol. Proceedings of the conference on Graphics interface.
19. Bolles, Martin A. Fischler and Robert C. Random Sample Consensus: A Paradigm for Model
Fitting with Applications to Image Analysis and Automated Cartography. 1981, Vol. ACM .
20. Scanner 3D. [Online] [Citado em: 1 de Novembro de 2010.]
http://en.wikipedia.org/wiki/3D_scanner.