CHAPITRE III .... PARALLELISATION DE LA METHODE DES
III.2. Parallélisation de l’intégration et d’assemblage sur GPU
III.2.5. Développement d’une nouvelle approche d’assemblage global
4.1 Aquisição de Dados 73 pudesse ser obtido posição, orientação e dados, apresenta-se um comparativo entre os três esquemas de codificação mencionados, conforme a Tabela 4.1.
Tabela 4.1: Comparativo entre as Codificações. Fonte: (SOARES, 2001), (DENSOWAVE, 2011) e (STEVENSON, 2005)
Barcode QR Code Data Matrix Capacidade de Armazenamento 1byte/4cm 2953 bytes 2335 bytes Velocidade de Leitura por Visão Rápida Rápida Lenta
Especificação Aberta Sim Sim Sim
Referências Internas dos Cantos 0 3 2
Tolerância a erros Não Até 30% Até 30%
Formato Linear Quadrado Retangular
Constatou-se que a capacidade de armazenamento do Barcode é inferior aos padrões de códigos bidimensionais para uma mesma área de código e não indicado para uma leitura por visão.
Os marcadores para os vértices são outro fator importante, haja visto que estes são referências internas que facilitam a identificação dos cantos, necessários para estimar a posição e orientação do marcador em relação à câmera.
O trabalho de Belussi e Hirata (2011) comprova a possibilidade de se detectar rapidamente QR Codes no ambiente. O princípio da aplicação se baseia em identificar os elementos do QR Code fazendo uso de uma lista de características a serem identificadas por visão que devem ser previamente especificadas. O algoritmo de identificação segue os seguintes passos: é informado um conjunto de características a serem procuradas e uma classificação em cascata das características, se algum segmento da imagem confere com a primeira característica especificada, ele segue para ser verificado com as demais características, caso contrário, o segmento é rejeitado. O algoritmo conseguiu detectar os marcadores contidos no QR Code em um tempo menor que 160 milissegundos, suficiente para uma aplicação em tempo real.
A tolerância a erros presente nos padrões QR Code e Data Matrix permite que seja feita a correta leitura do código mesmo quando se tem até 30% de bits perdidos, isto é feito por meio de algoritmos sofisticados de distribuição da informação em diferentes pedaços do código, e redundância na representação, onde quando determinada parte do código não pode ser lida, é utilizado o restante do código para recuperação da informação perdida. Além disto, o QR Code
4.1 Aquisição de Dados 74 possui capacidade de armazenamento superior aos outros padrões de codificação.
Os QR Codes adquiritos em imagens naturais necessitam de uma resolução e um enquadramento adequados para leitura. O trabalho de Heleno et al. (2011)faz a localização, registro e segmentação de QR Codes de forma aprimorada utilizando técnicas de processamento de imagens que flexibilizam os requisitos mínimos para leitura. No trabalho em questão foi possível conseguir um aumento da taxa de reconhecimento pelos algoritmos padrões de leitura de 50% para 70% até mesmo em superfícies irregulares, possibilitando efetuar a leituras em imagens que antes não eram possíveis, e em superfícies como rótulo de garrafas e camisetas. Para teste dos conceitos desta dissertação, nao será necessário fazer uso da técnica pois foram usados marcadores em superficies planas e com enquadramento adequado. Apesar de não ser usual neste trabalho, isto mostra que os elementos do QR Code podem ser explorados a fim de prover maior flexibilidade no desenvolvimento de aplicações.
Por fim, foi feita a escolha pelo QR Code para ser usado de base para elaboração de um marcador próprio, devido a: grande capacidade de armazenamento de informação (2953 bytes), possuir referências internas para os vértices, o que facilita a identificação dos cantos por VC, possuir tolerância a erros de leitura, por possuir o formato quadrado, o que facilita os cálculos de posição e orientação, e por estar disponível uma versão beta nos repositórios UBUNTU (2010) com o nome de ‘libdecodeqr’.
4.1.1
Algoritmo de leitura para o QR Code
O algoritmo para leitura segue as facilidades fornecidas pelo padrão da codificação: inicialmente, calcula-se o histograma, buscando estabelecer o melhor valor que divide a imagem em apenas dois níveis de cor, então uma nova imagem é criada, assumindo como célula escura os níveis menores que o valor encontrado no histograma e como células claras os níveis maiores.
Para encontrar os finder patterns é feito um escaneamento em linha buscando os padrões indicados na Figura 4.1. O padrão esperado é de cinco traços alternados, onde os dois primeiros traços e os dois últimos sejam três vezes menor que traço o central. Este padrão no finder pattern é adquirido em qualquer posição, até mesmo na diagonal onde as dimensões são maiores. Tendo a informação das coordenadas do centro de cada finder pattern é assumido como vértice o ponto pertencente ao finder pattern que esteja mais distante do centro do código.
4.1 Aquisição de Dados 75
Figura 4.1: Padrão definido pelo finder pattern. Fonte: (OHBUCHI; HANAIZUMI; HOCK, 2004)
quarto canto fazendo uso de dois dos três cantos já obtidos. Não há um marcador para o quarto canto, e nem sempre este canto conterá uma célula escura, dessa forma, é arbitrado um ponto aproximado tal que a linha formada pelo ponto e cada um dos cantos adjacentes esteja fora da área do código. Então, é realizado um movimento desse ponto em direção à área do código e consequentemente o recálculo das linhas, de forma a encontrar o ponto onde ambas as linhas tangenciam a área do código, conforme visto na Figura 4.2 (OHBUCHI; HANAIZUMI; HOCK, 2004).
Figura 4.2: Cálculo estimado do quarto ponto. Fonte: (OHBUCHI; HANAIZUMI; HOCK, 2004)
Uma câmera pode ter obtido a imagem em qualquer posição e orientação, para isso, faz-se necessária uma normalização para uma correta leitura dos dados. Nesse sentido é aplicada uma normalização de forma que os pixels da área do código fiquem igualmente distribuídos dentro de um quadrado de tamanho pré-definido para leitura. A fórmula da transformada é a que segue (OHBUCHI; HANAIZUMI; HOCK, 2004):
u = Axx + Ayx + Bx Dxx + Dyy + 1
v = Byx + Ccx + Cy Dxx + Dyy + 1
(4.1) ondeu e v estão no sistema de coordenadas para onde se está mapeando os pixels, x e y são as coordenadas no sistema adquirido originalmente por uma câmera ou outro dispositivo, eA, B,
4.2 Detecção de posição e orientação 76