Detecc¸˜ao de Marcadores para Realidade Aumentada em FPGA
Bernardo F. Reis, Jo˜ao Marcelo X. N. Teixeira, Veronica Teichrieb and Judith Kelner Grupo de Pesquisa em Realidade Virtual e Multim´ıdia
Centro de Inform´atica, Universidade Federal de Pernambuco Recife, Pernambuco, Brasil
Email:{bfrs, jmxnt, vt, jk}@cin.ufpe.br
Resumo—O uso de FPGAs no desenvolvimento de sistemas de Realidade Aumentada apresenta-se oportuno ao suprir a demanda por poder de processamento e mobilidade que estas aplicac¸˜oes possuem. Para registrar o mundo real e o virtual, algumas dessas aplicac¸˜oes utilizam marcadores fiduciais. Tais marcadores s˜ao identificados e suas posic¸˜oes obtidas pelo sistema, a fim de compor corretamente a mistura entre os dois mundos. Este trabalho apresenta um m´odulo implementado em FPGA para detecc¸˜ao de marcadores ID-based como parte de um framework embarcado de desenvolvimento de aplicac¸˜oes de Realidade Aumentada. Os resultados comprovaram que o tempo de execuc¸˜ao do m´odulo implementado ´e mais do que duas vezes menor do que a abordagem em software, para uma imagem de 320x240 pixels.
Palavras-chave-realidade aumentada; sistemas embarcados; reconhecimento de padr˜oes;
I. INTRODUC¸ ˜AO
Aplicac¸˜oes de Realidade Aumentada (RA) requerem bas-tante poder de processamento, tanto para renderizar os obje-tos virtuais na cena, quanto para registrar1 o mundo virtual
com o mundo real [1]. Este requisito se alia `a necessidade de mobilidade do sistema, a qual aumenta a sensac¸˜ao de imers˜ao do usu´ario final. Uma soluc¸˜ao para combinar estas duas caracter´ısticas ´e o uso de dispositivos embarcados no desenvolvimento de sistemas de RA. O desenvolvimento do ARCam [2] [3], um framework embarcado para desen-volvimento de aplicac¸˜oes de RA, justifica-se devido ao fato dos FPGAs (Field Programmable Gate Arrays) mostrarem-se bastante eficazes e conmostrarem-seguirem satisfazer os requisitos listados anteriormente.
Este framework foi concebido para prover a progra-madores e projetistas todas as funcionalidades essenciais ao desenvolvimento de aplicac¸˜oes de RA com marcadores. Uma dessas funcionalidades ´e a detecc¸˜ao de marcadores, foco deste trabalho.
Sistemas de RA com marcadores utilizam marcadores fiduciais para identificar a posic¸˜ao onde os objetos virtuais ser˜ao renderizados. Estes marcadores contˆem um padr˜ao de imagem que deve ser identificado unicamente no am-biente [4]. O sistema de marcadores escolhido foi o sistema de marcadores simples utilizado no ARToolkitPlus [5], o
1O conceito de registro diz respeito `a relac¸˜ao espacial 3D entre os objetos
do ambiente real e os objetos virtuais sobrepostos `a cena com o intuito de manter a consistˆencia das informac¸˜oes exibidas ao usu´ario.
qual por ser projetado para dispositivos m´oveis, possui uma detecc¸˜ao pouco custosa computacionalmente para um total de 512 marcadores diferentes.
O processo de detecc¸˜ao deste tipo de marcadores, chamado ID-based, requer a leitura do padr˜ao bin´ario con-tido dentro de suas bordas, o que implica na remoc¸˜ao da distorc¸˜ao de perspectiva presente na imagem [6]. Esta distorc¸˜ao existe caso o plano do marcador n˜ao seja o mesmo plano da tela. Neste caso, ´e preciso encontrar entre os dois planos em quest˜ao um mapeamento, comumente chamado de homografia. Uma abordagem para encontrar a homografia utiliza o mapeamento entre 4 pontos n˜ao colineares em ambos os planos, facilmente obtidos ao se usar os v´ertices do marcador encontrado na imagem. Uma vez tendo sido removida a distorc¸˜ao de perspectiva, o padr˜ao pode ent˜ao ser lido e identificado corretamente por um algoritmo espec´ıfico. Este trabalho foca no desenvolvimento e validac¸˜ao de um m´odulo em hardware para detecc¸˜ao de marcadores ID-based, o qual ´e respons´avel por realizar todas as etapas de processamento descritas anteriormente.
II. TRABALHOS RELACIONADOS
N˜ao ´e conhecida nenhuma implementac¸˜ao de um sistema flex´ıvel de RA feita puramente em hardware. Contudo, existem algumas aplicac¸˜oes desenvolvidas em FPGA que utilizam princ´ıpios de RA, sem utilizar marcadores fiduciais, como [7], [8] e [9].
Piekarski et al. [7] prop˜oem uma aplicac¸˜ao de RA de baixo consumo usando FPGAs e tendo bolas coloridas como marcadores. A imagem do mundo real ´e obtida e processada usando um FPGA. As coordenadas dos marcadores s˜ao calculadas e enviadas para um computador que renderiza a imagem virtual. As imagens virtual e real s˜ao combinadas e a sa´ıda ´e mostrada em um HMD (Head Mounted Display). Toledo et al. [8] implementam uma aplicac¸˜ao de RA para pessoas com deficiˆencia visual em FPGA. Nenhum marcador ´e utilizado, uma vez que o sistema s´o precisa sobrepor informac¸˜oes de contorno da imagem do mundo real. As informac¸˜oes de contorno s˜ao extra´ıdas da imagem usando redes neurais.
Luk et al. [9] apresentam um framework para RA baseado em uma combinac¸˜ao de hardware e software, para fazer composic¸˜ao de v´ıdeo, extrac¸˜ao de imagens e rastreamento
de objetos. O hardware utilizado ´e um FPGA que atua como um sistema reconfigur´avel, podendo ter diferentes funcionalidades em tempo de execuc¸˜ao, mesmo que n˜ao haja espac¸o no FPGA para todos os m´odulos ao mesmo tempo.
III. Framework ARCAM
Este trabalho faz parte de um framework embarcado de desenvolvimento de aplicac¸˜oes de RA em FPGA, chamado ARCam, cujo objetivo ´e prover um plataforma completa que facilite a construc¸˜ao de soluc¸˜oes de RA na forma de hard-ware dedicado, diferindo da abordagem h´ıbrida hardware-softwareconvencional.
O ARCam incorpora um FPGA com aproximadamente sessenta mil elementos l´ogicos (LEs), um sensor de imagem e um display VGA. O FPGA ´e conectado ao sensor e realiza todo o processamento de imagem, isto ´e, implementa os algoritmos de vis˜ao computacional necess´arios para realizar RA e apresentar o v´ıdeo resultante no display.
Figura 1. Diagrama de blocos do framework ARCam.
A arquitetura do ARCam ´e apresentada na Figura 1. O bloco Video-IN converte a entrada de v´ıdeo anal´ogica para o formato digital RGB. O sensor de imagem opera a 30 fps (frames per second). A unidade de processamento ´e um FPGA Stratix II da Altera. O bloco Video-OUT converte do formato digital RGB para uma sa´ıda de v´ıdeo anal´ogica para monitores VGA. A interface VGA ´e um conversor de v´ıdeo D/A triplo 3 × 8 bits operando a 180 megapixels por segundo.
A infraestrutura b´asica da arquitetura do ARCam ´e repre-sentada pelos seguintes componentes, cujo uso ´e necess´ario para toda aplicac¸˜ao de RA desenvolvida:
• Controle I2C do sensor de imagem: este bloco utiliza o protocolo I2C para controlar as func¸˜oes necess´arias da cˆamera, incluindo controle de exposic¸˜ao, balanc¸o de branco, matriz de cor, saturac¸˜ao de cor, controle de ganho, entre outros.
• Interface de decodificac¸˜ao de v´ıdeo: recebe os sinais do sensor de imagem e controla o armazenamento das imagens adquiridas na mem´oria de cor. A sa´ıda do sensor de imagem ´e basicamente composta de trˆes sinais el´etricos: sincronismo vertical, horizontal e de pixel. Eles informam respectivamente quando um frame acaba, quando uma linha acaba e quando um pixel est´a dispon´ıvel no barramento.
• Mem´oria de cor: armazena uma imagem 320 × 240 do
mundo real no formato RGB.
• Mem´orias intermedi´arias: armazenam imagens tem-por´arias do processamento de algoritmos de RA. O n´umero de mem´orias intermedi´arias e seus tamanhos dependem do algoritmo utilizado.
• Mem´oria de RA: armazena a imagem resultante do processamento dos algoritmos de RA.
• Pipelinede RA: implementa os procedimentos de RA. Este m´odulo corresponde `a aplicac¸˜ao do usu´ario e ´e desenvolvido dependendo da funcionalidade desejada.
• Seletor real/virtual: baseado na mem´oria de RA, este m´odulo funciona como um multiplexador e decide qual valor vai ser enviado para o bloco Video-OUT.
• Interface de codificac¸˜ao de v´ıdeo: envia sinais digitais
RGB e sinais de controle VGA para o bloco Video-OUT. A sa´ıda do sistema ´e VGA, para que a placa possa ser conectada tanto em um HMD, quanto em um monitor de v´ıdeo convencional.
A plataforma ARCam oferece um modelo de design baseado em uma biblioteca de componentes que permite aos desenvolvedores acessar cada componente para executar uma funcionalidade espec´ıfica. Estes componentes podem ent˜ao ser combinados para compor uma aplicac¸˜ao de RA com o comportamento desejado.
Diversos componentes de processamento de imagem foram implementados para compor a infraestrutura do ARCam, tais como: binarizac¸˜ao, escala de cinza, label-ing, filtro de m´edia, detecc¸˜ao de contorno, convoluc¸˜ao gen´erica, estimativa de centr´oide, detecc¸˜ao de quadrados e renderizac¸˜ao de objetos 3D em wireframe, al´em do m´odulo implementado neste trabalho.
IV. METODOLOGIA DE DETECC¸ ˜AO DE MARCADORES
A criac¸˜ao de um cen´ario de RA requer que uma s´erie de passos seja realizada, desde a captura da imagem pela cˆamera at´e a apresentac¸˜ao do resultado final no display. Estes passos formam o pipeline de RA, mostrado na Figura 2.
Este trabalho tem como objetivo completar o pipeline de RA implementado no framework ARCam, no que diz respeito `a fase de identificac¸˜ao de marcadores.
A. Realidade aumentada com marcadores
Um dos pontos cruciais para se trabalhar com RA com marcadores envolve a identificac¸˜ao dos padr˜oes embutidos nos marcadores utilizados. Para identific´a-los, ´e necess´ario
Figura 2. Pipelinede RA.
aplicar uma s´erie de procedimentos na imagem de entrada capturada pela cˆamera.
O primeiro procedimento aplicado ´e a binarizac¸˜ao da imagem, que corresponde `a transformac¸˜ao da imagem co-lorida em uma imagem em preto e branco, suficiente para a detecc¸˜ao dos marcadores escolhidos. Esse procedimento diminui a quantidade de mem´oria necess´aria no armazena-mento da imagem a ser analisada. Na fase de binarizac¸˜ao da imagem aplica-se um limiar no valor da intensidade de cada pixel: caso a intensidade do pixel ultrapasse o limiar, ent˜ao o pixel ´e considerado branco; caso contr´ario, o pixel ´e considerado preto.
Ap´os transformar a imagem em preto e branco, ´e necess´ario identificar as bordas contidas na imagem, que podem ser definidas quando a intensidade dos pixels de uma regi˜ao varia bruscamente. Na identificac¸˜ao das bordas ´e aplicado o m´etodo Zero Crossing de segunda derivada, implementado utilizando uma m´ascara de convoluc¸˜ao dis-creta [2]. Tendo obtido todas as bordas, ´e poss´ıvel ve-rificar a existˆencia de retˆangulos na imagem, analisando quais delas formam contornos fechados e executando uma classificac¸˜ao poligonal em cada contorno encontrado [10]. Esta classificac¸˜ao poligonal ´e realizada atrav´es da an´alise dos ˆangulos entre os v´ertices do contorno.
Como resultado da verificac¸˜ao da existˆencia de retˆangulos, obt´em-se os v´ertices dos retˆangulos encontrados. Estes retˆangulos, contudo, n˜ao pertencem necessariamente ao plano da tela. Logo, a leitura do padr˜ao do marcador n˜ao pode ser feita somente com a imagem do jeito que foi capturada. ´E preciso transformar a imagem para que o marcador esteja no plano da tela. Neste momento, aplica-se a correc¸˜ao da distorc¸˜ao de perspectiva.
B. Correc¸˜ao da distorc¸˜ao de perspectiva
O retˆangulo encontrado na imagem de entrada ´e na verdade um quadrado com uma distorc¸˜ao de perspectiva, que aparece quando o plano da tela n˜ao ´e paralelo ao plano do marcador, como mostrado na Figura 3.
Figura 3. Correc¸˜ao da distorc¸˜ao de perspectiva.
A distorc¸˜ao de perspectiva pode ser modelada de acordo com a transformac¸˜ao projetiva apresentada na equac¸˜ao 1, onde p e p0 s˜ao vetores representando pontos em 3 di-mens˜oes no plano da tela e H ´e uma matriz homogˆenea n˜ao-singular.
p0= Hp (1)
Descobrindo a matriz H, ´e poss´ıvel levar o retˆangulo no plano do marcador a um quadrado de referˆencia no plano da tela, e dessa forma, efetuar a leitura correta do padr˜ao. Uma das maneiras de descobrir a matriz H ´e encontrar a correspondˆencia entre 4 pontos nos 2 planos, o que ´e bastante simples, j´a que os v´ertices do retˆangulo foram descobertos previamente na classificac¸˜ao poligonal. Com a correspondˆencia desses 4 pontos, ´e poss´ıvel extrair 8 equac¸˜oes, conforme descrito no par de equac¸˜oes 2. Nas equac¸˜oes a seguir, os elementos da matriz H s˜ao expres-sos na forma hij. (x0, y0) representam as coordenadas na
tela.
x0(h31x + h32y + h33) = h11x + h12y + h13
y0(h31x + h32y + h33) = h21x + h22y + h23 (2)
Assumindo que h33= 1 e com as 8 equac¸˜oes obtidas a partir
de 2, ´e poss´ıvel montar o seguinte sistema linear apresentado na equac¸˜ao 3: x0 y0 1 0 0 0 −x0x00 −y0x00 x1 y1 1 0 0 0 −x1x01 −y1x01 x2 y2 1 0 0 0 −x2x02 −y2x02 x3 y3 1 0 0 0 −x3x03 −y3x03 0 0 0 x0 y0 1 −x0y00 −y0y00 0 0 0 x1 y1 1 −x1y10 −y1y01 0 0 0 x2 y2 1 −x2y20 −y2y02 0 0 0 x3 y3 1 −x3y30 −y3y03 ∗ h11 h12 h13 h21 h22 h23 h31 h32 = x00 x01 x02 x03 y00 y01 y02 y03 (3)
O que realmente importa na matriz H ´e a relac¸˜ao entre seus elementos, logo este sistema linear ´e suficiente para resolver o problema da correc¸˜ao da distorc¸˜ao de perspectiva em func¸˜ao de um fator de escala. Para simplificar o problema de resoluc¸˜ao do sistema linear da equac¸˜ao 3, escolhe-se os valores das coordenadas do quadrado na tela (x, y), que s˜ao valores fixos, de maneira a eliminar o m´aximo de termos do sistema. A forma mais simples de fazer isso ´e mapear o quadrado de referˆencia conforme a Figura 4.
Figura 4. Coordenadas do quadrado no plano da tela.
Usando estes valores para o quadrado de referˆencia do plano da tela, o sistema linear ´e reduzido a um pequeno conjunto de equac¸˜oes facilmente solucion´avel. Por fim, o fator de escala da matriz H ´e definido, restringindo ||H|| = 1 (a norma de H como sendo unit´aria). Maiores detalhes sobre como a correc¸˜ao da distorc¸˜ao de perspectiva funciona no framework ARCam podem ser encontrados em [6]. C. Detecc¸˜ao de padr˜oes
Na leitura do padr˜ao do marcador, varre-se o quadrado de referˆencia, vertical e horizontalmente, aplicando a matriz de transformac¸˜ao projetiva. Tal procedimento permite recuperar o c´odigo embutido no marcador. Como a imagem de leitura j´a se encontra binarizada, cada ponto j´a recebe seu valor bin´ario correspondente: 0 se preto, 1 se branco.
Apesar da correc¸˜ao da distorc¸˜ao de perspectiva facilitar a leitura correta do marcador, ainda existe um erro associado `a homografia, devido a fatores como a precis˜ao dos c´alculos executados e a precis˜ao da identificac¸˜ao dos v´ertices do
marcador. Uma forma de diminuir esse erro ´e capturando mais de um ponto para cada bit do padr˜ao. O padr˜ao do marcador simples do ARToolkitPlus, apresentado na Figura 5, representa um c´odigo de 36 bits em formato de uma malha 6×6, onde um valor de 9 bits ´e repetido 4 vezes e codificado com uma m´ascara XOR [5].
Figura 5. Exemplos de marcadores do ARToolkitPlus.
Capturando na imagem nove pontos para cada bit, isto ´e, uma malha de 18 × 18 pontos, a precis˜ao da detecc¸˜ao aumenta. O valor final de cada bit ´e definido pela m´edia dos valores dos nove pontos correspondentes. Este procedimento ´e conhecido por subsampling.
Quando o padr˜ao for lido do marcador, ´e ent˜ao poss´ıvel aplicar um algoritmo espec´ıfico para decodificar o c´odigo de 9 bits correspondente a cada marcador. Este algoritmo remove a codificac¸˜ao originada pela aplicac¸˜ao da m´ascara XOR durante a criac¸˜ao do padr˜ao do marcador.
V. IMPLEMENTAC¸ ˜AO
Neste trabalho foi implementado um m´odulo de detecc¸˜ao de marcadores para o framework ARCam em um FPGA Stratix II EP2S60F1020C4 da Altera, utilizando o kit de desenvolvimento para DSP DK-DSP-2S60N do mesmo fa-bricante (ilustrado na Figura 6).
Figura 6. Ambiente de desenvolvimento do ARCam.
Este m´odulo consiste de trˆes subm´odulos: o primeiro subm´odulo calcula a homografia entre os dois quadrados (o do plano da imagem e o de referˆencia, no plano da tela); o segundo acessa os pixels da mem´oria que armazena a ima-gem em preto e branco e realiza o subsampling; o terceiro executa o algoritmo de reconhecimento do c´odigo de 36 bits
do marcador. Estes m´odulos foram completamente imple-mentados utilizando a linguagem VHDL (Very-High-Speed Integrated Circuits Hardware Description Language) [11].
O primeiro subm´odulo ´e respons´avel por todo o c´alculo da ´algebra envolvida no processo de descobrir a homografia. Os c´alculos foram realizados com aritm´etica de ponto fixo no formato Q23.24, a fim de acelerar a execuc¸˜ao do subm´odulo, sob pena de uma pequena perda de precis˜ao que pouco influi na fidelidade dos resultados obtidos. Os c´alculos foram implementados utilizando as func¸˜oes MegaCore daR
Altera [12] de multiplicac¸˜ao, divis˜ao e raiz quadrada, sendo quatro multiplicadores funcionando em paralelo.
O segundo subm´odulo aplica a matriz de homografia encontrada aos pontos do quadrado de referˆencia e armazena o valor dos pixels da imagem na mem´oria. O quadrado de referˆencia possui uma resoluc¸˜ao de 18 × 18 pixels, con-forme informado na sec¸˜ao 3.3, com o objetivo de aumentar a precis˜ao da detecc¸˜ao. Em seguida, o procedimento de subsampling ´e executado. Na aplicac¸˜ao da homografia s˜ao utilizados dois multiplicadores de 32 bits em paralelo e um divisor de mesma precis˜ao. Estes m´odulos aritm´eticos est˜ao no formato Q15.16. A mem´oria utilizada para armazenar a imagem em preto e branco foi implementada utilizando blocos de mem´oria M4K dispon´ıveis no FPGA.
O terceiro subm´odulo executa o algoritmo que detecta o c´odigo de 9 bits codificado no padr˜ao de 36 bits do marcador. O algoritmo verifica o padr˜ao para as quatro rotac¸˜oes poss´ıveis (0o, 90o, 180oe 270o) e retorna o c´odigo
se alguma das rotac¸˜oes apresentar n´ıvel de precis˜ao acima de um limiar. Apesar da biblioteca ARToolKitPlus usar um limiar de valor igual a 0.5, verificou-se neste trabalho que os resultados apresentaram-se melhores com um limiar de valor igual a 0.7. Este algoritmo ´e essencialmente seq¨uencial, contudo sua execuc¸˜ao leva apenas poucos ciclos de clock.
VI. RESULTADOS
Para apresentar os resultados obtidos com a implementac¸˜ao dos m´odulos de detecc¸˜ao de marcadores em FPGA, foi feita uma comparac¸˜ao entre o tempo de execuc¸˜ao do algoritmo em software e em hardware. Somente um tamanho de imagem foi utilizado, 320 × 240 pixels, por causa de uma limitac¸˜ao do sensor de imagem acoplado ao FPGA utilizado no trabalho, o sensor CMOS OV7620 da Omnivison. A Figura 7 ilustra a detecc¸˜ao de marcadores sendo utilizada no framework ARCam.
A biblioteca de RA ARToolkitPlus [5] foi usada como modelo de referˆencia para execuc¸˜ao em software. O ambi-ente de execuc¸˜ao consistia de uma CPU AMD Athlon 64 X2 Dual-Core de 1.9 GHz e 1 GB de mem´oria DDR2.
Para a implementac¸˜ao em FPGA utilizou-se uma freq¨uˆencia de clock de 25 MHz, devido a restric¸˜oes de freq¨uˆencia de execuc¸˜ao impostas principalmente pelos m´odulos aritm´eticos de divis˜ao. A quantidade de ciclos
Figura 7. Detecc¸˜ao de marcadores sendo executada em FPGA.
de clock necess´arios `a execuc¸˜ao de cada subm´odulo foi calculada e ´e mostrada na Tabela I.
Tabela I
TEMPO DE EXECUC¸ ˜AO DOS SUBMODULOS EM CICLOS DE´ clock. Ciclos de clock
C´alculo da Homografia 112
Subsampling 8535
Detecc¸˜ao do Padr˜ao 235
O subm´odulo que executa o subsampling leva considera-velmente mais tempo do que os outros subm´odulos, pois ele aplica a matriz de homografia em cada ponto do quadrado. Uma vez que esse procedimento foi implementado de forma seq¨uencial, ´e extremamente custoso em comparac¸˜ao `as ou-tras etapas do algoritmo. Ainda ´e poss´ıvel reduzir esse custo, tomando vantagem da caracter´ıstica intr´ınseca de paralelismo da plataforma FPGA.
A comparac¸˜ao dos resultados da execuc¸˜ao total do m´odulo de detecc¸˜ao nas duas plataformas mostrou que a execuc¸˜ao em FPGA ´e mais do que duas vezes mais r´apida do que a execuc¸˜ao em software, como mostra o gr´afico na Figura 8.
Figura 8. Gr´afico comparativo entre implementac¸˜oes em FPGA e software.
VII. CONCLUSOES˜
Um m´odulo de detecc¸˜ao de marcadores ID-based para um framework de RA embarcado foi apresentado e validado comparativamente a uma abordagem em software. Os resul-tados comprovaram que o tempo de execuc¸˜ao do m´odulo
implementado neste trabalho ´e mais do que duas vezes menor do que a abordagem em software, para uma imagem de mesma dimens˜ao (nos testes foram utilizadas imagens de 320 × 240 pixels).
Este m´odulo completa o framework de RA embarcado ARCam, mostrando que ´e poss´ıvel desenvolver aplicac¸˜oes de RA em dispositivos embarcados, uma plataforma bastante apropriada `as necessidades inerentes de RA de poder de processamento e mobilidade.
Como trabalhos futuros, pretende-se implementar uma interface para mem´oria externa, de forma a possibilitar o processamento de imagens de dimens˜oes maiores, estu-dar a soluc¸˜ao mais eficiente de paralelizar a execuc¸˜ao do subsampling, e analisar a viabilidade de construc¸˜ao de um frameworkde RA sem marcadores, que utiliza caracter´ısticas do pr´oprio ambiente para o rastreamento.
VIII. AGRADECIMENTOS
Os autores gostariam de agradecer ao MCT e ao CNPq, por financiarem esta pesquisa (processo 507194/2004-7).
REFERENCES
[1] M. Haller, M. Billinghurst, and B. Thomas, Emerging tech-nologies of augmented reality : interfaces and design / Michael Haller, Mark Billinghurst, and Bruce Thomas, ed-itors. Idea Group Pub., Hershey PA :, 2007.
[2] G. F. Guimar˜aes, J. P. S. M. Lima, J. M. X. N. Teixeira, G. D. Silva, V. Teichrieb, and J. Kelner, “Fpga infrastructure for the development of augmented reality applications,” in SBCCI ’07: Proceedings of the 20th annual conference on Integrated circuits and systems design. New York, NY, USA: ACM, 2007, pp. 336–341.
[3] J. Lima, G. Guimar˜aes, G. Dias, J. Teixeira, E. Xavier, V. Teichrieb, and J. Kelner, “Arcam: an fpga-based augmented reality framework,” in Proceedings of Symposium on Virtual and Augmented Reality, 2007, pp. 106–115.
[4] R. Azuma, “A survey of augmented reality,” 1995. [Online]. Available: citeseer.ist.psu.edu/azuma95survey.html
[5] D. Wagner and D. Schmalstieg, “Artoolkitplus for pose track-ing on mobile devices,” in CVWW 2007, 2007, pp. 6–8. [6] B. F. Reis, J. M. X. N. Teixeira, V. Teichrieb, and J.
Kel-ner, “Perspective correction implementation for embedded (marker-based) augmented reality,” in Proceedings of Work-shop de Realidade Virtual e Aumentada, 2008.
[7] W. Piekarski, R. Smith, G. Wigley, B. Thomas, and D. Kear-ney, “Mobile hand tracking using fpgas for low powered augmented reality,” in ISWC ’04: Proceedings of the Eighth International Symposium on Wearable Computers. Washing-ton, DC, USA: IEEE Computer Society, 2004, pp. 190–191. [8] E. Toledo, J. Martinez, E. Garrigos, and J. Ferrandez, “Fpga implementation of an augmented reality application for vi-sually impaired people,” in Field Programmable Logic and Applications, 2005. International Conference on, Aug. 2005, pp. 723–724.
[9] L. L. Rice, W. Luk, T. K. Lee, J. R. Rice, N. Shirazi, and P. Y. K. Cheung, “Reconfigurable computing for augmented reality,” in In 7th IEEE Symposium on Field-Programmable Custom Computing Machines, 1999, pp. 136–145.
[10] L. Xu, T. Paila, W. Hansmann, and M. Frank, “Intel open source computer vision library, version 3.1,” in Proc. of the 26th Annual Conference on Local Computer Networks, LCN’01, 2003.
[11] P. J. Ashenden, The Designer’s Guide to VHDL, Volume 3, Third Edition (Systems on Silicon) (Systems on Silicon). San Francisco, CA, USA: Morgan Kaufmann Publishers Inc., 2008.
[12] “Altera megacore R functions,” July 2009. [Online]. Available: http://www.altera.com/literature/lit-ip.jsp