Scanner 3D: Aquisição de pontos 3D por - PDF
Download "Scanner 3D: Aquisição de pontos 3D por"
Maria das Dores Bennert Wagner
1 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 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 3 Sumário 1. INTRODUÇÃO Motivação do Projeto Histórico Aplicações Técnicas de reconstrução 3D DEFINIÇÃO CONCEITUAL Sistema cartesiano Calibração da câmera Propriedades de captura de imagem Propriedades intrínsecas Propriedades extrínsecas Transformando pontos 2D para 3D Geometria analítica Equação da reta Equação do plano Interseção de reta e plano O Projeto Cenário de captura Cálculo do Reconstrução 3D Aquisição de dados Alinhamento das imagens Integração das imagens Detalhes do Projeto Calibração da câmera Extração da informação Cálculo da Isolando da informação do laser sobre o objeto Obtendo pontos 3D do objeto Scaneando a face de um objeto Resultados obtidos Conclusão Bibliografia... 30
4 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 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 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 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] 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 6 Figura 1: Digitalizador 3D desenvolvido pela FaroArm [8] 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]. Figura 2: Exemplo de luz estruturada [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].
7 7 Figura 3: Exemplo de triangulação com laser [20] 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]
8 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) Sistema cartesiano Para entender como o projeto funciona, é importante compreender o sistema de coordenadas que ele utiliza. Primeiro as coordenadas dos pontos capturadas, exemplificada na Figura 4. que são obtidas das imagens Figura 4: Sistema de coordenadas de uma imagem Depois, definimos um sistema de coordenadas para representar as coordenadas do mundo real, como podemos observar na Figura 5.
9 9 Figura 5: Sistema de coordenadas É 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 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 e 2.3.2) Figura 6: Correspondência de coordenadas
10 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 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 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 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: fx fy 0 cx cy 1 Onde são as distancias focais nos respectivos eixos e definem o centro óptico da projeção 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 12 r R r r r r r r r r E T t t t 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 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 Equação da reta Para o espaço tridimensional são consideradas três coordenadas determinação da equação de uma reta nesse espaço tem as mesmas. A
13 13 características que a equação da reta no espaço número de coordenadas., diferenciando apenas no É definida através de dois pontos distintos. E pode ser escrita na forma [15]: 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]: Interseção de reta e plano A intersecção entre uma reta e um plano é um ponto no, como vemos na Figura 8. Figura 8: Interseção de reta e plano Para determinar as coordenadas desse ponto, basta resolvermos o sistema linear composto pela equação da reta e pela equação do plano.
14 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. Figura 9: Esquema de triangulação [1] 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.
15 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 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. Figura 10: Esquema do cenário 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
16 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 Cálculo do Agora vamos mostrar, o porquê que conhecer o fundo é importante para que possamos calcular o dos pontos laser na imagem. Figura 11: Visão transversal do cenário 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 :
17 17 Obtendo: [ ] [ ] [ ] [ ] Manipulando algebricamente a equação, teremos: [ ] ([ ] [ ]) [ ] Assim temos uma função de transformação onde o eixo é zero. De forma análoga, obtemos uma função eixo é zero. para todos os pontos para todos os pontos onde o 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 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 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 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. Figura 12: Objeto adquirido sob vários pontos de vista [2] 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 13: Vistas alinhadas [2]
19 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. Figura 14: Objeto recriado após a integração [2] 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.
20 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 vista anteriormente 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 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. Figura 16: Lista de corners 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 17: Testando a função de correspondência
22 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 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. Figura 18: Foto original (a); Isolado o laser da imagem original (b); Laser com espessura de um pixel (c) 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 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.
23 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. Figura 19: Equação projetada na imagem 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.
24 24 À direita, vemos o resultado de uma equação real do laser. que traduz quase fielmente a 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. Figura 20: Selecionando alguns pontos que interceptam o objeto 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.
25 25 Figura 21: Informação extraída do frame da Figura 20 (a); Pontos relativos apenas ao objeto scaneando (b); 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) 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 imagem que reflete no objeto com a formados por cada ponto na obtida anteriormente. Figura 22: As coordenadas do objeto são calculadas para cada ponto do laser que o intercepta. (pontos em verde)
26 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 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 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. Figura 23: Frasco de desodorante que foi escaneado 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.
28 28 Figura 24: Visão da direita; frontal; esquerda do objeto. 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. Figura 25: Visão de cima dos pontos No resultado exemplificado, foi obtido um total de 33 mil pontos.
29 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 30 7. Bibliografia 1. A Simple Surface Mapping Technique using Laser Triangulation Method. Tjie Hok Hoo, Mohd Rizal Arshad. Jakarta, Indonesia : ICOLA, Heckner, David. David 3D Lasser. [Online] 3. O USO DA PROTOTIPAGEM RÁPIDA NA ÁREA MÉDICO-ODONTOLÓGICA. Foggiatto, José Aguiomar. Tecnologia & Humanismo, 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, Museu Virtual 3D. Grupo Imago. [Online] [Citado em: 01 de Novembro de 2010.] 6. Engenharia Geográfica, FCUP. Fotogrametria Geográfica. [Online] [Citado em: 10 de dezembro de 2010.] 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.] 9. Li Zhang, Brian Curless, and Steven M. Seitz. Rapid Shape Acquisition Using Color Structured Light and Multi-pass Dynamic Programming Wikipedia. LIDAR (Light Detection And Ranging). [Online] [Citado em: 10 de dezembro de 2010.] Low-Cost Laser Range Scanner and. Simon Winkelbach, Sven Molkenstruck, Friedrich M. Wahl. : DAGM, Camera Calibration and 3D Reconstruction. [Online] [Citado em: 18 de Novembro de 2010.] 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 Polidório, Bortolozzi, Figueiredo. Calibração geométrica de câmeras, aplicando o método dos. ISSN 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 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.]