• Nenhum resultado encontrado

Um Estudo das Técnicas de Obtenção de Forma a partir de Estéreo e Luz Estruturada para Engenharia

N/A
N/A
Protected

Academic year: 2021

Share "Um Estudo das Técnicas de Obtenção de Forma a partir de Estéreo e Luz Estruturada para Engenharia"

Copied!
83
0
0

Texto

(1)

Gabriel Tavares Malizia Alves

Um Estudo das Técnicas de Obtenção de

Forma a partir de Estéreo e Luz Estruturada

para Engenharia

Dissertação de Mestrado

Dissertação apresentada como requisito parcial para a obtenção do Título de Mestre pelo Programa de Pós-Graduação de Informática da PUC-Rio.

(2)
(3)
(4)

Agradecimentos

A Deus, nosso Pai de amor infinito, por viver, aprender, compartilhar, errar e consertar, sempre seguindo em frente.

À minha família. Em especial aos meus pais Nelson Malizia Alves e Maria Alzemira Tavares de Oliveira. Tudo que sou e conquistei é fruto de seus muitos anos de dedicação e apoio. Se Deus concede aos pais a missão de criar os seus filhos, dando amor, educação, ensinamentos e bons exemplos para que estes tenham todas as condições para se tornarem homens de bem, então meus pais cumpriram a sua missão com louvor.

À minha namorada Maraísa Martinha Gambarra, pelo carinho e companheirismo ao longo destes dois anos juntos.

Ao meu orientador e Professor Marcelo Gattass pelos importantes conhecimentos adquiridos. Em especial pelas aulas que transmitiram grande experiência de um mestre com anos de estrada, organização e entusiasmo de quem realmente gosta do que faz.

Ao Professor Paulo Cezar Coelho, pessoa de grandes conhecimentos, pelos importantes sugestões dadas ao trabalho.

Aos Professores de Mestrado Bruno Feijó, Clarisse Sieckenius de Souza, Luiz Henrique de Figueiredo, Ruy Luiz Milidiú e Waldemar Celes Filho por tudo que aprendi ao longo destes dois anos e que certamente foi base deste trabalho e de outros.

A Anselmo Antunes Montenegro e Asla Medeiros e Sá pelas importantes contribuições dadas a este trabalho.

À CAPES pelo importante apoio financeiro e ao Departamento de Informática da PUC-RIO pela oportunidade de estudar nesta unidade que continua a estabelecer os parâmetros de excelência em ensino e pesquisa no Brasil.

(5)

Aos amigos e colegas, de mestrado e do Tecgraf, Calomeni, Felipe, Gustavo, Hedlena, Manuel, Márcio Henrique, Marcos, Michel, Rodrigo, Romano e Tiago pelos bons momentos vividos juntos, apoio e amizade.

Aos meus coordenadores do Tecgraf Alberto Barbosa Raposo, Carlos Cassino e Eduardo Thadeu Leite Corseuil pelas oportunidades de crescimento profissional, projetos desenvolvidos e conhecimentos transmitidos.

(6)

Resumo

Malizia, Gabriel; Gattass, Marcelo (Orientador); Carvalho, Paulo Cezar (Co-orientador); Um Estuda das Técnicas de Obtenção de Forma a partir de Estéreo e Luz Estruturada para Engenharia; Rio de Janeiro, 2005. 82p. Dissertação de Mestrado – Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro.

Há uma crescente demanda pela criação de modelos computacionais representativos de objetos reais para projetos de engenharia. Uma alternativa barata e eficaz consiste na utilização de técnicas de Visão Computacional baseada em câmeras e projetores disponíveis no mercado de computadores pessoais.

Este trabalho avalia um sistema óptico estéreo ativo para capturar formas geométricas de objetos utilizando um par de câmeras e um projetor digital. O sistema se baseia em idéias de trabalhos anteriores, com duas contribuições nesta dissertação. A primeira é uma técnica mais robusta de detecção de pontos notáveis em padrões de calibração das câmeras. A segunda contribuição consiste num novo método de ajuste de cilindros que visa aplicar o sistema estudado na inspeção de instalações de dutos industriais.

As conclusões apresentadas procuram avaliar a robustez e precisão do sistema proposto como um instrumento de medidas em Engenharia.

Palavras-Chave

Luz estruturada, mapa 3D estéreo, calibração de câmera coplanar, reconhecimento de formas.

(7)

Abstract

Malizia, Gabriel; Gattass, Marcelo (Supervisor); Carvalho, Paulo Cezar (Co-supervisor); A Study of Techniques for Shape acquisition using Stereo and Structured Light aimed for Engineering; Rio de Janeiro, 2005. 82p. M.Sc. Dissertation – Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro.

There has been a growing demand for creation of computer models based on real models for engineering projects. A cheap and effective alternative consists in using Computer Vision techniques based on cameras and projectors available at the personal computer market.

This work evaluates a stereo optic system for capturing geometric shapes from objects using a pair of cameras and a single digital projector. The system is based on former works and a pair of contributions is obtained at this dissertation. The first contribution is a more robust technique for finding corners and points at cameras calibration patterns. And the second one consists on a new method for cylinder fit for inspecting industrial piping facilities with the studied system.

The final conclusions evaluate the robustness and precision from the proposed system as a measurement tool for Engineering.

Keywords

(8)

Sumário

1 Introdução ...9

2 Visão Computacional e Obtenção de Formas ... 11

2.1 Visão Computacional ... 11

2.2 Forma a partir de Estéreo Ativo ... 12

2.2.1 Codificação Temporal ... 15

2.2.2 Codificação Espacial ... 17

2.2.3 Codificação Modulada ... 18

2.2.4 Codificação com Cores ... 19

2.2.5 Classificação dos Métodos ... 20

2.2.6 Sistema Estudado ... 22

3 Sistema Estudado ... 24

3.1 Calibração de Câmera ... 24

3.1.1 Padrão com Elipses ... 31

3.1.2 Padrão com Vértices ... 33

3.2 Luz Estruturada Codificada ... 38

3.3 Captura e Processamento de Imagem ... 41

3.4 Triangulação e Modelo Final ... 48

4 Implementação, Resultados e Testes ... 53

4.1 Implementação ... 53 4.1.1 Shaper ... 53 4.1.2 Visualizer ... 55 4.1.3 Arquivo de Saída ... 56 4.2 Resultados ... 57 4.2.1 Padrões de Calibração ... 60 4.2.2 Câmeras ... 61 4.2.3 Projetores ... 62 4.3 Testes ... 63 4.3.1 Primeiro Teste ... 63 4.3.2 Segundo Teste ... 66 5 Conclusão ... 71 5.1 Trabalhos Futuros ... 73 6 Referências Bibliográficas ... 74 Apêndice A – OpenCV ... 77

Apêndice B – Tabelas de Dados dos Testes ... 80

B.1 Primeiro Teste ... 80

(9)

1 Introdução

A Visão Computacional é uma área de pesquisa relativamente nova e que tem por objetivo estimar ou explicitar as propriedades geométricas e dinâmicas do mundo tridimensional a partir de imagens digitais. Uma das suas aplicações, estudada neste trabalho, é a aquisição de formas geométricas de objetos a partir de imagens capturadas com câmeras digitais. Comparando com outras técnicas de obtenção de formas, esta alternativa é barata e consegue alcançar bons resultados utilizando câmeras e projetores disponíveis no mercado de computadores pessoais.

Este trabalho avalia um sistema óptico para capturar formas geométricas de objetos. Para isso utilizou-se um par de câmeras, previamente calibradas, em uma configuração estérea e um projetor digital para projetar padrões de luz estruturada sobre os objetos e resolver a correlação entre as imagens das câmeras. A partir destas informações, criam-se modelos geométricos correspondentes aos objetos capturados, caracterizando o sistema como um sistema óptico estéreo ativo.

O sistema se baseia em idéias de trabalhos anteriores, com duas contribuições nesta dissertação. A primeira é uma técnica mais robusta de detecção de pontos notáveis em padrões de calibração das câmeras, com uma precisão menor do que um pixel. São apresentados dois padrões de calibração distintos, cada um com vantagens e desvantagens, que podem ser reutilizados em outras aplicações, inclusive em sistemas que trabalham em tempo real. A segunda contribuição consiste num novo método de ajuste de cilindros que visa aplicar o sistema estudado na inspeção de instalações de dutos industriais. A partir do modelo de um duto, calculam-se informações de interesse, como raio e direção. A inspeção automática é uma subárea de estudos da Visão Computacional e procura auxiliar tarefas de inspeção diminuindo o tempo gasto com rotinas repetitivas, permitindo uma investigação remota e disponibilizando ferramentas de medidas para apoio a decisões.

Assim, esta dissertação procura avaliar a robustez e precisão do sistema estudado como um instrumento de medidas em Engenharia. Ela foi organizada em cinco capítulos, incluindo este primeiro capítulo de introdução. Os demais capítulos estão

(10)

1 Introdução

O segundo capítulo dá uma descrição geral da Visão Computacional, de suas propriedades e aplicações. Depois são apresentados os conceitos teóricos da captura de formas a partir de estéreo ativo, focando nos diversos métodos de codificação de luz estruturada, seus benefícios e limitações.

No terceiro capítulo, encontra-se a descrição do sistema estudado. Cada um dos pontos do sistema é descrito, apresentando os conceitos teóricos importantes para o entendimento do trabalho: calibração de câmeras e padrões de calibração, codificação de luz estruturada utilizada, captura e processamento de imagens e triangulação para gerar o modelo final.

O quarto capítulo apresenta as duas aplicações implementadas. Em seguida são apresentados os resultados obtidos junto com as observações e comentários pertinentes. Por último apresentamos os dois testes realizados em cima da implementação do sistema.

Finalmente o quinto capítulo encerra este trabalho com uma seção de conclusão e outra recomendando possíveis trabalhos futuros. As referências bibliográficas se encontram ao final da dissertação, assim como os apêndices.

(11)

2

Visão Computacional e Obtenção de Formas

Neste capítulo são abordadas as principais propriedades e áreas de atuação da Visão Computacional e sua característica multidisciplinar. Depois são apresentados os conceitos teóricos da captura de formas a partir de estéreo ativo, focando nos diversos métodos de codificação de luz estruturada, seus benefícios e limitações.

2.1 Visão Computacional

Visão Computacional foi definida em [2], sendo o conjunto de técnicas computacionais para estimar ou explicitar as propriedades geométricas e dinâmicas do mundo tridimensional a partir de imagens.

A palavra visão está relacionada à capacidade que um ser tem de ver e entender o mundo em que habita. A imagem é formada na mente através das organizações física, química e biológica dos olhos. Em cima da visão, o cérebro realiza diversas funções. Por exemplo, em um movimento para se pegar um copo, a visão tem papel fundamental junto com a coordenação motora. Através da visão guiamos a nossa mão até o copo, encaixando os dedos no seu corpo cilíndrico. Gestos simples como esses realizamos aos milhares por dia sem nos darmos conta, porém que se tornam extremamente difíceis sem a visão, como andar. Diariamente utilizamos nossa visão para reconhecer objetos, pessoas, calcular distâncias, verificar se há buracos na rua, nuvens cinzas no céu, encontrar uma vaga livre no estacionamento etc.

O mesmo se sucede na Visão Computacional. Ao invés dos olhos, câmeras são utilizadas para se obter imagens digitais. Em cima destas imagens são aplicadas técnicas computacionais para extrair informações desejadas do mundo tridimensional. Estas informações variam muito de natureza e podem ser empregadas para variadas aplicações em diferentes áreas. Na medicina, imagens de órgãos e células são utilizadas no diagnóstico e tratamento de doenças. Na robótica a contribuição é ampla com identificação de objetos, localização, inspeção e locomoção. Há também aplicações militares para guiar mísseis e veículos através de trajetórias pré-definidas. A astronomia

(12)

2 Visão Computacional e Obtenção de Formas

utiliza imagens digitais em sistemas de inspeção industrial. Estes são alguns exemplos de áreas e aplicações onde são empregadas técnicas de Visão Computacional.

Computação Gráfica e Processamento de Imagens são duas áreas correlacionadas à Visão Computacional. De uma maneira geral, a Computação Gráfica utiliza informações, como grafos de cena, tipos de materiais, geometria dos objetos, tipo de projeção utilizada etc. para gerar imagens. A Visão Computacional faz o caminho contrário, procurando obter informações de cenas a partir de imagens digitais previamente capturadas. Para isso quase sempre faz uso de métodos de Processamento de Imagens. O interesse nestes métodos surgiu da necessidade de melhorar a qualidade da informação pictórica para a interpretação humana. Hoje em dia estes métodos são também utilizados em aplicações de Visão Computacional, de maneira que as duas áreas se confundem.

Por fim, apresentamos uma outra definição, segundo Vishvjit Nalwa [18]: a Visão Computacional visa inferir e descrever automaticamente estruturas e propriedades de um mundo 3D, possivelmente dinâmico, a partir de uma ou múltiplas imagens 2D do mundo. As imagens podem ser coloridas ou monocromáticas, captadas por um ou múltiplos sensores que, por sua vez, podem ser estacionários ou móveis.

2.2 Forma a partir de Estéreo Ativo

Uma das áreas de pesquisa da Visão Computacional é a aquisição de modelos geométricos de objetos reais a partir de imagens. O processo de se obter a forma e aparência de objetos reais, utilizando-se câmeras e luzes, é chamado de fotografia 3D. A rápida evolução de equipamentos eletrônicos, como câmeras e projetores, permite que se monte sistemas de aquisição de baixo custo e cada vez mais eficazes. Modelos geométricos de objetos reais são utilizados por diferentes áreas, tipicamente design industrial, jogos, educação, arte, arqueologia, comércio eletrônico etc. Com o advento de métodos e equipamentos, mais áreas poderão fazer uso destes modelos como, por exemplo, inspeção industrial.

Uma classificação dos métodos para aquisição de formas é dada na figura 2.1. Existem diferentes métodos ópticos para aquisição de formas, cada um com suas qualidades e limitações, tais como resolução e precisão. A escolha deve ser feita tendo

(13)

2 Visão Computacional e Obtenção de Formas

em vista o contexto de utilização. Por exemplo, modelar um navio é diferente do que modelar um carro. As principais limitações dos métodos ópticos é que estes podem obter apenas porções visíveis da superfície e são sensíveis a suas propriedades como transparência, brilho, textura, falta de cor etc. Esta dissertação está focada no estudo dos métodos ópticos, mais precisamente em métodos estéreos ativos, em destaque na figura.

Figura 2.1 – Classificação dos métodos de aquisição de formas.

Os princípios básicos utilizados pelos métodos ópticos são os mesmos da visão estéreo. Se duas câmeras observam um mesmo ponto na cena, então a sua posição pode ser obtida através da interseção dos raios correspondentes à projeção na imagem de cada câmera. Esse processo é chamado de triangulação.

A grande dificuldade de se utilizar visão estéreo para recuperar formas 3D é realizar a correspondência entre os pontos nas duas imagens. Os algoritmos que realizam esta correspondência têm dificuldades quando a cena é muito complexa ou simples demais. Por exemplo, objetos lisos e monocromáticos geram uma falta de textura nas imagens capturadas, impossibilitando o processamento da correspondência.

Uma maneira de contornar este problema é empregar o método estéreo ativo. Utilizando uma fonte de luz, a cena é marcada por padrões conhecidos. Esta fonte de luz

(14)

2 Visão Computacional e Obtenção de Formas

projetar um padrão de apenas um ponto com um dispositivo laser. Este ponto é projetado sobre o objeto, cuja forma gostaríamos de obter. Basta então encontrar este mesmo ponto nas duas imagens obtidas e fazer a triangulação posteriormente para encontrar a sua localização no espaço. Poderíamos repetir este processo deslocando o ponto de lugar para obtermos mais pontos do modelo. Porém este procedimento seria extremamente demorado. Daí a necessidade de utilizarmos luz estruturada para acelerar a velocidade de captura.

Podemos, por exemplo, projetar um padrão com vários pontos sobre a cena. Para distinguir entre os diversos pontos e realizar a triangulação, devemos codificá-los apropriadamente de maneira a identificá-los posteriormente para que o problema de correspondência possa ser feito sem ambigüidades. Assim estaremos acelerando a velocidade de captura ao aumentar o número de pontos projetados simultaneamente.

A figura 2.2 mostra um exemplo de sistema estéreo ativo utilizado em [13]. O projetor é usado para projetar padrões de luz estruturada com listras codificadas sobre a cena que é capturada por uma câmera digital.

Figura 2.2 – Exemplo de sistema estéreo ativo capturando uma cena.

Podemos utilizar duas configurações distintas. A primeira seria manter as duas câmeras, enquanto que a luz estruturada serviria para marcar o objeto com vários pontos distintos que são utilizados posteriormente na triangulação. A segunda seria utilizar uma câmera e uma fonte de luz calibrada, onde sua posição e direção de projeção são

(15)

2 Visão Computacional e Obtenção de Formas

conhecidas. A triangulação é feita entre a câmera e o projetor. Para cada ponto codificado no padrão projetado podemos traçar um raio, que sai do centro da fonte de luz, de maneira semelhante com o que fazemos com uma câmera calibrada.

Em resumo, os três passos importantes para recuperar formas com um sistema estéreo ativo são:

• Calibrar as câmeras.

• Estabelecer a correspondência entre os pontos nas imagens e os elementos dos padrões projetados.

• Reconstrução das coordenadas 3D de pontos da cena.

A calibração de câmera é tratada no próximo capítulo, assim como a reconstrução das coordenadas 3D de pontos da cena. Esta seção se concentra no segundo passo. Dois estudos foram feitos a respeito de métodos que utilizam luzes estruturadas codificadas para resolver o problema de correspondência em [21] e [10]. Esta seção foi baseada neste último e não tem por objetivo reproduzir todas as descrições de métodos de codificação de luz estruturada.

As diferentes abordagens para codificação da luz estruturada são apresentadas a seguir.

2.2.1 Codificação Temporal

A codificação temporal é o método de codificação mais utilizado pelos trabalhos atuais. A idéia principal se baseia em projetar uma seqüência de padrões onde cada elemento do padrão codifica os dígitos binários de um código. Na figura 2.2, padrões com listras são projetados sobre a cena seqüencialmente. O código binário é convertido para listras brancas e pretas. As brancas correspondem ao dígito binário um, enquanto que as listras pretas representam o dígito binário zero.

Para distinguir entre as diversas listras, deve-se codificá-las apropriadamente de maneira que o problema de correspondência possa ser resolvido sem ambigüidades. Isso é feito projetando-se uma seqüência de padrões com listras, um após o outro, em uma codificação temporal.

(16)

2 Visão Computacional e Obtenção de Formas

Figura 2.3 – Codificação temporal binária.

Os padrões são projetados em diferentes momentos, em uma seqüência definida. Cada listra em um padrão projetado corresponde a um dígito binário, de maneira que a seqüência de padrões fornece os dígitos de um código binário. Cada listra é univocamente determinada pelo seu código. A figura 2.3 mostra que a seqüência de n padrões produz 2n listras codificadas e a resolução cresce exponencialmente com o

número de padrões utilizados. Repetimos a mesma seqüência de padrões, porém com listras horizontais. No final, teremos iluminado a cena estática com 2 ×n 2n regiões,

cada uma com seu código horizontal e vertical. A figura 2.4 ilustra o aspecto de um objeto iluminado por um dos padrões da luz estruturada codificada.

(17)

2 Visão Computacional e Obtenção de Formas

Em [23] foi proposta a codificação temporal binária apresentada acima. Já em [26] foi proposta a mesma codificação binária, porém para cada padrão projetado também se projetava o seu inverso correspondente, onde as linhas pretas eram projetadas brancas e vice-versa. Isso permite uma melhor identificação de cada listra, como iremos ver na seção Captura e Processamento de Imagens do terceiro capítulo.

A codificação binária foi substituída pela codificação de Gray em [22]. Esta segunda codificação mais robusta, utilizada neste trabalho, é apresentada também no terceiro capítulo.

2.2.2 Codificação Espacial

A codificação espacial requer apenas um único slide a ser projetado, permitindo a aquisição de cenas dinâmicas. Porque se utiliza apenas um slide, este possui um maior número de elementos padronizados de maneira a garantir a resolução desejada. Na codificação espacial a vizinhança de um pixel é utilizada para codificar a sua posição. A maior dificuldade deste método é recuperar o padrão projetado sobre o objeto modelado, limitando o tipo de superfícies capturadas. Os dois códigos seguintes são apresentados representando as várias abordagens existentes de codificação espacial.

Figura 2.5 – Padrões de codificação espacial.

Padrões de grid

(18)

2 Visão Computacional e Obtenção de Formas

quadrados usados como referência [25]. Ambos os eixos são codificados simultaneamente. A limitação desta abordagem é que descontinuidades na superfície do objeto produzem também uma descontinuidade nos identificadores, podendo fazer com que o decodificador se perca.

Matriz Codificada

Esta codificação, proposta em [27], consiste em projetar uma matriz de pontos. Cada linha horizontal da matriz codifica uma palavra. Inicialmente é projetada uma matriz contendo todos os pontos para extrair a posição de cada um deles. Posteriormente projeta-se a matriz codificada. As figuras 2.5b e 2.5c ilustram as matrizes. A dificuldade deste método está em determinar cada ponto, que pode ter sua forma modificada pela superfície do objeto capturado. O tamanho de cada ponto deve manter uma relação com a resolução de captura, limitando o tamanho da matriz.

2.2.3 Codificação Modulada

Outra possibilidade é modular a intensidade da luz projetada, como foi proposta em [28]. A posição de um pixel pode ser codificada, sem utilizar informação de vizinhança, em função da intensidade da luz modulada. Projeta-se posteriormente um padrão de iluminação constante, o qual é utilizado também para a decodificação, limitando a sua aplicação a cenas estáticas. Utiliza-se a diferença de intensidade para recuperar a posição dos pixels.

Figura 2.6 – Padrão de luz modulada.

Esta abordagem é sensível a ruídos da câmera e a certas superfícies. Texturas podem interferir na decodificação, tornando o método não robusto.

(19)

2 Visão Computacional e Obtenção de Formas

2.2.4 Codificação com Cores

Os avanços tecnológicos na captura de imagens permitiram a utilização de cores nos padrões projetados. A vantagem está em se utilizar três canais simultaneamente ao invés de apenas um. O grande problema da sua utilização está na recuperação. Luz colorida em superfícies coloridas não se comporta de maneira desejada, o que limitava a sua utilização a cenas com cores neutras nos primeiros trabalhos.

Em [29] são utilizadas listras coloridas com fendas entre elas. A figura 2.7a ilustra o padrão. A codificação é feita através da seqüência utilizada. A mesma idéia de se modular a intensidade da luz foi feita em [30] utilizando-se cores, gerando o padrão arco-íris da figura 2.7b. Já em [31] utilizou-se um padrão periódico, ilustrado na figura

c 7 .

2 , feito a partir da união dos padrões de intensidade senoidal das três cores fora de fase entre si, representadas na figura 2.7d.

(20)

2 Visão Computacional e Obtenção de Formas

Um estudo teórico para determinar o maior tamanho possível de uma matriz formada por pontos e codificada com um certo número de cores foi feito em [32]. Quando maior a matriz, maior a resolução obtida. A posição de cada ponto é codificada pela sua cor e as cores dos seus quatro vizinhos: superior, inferior, esquerdo e direito. Ambos os eixos são codificados simultaneamente. A figura 2.8a ilustra uma matriz gerada. Dependendo da cena, algumas vezes são difíceis de se determinar os vizinhos, como é ilustrado na figura 2.8b.

Figura 2.8 – Padrões com cores.

Mais recentemente foi proposto em [10] a utilização de um código de Gray colorido, onde cada um dos três canais de cores contém um slide que corresponde a um slide da seqüência de slides de Gray. Essa abordagem divide o número de slides necessários por três do padrão de Gray original para uma mesma resolução. Na prática esta redução permite capturar cenas dinâmicas utilizando um método de codificação temporal como mostram os resultados apresentados.

2.2.5 Classificação dos Métodos

Como vimos ao longo desta seção, há três possíveis maneiras de se codificar a luz projetada: codificação espacial, codificação temporal e modulação de cores através da intensidade projetada. Uma taxonomia foi proposta em [32] baseada na diferenças entre os padrões e as restrições que estes impõem à cena a ser capturada.

Modulação cromática impõe restrições às cores permitidas na cena. Quando codificação espacial é utilizada, continuidade local da cena é necessária para se

(21)

2 Visão Computacional e Obtenção de Formas

recuperar o código transmitido. Já a codificação temporal restringe o movimento da cena. A tabela abaixo apresenta o resumo destas idéias.

Hipóteses Métodos Restrições

Coerência espacial Métodos baseados na vizinhança

Descontinuidades na superfície do objeto não são permitidas Coerência temporal

Muitos slides Versus Um slide

Restrito a cenas estáticas Versus

Permite cenas dinâmicas Refletividade

Binário / tons de cinza Versus Codificação com cores

Nenhuma restrição de cor Versus

Objetos com cores neutras

Figura 2.9 – Taxonomia baseada nas diferenças e restrições dos padrões.

Uma outra taxonomia foi proposta em [10], na qual é feita uma analogia entre luz estruturada codificada e um sistema de comunicação digital. As coordenadas do projetor são codificadas pelos padrões e transmitidas para a cena. Para cada ponto na imagem da câmera uma transmissão com ruído é recebida e precisa ser decodificada. Portanto cada sensor da câmera age como um receptor e a imagem capturada como um conjunto de símbolos recebidos. O meio de transmissão é a superfície do objeto capturado e a mensagem é a posição codificada pelo pixel do projetor. Tendo em vista esta analogia, duas questões devem ser estudadas: as limitações do canal de transmissão, relacionado com as propriedades da superfície, e qual codificação utilizar, o que irá restringir os tipos de objetos capturáveis.

Ao contrário da taxonomia anterior, nesta outra é o código utilizado que impõe restrições à cena (meio de transmissão). Por exemplo, se utilizarmos codificação espacial, a cena deve preservar a estrutura espacial, caso contrário haverá perda de informação. As principais características de um código são o número de símbolos distintos (sinais básicos), o tamanho da palavra composta por símbolos e, no caso de codificação espacial, a geometria utilizada.

(22)

2 Visão Computacional e Obtenção de Formas Método Número de slides (tamanho da palavra) Intensidade de modelação / canais (número de caracteres) Vizinhança (região do caractere) Resolução (tamanho do alfabeto) Código de Gray n Binário (2) /

monocromático Pixel único 2n linhas Cód. de Gray

colorido n Binário (2) / RGB Pixel único 23n linhas Padrão

arco-íris 2 2

8 / RGB Pixel único (28)3 linhas

Matriz de

pontos 1 3 (R, G, B)

Quatro

vizinhos 35

Figura 2.10 – Taxonomia baseada em transmissões de dados digitais.

Deste ponto de vista fica claro de perceber que o código impõe restrições aos objetos capturados. A estrutura espacial da codificação é perdida quando há descontinuidades na superfície do objeto capturado. Também é necessário recuperar a intensidade de modulação corretamente, o que requer que a superfície não distorça intensidades ou cores demasiadamente. Finalmente, o tamanho da palavra codificada impede que haja movimento enquanto a palavra ainda não esteja completa.

2.2.6 Sistema Estudado

O sistema estudado neste trabalho para aquisição de formas geométricas pode ser classificado como um sistema óptico estéreo ativo. Ele composto por duas câmeras de vídeo e um projetor digitais ligados ao computador. O par de câmeras são calibrados simultaneamente com o mesmo padrão de calibração. Como foi visto, a correspondência entre pontos nas imagens das duas câmeras é feita projetando-se luz estruturada codificada na cena.

A codificação temporal foi escolhida para este trabalho, pois permite capturar uma maior variedade de cenas e objetos sem restrições de continuidade nas superfícies capturadas e de cores neutras. A princípio não estamos interessados em capturar cenas dinâmicas, mas na robustez da decodificação e na precisão do sistema. Utilizou-se o código binário de Gray monocromático que permite capturar cenas com diferentes cores e exige menos do hardware utilizado.

O modelo 3D final é constituído por pontos no espaço, obtidos triangulando pontos correspondentes nas duas câmeras. A figura 2.11 mostra a disposição física do

(23)

2 Visão Computacional e Obtenção de Formas

sistema. Cada câmera é posicionada de um lado do projetor, de maneira a melhor capturar o par de imagens.

Figura 2.11 – Disposição física do sistema.

O próximo capítulo apresenta os conceitos teóricos envolvidos no trabalho que não foram apresentados neste capítulo.

(24)

3 Sistema Estudado

Neste capítulo descrevemos o sistema estudado e posteriormente implementado para a captura de modelos computacionais e os conceitos teóricos envolvidos. Cada ponto é aprofundado nas seções correspondentes, divididas em calibração de câmeras, luz estruturada codificada utilizada, captura e processamento de imagens, triangulação e modelo final.

3.1 Calibração de Câmera

O primeiro passo do sistema estudado consiste em calibrar as duas câmeras. Calibrar uma câmera é determinar os valores dos parâmetros extrínsecos e intrínsecos da mesma. Em outras palavras, a calibração consiste em determinar a posição e orientação da câmera em relação a uma referência fixa e obter suas características óptica, geométrica e digital.

Figura 3.1 – Modelo de Câmera de Tsai.

Entre os diversos métodos existentes para calibração de câmera, utilizou-se o método proposto por Tsai em [3] e [4] nesta tese. O modelo de câmera de Tsai é baseado no modelo de projeção perspectiva de câmera completa, com lentes, e possui

(25)

3 Sistema Proposto

um conjunto de parâmetros extrínsecos e outro de parâmetros intrínsecos. Cada conjunto de parâmetros pode ser estimado separadamente. Os parâmetros utilizados estão descritos nesta seção.

A figura 3.1 ilustra o modelo utilizado. O sistema de coordenadas do mundo é definido por

(

Xw,Yw,Zw

)

, sendo Ow a origem do mundo. O sistema de coordenadas em

relação à câmera é dado por

(

Xc,Yc,Zc

)

, sendo Oc a origem deste sistema. O primeiro

passo do algoritmo é determinar a posição e orientação da câmera em relação a uma referência fixa. Para isso utilizamos um conjunto de parâmetros que identificam univocamente a transformação entre a posição e orientação da câmera e a posição e orientação de referência. Estes são os parâmetros extrínsecos da câmera.

Os parâmetros extrínsecos são dados por:

• Um vetor de translação T que descreve a posição da origem O em relação à c origem de referência Ow.

• Uma matriz ortogonal de rotação R que leva os eixos de referência aos eixos correspondentes da câmera.

Seja P um ponto qualquer no mundo. Suas coordenadas são dadas por

(

xw,yw,zw

)

.

No sistema da câmera, suas coordenadas são dadas por

(

xc,yc,zc

)

. A relação entre estas

coordenadas é descrita por:

(

P T

)

R

Pc = w− (3.1)

A imagem abaixo ilustra esta transformação.

(26)

3 Sistema Proposto

O ponto Oc também é o centro de projeção da câmera. O eixo Zc coincide com o

eixo óptico e corta o plano da imagem no ponto C, chamado de centro da imagem. O segundo passo do algoritmo é achar o ponto correspondente à projeção perspectiva de P no plano da imagem, dado por Pu.

Podemos caracterizar os parâmetros intrínsecos como o conjunto de parâmetros necessários para definir as características ópticas, geométricas e digitais de uma câmera. Para o modelo perspectivo de câmera são necessários três subconjuntos de parâmetros intrínsecos que especificam:

• A projeção perspectiva.

• A distorção geométrica introduzida pelo sistema de lentes da câmera.

• A transformação entre coordenadas no plano da imagem e coordenadas na imagem capturada.

Para a projeção perspectiva, o único parâmetro utilizado é a distância focal f, correspondente à distância entre os pontos Oc e C. As coordenadas do ponto Pu são

dadas por

(

xu,yu

)

no sistema de coordenadas definido por

(

Xu,Yu

)

e tendo como

origem o ponto C. Logo temos as seguintes relações:

c c u z x f x = (3.2) c c u z y f y = (3.3)

Este seria o caso considerado se não houvesse nenhuma distorção óptica. Pd é o

ponto correspondente à projeção de P, levando em conta distorções radiais introduzidas pelas lentes. O terceiro passo é transformar as coordenadas no plano da imagem para as coordenadas correspondentes com distorções ópticas.

Distorções radiais são deslocamentos radiais de pontos no plano da imagem. Quanto mais afastado o ponto está do centro da imagem, maior é seu deslocamento. Distorções radiais são normalmente modeladas por:

(

4

)

2 2 1 1 kr k r x xu = d + + (3.4)

(

4

)

2 2 1 1 kr k r y yu = d + + (3.5)

O quadrado da distância é dado por:

2 2 2 d d y x r = + (3.6)

(27)

3 Sistema Proposto

As coordenadas no plano da imagem de um ponto com distorções radiais são dadas por (xd,yd) e (xu,yu) são suas coordenadas já livre de distorções da lente, ambas no mesmo sistema de coordenadas. Os dois parâmetros intrínsecos são k1 e k2

que caracterizam a distorção geométrica introduzida pelo sistema de lentes da câmera. No modelo original de Tsai, k2 é descartado por ser usualmente muito baixo e tem seu

valor igual a zero.

O último passo corresponde à transformação de coordenadas no plano da imagem para coordenadas na imagem capturada. Para isso temos as seguintes equações:

x x i d x o s x =( − ) (3.7) y y i d y o s y =( − ) (3.8)

As coordenadas do ponto Pi na imagem é dado por (xi,yi) em unidades de pixel e

as coordenadas do ponto correspondente Pd no plano da imagem é dado por (xd,yd) em

metros. O par de parâmetros (ox,oy) definem o centro da imagem, correspondente ao

ponto C no plano da imagem, e é utilizado como o centro do sistema de coordenadas da imagem capturada representado por (Xi,Yi). Por último, o par (sx,sy) definem o

tamanho efetivo de um pixel, em metros por pixel, nas direções horizontais e verticais respectivamente. Estes são os fatores de escala. No modelo original de Tsai, sx e sy são

considerados iguais e modelados por um único parâmetro s.

Podemos resumir o algoritmo nos quatro passos apresentados, como mostra a figura 3.3. Dado um ponto em coordenadas do mundo, o algoritmo retorna suas coordenadas na imagem final. No total temos nove parâmetros que devem ser estimados para cada câmera calibrada.

Se considerarmos uma câmera ideal, a qual não possui distorção radial e o centro da imagem capturada coincide com o centro do plano da imagem, o modelo de câmera de Tsai pode ser simplificado a um modelo de câmera “pinhole”, encontrada na literatura. Se incluirmos o fator de escala s no valor da distância focal f, podemos simplificar o algoritmo de Tsai descartando os passos três e quatro. Embora estas simplificações sejam utilizadas por várias aplicações, não existe câmera perfeita. Logo há um comprometimento na precisão da calibração, que varia com a câmera utilizada.

(28)

3 Sistema Proposto

Figura 3.3 – Os quatro passos do algoritmo de Tsai.

Como foi citado, os parâmetros extrínsecos e intrínsecos podem ser estimados separadamente. Com os valores dos parâmetros intrínsecos da câmera previamente calculados, podemos calcular a partir de uma imagem capturada uma segunda imagem livre de distorções radiais. A nova imagem é criada utilizando-se as equações (3.4) a (3.8). O fator de escala s é incluído no valor da distância focal f e possui valor igual a um nas equações em que é utilizada. Com isso simplificamos novamente o modelo utilizado a um modelo de câmera “pinhole”, com o fator de escala incluído na distância focal. A diferença é que os parâmetros intrínsecos são previamente calibrados e utiliza-se a imagem livre de distorções radiais na calibração dos parâmetros extrínutiliza-secos. Novamente podemos simplificar o algoritmo de Tsai descartando os passos três e quatro. Para estimar os parâmetros intrínsecos, utilizou-se o algoritmo proposto por Zhang em [5].

Para determinar os valores dos parâmetros extrínsecos nos passos um e dois, utilizou-se o algoritmo de Tsai coplanar, onde todos os pontos do padrão de calibração, usado para encontrar os parâmetros, estão no plano zw =0.

(29)

3 Sistema Proposto

=

=

z y x z y x z y x

r

r

r

r

r

r

r

r

r

r

r

r

R

3 3 3 2 2 2 1 1 1 3 2 1           = z y x t t t T

Os vetores r , 1 r e 2 r são ortonormais entre si e estão ilustrados na figura do 3

modelo. Estas matrizes podem ser vistas como uma única matriz

[

R|T

]

.

[

]

          =           = z z y x y z y x x z y x z y x t r r r t r r r t r r r t r t r t r T R 3 3 3 2 2 2 1 1 1 3 2 1 | (3.9)

As equações (3.2), (3.3) e (3.9) podem ser compatibilizados de forma a produzir uma transformação direta do ponto

(

xw,yw,zw

)

no mundo para o ponto (xi,yi) na

imagem, como é feito em [6]. Devemos lembrar que, segundo as simplificações adotadas, a imagem utilizada está livre de distorções radiais e que o fator de escala s está incluído na distância focal f.

                        =           1 3 2 1 w w w z y x i i z y x t r t f r f t f r f s s y s x (3.10)

As coordenadas

(

xi,yi,s

)

são homogêneas. Multiplicando (3.9) obtemos duas

equações: z w z w y w x x w z w y w x i t z r y r x r t z r y r x r f x + + + + + + = 3 3 3 1 1 1 (3.11) z w z w y w x y w z w y w x i t z r y r x r t z r y r x r f y + + + + + + = 3 3 3 2 2 2 (3.12)

Como estamos utilizando o método coplanar, podemos escrever zw =0 nas equações (3.10) e (3.11). z w y w x x w y w x i t y r x r t y r x r f x + + + + = 3 3 1 1 (3.13) y w y w x i t y r x r t y r x r f y + + + + = 2 2 (3.14)

(30)

3 Sistema Proposto

Dividindo (3.12) por (3.13) e em seguida o numerador e o denominador da razão direta por ty, podemos obter:

i w y y i w y x i y x i w y y i w y x i y x t r x x t r y t t y y t r y x t r x = 1 + 1 + − 2 − 2 (3.15)

Podemos obter um sistema linear, com cada linha correspondendo a um ponto amostrado. Cada ponto possui um índice k diferente.

k k k k k k k k k k i y x i w y y i w y x i w y y i w y x i

y

t

t

x

y

t

r

x

x

t

r

y

y

t

r

y

x

t

r

x

=

1

+

1

2

2

+

(3.16)

Com isso obtemos o sistema linear Au=b, onde A é uma matriz n×5, cada linha

Ak é dada por

(

)

k k k k k k k k k i w i w i w i i w y y y x x y x y

x , ,− ,− , , cada elemento do vetor b é dado por

k

i

x e o vetor u é dado por:

[

]

        = y x y y y x y y y x t t t r t r t r t r U U U U U1 2 3 4 5 1 1 2 2 (3.17)

Lembrando que r , 1 r e 2 r são ortonormais e definindo 3

y z t r1 = α e y z t r2 = β , temos que:    + + = + + − − = 2 4 2 3 2 2 2 2 1 2 4 2 3 1 U U U U U U U U β α αβ (3.18) Resolvendo o sistema acima, calcula-se ty a partir de:

(

)

(

)

2 3 2 4 1 2 3 2 4 1 2 2 2 4 U U U U U U U U U U ty − − − − = (3.19) 2 4 2 3 2 2 2 1 U U U U U = + + +

Com estes valores definidos e utilizando a equação (3.17) determina-se os valores de r1x, r1y, r2x, r2y e tx. Como os vetores r1 e r2 são normalizados, obtemos os valores de

r1z e r2z. O vetor r pode ser calculado, já que 3 r , 1 r e 2 r são ortonormais. Finalmente, 3

utilizando os valores já encontrados e as equações (3.13) e (3.14), podemos calcular f e tz.

As próximas duas subseções apresentam dois padrões de calibração, utilizados na obtenção de pontos para a calibração, e como extrair seus pontos característicos das imagens capturadas. Ambos os padrões são coplanares.

(31)

3 Sistema Proposto

3.1.1 Padrão com Elipses

Entre os vários padrões utilizados em calibração de câmeras, este padrão coplanar com elipses é um dos mais fáceis de ser implementado e utilizado. De uma maneira geral, o padrão é constituído por várias esferas posicionadas em um mesmo plano e afastadas uma da outra. Esferas formam padrões facilmente identificáveis na imagem. Alternativamente podemos utilizar círculos 2D desenhados em um mesmo plano, que pode ser uma folha de cartolina. Em ambos os casos, devemos extrair as elipses da imagem capturada e retornar o centro de cada uma para a calibração. A figura 3.4 ilustra o processo de obtenção de pontos do padrão.

Figura 3.4 – Processo de obtenção de pontos do padrão com elipses.

A figura 3.4a mostra o desenho do padrão coplanar. Os círculos estão dispostos sobre o padrão de maneira que cada um não possui nenhum vizinho na direção horizontal. Esta disposição permite identificar cada círculo na imagem capturada, mostrada na figura 3.4b já em tons de cinza. Basta seguir a ordem dos círculos na

(32)

3 Sistema Proposto    > = contrário caso threshold y x src se y x dst , 1 ) , ( , 0 ) , ( (3.20)

onde src é a imagem de origem, dst é a imagem de destino binária e de mesmo tamanho e threshold é um valor limite. A figura 3.4d mostra o resultado deste filtro aplicado à imagem 3.4b. O valor de threshold utilizado comumente é 128 em uma escala de tons de cinza de 8 bits.

O próximo passo é identificar as bordas das componentes conexas da imagem binária. Componente conexa é uma região formada por pixels conectados uns aos outros. A relação entre os pixels conectados é dada pela conectividade escolhida, que estabelece condições relativas à cor do pixel e adjacência.

Para a primeira condição de conectividade, os pixels vizinhos devem possuir um mesmo valor de intensidade do conjunto V. No caso de imagem binária, V={1}. Para o critério de adjacência, deve-se introduzir primeiro o conceito de vizinhança. Seja p um pixel na imagem dado pelas suas coordenadas

(

x,y

)

, o conjunto de pixels chamado de

4-vizinhança é dado por:

( )

{

(

1,

) (

, 1,

) (

, , 1

) (

, , 1

)

}

4 p = x+ y xy x y+ x y

N

De forma análoga, sua 8-vizinhança é dado por:

( )

4

( )

{

(

1, 1

) (

, 1, 1

) (

, 1, 1

) (

, 1, 1

)

}

8 p =N px+ y+ xy+ xyx+ y

N

Então podemos dizer que dois pixels p e q são 4-conectados se q pertence ao conjunto N4

( )

p . Da mesma forma, p e q são 8-conectados se q pertence ao conjunto

( )

p

N8 . A figura 3.5 ilustra duas componentes conexas, cujos pixels são 4-conectados. Pixels vizinhos estão conectados por segmentos de reta.

No algoritmo proposto, depois de obtidas as componentes conexas da imagem binária utilizando a conectividade com oito vizinhos, deve-se retornar apenas a borda de cada componente conexa para o próximo passo. Isso é feito facilmente descartando todos os pixels que possui oito elementos no seu conjunto N8

( )

p em cada componente conexa. O resultado desta operação pode ser visto na figura 3.4e.

(33)

3 Sistema Proposto

Figura 3.5 – Componentes conexas em uma imagem binária de tamanho 8 × . 8

Cada borda de uma componente conexa representa o contorno de um círculo capturado e possui a forma de uma elipse. O último passo se resume a encontrar o centro de cada uma das elipses. Nas condições de uso do padrão, onde a câmera a ser calibrada é posicionada em frente ao padrão, o centro da elipse pode ser considerado o centro do círculo, sem perda de precisão. Uma maneira fácil de se achar o centro da elipse é achar a posição média dos pontos da borda da sua componente conexa. Com isso obtemos o centro de elipse com grande precisão. A figura 3.4f mostra as elipses

achadas para cada componente conexa e a figura 3.4c mostra o resultado da calibração, com um objeto virtual inserido na imagem capturada. No caso de utilizarmos o padrão com esferas distribuídas no mesmo plano, obteremos círculos na imagem, ao invés de elipses. Podemos empregar um dos métodos dados em [12] para achar o centro de cada um dos círculos.

O maior problema de se utilizar este padrão é posicioná-lo de tal maneira que apenas os círculos sejam capturados na imagem. Também há restrição na orientação do padrão na imagem capturada. No fim, o posicionamento fica bem limitado e objetos no fundo da imagem podem impedir a calibração. Para resolver estes problemas práticos, desenvolveu-se um outro padrão mais robusto, mostrado a seguir.

3.1.2 Padrão com Vértices

Assim como o outro padrão apresentado, este padrão é coplanar e seu formato é dado pela figura 3.6. Ele possui doze vértices numerados e foi originalmente utilizado

(34)

3 Sistema Proposto

aplicações. Estamos interessados em encontrar e retornar a posição de todos os vértices do padrão na imagem capturada. Estes são os pontos utilizados na calibração.

Figura 3.6 – Padrão com vértices.

Dado uma imagem capturada, o primeiro passo é aplicar o filtro “threshold” binário e depois achar as bordas de todas as componentes conexas na imagem, da mesma maneira de como foi feito no padrão anterior. O resultado desta operação de segmentação são várias bordas de componentes conexas, como está ilustrado na figura

b 7 .

3 . Observe que duas bordas de componentes conexas, entre várias encontradas, correspondem ao padrão de calibração, que iremos chamar de borda exterior e borda interior do padrão. Componentes conexas muito pequenas podem ser descartadas.

Figura 3.7 – Bordas das componentes conexas da imagem capturada.

Para cada borda encontrada podemos organizar os seus pixels de maneira que eles formem uma lista circular, onde cada ponto é vizinho de seus pontos anterior e posterior

(35)

3 Sistema Proposto

na lista. O primeiro ponto também é vizinho do último ponto. Podemos obter mais de uma lista para cada borda, pois pode haver buracos nas componentes conexas, como é o caso do padrão. Desejamos encontrar as listas circulares correspondentes ao padrão de calibração e depois encontrar os pixels correspondente aos vértices nas listas circulares encontradas. Uma maneira de se resolver este problema é identificar a borda exterior. Encontrada a borda exterior, fica fácil encontrar a borda interior, pois esta é dada pela outra lista circular da mesma componente conexa. As bordas candidatas à borda exterior devem possuir oito vértices.

Para identificar qual pixel melhor corresponde a um determinado vértice, utilizamos uma heurística que se baseia na vizinhança de cada pixel. Dado um pixel na posição m em uma lista circular de pixels de tamanho n, sua posição na imagem é dada por

(

xm,ym

)

, com 1≤mn. A distância do pixel na posição m da lista a um pixel na posição p é dado pelo vetor:

(

p m p m

)

p

m x x y y

d = − , − (3.21)

Considerando os 2k pixels vizinhos mais próximos na lista do pixel de posição m, teríamos os pixels de índice variando de m− até k m+k . Então para cada pixel na lista calcula-se o vetor resultante da soma da distância entre este pixel e seus 2k pixels mais próximos na lista, dado por:

i m m k i i m m m d d r = + + =

1 (3.22) A figura 3.8 ilustra dois casos onde a resultante da soma das distâncias entre um pixel na posição m da lista e seus 2k vizinhos é calculada. Cada pixel está representado na sua posição na imagem e seu número dá sua posição na lista a que pertence. Os vetores das distâncias entre o pixel central e seus vizinhos estão representados pelos vetores em preto e a resultante da soma de todos eles é dado por rm. Podemos observar

que pixels correspondente a vértices possuem um vetor resultante de comprimento maior que seus vizinhos, enquanto que pixels no meio de uma aresta possuem resultante de comprimento próximo de zero. Logo um pixel é considerado um vértice se:

(36)

3 Sistema Proposto

2. O módulo do vetor resultante é maior ou igual que todos os módulos dos vetores resultantes dos 2k pixels vizinhos.

k m p k m r rmp, − ≤ ≤ +

Como critério de desempate entre dois pixels vizinhos com o mesmo valor para o módulo da resultante, escolhemos sempre o primeiro na lista. A dificuldade deste método está na escolha dos valores de k e rmin.

Figura 3.8 – Vetor resultante das distâncias do pixel em m aos seus vizinhos. Então utilizando o método descrito, devemos achar uma lista circular com oito vértices, correspondente à borda exterior. Uma vez achada esta lista, a outra lista da mesma componente conexa deve conter exatamente quatro vértices. Se estas condições forem preenchidas, podemos considerar que encontramos a componente do padrão. A probabilidade de se encontrar duas listas nestas condições e que não seja o padrão é, na prática, quase zero.

Encontrado os vértices do padrão, o próximo passo é identificar a qual vértice do modelo cada vértice encontrado corresponde. Novamente devemos começar pelos vértices da borda exterior. Os vértices encontrados formam também uma lista circular, pois mantêm a ordem em relação um ao outro da lista de pixels original. Esta lista pode estar no sentido horário ou anti-horário. Consideremos que esteja no sentido horário, como está enumerado na figura 3.6. Queremos achar qual vértice corresponde ao vértice

(37)

3 Sistema Proposto

0 na lista de vértices. Uma vez encontrado o vértice 0 ou qualquer outro vértice, basta seguir a ordem da lista para encontrar sucessivamente os próximos vértices.

Dado um vértice m na lista circular de vértices com n=8, a distância entre este vértice e um outro vértice p continua sendo dado pelo mesmo vetor em (3.21). Porém podemos definir o seguinte produto vetorial entre vetores no 3

ℜ :

(

i1 i, i1 i,0

) (

i1 i, i1 i,0

)

i x x y y x x y y

a = ++ − × − (3.23)

Para cada vértice nesta lista, podemos calcular o produto vetorial am

correspondente. O resultado deste produto será um vetor com a componente z negativa, exceto para os vértices 4 e 5 . Uma vez achados estes vértices, podemos fazer a correspondência dos outros vértices.

Figura 3.9 – Processo de obtenção dos vértices do padrão.

Com os vértices encontrados da borda exterior, fica simples relacionar os vértices da borda interior. Basta achar o vértice 8 como sendo o mais próximo do vértice 0 da borda exterior e seguir a ordem na lista circular da borda interna. Com isso obtemos

(38)

3 Sistema Proposto

Porém apenas encontrar os pixels correspondentes a cada vértice no modelo não basta, pois a posição dos vértices estimada pelo procedimento acima está muito sujeita a erros e variações de uma imagem capturada para a próxima.

Para cada aresta entre um vértice e o seu subseqüente, podemos encontrar pixels pertencentes a esta aresta na lista de pixels de onde foram extraídos os vértices. Utilizando t pixels entre os dois vértices da aresta e igualmente espaçados um do outro, podemos calcular a melhor reta que passa por todos estes pontos, empregando o método dos mínimos quadrados. Se não houver t pixels, podemos utilizar todos os pixels entre os vértices. Este método tenta minimizar

= t i i r 1 ) (

ρ . A distância entre um pixel de índice i e a reta é dada por ri. A função

ρ

é dada por:

2 ) ( 2 i i r r = ρ (3.24)

A figura 3.9b mostra os pixels das arestas utilizados, com t=14 e a figura 3.9c mostra as retas encontradas para cada aresta. A partir das retas podemos calcular a interseção entre elas e reencontrar os valores dos vértices com maior precisão. Também teremos um número maior de pontos para o modelo, já que há mais interseções entre as retas do que vértices. Na última figura 3.9d temos o resultado da calibração, com um objeto virtual inserido na imagem capturada.

Este padrão de calibração confere grande flexibilidade no seu posicionamento em relação à câmera e outros objetos capturados na imagem não interferem no resultado. O único ponto contra é que ele deve permanecer integralmente visível na imagem capturada.

Em [6] Szenberg apresenta um estudo de métodos de calibração de câmera, onde ele conclui que o método de Tsai não apresenta bons resultados quando o número de pontos de calibração é baixo. Para resolver este problema, pode-se utilizar uma homografia na qual é definido um mapeamento do plano z=0 para o plano da imagem, para estimar uma quantidade maior de pontos para serem utilizados na calibração.

3.2 Luz Estruturada Codificada

Como foi visto no segundo capítulo, em nosso sistema estéreo ativo utilizamos luz estruturada codificada para fazer a correspondência entre pontos das imagens capturadas

(39)

3 Sistema Proposto

pelas duas câmeras. Na codificação temporal utilizada, projetamos uma seqüência de padrões com listras. A seqüência de n padrões produz 2n listras codificadas e a

resolução cresce exponencialmente com o número de padrões utilizados. Repetimos a mesma seqüência de padrões, porém com listras horizontais. Cada eixo precisa ser codificado separadamente em nosso sistema. Ao final teremos dividido a cena estática em 2n 2n

× regiões, cada uma com seu código horizontal e vertical.

Devemos distinguir entre as coordenadas das imagens capturadas de cada câmera, dadas por (xe,ye) para a primeira câmera e (xd,yd) para a segunda câmera, e as

coordenadas da luz estruturada projetada, dadas por ( vu, ). Utilizamos a seqüência de

imagens com listras horizontais e verticais para decodificar o código das coordenadas

) ,

( vu para cada pixel das duas câmeras. Então para cada par de coordenadas ( vu, ) da

luz estruturada, encontramos em cada câmera o grupo de pixels que tenham codificado o mesmo par de coordenadas, resolvendo o problema de correlação entre as imagens. Na prática, cada grupo possui mais de um pixel com o mesmo código.

Na codificação temporal binária o código traduzido pela seqüência de padrões é a própria numeração na base dois. Esta seqüência produz uma inconveniência à geração do código de cada linha. No objeto iluminado, existem regiões que jazem na fronteira entre uma listra branca e uma listra escura. Pixels nestas regiões devem pertencer a apenas uma das listras da fronteira. Um pixel não pode ser considerado de uma listra na imagem de um padrão projetado e posteriormente, na imagem do próximo padrão, pertencer a uma outra listra. Caso contrário acabaríamos com um código inválido para este pixel. Quando temos repetições de fronteiras, como no caso do código apresentado, fatalmente iremos ter este problema ou deveremos descartar os pixels próximos às fronteiras. Por exemplo, um pixel deveria ter o código 011. Porém na imagem do primeiro padrão foi considerado pertencente à listra clara. Logo seu código ficou 111, indicando erroneamente que este pixel pertence a uma listra que nem é sua vizinha.

Uma maneira de resolver este problema é utilizar um dos códigos binários de Gray, conhecido como código binário refletido de Gray, ao invés da codificação puramente binária. Este código faz parte de um conjunto de códigos patenteados por Frank Gray, pesquisador da Bell Labs, em 1953. Porém estes códigos binários já eram

(40)

3 Sistema Proposto

código binário. A figura 3.10 ilustra o código de Gray utilizado. Ele é chamado de código binário refletido, pois cada padrão é igual ao padrão anterior mais ele mesmo refletido e adicionado ao final. Na prática, o que interessa é que cada fronteira entre duas listras vizinhas só aparece uma vez, como é mostrado para a única fronteira do padrão. Além de evitar o problema de troca de código para todos os pixels nas regiões de fronteiras, esta codificação possui outra vantagem. Com exceção da primeira listra e da última listra do último padrão, todas as áreas claras ou escuras projetadas possuem pelo menos duas listras de largura. Quando o número de linhas cresce, acaba ocorrendo que as linhas ficam muito próximas uma das outras na imagem capturada, o que gera erro de amostragem. Utilizando o código de Gray, podemos diminuir este problema para um mesmo número de linhas em comparação com o código binário.

Figura 3.10 – Codificação temporal de Gray.

A conversão de números binários para o código de Gray correspondente é bastante simples. Dado um número binário A0 A1A2...Am contendo m dígitos onde A0 é o dígito mais significativo, o código binário de Gray referente a este número é dado por

m B B B B0 1 2... onde: 0 0 A B = i i i A A B = +1^

A conversão do código de Gray para o número binário correspondente é dada por:

0 0 B

(41)

3 Sistema Proposto

i i

i B B B B B B

A =((...((( 0^ 1)^ 2)^ 3...)^ +1)^

Devemos fazer algumas considerações a respeito da luz estruturada projetada. Como foi visto na introdução, esta luz é gerada por um projetor digital ligado a uma das saídas de vídeo do computador. Cada projetor possui uma resolução nativa dada pelo número de elementos que formam os pixels na imagem projetada. Devemos configurar a saída de vídeo com esta mesma resolução, para evitar uma re-amostragem da imagem pelos circuitos internos do projetor. Essa operação suaviza as bordas da imagem projetada, prejudicando assim as áreas de fronteiras entre as listras da luz estruturada.

Gostaríamos que cada listra possuísse a mesma largura na imagem projetada, ou seja, a largura de todas as listras deve possuir o mesmo número de pixel. Por exemplo, consideremos um projetor que possui uma resolução nativa de 800 pixels na horizontal. Se utilizarmos 128 listras verticais, então cada listra deve ter seis pixels de largura, que é igual ao maior inteiro menor que o resultado da divisão da resolução nativa pelo número de listras da luz estruturada. Na maioria dos casos, parte da imagem projetada não será utilizada.

Por último devemos ver a questão do processamento das listras claras e escuras nas imagens capturadas. O próximo capítulo mostra como é determinado o código binário horizontal e vertical de cada pixel a partir das imagens capturadas.

3.3 Captura e Processamento de Imagem

Antes da calibração de câmera e utilização do sistema estudado, é necessário tratar ruídos na imagem capturada. Tipicamente em câmeras digitais de vídeo encontramos ruído Gaussiano. Se considerarmos que o ruído introduzido na imagem é um sinal

) , ( yx

n adicionado ao valor real C( yx, ) do pixel na posição x e y da imagem, temos

então que o valor de cada pixel na imagem é dado por:

) , ( ) , ( ) , (x y C x y n x y E = + (3.25)

No caso do ruído Gaussiano, n(x,y) é modelado por um processo estocástico

Gaussiano de média zero. Podemos pensar que n( yx, ) é uma variável aleatória,

distribuída de acordo com a função de distribuição Gaussiana de média zero, o qual é adicionado a cada pixel na imagem e cujos valores são independentes da posição e

Referências

Documentos relacionados

Alves, Gabriel Tavares Malizia; Gattass, Marcelo (Orientador); Carvalho, Paulo Cezar Pinto (Co-orientador); Um Estudo das Técnicas de Obtenção de Forma a partir de Estéreo e

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for

◦ Os filtros FIR implementados através de estruturas não recursivas têm menor propagação de erros. ◦ Ruído de quantificação inerente a

A placa EXPRECIUM-II possui duas entradas de linhas telefônicas, uma entrada para uma bateria externa de 12 Volt DC e uma saída paralela para uma impressora escrava da placa, para

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

a) Realizar entrevistas com duas empresas importadoras, sendo uma de equipamentos médico-hospitalares, para identificação de requisitos para desenvolvimento de um protótipo de

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades

Como pontos fortes, destacam-se a existência de iniciativas já em- preendidas em torno da aprovação de um Código de classificação e uma Ta- bela de temporalidade e destinação