• Nenhum resultado encontrado

Detecção e leitura de QR Codes em imagens

N/A
N/A
Protected

Academic year: 2021

Share "Detecção e leitura de QR Codes em imagens"

Copied!
55
0
0

Texto

(1)

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ

COORDENAÇÃO DE ENGENHARIA ELETRÔNICA

ENGENHARIA ELETRÔNICA

GUILHERME FRANCISCO IAKMIU PENDIUK

DETECÇÃO E LEITURA DE QR CODES EM IMAGENS

TRABALHO DE CONCLUSÃO DE CURSO

TOLEDO

(2)
(3)

GUILHERME FRANCISCO IAKMIU PENDIUK

DETECÇÃO E LEITURA DE QR CODES EM IMAGENS

Trabalho de Conclusão de Curso apresentado como requisito parcial à obtenção do título de Bacharel em Engenharia Eletrônica da Coordenação de Engenharia Eletrônica da Universidade Tecnológica Federal do Paraná.

Orientador: Prof(a). Me. Jaqueline Vargas

TOLEDO

(4)
(5)

TERMO DE APROVAÇÃO

Título do Trabalho de Conclusão de Curso No 025

Detecção e Leitura de QR Codes em Imagens

por

Guilherme Francisco Iakmiu Pendiuk

Esse Trabalho de Conclusão de Curso foi apresentado às 14:40 h do dia 24 de novembro de 2015 como requisito parcial para a obtenção do título Bacharel em Engenharia Eletrônica. Após deliberação da Banca Examinadora, composta pelos professores abaixo assinados, o trabalho foi considerado APROVADO.

________________________________ _______________________________ Prof. Dr. Fábio Rizental Coutinho Prof. Dr. Paulo de Tarso Neves Junior

(UTFPR-TD) (UTFPR-TD)

________________________________

Profa. M. Jaqueline Vargas (UTFPR-TD)

Orientadora

Visto da Coordenação

____________________________

Prof. M. Alessandro Paulo de Oliveira Coordenador da COELE Ministério da Educação

Universidade Tecnológica Federal do Paraná Câmpus Toledo

(6)
(7)

RESUMO

PENDIUK, Guilherme Francisco Iakmiu. Detecção e leitura de QR Codes em imagens. 2015. Trabalho de conclusão de curso (Bacharelado em Engenharia Eletrônica) – Universidade Tecnológica Federal do Paraná. Toledo, 2015.

QR Codes são códigos de barra bidimensionais utilizados para armazenamento de mensagens de tamanho superior ao que códigos de barra tradicionais conseguem suportar. Neste trabalho, é proposto um algoritmo para detecção do QR Code em imagens com diferentes características, além de sua leitura segundo métodos propostos pela norma que padroniza esses códigos. Para tal, fez-se necessário a importação da imagem para depois detectar a principal característica do código: os três marcadores de localização. Em seguida deve-se recortar o QR Code da imagem para assim ser efetuada a leitura. Todo o processo é realizado com a utilização do programa MATLAB® como plataforma de desenvolvimento. Por fim, alguns resultados mostram que o algoritmo proposto desempenha bem seu papel desde que o código não esteja obstruído.

(8)
(9)

ABSTRACT

PENDIUK, Guilherme Francisco Iakmiu. Detection and Reading of QR Codes inside images. 2015. Trabalho de conclusão de curso (Bacharelado em Engenharia Eletrônica) – Universidade Tecnológica Federal do Paraná. Toledo, 2015.

QR Codes are bidimensional barcodes utilized to store bigger messages than ordinary bar codes can hold. In this work, an algorithm is proposed for QR Codes detection in images with different characteristics, besides its reading according methods proposed by the norm that sets patterns for these kinds of codes. For such, becomes necessary the image import, so the algorithm can detect the main characteristic of the code: the three location markers. Then, the QR Code must be cut off of the image so the algorithm can perform the reading step. All this process is made using MATLAB® as its development platform. In the end, some results show that the algorithm can achieve its goals, as long as the code is not obstructed.

(10)
(11)

LISTA DE FIGURAS

Figura 1 - Exemplo de um QR Code ... 17

Figura 2 – Estrutura geral de um QR Code ... 17

Figura 3 – Estrutura dos marcadores de localização do QR Code... 19

Figura 4 - Demonstração do padrão 1:1:3:1:1 no marcador de localização do QR Code ... 19

Figura 5 - (a) Delimitação da matriz original; (b) Limites da matriz resultante da homografia afim ... 21

Figura 6 - Código para importação e transformação de uma imagem em preto e branco ... 23

Figura 7 - Verificação de linha durante detecção dos marcadores de localização .... 25

Figura 8 - QR Code antes e depois da detecção dos marcadores de localização .... 25

Figura 9 - Exemplo de funcionamento do filtro de Gauss ... 27

Figura 10 - Imagem de um QR Code após o uso do filtro de Gauss ... 28

Figura 11 - Processo de verificação da área do QR Code ... 29

Figura 12 - Código para cópia do QR Code com correção angular ... 30

Figura 13 - A esquerda, imagem original e marcadores apontados. A direita, QR Code recortado da imagem ... 30

Figura 14 - Demarcação da localização do Formato da Informação do QR Code .... 31

Figura 15 - Possíveis máscaras utilizadas na codificação da mensagem do QR Code ... 32

Figura 16 - A esquerda QR Code na matriz final. A direita QR Code desmascarado. ... 33

Figura 17 – Módulos que contém o tipo de mensagem no canto direito inferior de um QR Code. ... 34

Figura 18 - Detalhe do local onde o tamanho da mensagem é armazenado e sentido de leitura da informação. ... 35

Figura 19 - Padrão de leitura das palavras-chave no QR Code ... 37

Figura 20 - A esquerda foto original utilizada sem alteração de brilho. A direita foto em preto e branco ... 40

Figura 21 - Imagens para testes de brilho com fundo uniforme, referenciadas no Quadro 5. ... 41

(12)

Figura 22 – Segundo teste de brilho com imagem original a esquerda. À direita a mesma foto após a conversão de cores ... 42 Figura 23 - Imagens para testes de brilho com fundo irregular, referenciadas no Quadro 6. ... 43 Figura 24 - Imagens utilizadas no teste com QR Codes rotacionados. Referenciadas no Quadro 7 ... 44 Figura 25 - Detecção errada de marcadores de localização devido à perspectiva ... 46

(13)

LISTA DE QUADROS

Quadro 1 - Identificação do tipo de mensagem armazenada segundo os bits correspondentes ... 33 Quadro 2 - Número de bits no vetor de tamanho correspondente a cada tipo de mensagem... 34 Quadro 3 - Tamanho das palavras-chave segundo o tipo de mensagem ... 35 Quadro 4 - Representação de caracteres Alfanuméricos e respectivos números decimais. ... 37 Quadro 5 - Resumo dos testes de brilho com imagens de fundo uniforme, referenciadas na Figura 21... 40 Quadro 6 - Resumo dos testes de brilho com imagens de fundo irregular, referenciadas na Figura 23... 42 Quadro 7 - Resultados dos testes com QR Codes rotacionados e referenciados na Figura 24 ... 45 Quadro 8 - Resultados dos testes de leitura com perspectiva ... 46 Quadro 9 - Resultados obtidos no teste com QR Codes diferentes. ... 47

(14)
(15)

SUMÁRIO 1 INTRODUÇÃO ... 13 1.1OBJETIVOGERAL ... 13 1.2OBJETIVOESPECÍFICO ... 13 1.3JUSTIFICATIVA ... 14 1.4ORGANIZAÇÃODOTRABALHO ... 14

2 MÉTODO DE DETECÇÃO E LEITURA DO CÓDIGO EM IMAGENS ... 16

2.1 QRCODE ... 16

2.2DETECÇÃODO QRCODE ... 17

2.3CORREÇÃOANGULAR ... 19

2.4LEITURADO QRCODE ... 21

3 ALGORITMO PROPOSTO ... 23

3.1IMPORTAÇÂODAIMAGEMEPREPARAÇÃOINICIAL ... 23

3.2DETECÇÃODOSMARCADORESDELOCALIZAÇÃO ... 24

3.3RECORTEDO QRCODE DAIMAGEM ... 28

3.4LEITURADO QRCODE ... 31

3.4.1DETECÇÃO DO FORMATO DA INFORMAÇÃO ... 31

3.4.2TIPO DE MENSAGEM ARMAZENADA ... 33

3.4.3TAMANHO DA MENSAGEM ... 34

3.4.4LEITURA DA MENSAGEM... 35

4 TESTES E RESULTADOS ... 39

4.1COMPORTAMENTOCOMDIFERENTESNÍVEISDEBRILHO ... 39

4.1.1LEITURA EM IMAGEM COM FUNDO UNIFORME ... 39

4.1.2DETECÇÃO COM FUNDO IRREGULAR... 41

4.2LEITURACOMO QRCODEROTACIONADO ... 43

4.3ÂNGULOMÁXIMODEINCLINAÇÃONAAQUISIÇÃODAIMAGEM ... 45

4.4LEITURADE QRCODES DIFERENTES ... 47

5 CONSIDERAÇÕES FINAIS ... 48

5.1CONCLUSÃO ... 48

5.2PROPOSTASPARATRABALHOSFUTUROS ... 49

(16)
(17)

13

1 INTRODUÇÃO

Desde o ano 1984 códigos de barra são utilizados para controle de estoque em mercados e lojas em todo o país (Seideman, 2009). Porém, eles possuem uma grande limitação no quesito quantidade de informação armazenável, pois só codificam certo número de caracteres numéricos. Para o código do tipo EAN-13, por exemplo, são apenas 12 caracteres codificados (Adair, 2006). Códigos de barra bidimensionais surgiram para suprir a demanda por códigos de barra que comportem quantidades maiores de informações, capazes de armazenar sequências de caracteres de diferentes tipos e tamanhos. Em 1994, o Quick Response Code (QR Code) foi apresentado ao mercado, mostrando ser capaz de armazenar até mesmo Kanjis, que são caracteres especiais utilizados no alfabeto japonês (Rathod et al., 2012).

Com o aumento da popularidade do QR Code, surge a necessidade de algoritmos capazes de realizar sua decodificação. Para tal, é necessário realizar uma detecção de imagem e, especificamente para o QR Code, existe um método de detecção padronizado pela norma ISO/IEC 18004 denominado “Contagem Simples” (apresentado na Seção 2.2). Além disso, essa norma apresenta passos a serem executados na leitura deste tipo de código e fixa padrões para os QR Codes e suas diferentes versões (para este trabalho será considerado para testes apenas a versão 1).

Assim, este trabalho propõe um algoritmo para detectar e fazer a leitura do QR Code em imagens utilizando como plataforma de desenvolvimento o programa MATLAB®, e como base metodológica os procedimentos padronizados pela ISO/IEC 18004. O algoritmo pode ser acessado em Pendiuk, 2015.

1.1 OBJETIVO GERAL

O objetivo do presente trabalho é implementar um algoritmo para detecção e leitura de um QR Code em uma imagem.

1.2 OBJETIVO ESPECÍFICO

(18)

14

 Criação de um algoritmo para detecção dos marcadores de localização do QR Code em imagens;

 Desenvolvimento de um método para correção de posicionamento do QR Code;

 Realização da leitura do QR Code.

 Realização de testes em diferentes cenários e imagens, para verificar se a detecção está sendo realizada;

1.3 JUSTIFICATIVA

A popularização do QR Code como substituto aos códigos de barra convencionais e como meio de compartilhamento de informações, torna importante a manipulação destas imagens com métodos que pode se estender para solucionar outros tipos de problemas.

Além disso, existe uma baixa incidência de trabalhos envolvendo manipulação de imagens na Universidade Tecnológica Federal do Paraná - Câmpus de Toledo, sendo então um cenário muito favorável para dar início a esse tipo de pesquisa. Com isso, torna-se importante apresentar um algoritmo que lida com imagens de forma simples, realizando a detecção e a leitura de QR Codes para assim incentivar futuros leitores a realizarem outras produções nessa área.

1.4 ORGANIZAÇÃO DO TRABALHO

Este trabalho está dividido em cinco capítulos, onde o primeiro capítulo faz uma introdução ao tema deixando evidentes seus objetivos e razões pelas quais esse foi realizado.

No segundo capítulo, além de conter uma explicação sobre como são constituídos os QR Codes, os métodos para detecção e leitura também são apresentados.

O terceiro capítulo contém a apresentação do algoritmo proposto para a detecção e a leitura de QR Codes.

No quarto capítulo a verificação e resultados de cada parte do algoritmo são apresentados e discutidos.

(19)

15

Por fim, o quinto capítulo contém uma conclusão deste trabalho e apresenta ideias para serem implementadas em trabalhos futuros com relação ao tema ou metodologias utilizadas no algoritmo final.

(20)

16

2 MÉTODO DE DETECÇÃO E LEITURA DO CÓDIGO EM IMAGENS

Para ser realizada a detecção, orientação e leitura de um QR Code em uma imagem, é necessário o uso de algumas ferramentas matemáticas e computacionais. Tais ferramentas serão apresentadas neste capítulo, tendo como primeiro passo para a detecção do QR Code, o entendimento de como ele é constituído, e suas principais características.

2.1 QR CODE

O QR Code foi inventado por um setor da empresa japonesa chamada Denso Corporation, criado devido à crescente necessidade de códigos de barra que pudessem conter mais informações além dos 13 caracteres numéricos que os códigos de barra tradicionais são capazes de armazenar (GS1 Brasil, 2014). Após anos de pesquisa e desenvolvimento, em 1994 a Denso Corporation anunciou o lançamento de um código de barras bidimensional, o qual chamaram de QR Code, marca registrada pela empresa. Este nome foi utilizado porque a principal característica deste código é a leitura 10 vezes mais rápida do que um código comum (Denso Wave Incorporation, 1994).

As principais características do QR Code são apresentadas a seguir (ISO/IEC 18004, 2000):

● Pode armazenar dados que representem números, letras, Bytes ou ideogramas japoneses;

● A quantidade de dados que podem armazenar depende da versão do QR Code, assim como seu tamanho;

● Possui dados de redundância para correção de erros; ● Sua leitura independe da sua posição.

Como pode ser visto na Figura 1, o QR Code é um código de barras composto de pequenos quadrados pretos ou brancos, denominados módulos (Figura 3). Além disso, embutidos dentro do código aparecem marcadores de localização e alinhamento, áreas contendo informações de versão, formato, sincronização para os dados codificados e correção de erros. Cada uma dessas áreas pode ser observada na Figura 2.

(21)

17

Figura 1 - Exemplo de um QR Code1 Fonte: Autoria Própria

Figura 2 – Estrutura geral de um QR Code Fonte: ISO/IEC 18004

2.2 DETECÇÃO DO QR CODE

Para a detecção do QR Code em uma imagem, o primeiro passo é encontrar as áreas que possam conter os marcadores de localização do código. Estes marcadores possuem características fixas, não importando a versão do código ao qual pertencem. A Figura 3 apresenta os detalhes do marcador de localização e sua

1

(22)

18

formação por módulos pretos e brancos. Vale ressaltar que uma imagem é formada por pixels e que um módulo do QR Code não necessariamente corresponde a um pixel, mas a um conjunto desses. Além disso, a quantidade de módulos indica a versão do código como, por exemplo: a versão 1 corresponde a uma matriz de 21 x 21 módulos; e a versão 2 corresponde a uma matriz de 25 x 25 módulos.

Com os três marcadores de localização detectados, informações como a posição, orientação, tamanho dos módulos e área do código podem ser encontradas. Para a detecção destes marcadores varias técnicas podem ser utilizadas. A metodologia pode ir desde a detecção de linhas que formam um quadrado (Hirzer, 2008), até a utilização de bibliotecas de código livre (Open Source) desenvolvidas para aplicações de Realidade Aumentada (Hulliyah et al., 2013).

O método escolhido para detecção do QR Code no presente trabalho é denominado “Contagem Simples”. Tal método foi escolhido, não apenas por ser de fácil implementação, mas por ser o método sugerido pela própria ISO/IEC 18004, a norma que padroniza o QR Code e traz as diretrizes para codificação e decodificação do mesmo.

Esta técnica baseia-se na principal propriedade dos marcadores de localização deste tipo de código de barra onde uma “linha guia” é traçada sobre o marcador cruzando o seu centro com o objetivo de contabilizar o número de pixels pretos e brancos (observe Figura 4). Com isso, o conjunto desses pixels deve seguir a proporção dos módulos do marcador, tendo assim o padrão 1:1:3:1:1.(Figura 3)(Ruan et al., 2011). A forma como o marcador de localização foi estabelecido permite que esta contagem seja feita em qualquer posição do marcador, contanto que a “linha guia” cruze sua região central. Esta propriedade pode ser observada na Figura 4 (Chen et al., 2012), na mesma figura um “nível alto” corresponde à pixels brancos e “nível baixo” corresponde à pixels pretos.

Com isso, o método proposto neste trabalho consiste em realizar uma contagem de grupos de pixels brancos e pretos para cada linha e coluna da imagem, que, ao ser importada para a plataforma de desenvolvimento utilizada, torna-se uma matriz de pixels. Durante a contagem, locais onde a presença do padrão 1:1:3:1:1 for confirmada, recebem um peso de valor unitário. Após a verificação de toda a imagem, nos locais onde existir a presença de um marcador de localização também existirá uma grande concentração de elementos da matriz com esse peso.

(23)

19

Uma vez detectado o QR Code devido à constatação dos marcadores de localização, os algoritmos para orientação e leitura podem ser executados (Duan et al., 2012).

Figura 3 – Estrutura dos marcadores de localização do QR Code Fonte: ISO/IEC 18004

Figura 4 - Demonstração do padrão 1:1:3:1:1 no marcador de localização do QR Code

Fonte: Belussi et al., 2011.

2.3 CORREÇÃO ANGULAR

Em muitos casos a imagem do QR Code pode estar apresentada com uma rotação. Para corrigir esse cenário a área do código deve ser identificada e copiada para uma nova matriz. A cópia deve ser feita de modo que o resultado seja a

(24)

20

imagem do QR Code com o mínimo de deformações possível e ampliada para que somente o código faça parte da imagem, sem objetos adicionais. Este processo ocorre após a detecção dos três marcadores de localização. A partir das coordenadas dos três marcadores, uma rotina para detectar a área ocupada pelo QR Code deve ser utilizada.

Após tal rotina, quatro pontos serão identificados, os quais correspondem aos quatro vértices da área ocupada pelo QR Code. Estas quatro coordenadas serão utilizadas para a cópia do código. Segundo Duan et al., 2012, e Aires, 2009, a cópia da matriz original a nova matriz com as correções necessárias se dá pela chamada “Homografia Afim” (Figura 5), também chamada de “Homografia Planar”. As equações para a operação são:

t t t t

XaXbX YcYd (1)

t t t t

YeXfX YgYh (2)

Nas equações, X e Y correspondem às coordenadas de um elemento na matriz da imagem original, que correspondem ao número da coluna e linha da matriz respectivamente. Da mesma forma, X e Y são as coordenadas de um elemento pertencente a matriz secundária, que recebe a cópia.

As constantes a, b, c até h são encontradas através de um sistema montado a partir das equações (1) e (2), os quatro vértices que delimitam a área ocupada pelo QR Code na imagem original e o tamanho da matriz secundária (Figura 5).Com isso, tem-se o seguinte sistema:

' ' ' ' A A A A A XaXbX YcYd (3) ' ' ' ' B B B B B XaXbX YcYd (4) ' ' ' ' C C C C C XaXbX YcYd (5) ' ' ' ' D D D D D XaXbX YcYd (6) ' ' ' ' A A A A A YeXfX YgYh (7) ' ' ' ' B B B B B YeXfX YgYh (8) ' ' ' ' C C C C C YeXfX YgYh (9)

(25)

21

' ' ' '

D D D D D

YeXfX YgYh (10)

Figura 5 - (a) Delimitação da matriz original; (b) Limites da matriz resultante da homografia afim

Fonte: Duan et al, 2012.

Na Figura 5, as coordenadas dos pontos que delimitam as áreas dos quadriláteros possuem duas componentes. Neste trabalho uma imagem é representada em uma matriz de pixels, pode-se então afirmar que as coordenadas são compostas pelo número da linha e coluna que os pontos estão alocados dentro da matriz. Assim, nas equações (3), (4), até a (10), as variáveis correspondem respectivamente ao número da linha e coluna do ponto ao qual se referem.

2.4 LEITURA DO QR CODE

Após a remoção do QR Code da imagem original e efetuadas as correções necessárias, será feita uma “tradução” do código resultante. Este passo se resume a verificar quantos pixels formam um módulo do código e então criar uma nova matriz em que cada um de seus elementos corresponda a um módulo do QR Code. Para isso, é executada a técnica “Homografia Afim” novamente, onde a cópia é feita da matriz secundária (Ver Seção 2.3) à matriz final, de tamanho 21x21 elementos (tamanho que o QR Code versão 1 possui, com 21x21 módulos).

Com o QR Code já apropriado, sua decodificação resume-se a execução dos seguintes passos (ISO/IEC 18004, 2000):

(26)

22

1. Transcrever módulos brancos e pretos com valores ‘0’ ou ‘1’, respectivamente.

2. Reconhecer o formato das informações contidas no código. 3. Determinar qual a versão do código analisado.

4. Obter os dados que correspondem à correção de erros e à mensagem armazenada.

5. Decodificar a informação do QR Code. 6. Apresentar a informação ao usuário.

Assim, com a informação contida no QR Code devidamente decodificada e apresentada ao usuário, o processo está completo.

(27)

23

3 ALGORITMO PROPOSTO

A implementação do algoritmo proposto neste trabalho pode ser dividida em três etapas até a leitura do código. Este capítulo mostra como foram realizadas as etapas de importação da imagem, detecção dos marcadores de localização, recorte do QR Code na imagem, e por fim, a leitura do código.

3.1 IMPORTAÇÂO DA IMAGEM E PREPARAÇÃO INICIAL

Para o desenvolvimento do sistema proposto, a plataforma escolhida foi o MATLAB® por possuir uma ferramenta denominada “imread” (Figura 6), que realiza a importação de uma imagem salva na memória do computador para a área de trabalho do programa. Neste trabalho utilizam-se apenas imagens com os formatos: JPEG e PNG.

Figura 6 - Código para importação e transformação de uma imagem em preto e branco Fonte: Autoria própria.

Após a importação, a imagem encontra-se disponível para tratamento na forma de uma matriz de tamanho N x M x 3, na qual N e M correspondem ao número de pixels que formam a imagem e em que cada elemento da matriz possui três dados que correspondem a cada componente RGB (Red, Green and Blue) que

(28)

24

atribuem uma cor ao pixel. Desta forma, a manipulação destes valores acarreta em uma mudança na cor do pixel ao qual a unidade da matriz corresponde.

O primeiro tratamento da imagem, após sua importação, é transformá-la em uma imagem em preto-e-branco (cor padrão dos QR Codes)(Liu et al., 2006). A Figura 6 apresenta o código utilizado para importação e mudança de cores de uma imagem, onde pode ser observado que valores abaixo de (100, 100, 100) na escala RGB recebe valor (0,0,0) (cor preta), e acima de (100, 100, 100) recebe valor (255, 255, 255) (cor branca). Isso expõe a facilidade com que uma imagem pode ser trabalhada dentro da plataforma utilizada. Com isso, pode ser iniciado o processo de detecção dos marcadores de localização do QR Code.

3.2 DETECÇÃO DOS MARCADORES DE LOCALIZAÇÃO

Como o padrão dos marcadores 1:1:3:1:1 (apresentado na Seção 2.2) identifica apenas o número dos módulos do código, e na imagem tem-se diversos pixels formando um módulo, cada linha e coluna da matriz de pixels deve ter suas elementos verificados. O número de elementos adjacentes de mesma cor da matriz são somados e atribuídos a um vetor. Por fim, é verificado o aparecimento de um padrão de pixels proporcional ao dos módulos dos marcadores de localização. Por exemplo, na Figura 7 a contagem de pixels sobre a linha vermelha poderia resultar em um vetor com os seguintes números de pixels por cor: 10, 20, 22, 59, 19, 21, 18, note que a linha se estende além do marcador de localização. Após a verificação deste vetor e admissão de uma margem de erro constata-se que os conjuntos de pixels que resultam na seção do vetor do número 20 ao 21, formam um padrão proporcional à 1:1:3:1:1, portanto, para esses pixels seria atribuído uma cor verde escura, (0, 125, 0) na escala RGB, para distingui-los dos demais. Durante a varredura das colunas da matriz, os pixels onde o padrão for detectado e já possuírem uma coloração verde escura, terão sua cor alterada novamente, para verde claro, (0, 200, 0) na escala RGB. Desta forma identificamos as possíveis coordenadas dos marcadores de localização verificando a ocorrência do padrão por duas direções distintas, pelas linhas e colunas da matriz (Chen et al., 2012). Durante a verificação pelo padrão uma margem de erro é admitida. Essa margem é calculada como uma porcentagem do tamanho da imagem. No algoritmo proposto, após diversos testes, uma margem de erro de aproximadamente 5% do número de

(29)

25

colunas que compõe a matriz da imagem apresentou ótimos resultados e foi então fixada como o valor padrão utilizado em todos os testes realizados.

Após este procedimento, a matriz resultante possui diversos elementos com pesos correspondentes aos marcadores de localização, porém a grande maioria desses são “falsos-positivo”. A Figura 8 apresenta uma imagem antes e após a detecção dos marcadores de localização. Como pode ser observado, é necessário um algoritmo para reduzir o número destes “falsos-positivo”. O melhor método encontrado para reduzir essa incidência na matriz é denominado Filtro Gaussiano.

Figura 7 - Verificação de linha durante detecção dos marcadores de localização

Fonte: Autoria própria.

Figura 8 - QR Code antes e depois da detecção dos marcadores de localização Fonte: Autoria própria.

Antes de utilizar o filtro de Gauss, a matriz da imagem é copiada e tem todos os seus elementos zerados com exceção àqueles que são correspondentes aos pixels com cor verde claro. A esses é atribuído o valor um.

(30)

26

O filtro de Gauss se comporta como uma média móvel ponderada e bidimensional, ou seja, cada um dos elementos da matriz tem seu valor recalculado de acordo com seu próprio valor e o valor de elementos próximos. Assim, um peso, dado conforme a equação (11), é utilizado em cada cálculo de forma que, quanto maior a distância de um elemento ao que está tendo seu valor recalculado, menor será sua influência nesse valor (Pedrini, 2004).

2 2 2 ( ) 2 ( , ) 2 1 2 x y x y G e



   (11)

O procedimento de filtragem inicia-se ao criar uma matriz, denominada “kernel”, contendo pesos, calculados conforme a equação (11), onde  é denominado “grau de suavização”, e as variáveis e correspondem ao número da coluna e da linha do kernel a ter seu peso calculado. Isto irá produzir uma matriz com maior valor em seu elemento central e com valores que decaem de acordo com a proximidade dos elementos às margens da matriz. Essa matriz é, então, normalizada para que a soma de todos os seus valores seja igual a um.

Após a criação do kernel, cada elemento da matriz anteriormente copiada é recalculado como se o kernel fosse sobreposto à matriz, um elemento por vez. O elemento recalculado é multiplicado pelo elemento central do kernel, os elementos próximos ao analisado também são multiplicados pelos correspondentes do kernel “sobreposto”, por fim, os resultados são somados e atribuídos ao elemento analisado. Em palavras mais técnicas, a matriz contendo os pesos é convoluida com o kernel.

A Figura 9 apresenta um exemplo para demonstrar o efeito do filtro gaussiano em uma matriz 50 50 , com todos os seus elementos contendo o valor zero exceto o elemento da 25ª coluna e 25ª linha, a qual recebe o valor um, e diferentes valores de tamanho do kernel e grau de suavização.

Para o presente trabalho o filtro de Gauss é relevante devido ao seu efeito de espalhamento (como pode ser observado na Figura 9), ou seja, em situações em que os valores da matriz se alteram de forma brusca (como no exemplo, em que em um certo ponto o valor passa de 0 para 1 imediatamente), o mesmo visa obter essa mudança de forma mais gradual, atenuando o pico. A Figura 10 apresenta a matriz resultante contendo o QR Code (apresentado na Figura 8) após a utilização do filtro

(31)

27

de Gauss com kernel de tamanho 200 200 elementos e  com 50 unidades. Esses valores foram estabelecidos após diversos testes com diferentes configurações e QR Codes. Os valores ideais variam com cada imagem, mas os apresentados tiveram bons resultados e foram utilizados em todos os testes seguintes. Um aperfeiçoamento do algoritmo proposto seria um ajuste automático do tamanho do kernel quando necessário.

Figura 9 - Exemplo de funcionamento do filtro de Gauss Fonte: Autoria Própria

(32)

28

Figura 10 - Imagem de um QR Code após o uso do filtro de Gauss Fonte: Autoria própria.

Após essa etapa, os pontos máximos da matriz filtrada são identificados. Esses pontos correspondem aos três marcadores de localização do QR Code.

3.3 RECORTE DO QR CODE DA IMAGEM

Após a obtenção das coordenadas dos três marcadores de localização do código, se faz necessário destacar da imagem a área que corresponde ao QR Code para assim, copiá-lo para uma nova matriz já com as correções angulares (Duan et al., 2012).

Para a detecção da área abrangida pelo código uma rotina foi utilizada onde retas são supostas como que ligando as coordenadas dos três marcadores de localização e então, o triangulo resultante (Figura 11) é expandido até que duas de suas arestas não coincidam em pixels pretos. Pode ser observado também que o triângulo amarelo (inicial) é expandido até se tornar o de cor vermelha (final), porém, que esse processo não é feito de forma visual pelo algoritmo para não estender o tempo de execução total do sistema. Este método pode ser utilizado devido à margem branca que envolve o QR Code. Assim, é possível encontrar as

(33)

29

coordenadas dos vértices do triângulo final, calcular a coordenada do quarto vértice da área utilizada pelo QR Code na imagem e, em seguida, copiá-lo.

Figura 11 - Processo de verificação da área do QR Code Fonte: Autoria própria.

A cópia do QR Code da imagem (apresentada na Seção 2.3) pode ser simplificada devido ao uso do MATLAB® como plataforma de desenvolvimento. Por ser uma ferramenta matemática, a descoberta dos parâmetros de a a h das equações (1) e (2) tornam-se bem mais fácil em comparação ao que seria necessário em uma plataforma com codificação em C++ ou similares.

A Figura 12 apresenta a seção do código que lida com a descoberta dos parâmetros e a cópia do QR Code da imagem. Neste código é possível observar que as variáveis { 1, 2, 3, 4}x x x x e { 1, 2, 3, 4}y y y y são as coordenadas dos quatro vértices do quadrilátero que delimita a área do QR Code na imagem original, e as variáveis de mesmo nome mas com subscritos ‘t’ correspondem as coordenadas da matriz resultante, as quais possuem valores conhecidos e fixos. As linhas de código anteriores ao primeiro laço “for” servem para calcular as constantes de a ℎ das equações (1) e (2). A cópia do QR Code ocorre dentro do laço “for” onde, com as coordenadas da matriz resultante, o valor correspondente da matriz original é copiado e atribuído adequadamente. A cópia é feita elemento por elemento, por toda

(34)

30

a matriz resultante de tamanho fixo, sendo assim, seus limites são utilizados para delimitação dos laços “for”. O resultado da cópia pode ser observado na Figura 13.

Figura 12 - Código para cópia do QR Code com correção angular Fonte: Autoria própria.

Figura 13 - A esquerda, imagem original e marcadores apontados. A direita, QR Code recortado da imagem

(35)

31

3.4 LEITURA DO QR CODE

A leitura do QR Code é feita de forma resumida no algoritmo proposto em comparação ao apresentado na norma ISO/IEC 18004, pois mesmo que o código possua diversas versões, apenas códigos de versão 1 são utilizados, e além disso, como o presente trabalho não aborda leitura de códigos obstruídos, os métodos para correção de erros não foram considerados. Os passos executados serão apresentados a seguir.

3.4.1 Detecção do Formato da Informação

Durante a codificação do QR Code, a parte de dados e correção de erros é modificada de acordo com uma máscara para evitar o surgimento de muitos módulos iguais e juntos, e de outros módulos formando o padrão 1:1:3:1:1. Nesse processo, uma de oito possibilidades de máscaras é utilizada, essas são apresentadas na Figura 15.

A informação do código pode ser obtida na área vermelha demonstrada na Figura 14, onde a partir daí é identificada a máscara que irá sobrepor o código e revelar o QR Code com a mensagem original. A leitura dos bits é feita da esquerda para a direita, de baixo para cima, onde módulos escuros equivalem ao bit ‘1’ e claros ao ‘0’ (Fuller, 2012).

Figura 14 - Demarcação da localização do Formato da Informação do QR Code

(36)

32

Os bits obtidos também foram mascarados durante a criação do QR Code e, portanto, devem ser desmascarados. Para isso, a operação booleana “ou exclusivo” (conhecida como XOR) é realizada entre o vetor contendo esses bits e a máscara: [1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0]. A operação XOR resulta em ‘1’ quando os bits comparados são diferentes, e ‘0’ quando esses são iguais. Dessa forma, o vetor resultante contem as informações de formato originais, sem máscara alguma.

Após esta operação, apenas o terceiro, quarto e quinto bit mais significativo (primeiros a serem lidos nesse processo) são utilizados, o restante seria para correção de erros. Estes três indicam a máscara utilizada durante a formação do QR Code de acordo com a identificação em números binários presentes na Figura 15.

Com a máscara identificada, os módulos do QR Code em que as regras da máscara são contempladas devem passar pela operação XOR para que a mensagem original fique exposta no código. As regras das máscaras aparecem abaixo da identificação de cada uma em números binários na Figura 15, onde i corresponde a linha e j a coluna do elemento da matriz do QR Code sendo analisado.

Figura 15 - Possíveis máscaras utilizadas na codificação da mensagem do QR Code

(37)

33

A Figura 16 apresenta o resultado da desmascaração de um QR Code. Segundo a norma ISO/IEC 18004 o processo de desmascaração deveria ocorrer apenas com os módulos de dados e correção de erros, deixando todos os demais intactos. Porém, devido ao processo de leitura simplificado utilizado nesse trabalho, a remoção da máscara ocorre em todo o código.

Figura 16 - A esquerda QR Code na matriz final. A direita QR Code desmascarado. Fonte: Autoria própria.

3.4.2 Tipo de Mensagem Armazenada

O algoritmo proposto neste trabalho pode decodificar três tipos de mensagens: numéricas, alfanuméricas e em Bytes (neste ultimo caso cada Byte corresponde a um caractere da Tabela ASCII). A informação que especifica qual tipo de mensagem está armazenada no QR Code fica disponível após a remoção da máscara nos quatro módulos do canto direito inferior do código. O vetor de bits é obtido como apresentado na Figura 17, seguindo um padrão de “zig-e-zag”, onde seria feita a leitura “0010”, e identificam o tipo de mensagem armazenada de acordo com o Quadro 1, ou seja, no caso da Figura 17, o tipo de mensagem armazenada corresponde ao alfanumérico.

Tipo de mensagem Indicador

Numérica 0001

Alfanumérica 0010

Bytes 0100

Quadro 1 - Identificação do tipo de mensagem armazenada segundo os bits correspondentes Fonte: Autoria própria.

(38)

34

Figura 17 – Módulos que contém o tipo de mensagem no canto direito inferior de um

QR Code.

Fonte: Autoria própria.

3.4.3 Tamanho da Mensagem

Tendo um QR Code como base, os módulos imediatamente acima dos que especificam o tipo de mensagem, identificam o tamanho da mensagem armazenada no código. Cada formato de mensagem possui seu tamanho informado por um vetor de bits de diferentes tamanhos de acordo com o Quadro 1.

Tipo de mensagem Número de bits no vetor de tamanho

Numérica 10

Alfanumérica 9

Bytes 8

Quadro 2 - Número de bits no vetor de tamanho correspondente a cada tipo de mensagem Fonte: Autoria própria.

Os bits são obtidos seguindo o padrão em formato de ‘Z’ apresentado na Figura 17, e esses representam um número decimal em formato binário. Na Figura 18, é apresentado um trecho de um QR Code desmascarado, e também a delimitação dos módulos que indicam o tamanho da mensagem. No caso, a mensagem seria em Bytes e o tamanho dela seria de 12 caracteres (“00001100” em números binários).

(39)

35

Figura 18 - Detalhe do local onde o tamanho da mensagem é armazenado e sentido de leitura da informação.

Fonte: Autoria própria.

3.4.4 Leitura da Mensagem

Com o tamanho da mensagem e o seu tipo identificados, a leitura pode ser realizada. Cada caractere da mensagem, ou conjunto deles dependendo do tipo de mensagem armazenada, é codificado em conjuntos de bits. Esses conjuntos são denominados “palavra-chave”, e cada tipo de mensagem possui palavras-chave de tamanhos diferentes como pode ser observado no Quadro 3.

Tipo de mensagem Tamanho das palavras-chave (bits)

Numérica 10

Alfanumérica 11

Bytes 8

Quadro 3 - Tamanho das palavras-chave segundo o tipo de mensagem Fonte: Autoria própria.

As palavras-chave são lidas seguindo um padrão de zig-zag da mesma forma que apresentado na Figura 19 (Fuller, 2012). Note que a leitura não deve ser feita em locais utilizados para a formatação do QR Code, mas apenas na área delimitada para o armazenamento da mensagem. Na Figura 2 essa região é

(40)

36

denominada “Informação codificada e dados para tratamento de erros” e corresponde à região de cor cinza escuro uniforme.

A primeira palavra-chave começa a ser lida seguindo o padrão imediatamente após o ultimo módulo que estipula o tamanho da mensagem, ou seja, apenas nos casos em que a mensagem é do tipo numérica ou em Bytes que as palavras-chave formam um retângulo (Eby, 2015). No caso da Figura 18, como o tamanho da mensagem é armazenado em oito módulos (oito bits), a primeira palavra-chave obtida é “01000110”, “70” em números decimais e, referenciado na Tabela de Caracteres ASC-II, corresponde ao caractere “F”, primeiro caractere da mensagem “Funcionou!!!” armazenada no QR Code analisado.

Após a aquisição de todas as palavras-chave, segundo o tamanho da mensagem e seguindo o padrão de “zig-e-zag” já apresentado, estas devem ser convertidas e concatenadas em um único vetor de caracteres, o qual constitui a mensagem final. Mensagens do tipo Byte tem a conversão realizada de acordo com o apresentado no parágrafo anterior, porém, mensagens dos tipos Alfanumérico e Numérico possuem maneiras diferentes de decodificação.

Para mensagens do tipo Alfanumérico, deverá ser analisado se o número de caracteres é par. Caso positivo, cada palavra-chave terá em si armazenados dois caracteres. Caso negativo, ocorrera da mesma forma com exceção à ultima palavra-chave, que armazenará apenas um caractere.

A decodificação de caracteres individuais, que ocorrerá com a ultima palavra-chave de mensagens com número de caracteres impar, é mais simples. Basta registrar os primeiros seis bits da palavra-chave, transcrevê-los para números decimais e identificar sua correspondência de acordo com o Quadro 4.

Para as palavras-chave com dois caracteres codificados, os onze bits que a formam são registrados. Esses onze bits devem ter seu valor transcrito em números decimais. Então, o primeiro caractere é obtido ao comparar a parte inteira do resultado obtido pela divisão entre o valor registrado e o número 45, com os valores no Quadro 4. O segundo caractere do par é obtido tomando-se o resultado da divisão anterior, multiplicando por 45 e então registrando o resultado da subtração entre o resultado da multiplicação e o valor originalmente obtido e transcrito da palavra-chave, esse último resultado é comparado com o Quadro 4.

(41)

37

Figura 19 - Padrão de leitura das palavras-chave no QR Code

Fonte: Autoria própria.

Decimal Caractere Decimal Caractere Decimal Caractere

0 0 15 F 30 U 1 1 16 G 31 V 2 2 17 H 32 W 3 3 18 I 33 X 4 4 19 J 34 Y 5 5 20 K 35 Z 6 6 21 L 36 (espaço) 7 7 22 M 37 $ 8 8 23 N 38 % 9 9 24 O 39 * 10 A 25 P 40 + 11 B 26 Q 41 - 12 C 27 R 42 . 13 D 28 S 43 / 14 E 29 T 44 :

Quadro 4 - Representação de caracteres Alfanuméricos e respectivos números decimais. Fonte: Autoria própria.

(42)

38

Mensagens do tipo numérico tem seus caracteres agrupados em grupos de três, em casos de mensagens cujo número de caracteres não seja múltiplo de três, a ultima palavra-chave da mensagem irá armazenar apenas um ou dois caracteres.

Em palavras-chave contendo três caracteres, presentes em mensagens numéricas com três ou mais dígitos, os dez bits armazenados na palavra são transcritos em números binários. No caso de palavras-chave contendo apenas dois caracteres, os primeiros sete bits são registrados e transcritos. E em casos em que apenas um caractere é armazenado na palavra-chave, os primeiros quatro bits da palavra são transcritos.

Por fim, após a obtenção dos caracteres de todas as palavras-chave que contém a mensagem, independente do tipo, todos os caracteres são concatenados e apresentados ao usuário, encerrando todo o processo do algoritmo.

(43)

39

4 TESTES E RESULTADOS

Após a implementação do algoritmo foi verificado o seu funcionamento. Para tal, foram realizados diversos testes em cenários com diferentes configurações de brilho, ângulos de rotação e inclinação do QR Code na imagem obtida, e com diversos QR Codes. Sendo assim, este capítulo apresenta a metodologia utilizada e os resultados obtidos durante a verificação.

4.1 COMPORTAMENTO COM DIFERENTES NÍVEIS DE BRILHO

Para esta seção de testes, duas fotos foram obtidas com resolução de 2048 x 1536 pixels, sem flash e com dois fundos diferentes com a câmera posicionada aproximadamente 17 cm acima do QR Code e com o mínimo de inclinação possível.

Este teste consiste em tomar uma imagem e, utilizando um programa adequado, alterar o brilho da imagem para simular condições reais em que a o QR Code é exposto a diferentes intensidades de luz ao ter sua imagem registrada.

Alterar o brilho da imagem significa reduzir ou aumentar em um certo número (entre -255 e +255) cada componente das cores RGB da imagem igualmente. Por mais que seja um processo simples, optou-se pelo uso do programa PhotoDirector 3 da empresa CyberLink (Johnson, 2012) por ser uma opção mais prática para produzir tais alterações.

Nessa seção de testes, duas fotos foram obtidas. Cada foto teve seu brilho diminuído em 100% e, então, aumentado ao passo de 25% até que a condição final fosse do brilho aumentado em 100% em relação a foto original. Após cada alteração de brilho uma cópia da foto alterada foi salva no disco rígido do computador. Em seguida o algoritmo foi executado na tentativa de realizar a leitura do QR Code presente em cada uma das imagens.

Com esse teste de brilho esperava-se verificar a capacidade do algoritmo de adaptação à imagens com diferentes exposições à luz.

4.1.1 Leitura em Imagem com Fundo Uniforme

Na detecção da imagem original e com fundo uniforme, a passagem da foto colorida para preto e branco (etapa que pode ser mais afetada pela mudança do

(44)

40

brilho na imagem) foi bem sucedida e a mensagem do QR Code foi lida com sucesso. O resultado da etapa de conversão de cores pode ser observado na Figura 20.

Com as fotos de brilho alterado, o algoritmo foi capaz de adaptar-se à mudança na intensidade da luz e também realizou a leitura do código com sucesso, com exceção à imagem que teve seu brilho diminuído em 100% em relação à foto original, teste no qual a etapa de conversão da imagem de colorido para preto e branco falhou, pois quanto menor o brilho de uma imagem, mais semelhantes serão as cores mais claras das mais escuras. As fotos utilizadas nesse teste são apresentadas na Figura 21. Os resultados obtidos estão mostrados no Quadro 5.

Figura 20 - A esquerda foto original utilizada sem alteração de brilho. A direita foto em preto e branco

Fonte: Autoria própria.

Imagem Alteração de Brilho (%) Leitura com sucesso

a -100 Não

b -75 Sim

c -50 Sim

d -25 Sim

e 0 (Imagem original) Sim

f +25 Sim

g +50 Sim

h +75 Sim

i +100 Sim

Quadro 5 - Resumo dos testes de brilho com imagens de fundo uniforme, referenciadas na Figura 21.

(45)

41

(a) (b) (c)

(d) (e) (f)

(g) (h) (i)

Figura 21 - Imagens para testes de brilho com fundo uniforme, referenciadas no Quadro 5. Fonte: Autoria própria.

4.1.2 Detecção Com Fundo Irregular

O segundo grupo de fotos testado possui o mesmo QR Code, porém com um fundo diferente, o que propicia um desafio maior ao algoritmo de conversão da imagem colorida para preto e branco.

Os resultados obtidos nesse teste foram idênticos ao dos testes om fundo regular. Somente na imagem que teve seu brilho diminuído em 100% em relação à imagem original houve falha e a leitura da mensagem presente no QR Code não foi realizada. A Figura 22 apresenta a imagem original utilizada nesse teste, assim

(46)

42

como a mesma após a etapa de mudança de cores. A Figura 23 mostra as imagens com brilho alterado utilizadas nesse teste e o Quadro 6 apresenta os resultados obtidos no mesmo.

Figura 22 – Segundo teste de brilho com imagem original a esquerda. À direita a mesma foto após a conversão de cores

Fonte: Autoria própria.

Imagem Alteração de Brilho (%) Leitura com sucesso

j -100 Não

k -75 Sim

l -50 Sim

m -25 Sim

n 0 (Imagem original) Sim

o +25 Sim

p +50 Sim

q +75 Sim

r +100 Sim

Quadro 6 - Resumo dos testes de brilho com imagens de fundo irregular, referenciadas na Figura 23.

Fonte: Autoria própria.

O algoritmo proposto baseia-se num valor médio de cada componente de cores em escala RGB para realizar a conversão para preto e branco. Em outras palavras, a mudança do brilho de uma imagem causa uma mudança equivalente nesse valor médio e a conversão de cores é realizada com sucesso, com exceções para mudanças extremas. Sendo assim, para imagens obtidas no dia-a-dia, com mudanças de intensidade de luz variadas, mas de maneiras menos intensas, os resultados obtidos pelo algoritmo foram bons e conforme o esperado.

(47)

43

(j) (k) (l)

(m) (n) (o)

(p) (q) (r)

Figura 23 - Imagens para testes de brilho com fundo irregular, referenciadas no Quadro 6. Fonte: Autoria própria.

4.2 LEITURA COM O QR CODE ROTACIONADO

Esse teste consiste em verificar se o algoritmo consegue realizar a leitura do QR Code mesmo se esse tiver estiver rotacionado, pois a independência da posição do código é uma de suas propriedades importantes.

Para a realização dos testes, um QR Code foi posicionado sobre uma superfície branca com marcações para facilitar a medição do ângulo de rotação. Foram obtidas imagens do código rotacionado em ângulos múltiplos de 30º,

(48)

44

iniciando em 0º até 330º, sendo que, parâmetros como brilho, distância entre câmera e código, utilização do flash e grau de inclinação da câmera foram mantidos constantes dentro do possível. Em alguns casos, a distância e o brilho sofreram pequenas alterações ou devido a mudanças na luz natural do ambiente, ou para adequar o tamanho do código rotacionado na imagem obtida. A Figura 24 apresenta um mosaico com todas as fotos utilizadas nesta etapa.

(1) (2) (3)

(4) (5) (6)

(7) (8) (9)

(10) (11) (12)

Figura 24 - Imagens utilizadas no teste com QR Codes rotacionados. Referenciadas no Quadro 7

(49)

45

O Quadro 7 apresenta um resumo dos testes realizados e seus resultados. Como pode ser observado, em todas as imagens a mensagem contida no QR Code foi lida com sucesso. Isso mostra que a propriedade de independência de posição do QR Code não foi comprometida pelo algoritmo, como era-se esperado.

Numero da Imagem Ângulo de Rotação (º) Sucesso na Leitura

1 0 Sim 2 30 Sim 3 60 Sim 4 90 Sim 5 120 Sim 6 150 Sim 7 180 Sim 8 210 Sim 9 240 Sim 10 270 Sim 11 300 Sim 12 330 Sim

Quadro 7 - Resultados dos testes com QR Codes rotacionados e referenciados na Figura 24 Fonte: Autoria própria.

4.3 ÂNGULO MÁXIMO DE INCLINAÇÃO NA AQUISIÇÃO DA IMAGEM

Os testes apresentados nesta Seção têm como objetivo definir o ângulo máximo com o qual a imagem do QR Code pode ser obtida sem que as deformações por perspectiva impossibilitem a leitura da mensagem. O algoritmo proposto baseia-se, em alguns de seus procedimentos, em medir ângulos e distâncias que são duas propriedades altamente afetadas pela perspectiva.

As imagens testadas iniciam com uma inclinação de 60º em relação ao vetor normal ao plano do QR Code e terminam com o ângulo de 0º, considerado ideal para leitura. As imagens são testadas com um passo de aproximadamente 6º

Como resultado tem-se que, nos testes das imagens com 60º a 36º de inclinação, a proximidade dos marcadores de localização impossibilitam a detecção correta devido á utilização do filtro de Gauss durante o processo. O uso do filtro causa uma fusão entre campos de pesos que identificariam os marcadores e onde ocorrem “falsos positivos” impedindo a continuação do processo. Este efeito pode ser observado na Figura 25, onde aparecem a imagem original, a utilização do filtro

(50)

46

de Gauss e os marcadores detectados respectivamente. Pode ser observado que o terceiro marcador de localização foi detectado de maneira errada.

Figura 25 - Detecção errada de marcadores de localização devido à perspectiva Fonte: Autoria própria.

A partir de um ângulo de inclinação de aproximadamente 30º os marcadores passam a ser localizados corretamente. A leitura da mensagem contida no código ainda não é possível devido ao erro durante a detecção da área do QR Code, dificultando sua cópia da imagem. A partir de uma inclinação próxima à 18º, a mensagem contida no QR Code é lida com sucesso o que é um resultado satisfatório se levado em conta que a leitura do código com deformações de perspectiva não faz parte do escopo deste trabalho. O Quadro 8, apresenta os resultados obtidos no teste de leitura com perspectiva.

Ângulo de inclinação (º) Falha Total Marcadores Detectados Leitura Completa

60 X 54 x 48 x 42 x 36 x 30 x 24 x 18 x 12 x 6 x 0 x

Quadro 8 - Resultados dos testes de leitura com perspectiva Fonte: Autoria própria.

(51)

47

4.4 LEITURA DE QR CODES DIFERENTES

O objetivo desse teste é de verificar a eficácia do algoritmo na leitura de QR Codes com diferentes tipos de mensagem armazenada. Nesse trabalho, apenas mensagens do tipo Numérica, Alfanumérica e em Bytes são verificadas, portanto, para que o algoritmo seja considerado funcional, esse deve realizar a leitura com sucesso de QR Codes contendo esses tipos de mensagens.

Para execução dos testes, dez códigos aleatórios foram retirados da Internet e armazenados no disco rígido do computador, tomando-se o cuidado de tais códigos serem de versão 1, sem inclinação e rotação, com brilho apropriado. Como o conteúdo desses códigos não é conhecido, cinco códigos foram gerados para garantir o que o teste realize a leitura de códigos com tipos de mensagem diferentes e de tamanhos diferentes.

Após todas as imagens contendo os códigos ficarem prontas, o algoritmo foi executado para cada uma delas. Os resultados são apresentados no Quadro 9.

Número do Teste Leitura com Sucesso Mensagem Armazenada

1 Sim (em branco)

2 Sim HTTP://CLIKBRIX.CO/T/2153 3 Sim Test 4 Sim SMSTO:99000: 5 Sim http://gqr.me/1J 6 Sim success 7 Sim DISCOUNT 8 Sim Pinba 9 Sim Pendiuk 10 Sim - 11 Sim Teste Tcc 12 Sim 12345678910111213 13 Sim ALFABETO 14 Sim TESTEDENOVO 15 Sim Pindamonhangaba

Quadro 9 - Resultados obtidos no teste com QR Codes diferentes. Fonte: Autoria própria.

Como pode ser observado, todos os códigos testados foram lidos com sucesso, comprovando assim, o funcionamento correto do algoritmo proposto.

(52)

48

5 CONSIDERAÇÕES FINAIS

Com os resultados obtidos nos testes, e levando em consideração o aprendizado durante toda a elaboração deste trabalho, considera-se que todos os objetivos desse foram compridos. A seguir será apresentada uma conclusão geral do trabalho, assim como sugestões para futuros projetos baseados no algoritmo proposto.

5.1 CONCLUSÃO

Conclui-se que, o algoritmo proposto consegue realizar a leitura de QR Codes dentro dos padrões esperados (mesmo com o código rotacionado, praticamente independente de sua exposição à luz, e sem inclinações). Para um uso mais prático esse deverá ser revisado, uma vez que quanto maior a resolução da imagem (número de pixels que a formam) maior o tempo de execução do código, que para as imagens utilizadas nos testes realizados nesse trabalho foi de aproximadamente cinco minutos. Porém, para uso comum e em cenário adequado, o algoritmo cumpre seu papel sem qualquer distorção, detectando o código, copiando-o e efetuando sua leitura.

Durante a implementação e realização de testes do algoritmo proposto constatou-se que uma das etapas mais críticas do algoritmo é a de detecção da área ocupada pelo QR Code dentro da imagem. Diversos problemas provenientes de erros nessa etapa ocorreram, o mais grave causando a cópia errada do QR Code de forma que parte de seus módulos foram deixados de fora da cópia. Mesmo com o sucesso dos resultados obtidos nos testes, essa etapa ainda pode ser aperfeiçoada.

O conhecimento exposto aqui, e mais importante, o algoritmo proposto constitui uma boa base para o desenvolvimento de projetos simples envolvendo imagens. Além disso, pode influenciar a abertura de novas frentes de pesquisa sobre o processamento de imagens no Câmpus de Toledo da Universidade Tecnológica Federal do Paraná, onde ainda não há incentivo suficiente para que alunos busquem explorar essa área.

(53)

49

5.2 PROPOSTAS PARA TRABALHOS FUTUROS

Segue assim, sugestões para futuros trabalhos na área de processamento de imagem ou para implementação de melhorias neste trabalho:

 Utilização de Homografia Afim para identificação da posição de objetos em uma sala com ponto de observação fixo.

 Novos métodos para a etapa de detecção da área abrangida pelo QR Code.

 Implementação de métodos para correção de erros durante a leitura do QR Code.

 Identificação de objetos pela cor e/ou formato. Ex.: Dinheiro em papel, contagem de veículos, peças para montagens com braço robótico, etc.

 Identificar as coordenadas de um objeto em um espaço tridimensional com base na sua posição e tamanho com um ponto de observação ou com base na posição e auxilio de Homografia Afim com o uso de múltiplas câmeras.

(54)

50

REFERÊNCIAS

ADAIR, Jeffrey. Locating, Tracking, and Interpreting Ean-13 Bar Code Waveforms in a Two-Dimensional Video Stream. Association for Computing Machinery. Mar 2006. Disponível em:

<http://src.acm.org/subpages/gf_entries_06/JeffreyAdair_src_gf06.pdf>. Acesso em: 15 Nov. 2014.

AIRES, Kelson R. T.; Segmentação de Planos Baseada em Homografia Afim, Fluxo Óptico e Reconstrução Métrica. Universidade Federal do Rio Grande do Norte. Rio Grande do Norte, Brasil. Out, 2009.

BELUSSI, Luiz F. F.; HIRATA, Nina S. T.; Fast QR Code Detection in Arbitrarily Acquired Images. São Paulo, Brasil.

CHEN, Weibing; YANG Gaobo; ZHANG, Ganglin; A Simple and Efficient Image Pre-processing for QR Decoder. Second International Conference on Electronic & Mechanical Engineering and Information Technology. Paris, França. 2012.

DENSO CORPORATION. History of QR Code. Disponível em: <http://www.qrcode.com/en/history/>. Acesso em: 16 Nov. 2014.

DUAN, Feng; LI, Wenyu; CHEN, Bo; TAN, Jeffrey Too Chuan; Xu, Binbin. Mobile Robot Action Based on QR code Identification. International Conference on Robotics and Biomimetcis. Guangzhou, China. Dez, 2012.

EBY, Carolyn. QR Code Tutorial. Disponível em: <http://www.thonky.com/qr-code-tutorial/data-encoding>. Acesso em: 28 Out. 2015.

FULLER, Andrew. Decoding small QR codes by hand. Disponível em: <http://blog.qartis.com/2012/04/>. Acesso em: 28 Out. 2015.

GS1 Brasil. EAN/UPC: Código de Barra EAN-13. Disponível em:

<https://www.gs1br.org/codigos-e-padroes/codigo-de-barras/ean-upc>. Acesso em: 16 Nov. 2014.

HIRZER, Martin. Marker Detection for Augmented Reality Applications. Computer Graphics and Vision. Out, 2008. Technical Report ICG-TR-08/05.

HULLIYAH, Khodijah; AUGUSTA, Gia M.; ARINI; BAHAWERES, Rizal B. Applying Merging Conventional Marker and Backpropagation Neural Network in QR Code Augmented Reality Tracking. International Journal on Smart Sensing and Intelligent Systems. Dez, 2013.

ISO/IEC 18004:2000. Information technology – Automatic identification and data capture techniques – Bar code symbology – QR Code. Geneva: International Standart Organization, Jul, 2000.

(55)

51

JOHNSON, Dave. CyberLink PhotoDirector 3 Review: All-In-One Photo Editing and Organizing. Acesso em: 02 Nov. 2015. Disponível em:

<http://www.pcworld.com/article/253106/cyberlink_photodirector_3_review_all_in_on e_photo_editing_and_organizing.html>

LIU, Yue; LIU, Mingjun. Automatic Recognition Algorithm of Quick Response Code Based on Embedded System. Sixth International Conference on Intelligent Systems Design and Applications, 2006.

PEDRINI, Helio. Apostila de Processamento de Imagens. Análise de Imagens Digitais: Princípios, Algoritmos e Aplicações. Departamento de Informática da Universidade Federal do Paraná, 2004.

PEDIUK, Guilherme Francisco Iakmiu. Código para Detecção e Leitura de QR Codes em Imagens. Acesso em: 01 Dez. 2015. Disponível em:

<https://drive.google.com/file/d/0Bz7BunfUs0_vUy13SjR6ZVdQb0U/view?usp=sharin g>

RATHOD, Nachiket A.; LADHAKE, Siddharth A. Detecting and Decoding Algorithm for 2D Barcode. International Journal of Emergin Technology and Advanced Engineering. Nov, 2012. Volume 2, Capítulo 11.

RUAN, Kong; JEONG, Hong. An Augmented Reality System Using QR Code as Marker in Android Smartphone. IEEE, 2011;

SEIDEMAN, Tony. Barcodes Sweep the World. Wonders of Modern Technology, New York City, Ago, 2009. Disponível em:

<http://www.barcoding.com/information/barcode_history.shtml>. Acesso em: 15 Nov. 2014.

Referências

Documentos relacionados

No fim de cada anno lectivo proceder-se-ha aos exames dos alumnos que tiverem frequentado as aulas e officinas, sendo para tal fim organizadas uma

Em conclusão, o domínio Meio Ambiente foi a faceta mais preocupante da QV de mulheres da cidade de Ponta Grossa, demonstrando a urgência na implementação de estratégias de

Para piezas de desgaste, de repuesto y falta de piezas nos remitimos a las limitaciones de esta garantía conforme a las condiciones de garantía de este manual de

Antes: altos níveis de estoque para equilibrar a falta de dados confiáveis entre os membros da cadeia, com altos riscos de perdas por validade. Depois: cobertura de estoque

a) O resíduo constituído pelos finos de pelota misturados com os finos do minério Serra Azul se apresentou como um ótimo insumo para a dessiliciação do gusa. 41% contra

Neste aspecto, a defesa das garantias fundamentais no contexto de controle comportamental pode dar-se através de uma (re)afirmação do direito ao livre desenvolvimento

As duas instalações da Petrobras, uma em Cochabamba e a outra em Santa Cruz, foram vendidas pelo Estado boliviano em 1999, numa licitação, por US$ 104 milhões --desde então,

Quando o mágico pede que a pessoa retire do total de palitos da caixa (10X+Y) uma quantidade igual à soma dos algarismos do número de palitos existentes (X+Y), o número de