ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code...

62
GABRIEL YOSHIHARU RODRIGUES USSUY ADOÇÃO DE QR CODE COMO PROPOSTA PARA REPRESENTAÇÃO VISUAL E INTERAÇÃO EM GRANDES VOLUMES DE DADOS Assis/SP 2016

Transcript of ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code...

Page 1: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

GABRIEL YOSHIHARU RODRIGUES USSUY

ADOÇÃO DE QR CODE COMO PROPOSTA PARA REPRESENTAÇÃO

VISUAL E INTERAÇÃO EM GRANDES VOLUMES DE DADOS

Assis/SP 2016

Page 2: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

GABRIEL YOSHIHARU RODRIGUES USSUY

ADOÇÃO DE QR CODE COMO PROPOSTA PARA REPRESENTAÇÃO

VISUAL E INTERAÇÃO EM GRANDES VOLUMES DE DADOS

Projeto de pesquisa apresentado ao curso de Ciência da Computação do Instituto Municipal de Ensino Superior de Assis – IMESA e a Fundação Educacional do Município de Assis – FEMA, como requisito parcial à obtenção do Certificado de Conclusão.

Orientando(a): Gabriel Yoshiharu Rodrigues Ussuy Orientador(a): Prof. Msc. Guilherme de Cleva Farto

Assis/SP 2016

Page 3: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

FICHA CATALOGRÁFICA

USSUY, Gabriel Yoshiharu Rodrigues Adoção de QR Code como proposta para representação visual e interação em grandes volumes de dados / Gabriel Yoshiharu Rodrigues Ussuy. Fundação Educacional do Município de Assis – FEMA – Assis, 2016. 62p. Orientador: Prof. Msc. Guilherme de Cleva Farto Trabalho de Conclusão de Curso – Instituto Municipal de Ensino Superior de Assis – IMESA.

1. QR Code. 2. Grandes Volumes de Dados. 3. QR Code Colorido

CDD: 001.6 Biblioteca da FEMA

Page 4: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

ADOÇÃO DE QR CODE COMO PROPOSTA PARA REPRESENTAÇÃO

VISUAL E INTERAÇÃO EM GRANDES VOLUMES DE DADOS

GABRIEL YOSHIHARU RODRIGUES USSUY

Trabalho de Conclusão de Curso apresentado ao Instituto Municipal de Ensino Superior de Assis, como requisito do Curso de Graduação, avaliado pela seguinte comissão examinadora:

Orientador:

Prof. Msc. Guilherme de Cleva Farto

Examinador:

Prof. Dr. Luiz Carlos Begosso

Assis/SP 2016

Page 5: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

DEDICATÓRIA

Dedico este trabalho a toda a minha família, principalmente aos

meus pais e a meu irmão, por todo apoio, carinho e puxões de

orelhas que me foram dados, fazendo com que eu não

desistisse nos momentos mais difíceis.

Page 6: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

AGRADECIMENTOS

Agradeço à minha mãe Hodene Lopes Rodrigues Ussuy e meu pai Agnaldo Yoshiharu

Ussuy por sempre estarem ao meu lado me apoiando e orientando.

Ao meu amigo e Professor Msc. Guilherme de Cleva Farto, por me orientar e colaborar

nesta fase acadêmica tão importante.

E por fim agradeço a todos que colaboraram de forma direta ou indireta para a conclusão

deste trabalho.

Page 7: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

“A persistência é o caminho do êxito”

Charlie Chaplin

(1889 – 1977)

Page 8: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

RESUMO

De acordo com dados apresentados pela IBM (2015), todos os dias são gerados 2.5

quintilhões de bytes de dados. Visando este aumento exponencial da quantidade de dados,

este trabalho propõe a utilização de uma nova abordagem para o aumento da capacidade

de armazenamento de códigos de barras 2D. Por meio da implementação de uma API em

Java para Layer Colored QR Code, possibilitando a criação de QR Codes com maior

capacidade de armazenamento. Com a conclusão da implementação da abordagem

proposta em Layer Colored QR Code, foi possível codificar uma maior quantidade de

informações em um QR Code. Devido a possibilidade de utilizar um N número de cores,

Layer Colored QR Code armazena mais dados que grande parte das abordagens para QR

Code, que utilizam apenas 4 cores. Um N número de cores podem ser utilizadas. Todavia,

para a leitura do Layer Colored QR Code o dispositivo utilizado para captação dos dados,

deve ser capaz de reconhecer todas as cores utilizadas na geração do símbolo.

Palavras-chave: QR Code, QR Code Colorido, Capacidade de armazenamento, Grandes

volumes de dados.

Page 9: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

ABSTRACT

According to data presented by IBM (2015), every day is generated 2.5 quintillion bytes of

data. Aiming this exponential increase in the amount of data, this work proposes the use of

a new approach to increase the storage capacity of 2D barcodes. Through the

implementation of a Java API for Colored Layer QR Code, allowing the creation of QR codes

with higher storage capacity. With the completion of the implementation of the proposed

approach in Layer Colored QR Code, it was possible to encode a larger amount of

information in a QR Code. Because of the possibility of using an N number of colors, Layer

Colored QR Code stores more data than many of the approaches to QR Code, using only

four colors. An N number of colors may be used. However, for reading the QR code Colored

Layer device used to capture the data, must be able to recognize all the colors used in the

symbol generation.

Keywords: QR Code, Colored QR Code, Storage Capacity, Large data volumes.

Page 10: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

LISTA DE ILUSTRAÇÕES

Figura 1: QR Code ....................................................................................................................................... 19

Figura 2: Módulos QR Code ...................................................................................................................... 20

Figura 3: Versões do QR Code ................................................................................................................. 21

Figura 4: Tamanho de impressão ............................................................................................................. 22

Figura 5: Resistência a sujeira e danos ................................................................................................... 24

Figura 6: QR Code distorcido .................................................................................................................... 25

Figura 7: Distribuição de um QR Code .................................................................................................... 26

Figura 8: Microsoft’s High Capacity Color Barcode ............................................................................. 27

Figura 9: Funcionamento da máquina virtual do Java ........................................................................... 29

Figura 10: Representação de uma imagem digital ................................................................................. 31

Figura 11: Estrutura de uma PlanarImage ............................................................................................... 34

Figura 12: Estrutura geral da API ImageJ. .............................................................................................. 35

Figura 13: Módulos em Colored Qr Code ................................................................................................ 41

Figura 14: Módulos em Layer Colored QR Code ................................................................................... 42

Figura 15: QR Code gerado em Layer Colored Qr Code. ..................................................................... 42

Figura 16: Exemplo de Layer Colored QR Code .................................................................................... 43

Figura 17: QR Code 3 Layers .................................................................................................................... 44

Figura 18: QR Code 5 Layers .................................................................................................................... 44

Figura 19: Mapa de Cores e seu respectivo código ............................................................................... 51

Figura 20: Layer Colored QR Code com 3,5 e 8 camadas ................................................................... 54

Figura 21: Layer Colored QR Codes danificados ................................................................................... 55

Figura 22: Danos do Colored QR Code Replicados aos QR Codes resultantes .............................. 55

Page 11: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

LISTA DE TABELAS

Tabela 1: Características de alguns tipos de códigos 2D.................................................. 19

Tabela 2: Tamanho do módulo de impressão ................................................................... 23

Tabela 3: Scanners e tamanho do módulo de leitura ........................................................ 23

Tabela 4: Capacidade de Correção de erros de acordo com o nível ................................ 24

Tabela 5: Formatos de códigos de barras suportados em ZXing ...................................... 36

Page 12: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

SUMÁRIO

1. INTRODUÇÃO ........................................................................................ 14

1.1 OBJETIVOS ...................................................................................................... 15

1.2 JUSTIFICATIVAS .............................................................................................. 16

1.3 MOTIVAÇÃO ..................................................................................................... 16

1.4 PERSPECTIVAS DE CONTRIBUIÇÃO ............................................................ 17

1.5 METODOLOGIA DE PESQUISA ...................................................................... 17

1.6 RECURSOS NECESSÁRIOS ........................................................................... 17

1.7 ESTRUTURA DO TRABALHO .......................................................................... 18

2. REPRESENTAÇÃO DE DADOS COM QR CODE .................................. 19

2.1 CÓDIGOS GRÁFICOS ...................................................................................... 19

2.2 VANTAGENS E BENEFÍCIOS .......................................................................... 22

2.2.1 TAMANHO DE IMPRESSÃO .................................................................................... 22

2.2.2 RESISTÊNCIA A SUJEIRA E DANOS ..................................................................... 23

2.2.3 CORREÇÃO DE ERROS ......................................................................................... 24

2.2.4 LEGIBILIDADE ......................................................................................................... 25

2.2.5 ARMAZENAMENTO DISTRIBUÍDO ......................................................................... 26

2.2.6 CÓDIGO ABERTO .................................................................................................... 26

2.3 COLORED QR CODE ....................................................................................... 27

3. PLATAFORMA JAVA ............................................................................. 29

3.1 INTRODUÇÃO .................................................................................................. 29

3.2 ANÁLISE E PROCESSAMENTO DE IMAGENS .............................................. 31

3.3 APIS E BIBLIOTECAS PARA QR CODE .......................................................... 35

3.3.1. ZEBRA CROSSING (ZXING) .................................................................................. 35

3.3.2. QRGen ..................................................................................................................... 38

3.3.3. IMPLEMENTAÇÃO NATIVA .................................................................................... 38

4. PROPOSTA DO TRABALHO ................................................................. 41

4.1 LAYER-COLORED QR-CODE: ABORDAGEM MULTI-COLORIDA PARA QR-

CODE ...................................................................................................................... 41

4.2. PROJETO ARQUITETURAL PARA LAYER-COLORED QR CODE ............... 43

Page 13: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

4.3. TECNOLOGIAS E RECURSOS ADOTADOS .................................................. 45

5. DESENVOLVIMENTO DO TRABALHO .................................................. 46

5.1 IMPLEMENTAÇÃO DA ABORDAGEM LAYER COLORED QR-CODE ........... 46

5.1.1 GERAÇÃO DE UM QR CODE EM LAYER COLORED QR-CODE ............... 46

5.1.2 LEITURA DE UM QR CODE EM LAYER COLORED QR-CODE .................. 51

5.2. EXPERIMENTOS E ADOÇÃO REAL DE LAYER COLORED QR CODE ....... 53

6. CONCLUSÃO ......................................................................................... 57

6.1. CONSIDERAÇÕES FINAIS ............................................................................. 57

6.2. TRABALHOS FUTUROS ................................................................................. 58

Page 14: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

14

1. INTRODUÇÃO

A utilização do código de barras tornou-se amplamente popular em virtude de sua

velocidade, precisão e características funcionais de leitura. Em consequência de sua

popularização e aceitação mundial, o mercado passou a exigir códigos capazes de

armazenar mais informações, maior variedade de caracteres e menor espaço de

impressão. No entanto, os esforços realizados em aumentar a capacidade de

armazenamento do código de barras resultaram em um aumento da complexidade de

leitura, além do aumento nos custos de impressão (GRILLO et al.,2010).

Devido às limitações do código de barras, uma equipe de desenvolvimento da DENSO

WAVE iniciou a implementação de um novo código bidimensional, anunciando em 1994 o

lançamento do Quick Response Code, associado a sua grande velocidade de leitura,

introduzindo seu conceito de funcionamento (QRCODE, 2015a).

Desde o lançamento do QR Code em 1994, embora originalmente designado para

catalogação de componentes da indústria automobilística, sua utilização tem sido

generalizada, expandindo rapidamente às mais diversas áreas, tais como (DENSO

ADC,2011):

Manufatura: Rastreamento de produtos, controle de processos, gestão de estoques

e equipamentos

Varejo: Identificação de produtos, gerenciamento de vendas e controle de inventário

Saúde: Gerenciamento de registros médicos, identificação de pacientes,

rastreamento de medicações e equipamentos

Biologia: Catalogação e rastreamento de espécies, bem como seus hábitos e

comportamentos

Transporte: Gerenciamento e rastreamento de frotas, emissão de bilhetes e cartões

de embarque

Marketing e Propaganda: Marketing em aparelhos mobile, tickets eletrônicos,

cupons, pagamentos e programas de lealdade

O QR Code possui vários modos de utilização que variam desde processos de manufatura

com rastreamento de produtos e controle de processos à marketing e propaganda, sendo

Page 15: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

15

útil às mais diversas áreas, devido a sua capacidade de armazenamento de dados e forma

de iteração, necessitando apenas de um dispositivo móvel com câmera (DENSO

ADC,2011).

Atualmente, um dos grandes desafios na área de computação se refere à manipulação e

ao processamento de grandes quantidades de dados no contexto de Big Data. O conceito

Big Data pode ser definido como um conjunto de bases de dados tão complexo e volumoso

que resulta no aumento da complexidade de algumas operações de consultas aos dados

gerados (VIEIRA et al.,2012).

De acordo com dados da IBM (2015), todos os dias são gerados 2.5 quintilhões de bytes

de dados, sendo que 90% dos dados no mundo, obtidos por meio de sensores climáticos,

redes sociais, fotos digitais, vídeos, registros de transações de compras, sinais de telefone

celular e GPS foram gerados nos últimos dois anos. Essa exorbitante quantidade de dados,

acaba por gerar novos grandes desafios no que se refere à maneira de manipulação,

armazenamento e processamento de dados nas mais variadas áreas da computação

(VIEIRA et al.,2012).

Visando uma futura necessidade de novos instrumentos e abordagens para lidar com esses

dados complexos e volumosos, este trabalho propõe o desenvolvimento de uma API em

Java para a geração e a leitura de QR Codes multicoloridos focando na utilização para

processamento de grandes volumes de dados.

1.1 OBJETIVOS

Este projeto tem por objetivo desenvolver uma API para Layer-Colored QR Code em Java,

bem como, a pesquisa e exploração dos conceitos e recursos de QR Code, além de sua

aplicação prática, vantagens e benefícios.

A partir dos artefatos deste trabalho, é possível gerar e interpretar QR Codes coloridos

utilizando a API Layer Colored desenvolvida, com a finalidade de expandir a capacidade de

armazenamento do QR Code padrão, ou seja, apenas nas cores preto e branco.

Page 16: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

16

1.2 JUSTIFICATIVAS

Desenvolvido com a finalidade de suprir as necessidades do código de barras no

armazenamento de uma maior quantidade de informações, o QR Code possui muitas

vantagens e benefícios em relação ao convencional código de barras, tais como,

necessidade de menos espaço, maior capacidade de armazenamento, correção de erros e

armazenamento de mais tipos de dados(DENSO-ADC,2011).

Segundo Laney (2001), vários fatores contribuem para o aumento da quantidade de dados,

como streamings, utilização de redes sociais, sensores e aumento das informações

mantidas em transações de e-commerces.

De acordo com dados da IBM(2015), cerca de 90% dos dados gerados no mundo até hoje,

foram obtidos nos últimos dois anos. Com o aumento da geração de dados estruturados e

não estruturados produzidos a partir de iterações digitais, o volume de dados só tende a

aumentar.

Devido as vantagens do QR Code e à pouca quantidade de tecnologias e bibliotecas em

Java para Colored QR Code, este trabalho apoia e fornece uma API com recursos para a

adoção de QR Code em grandes volumes de dados, por meio da proposta de Layer-Colored

QR Code.

1.3 MOTIVAÇÃO

Devido à pouca pesquisa quanto a utilização de QR Code em grandes volumes de dados

no contexto de Big Data. Este projeto consiste em pesquisar e explorar a utilização de QR

Code para grande quantidade de dados.

Aplicar os conceitos estudados no desenvolvimento de uma API para Layer Colored QR

Code agregará, quanto a utilização de QR Code em grandes volumes de dados, uma maior

confiabilidade e estabilidade, visto que, com a implementação será possível avaliar e

apresentar seus rendimentos em relação a utilização com grandes quantidades de dados.

Page 17: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

17

1.4 PERSPECTIVAS DE CONTRIBUIÇÃO

Ao término do desenvolvimento deste trabalho, será disponibilizado uma nova abordagem

baseada em Colored QR Code para pessoas e/ou instituições de ensino com o interesse

nesta área, com o objetivo de promover e compartilhar os conhecimentos e resultados

obtidos.

A API em Java para Colored QR Code, juntamente com as especificações para o uso de

Layer Colored QR Code que serão disponibilizadas, permitirá uma comparação e análise

dos resultados obtidos ao utilizar QR Code em grandes volumes de dados, com o objetivo

de contribuir com futuros projetos na área de Colored QR Code.

1.5 METODOLOGIA DE PESQUISA

A proposta e objetivos apresentados neste trabalho acadêmico serão obtidos por meio de

pesquisas teóricas, de forma a se alcançar os conhecimentos necessários por intermédio

da leitura de livros, artigos científicos/técnicos, monografias, dissertações e teses. Após,

será possível a elaboração e desenvolvimento de uma API para Layer-Colored QR Code

com a finalidade de comprovar a aplicabilidade do modelo proposto.

Inicialmente, serão pesquisadas ferramentas e abordagens existentes para a utilização de

QR Code colorido. Em consequência desta primeira etapa, será concebida uma proposta

de estudo de caso e implementação de ferramentas de apoio em Java. Por fim, serão

realizados testes e experimentos para validação da abordagem proposta.

1.6 RECURSOS NECESSÁRIOS

Para desenvolver a pesquisa serão necessários os recursos de hardware e software citados

a seguir:

Hardware

o Notebook Asus X550L

o Processador Intel Core i5 1.7 Ghz.

o Disco Rígido Toshiba 5400 RPM SATA de 1 TB.

Page 18: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

18

o Memória de 1333 Mhz DDR3 8 GB.

Software

o Eclipse IDE – Ambiente de desenvolvimento para a tecnologia Java. Será

utilizada a versão Mars.

o Java Development Kit – Conjunto de ferramentas que possibilita o

desenvolvimento com a tecnologia Java.

o API Zebra Crossing (ZXing) – Biblioteca Open Source para leitura de

códigos de barra.

o QRGen – Ferramenta que permite a geração de QR Code

1.7 ESTRUTURA DO TRABALHO

A estrutura deste trabalho é composta das seguintes partes:

Capítulo 1 – Introdução: Neste capítulo é contextualizada a área de estudo e

apresentará os objetivos, justificativas, motivação, perspectivas de contribuição e

metodologia de pesquisa para o desenvolvimento deste trabalho.

Capítulo 2 – Representação de dados com QR Code: Neste capítulo, introduz-se

a representação de dados em QR Code, juntamente com as vantagens e benefícios

de sua utilização.

Capítulo 3 – Plataforma Java: Neste capítulo, é contextualizada a análise e

processamento de imagens, juntamente com as APIs Zebra Crossing e QRGen na

plataforma Java.

Capítulo 4 – Proposta de Trabalho: Neste capítulo, apresenta-se o Layer-Colored

QR Code como uma abordagem multicolorida para QR Code, bem como as

tecnologias e recursos adotados.

Capítulo 5 – Estudo de Caso: Neste capítulo, é apresentada a implementação da

abordagem proposta, bem como os experimentos e resultados da utilização da API

para manipulação de Layer-Colored QR Code.

Capítulo 6 – Conclusão: Neste capítulo, apresentam-se as vantagens e

desvantagens da adoção de QR Code para grandes quantidades de dados.

Referências

Page 19: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

19

2. REPRESENTAÇÃO DE DADOS COM QR CODE

Este capítulo tem como objetivo conceituar a representação de dados em QR Code, bem

como suas vantagens e benefícios em relação ao tamanho de impressão, resistência a

sujeira e danos, legibilidade, correção de erros e armazenamento distribuído.

2.1 CÓDIGOS GRÁFICOS

Existem mais de 20 tipos de códigos 2D convencionais. A maior diferença encontrada entre

códigos, encontra-se na capacidade de armazenamento. O QR Code por exemplo, pode

armazenar até 7000 dígitos decimais, enquanto um Maxi Code 138 dígitos (GRILLO et

al.,2010). A Tabela 1 apresenta características de códigos gráficos.

Tipo de Código QR Code PDF417 Data Matrix Maxi Code

Desenvolvedor Denso Symbol Technologies RSVI Acuity CiMatrix UPS

Dados Numéricos 7.089 2.710 3.116 138

Dados Alfanuméricos 4.296 1.850 2.355 93

Dados Binários 2.953 1.018 1.556

Dados Kanji 1.817 554 778

Tabela 1: Características de códigos 2D

Fonte: GRILLO et al., 2010

Código QR ou Código de Resposta Rápida, do inglês Quick Response Code, é uma matriz

de símbolos, que consiste na representação gráfica dos dados, por meio de uma série de

módulos apresentados na forma de quadrados pretos e brancos, nominalmente distribuídos

em um quadrado maior, conforme pode ser observado na Figura 1 (ISO, 2015).

Figura 1: QR Code

Fonte: Denso ADC, 2011

Page 20: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

20

Os módulos distribuídos pelo QR Code, são capazes de executar várias funções. Enquanto

alguns módulos são responsáveis por armazenar os dados reais codificados, outros são

agrupados em vários padrões de funções, melhorando o desempenho, alinhando o símbolo,

corrigindo erros e compensando a distorção (DENSO ADC,2011).

Todo QR Code deve ser construído com módulos nominalmente quadrados, dispostos em

uma matriz quadrada regular, composto de uma região de codificação e padrões de função,

detectores de posição, padrões de sincronismo e alinhamento. O símbolo também deve ser

cercado por uma “zona neutra”, cobrindo todos os lados do quadrado maior (ISO,2000). A

Figura 2 apresenta a separação dos módulos de um QR Code.

Figura 2: Módulos QR Code

Fonte: Denso ADC, 2011

Incluindo um padrão único de localização, o Código QR apresenta quadrados maiores,

localizados em três cantos do símbolo, que tem por objetivo facilitar a identificação de seu

posicionamento, tamanho e inclinação na interpretação dos dados (ISO, 2015).

Cada padrão de detecção de posição é composto de 7x7 módulos pretos, 5x5 módulos

brancos e 3x3 módulos pretos, podendo ser visualizado como três quadrados concêntricos

sobrepostos. O símbolo é codificado de uma forma em que a probabilidade de padrões

semelhantes aos padrões de detecção de posição serem encontrados em outras partes na

figura é muito baixa, permitindo uma rápida leitura e identificação da orientação e

localização do símbolo (ISO,2000).

Page 21: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

21

Os padrões de temporização (Timing pattern), localizados na horizontal e vertical,

respectivamente, próximos aos quadrados de detecção de posição, permitem que o

dispositivo de leitura reconheça o tamanho do símbolo (DENSO ADC,2011).

O padrão de alinhamento, encontrado na parte inferior direita do QR Code, é semelhante

aos padrões de detecção de posição, mas em escala menor. Composto de 5x5 módulos

escuros, 3x3 módulos brancos e um único módulo central de cor preta, que também pode

ser visto como três quadrados concêntricos sobrepostos, a função do padrão de

alinhamento é de mostrar como a imagem deve ser lida e processada. A quantidade de

padrões de alinhamento que compõem um QR Code, variam de acordo com a versão e

devem ser colocados em símbolos da versão 2 a 40 (ISO,2000).

As regiões de informações de versões (version information), formato da informação (format

information) e área para correção de erros (data and error-corretion área) compõem a

região de codificação e abrange todos os dados de caracteres codificados (ISO,2000).

A “zona neutra” (quiet zone), é uma região que cerca o símbolo em seus quatro lados, que

não contém dados, assegurando que textos ou marcações não sejam confundidos com os

dados do QR Code (DENSO ADC,2011).

O QR Code apresenta versões que variam de 1 a 40. Em cada versão encontram-se

configurações ou quantidade de módulos diferentes, conforme apresentado na Figura 3. As

configurações de módulos referem-se a quantidade de módulos contidos no símbolo.

Iniciando na versão 1 (21x21 módulos) são acrescidos 4 módulos por versão até a versão

40 (177x177 módulos), aumentando a capacidade de armazenamento, tipos de caracteres

e nível de correção de erros (QRCODE, 2015b).

Figura 3: Versões do QR Code

Fonte: QRCODE, 2015b

Page 22: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

22

2.2 VANTAGENS E BENEFÍCIOS

2.2.1 TAMANHO DE IMPRESSÃO

Enquanto códigos de barras convencionais (1-D), transmitem informações mediante o

tamanho e posições das barras em uma linha única horizontal. Os QR Codes são matrizes

bidimensionais que transmitem informações por meio de seus conjuntos de elementos

pretos e brancos em colunas e linhas. Como o QR Code carrega as informações tanto na

vertical quanto na horizontal, torna-se possível codificar a mesma quantidade de dados, de

um código de barras convencional, em um décimo do mesmo espaço (GRILLO et al. 2010).

Na Figura 4 é possível observar o tamanho de impressão de um QR Code em relação a um

código de barras padrão, com a mesma quantidade de informações codificadas.

Figura 4: Tamanho de impressão Fonte: Denso ADC, 2011

O tamanho de impressão de um QR Code é determinado por meio do tamanho de seus

módulos e a versão utilizada. Entretanto, caso necessário, é possível reduzir seu tamanho

de impressão tanto quanto necessário. Para isso, no entanto, são necessários uma

impressora de ultra precisão e um marcador a laser. Mesmo se isto for alcançado, a

resolução do leitor tem de corresponder a ultra resolução do código impresso. Caso sua

capacidade de leitura for insuficiente para ler o código, não se recomenda a impressão do

código em uma resolução tão reduzida. Considerando a capacidade de leitores e

impressoras atuais, o menor tamanho de impressão possível de um código QR seria

composto de módulos de 0,03mm. Lembrando que cada módulo do QR Code equivale a

um quadrado preto ou branco, a quantidade de módulos em um código QR varia de acordo

com a versão utilizada (QRCODE, 2015c).

Os módulos de uma impressora de transferência térmica ou térmica direta provém da

quantidade de pontos na cabeça de impressão, ou seja, se a densidade de cabeça for de

300 dpi e cada módulo for constituído de 5 pontos, o tamanho do módulo será de 0,42 mm.

Page 23: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

23

O ponto é o elemento mínimo que compõem uma imagem renderizada, em impressoras e

scanners ele é expresso como dpi (Dots per inch) ou pontos por polegada. O aumento

dessa quantidade de pontos melhora a qualidade de impressão, elimina a distorção do eixo

e desfocagem (QRCODE, 2015d). A Tabela 2, apresenta o tamanho dos módulos de

impressão de um QR Code, levando em consideração o tipo da impressora, a densidade e

a configuração utilizada.

Impressora Densidade Configuração de 4 pontos

Configuração de 5 pontos

Configuração de 6 pontos

Laser 600 dpi 0,17mm 0,21mm 0,25mm

360 dpi 0,28mm 0,35mm 0,42mm

Térmica 300 dpi 0,33mm 0,42mm 0,5mm

200 dpi 0,5mm 0,63mm 0,75mm

Tabela 2: Tamanho do módulo de impressão Fonte: QRCODE, 2015d

Cada scanner apresenta um limite de tamanho do módulo legível diferente, definido pela

resolução do digitalizador. Por exemplo, se um QR Code for impresso em uma impressora

de 600dpi com a configuração de 4 pontos, o tamanho do módulo será de 0,17mm. Para

realizar a leitura deste QR Code será necessário um scanner com resolução abaixo de

0,17mm. Na Tabela 3, são apresentados alguns modelos de scanners com suas

respectivas resoluções.

Tipo de Sanner Modelo Resolução

Alta Resolução BHT-800Q Series 0,2mm

GT20QD-SM 0,1mm

Padrão

Bhat-710QWB-in 0,25mm

BHT-600Q Series 0,25mm

Série QK20 0,25mm

AT10Q-SM / SB 0,25mm

Tabela 3: Scanners e tamanho do módulo de leitura Fonte: QRCODE, 2015d

2.2.2 RESISTÊNCIA A SUJEIRA E DANOS

Mesmo que um símbolo esteja parcialmente sujo ou danificado, conforme apresentado na

Figura 5. O QR Code pode restaurar parte desses módulos, devido a implementação de

um código de correção de erros. A capacidade de restauração varia de 7 a 30% dos dados,

dependendo do tamanho e modelo do QR Code (GRILLO et al.,2010).

Page 24: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

24

Figura 5: Resistência a sujeira e danos Fonte: Denso ADC, 2011

2.2.3 CORREÇÃO DE ERROS

O QR Code possui quatro níveis diferentes para correção de erros, apresentados na Tabela

4. A função de correção de erros é implementada por meio do código Reed-Solomon,

altamente resistente a rupturas e erros. Por meio desta funcionalidade de correção de erros,

os códigos podem ser lidos corretamente, mesmo quando eles são manchados ou

danificados. O nível de correção de erros pode ser configurado pelo usuário. Aumentar o

nível de correção de erros melhora a capacidade de correção, contudo, a quantidade de

dados contidos no QR Code também aumenta (SOON,2008).

Capacidade de correção de erros

Level L Aprox. 7%

Level M Aprox. 15%

Level Q Aprox. 25%

Level H Aprox. 30% Tabela 4: Capacidade de Correção de erros de acordo com o nível

Fonte: QRCODE, 2015b

Para escolher o nível de correção de erros, vários fatores como ambiente e tamanho de

impressão devem ser considerados. Recomendam-se os níveis Q e H para ambientes de

fábrica, onde o QR Code pode ficar sujo, e os níveis L e M para ambientes sem grandes

riscos de sujeira ou danos (QRCODE, 2015b).

A função de correção de erros é capaz de corrigir dois tipos de erros, módulos que não

podem ser escaneados (apagados ou rasurados) e módulos que são convertidos errados.

Como o QR Code é uma matriz simbológica, um defeito na conversão de um módulo preto

para branco, ou o inverso, afetará na decodificação dos caracteres, apresentando um

Page 25: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

25

resultado válido, porém diferente. Devido ao QR ser uma matriz simbológica, são

necessários dois módulos corretos para cada módulo convertido erroneamente (ISO, 2000).

Por exemplo, utilizando um nível de correção M em um código com 148 símbolos, 44 deste

montante são reservados para correção de erros, sendo 22 o número de símbolos passíveis

de correção, portanto a capacidade de correção é de 22/148 ou aproximadamente 15%.

Ao se utilizar um nível de correção H em um código de 182 símbolos, 110 são os símbolos

de correção de erros e 72 o número de dados codificados, sendo possível a correção de

até 55/182 símbolos ou aproximadamente 30%.

2.2.4 LEGIBILIDADE

O QR Code apresenta uma leitura omnidirecional e de alta velocidade. Mesmo que uma

imagem esteja distorcida ou em uma superfície curva, por intermédio dos padrões de

detecção de posição nos três cantos do símbolo, o código pode ser lido a partir de qualquer

ângulo dentro de 360º, sem a necessidade de alinhamento entre o scanner e os símbolos

do código. Estes padrões de detecção garantem uma leitura rápida e estável, eliminando

quaisquer interferências de fundo (DENSO ADC, 2011). A Figura 6 apresenta um exemplo

de QR Code distorcido.

Figura 6: QR Code distorcido

Fonte: GRILLO et. al, 2010

A leitura dos símbolos da matriz, é realizada por meio da implementação de um sensor

CCD (Charge Coupled Device). Os dados da linha de varredura são capturados por este

sensor e armazenados na memória. Em seguida, um software identifica a posição, tamanho

e ângulo do símbolo detectado e inicia o processo de decodificação. Tradicionais símbolos

bidimensionais costumavam levar muito tempo para detectar a posição, ângulo e tamanho

de um símbolo. Mediante os padrões de detecção implementados em QR Code, dispostos

em três cantos do símbolo, a leitura se torna mais rápida, permitindo a identificação do

símbolo a partir de qualquer ângulo dentro de 360º. A relação entre preto e branco na linha

Page 26: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

26

de digitalização em que percorrem os padrões de localização é sempre de 1: 1: 3: 1: 1, ao

detectar essa razão específica, o padrão de localização é detectado pelo sensor CCD,

identificando a posição do QR Code em um curto período de tempo. Ao dispor o padrão de

detecção nos três cantos do símbolo, a decodificação do QR Code pode ser realizada até

20 vezes mais rápida que outros códigos matriciais (SOON,2008).

2.2.5 ARMAZENAMENTO DISTRIBUÍDO

O QR Code apresenta uma funcionalidade de ligação, permitindo que um único símbolo

possa ser representado por vários outros símbolos, conforme pode ser observado na Figura

7. Um QR Code pode ser dividido em até 16 símbolos, possibilitando a impressão em áreas

menores. Independentemente da ordem em que forem analisados, os símbolos gerados

serão lidos como um único símbolo de dados (SOON,2008).

Figura 7: Distribuição de um QR Code

Fonte: QRCODE, 2015b

2.2.6 CÓDIGO ABERTO

QR Code é um código aberto, que qualquer pessoa pode utilizar. Com as regras para sua

utilização e a padronização do código, seu uso aumentou, expandindo para vários países

de todo o mundo. Devido ao modelo de desenvolvimento open source, melhorias são

constantemente desenvolvidas para os Códigos QR, de modo que, novos tipos de QR Code

que atendam às necessidades mais sofisticadas, são criados um após o outro (QRCODE,

2015a).

Page 27: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

27

2.3 COLORED QR CODE

Segundo Grillo et al (2010) a capacidade de armazenar mais dados, sem o aumento da

área de impressão em um clássico código bidimensional, representa um dos maiores

desafios dos códigos de barras da próxima geração. Com a finalidade de expandir a

capacidade de dados armazenados, alguns códigos de barras 2D utilizam diferentes cores

para criar mais símbolos, resultando em uma maior capacidade para armazenamento de

dados dentro de uma mesma área de impressão. Exemplos de tais códigos de barras são

o Color Bar Code System of Imageid Ltd e o Microsoft’s High Capacity Color Barcode.

O High Capacity Color Barcode (HCCB), apresentado na Figura 8, aproveita-se de

dispositivos de computação de imagens avançados, juntamente com o poder de

processamento para permitir o armazenamento de uma maior densidade de dados em

mídias impressas analógicas. O aumento na densidade de dados, torna-se possível com a

utilização de triângulos coloridos nas linhas da matriz bidimensional, separados por uma

linha branca (MICROSOFT,2016).

Figura 8: Microsoft’s High Capacity Color Barcode Fonte: MICROSOFT, 2016

Enquanto o número de linhas de um HCCB podem variar, o número de módulos em cada

linha é sempre um múltiplo do número de linhas. Além das linhas separatórias de cor branca

o HCCB apresenta uma borda de limitação de cor preta. Esses padrões são projetados

para agira como marcos visuais, a fim de localizar o código de barras na imagem. A

limitação de cor preta na parte inferior da imagem é mais espessa que os limites sobre os

outros três lados. Como o código de barras pode estar em uma posição arbitrária a imagem,

essa parte inferior mais espessa age como um ponto de referência para a leitura da

Page 28: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

28

imagem, Os últimos 8 símbolos na última linha, serão sempre compostos de uma ordem

fixa de cores, com 2 símbolos para cada cor, conforme pode ser observado na Figura 13.

A principal limitação do HCCB está relacionada a seus mecanismos de detecção e

alinhamento. Essas limitações dos mecanismos de detecção e alinhamento, derivam do

fato, de que nem todas imagens separadas pela borda branca sejam necessariamente

código (GRILLO et al. 2010).

Page 29: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

29

3. PLATAFORMA JAVA

3.1 INTRODUÇÃO

A história do Java se inicia em 1991, quando um pequeno grupo de engenheiros da Sun

denominados “Green Team”, liderados por James Gosling, criaram a linguagem de

programação que revolucionaria nosso mundo. Em 1995, com o anúncio da incorporação

ao navegador de Internet Netscape, a tecnologia Java decolou (LINDHOLM; YELLIN,

2011).

Segundo (DEITEL; DEITEL, 2010) os programas em Java são constituídos em partes

denominadas classes. Estas classes consistem em partes denominadas métodos, que

realizam tarefas e retornam informações ao completa-las. Em Java é possível programar

várias funções separadas, que podem ser necessárias para formar um programa.

Entretanto, a maior parte dos programadores aproveitam-se das ricas coleções de classes

já existentes em bibliotecas de classes Java.

Em uma linguagem de programação, ao compilar um programa, o código fonte é

transformado em código de máquina específico para uma plataforma e sistema operacional.

O código binário resultante da compilação, será executado pelo sistema operacional, e por

esta razão, o código deve ser capaz de se comunicar com o sistema operacional em

questão. A linguagem Java utiliza-se de um conceito denominado máquina virtual, onde,

entre o sistema operacional e a aplicação, existe uma camada extra, responsável por

interpretar as ações da aplicação, para realizar as respectivas chamadas ao Sistema

Operacional (CAELUM,2016). Na Figura 9 é apresentado o funcionamento da máquina

virtual do Java.

.

Figura 9: Funcionamento da máquina virtual do Java Fonte: VIRALPATEL, 2008

Page 30: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

30

A Java Virtual Machine (JVM) é uma máquina abstrata. Assim como uma máquina real de

computação, a JVM apresenta um conjunto de instruções e manipula várias áreas de

memória em tempo de execução. A JVM não é capaz de interpretar a linguagem de

programação Java, mas apenas um formato binário específico (LINDHOLM; YELLIN, 2011).

Esse código binário é gerado por um compilador Java, como o javac, e é conhecido como

“bytecode”, por existir menos de 256 códigos de operação dessa linguagem, e cada código

de operação consumir um byte. O compilador Java gera esse bytecode que, diferente das

linguagens sem máquina virtual, serve para diferentes sistemas operacionais, já que o

código gerado é interpretado pela JVM e não pelo Sistema Operacional (SO)

(CAELUM,2016).

De acordo com (DEITEL; DEITEL, 2010), normalmente, antes de serem executados, os

programas em Java passam por cinco fazes:

Fase 1: Consiste na edição de um arquivo, realizado por meio de um programa

editor. O programador escreve um programa em Java utilizando o editor e realiza

correções quando necessário.

Fase 2: Consiste na compilação do código, onde, o compilador Java traduz o

programa para bytecodes.

Fase 3: É denominada de carregamento. Antes de ser executado, o programa deve

ser primeiramente alocado na memória. Esta alocação é realizada pelo carregador

de classe, que pega o arquivo “.class” contendo os bytecodes e o transfere para a

memória.

Fase 4: Consiste na verificação dos bytecodes. Antes que o Interpretador Java

execute os bytecodes, os mesmos têm de ser verificados pelo verificados de

bytecodes, assegurando que os bytecodes para as classes que baixadas da internet,

são válidos e não violam as restrições de segurança do Java.

Fase 5: Consiste na execução do programa. O computador, sob o controle de sua

CPU, interpreta o programa, realizando assim as tarefas determinadas pelo

programa.

Page 31: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

31

3.2 ANÁLISE E PROCESSAMENTO DE IMAGENS

Segundo (GONZALES; WOODS, 2008), uma imagem pode ser definida como uma função

f(x,y) de duas dimensões, onde x e y representam as coordenadas e f a intensidade ou

nível de cinza (brilho) da imagem no ponto em questão, de qualquer par de coordenadas

(x, y). Quando x,y e f representam valores finitos, denomina-se esta imagem de imagem

digital. A área de PDI (Processamento digital de imagens), refere-se ao processamento

digital de imagens por meio de um computador digital. Uma imagem digital é composta por

um número finito de elementos, cada um dos quais possui uma determinada localização e

valor. Esses elementos são chamados de elementos de imagens e pixel. A Figura 10 mostra

um exemplo de imagem digital.

Figura 10: Representação de uma imagem digital Fonte: ROCHA, 2013

Em imagem digital, o pixel é um ponto físico em um bitmap, o menor elemento de uma

fotografia representada na tela. O endereço de um pixel corresponde as suas coordenadas

físicas. Os pixels são construídos em uma tabela bidimensional, representados por pontos

ou quadrados (ROBBINS,2016).

Em computação gráfica, bitmaps, são estruturas de dados matriciais, responsáveis por

especificar a cor de cada pixel, geralmente representados por tabelas retangulares de

pixels, ou pontos de cor, que podem ser visualizados por meio de um monitor, papel ou

outro tipo de display (ROBBINS,2016).

Page 32: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

32

De acordo com (GONZALES; WOODS, 2008), de um modo geral, o processamento de

imagens digitais apresenta 12 passos fundamentais:

Aquisição de imagem: É o primeiro passo no processamento de imagens, uma

técnica que captura e digitaliza uma imagem. Geralmente esta fase de aquisição da

imagem envolve o pré-processamento, como o dimensionamento.

Aperfeiçoamento de imagem: É o processo que manipula uma imagem de forma que

o resultado obtido é mais adequado que o original para uma aplicação específica.

Restauração de imagem: Assim como o aperfeiçoamento de imagem, a restauração

é um processo com o finalidade de melhorar a qualidade de uma imagem. No

entanto, diferente do aperfeiçoamento de imagem onde a melhora na qualidade é

subjetiva, na restauração as técnicas de recuperação baseiam-se em modelos

matemáticos e estatísticas de degradação de uma imagem.

Processamento de imagem colorida: Com o aumento significativo na utilização de

imagens digitais por meio da Internet, o processamento de imagem colorida é uma

área que vêm ganhando bastante importância.

Wavelets: Recursos para a representação de imagens em diversos graus de

resolução, compressão de dados de imagem e representação piramidal, onde as

imagens são dividias em regiões menores.

Compressão: É o processo que reduz o tamanho de armazenamento necessário

para salvar uma imagem.

Processamento morfológico: Por meio da utilização de algumas ferramentas, o

processamento morfológico, extrai os componentes de uma imagem, que são uteis

para representação e descrição da forma de uma região, como fronteiras e fechos

convexos, por exemplo.

Segmentação: É o procedimento para particionar uma imagem em suas partes

constituintes ou objetos. A segmentação é uma das tarefas mais difíceis em PDI,

apresentando uma solução para problemas de imagem onde, por exemplo,

requerendo a identificação individual dos objetos de uma imagem.

Representação e descrição: Converte os dados para um formato adequado, de

forma que um computador possa processa-los.

Reconhecimento: É o processo que atribui uma “etiqueta” (por exemplo, “humano”)

a um objeto, com a finalidade de identifica-los, baseado em suas descrições.

Page 33: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

33

O termo análise refere-se ao tratamento da informação presente em uma imagem. Tal

tratamento da informação é denominado de parametrização e nele, várias medidas

quantitativas ou parâmetros são utilizados com a finalidade de descrever as diferentes

informações contidas dentro de uma imagem. As técnicas dedicadas a análise de imagens

podem variar significativamente de acordo com a complexidade e a necessidade em tempo

de processamento. Alguns exemplos da aplicação de análise de imagem são: a

determinação de um número de células presentes em um tecido biológico, o cálculo das

formas dos contornos de uma célula ou ainda a determinação da distribuição de uma

população específica de um conjunto de células (ALBUQUERQUE et al, 2000).

Tradicionalmente, uma imagem é a representação visual de um objeto do mundo real,

capturado por meio do uso de algum tipo de processo mecânico, eletrônico ou fotográfico.

Na computação gráfica, uma imagem se refere a um objeto em um dispositivo de saída

(MURRAY, 1996).

Nos ambientes de programação atuais, existem diversas Applications Programming

Interfaces (APIs) disponíveis, que fazem praticamente todos os aspectos da computação,

seja ele de rede, bancos de dados, gráficos, som ou imagem (Burger et al.,2009).

Em Java, uma alternativa para PDI é a utilização da API Java Advanced Imaging (JAI).

Embora a API não seja parte de um software completo de processamento de imagem, as

funções e extensões possibilitam a implementação de algoritmos de processamento de

imagens (SANTOS, 2004).

Em JAI, as imagens podem ser multidimensionais ou seja, com múltiplos valores

associados a um único pixel e pode apresentar pixels com valores inteiros ou de ponto

flutuante. Pixels podem ser compactados de diversas formas ou descompactados em uma

matriz de dados de imagem. Diferentes modelos de cores podem ser utilizados. Como é de

se esperar, a fim de representar uma variedade de dados de imagem que podem ser

tratados com uma variedade de classes (SANTOS,2004).

De acordo com Santos (2004), algumas classes básicas para representação de dados de

imagem, são abstratas ou subclasses concretas de objetos que se comportam de maneira

semelhante. Na JAI API a PlanarImage é a classe básica para representação de imagens,

apresentando uma maior flexibilidade que a classe BufferedImage do Java. Ambas as

classes armazenam seus pixels em uma instância de Raster que contém uma instância de

uma subclasse completa denominada DataBuffer. Uma PlanarImage também apresenta

uma instância de um ColorModel associado a ela, o qual contém uma instância de

Page 34: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

34

ColorSpace, que determina como o valor de um pixel é associado ao valor de uma cor. Na

Figura 11 pode ser observado a estrutura de uma PlanarImage.

Figura 11: Estrutura de uma PlanarImage Fonte: SANTOS, 2004

Uma PlanarImage permite somente a leitura de uma imagem, ou seja, pode ser criada e

seus valores de pixels podem ser lidos de diversas maneiras diferentes, mas não existem

métodos implementados que permitam a modificação dos valores de seus elementos

(SANTOS,2004).

Outra alternativa solução para PDI em Java é a utilização da API ImageJ, que pode exibir,

editar, analisar, processar imagens, com suporte a vários formatos de imagem, incluindo

TIFF, GIFm JPEG, BMP e DICOM. ImageJ foi projetada com uma arquitetura aberta que

proporciona extensibilidade por meio de plug-in Java. Software de aquisição, analise e

processamento de imagens podem ser implementados utilizando a API construída e

compilada em um editor Java (RSB,2016).

Algumas classes da API ImageJ são definidas a partir da API AWT de interface gráfica do

Java, permitindo que o resultado de suas operações sejam visualizados também pela API

Swing, por herdar algumas características de AWT. Em relação aos plug-ins,

desenvolvedores tem a possibilidade de criar ou reaproveitar plug-ins já utilizados no

aplicativo. Isso fornece uma grande flexibilidade na criação de classes mas, não impede a

criação de código redundantes entre os trabalhos de diversos desenvolvedores

(JÚNIOR,2009). A Figura 12 apresenta a estrutura geral da API ImageJ.

Page 35: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

35

Figura 12: Estrutura geral da API ImageJ. Fonte: JÚNIOR, 2009

Apesar desse problema, as classes nativas da API oferecem suporte à maior parte das

técnicas de PDI. ImagePlus e ByteProcessor são duas classes bastante utilizadas. A classe

ImagePlus geralmente exige um objeto de java.awt.Image na instanciação de seus objetos

e sempre carrega a imagem para a visualização na interface gráfica. A classe

ByteProcessor, é a base para execução das principais técnicas de processamento de

imagens com ImageJ (JÚNIOR,2009).

3.3 APIS E BIBLIOTECAS PARA QR CODE

3.3.1. ZEBRA CROSSING (ZXING)

Zxing (“Zebra Crossing”) é uma biblioteca open-source para geração e processamento de

códigos de barras, com suporte a diversos formatos de imagens 1D e 2D, implementado

em Java, com suporte a outras linguagens como: C++, Objective C, JRuby, entre outras

(OWEN,2016). Na Tabela 5, são apresentados os formatos de códigos de barras

suportados pela biblioteca Zxing.

Page 36: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

36

Fromatos Suportados

1D Produtos 1D Industrial 2D

UPC-A Code 39 QR Code

UPC-E Code 93 Data Matrix

EAN-8 Code 128 Aztec (beta)

EAN-13 Codabar PDF 417 (beta)

ITF

RSS-14

RSS-Expanded Tabela 5: Formatos de códigos de barras suportados em ZXing

Fonte: OWEN, 2016

Códigos de barras 2D podem codificar diversos tipos de textos, que podem representar

muitas coisas. Normalmente, os códigos de barras 2D codificam textos que representam

uma URL (Uniform Resource Locator), que é o endereço de um recurso disponível em uma

rede de internet ou intranet, como http://google.com por exemplo. Essa expressão é

reconhecida pelo leitor como uma URL e pode ser aberta em um navegador (OWEN,2014).

Códigos de barras 2D também podem codificar textos do tipo acionáveis, textos que por

exemplo, representam informações de contato, que quando reconhecidas, podem executar

um pedido para adicionar o contato para um catálogo de endereços (OWEN,2014).

De acordo com Owen (2014), a API ZXing suporta todos estes formatos e mais alguns.

Entretanto, para que o leitor interprete o texto codificado, algumas normas e padrões devem

ser seguidos

URL: O tipo de texto mais codificado em códigos de barras 2D. Para a codificação

desse tipo de texto é necessário incluir corretamente o texto da URL no código de

barras, juntamente com o protocolo (http://endereço), garantindo que o texto

codificado seja reconhecido como uma URL.

Endereço de e-mail: Para codificar um endereço de e-mail, pode-se simplesmente

codificar seu endereço ([email protected]). No entanto, para garantir que o

e-mail seja realmente reconhecido como um endereço de e-mail, é aconselhável

criar uma propriedade “mailto”, obtendo-se desta maneira, o texto: “mailto:

[email protected]”. Dessa maneira, ao identificar o texto codificado como

um endereço de e-mail, o leitor abrirá uma mensagem de e-mail em branco para o

endereço indicado.

Números de telefone: Para a codificação de número de telefone, uma propriedade

“tel” deve ser utilizada, de forma a garantir que os dígitos codificados sejam

Page 37: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

37

entendidos como um número de telefone. É aconselhável que também sejam

inclusos os prefixos que tornam o número acessível internacionalmente. Por

exemplo, para codificar um número de telefone do Brasil “3322-5596”, deve-se

codificar “tel: +55-18-3322-5596”, o prefixo “+55” torna o número utilizável fora do

Brasil.

SMS: Semelhante a codificação de endereço de e-mail, para a codificação de um

sms, é necessário a utilização da propriedade “sms”. Dessa forma, para criar um link

para o número 12345, por exemplo, o texto a ser codificado deverá seguir o seguinte

formato: “sms: 12345”.

Exemplo de código para criação de um QR Code com ZXing:

File myFile = new File(filePath);

try {

Hashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new

Hashtable<EncodeHintType, ErrorCorrectionLevel>();

hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);

QRCodeWriter qrCodeWriter = new QRCodeWriter();

BitMatrix byteMatrix =

qrCodeWriter.encode(myCodeText,BarcodeFormat.QR_CODE, size, size, hintMap);

int CrunchifyWidth = byteMatrix.getWidth();

BufferedImage image = new BufferedImage(CrunchifyWidth, CrunchifyWidth,

BufferedImage.TYPE_INT_RGB);

image.createGraphics();

Graphics2D graphics = (Graphics2D) image.getGraphics();

graphics.setColor(Color.WHITE);

graphics.fillRect(0, 0, CrunchifyWidth, CrunchifyWidth);

graphics.setColor(Color.BLACK);

for (int i = 0; i < CrunchifyWidth; i++) {

for (int j = 0; j < CrunchifyWidth; j++) {

if (byteMatrix.get(i, j)) {

graphics.fillRect(i, j, 1, 1);

}

}

}

ImageIO.write(image, fileType, myFile);

} catch (WriterException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

System.out.println("\n\nYou have successfully created QR Code.");

Page 38: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

38

3.3.2. QRGen

QRGen é uma biblioteca Java que cria uma camada acima da ZXing. Ela apresenta uma

dependência de ZXing, portanto, para geração de QR Codes em Java são necessários os

arquivos da ZXing (GULLAKSEN,2016).

QRGen consiste em três módulos: Core, Javase e Android. Ao desenvolver um aplicativo

Java é necessário adicionar o módulo Java EE para a lista de dependências. Os módulos

centrais requeridos, serão adicionados automaticamente pelo sistema de compilação

utilizado (GULLAKSEN,2016).

Para a utilização do QRGern dentro de aplicativos Android é necessário adicionar o módulo

Android à lista de dependências. Assim como no módulo de Java EE, os módulos centrais

requeridos serão adicionados automaticamente pelo compilador utilizado

(GULLAKSEN,2016).

Exemplo de código para criação de QR Code com a API QRGen:

// get QR file from text using defaults

File file = QRCode.from("Hello World").file();

// get QR stream from text using defaults

ByteArrayOutputStream stream = QRCode.from("Hello World").stream();

// override the image type to be JPG

QRCode.from("Hello World").to(ImageType.JPG).file();

QRCode.from("Hello World").to(ImageType.JPG).stream();

// override image size to be 250x250

QRCode.from("Hello World").withSize(250, 250).file();

QRCode.from("Hello World").withSize(250, 250).stream();

// override size and image type

QRCode.from("Hello World").to(ImageType.GIF).withSize(250, 250).file();

QRCode.from("Hello World").to(ImageType.GIF).withSize(250, 250).stream();

3.3.3. IMPLEMENTAÇÃO NATIVA

Além das API’s QRGen e ZXing (Zebra Crossing), em Java, é possível a implementação de

uma API para QR Code, recorrendo a recursos gráficos da plataforma. Canvas, Java 2d e

outras classes do pacote AWT, SWT e Swing, são alguns exemplos de recursos que tornam

a implementação possível.

Page 39: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

39

A API Java 2D fornece gráficos bidimensionais, textos e recursos de imagens para

programas Java por meio de extensões para o pacote AWT (Abstract Windowing Toolkit).

A classe Java 2D oferece diversas classes que definem objetos geométricos comuns, como

pontos, linhas, curvas e retângulos em uma estrutura flexível, com vários recursos para o

desenvolvimento de interfaces, programas de desenhos sofisticados e editores de imagem.

Em Java 2D, existem objetos em um plano denominado espaço de coordenadas do usuário

(user coordinate space) ou simplesmente espaço do usuário (user space). Quando os

objetos são processados em uma tela, as coordenadas de espaço do usuário são

transformadas em coordenadas espaciais no dispositivo (ORACLE, 2015).

De Acordo com a ORACLE (2015), a API Java 2D fornece as seguintes capacidades:

Um modelo de padronização para dispositivos de exibição e impressoras

Uma ampla gama de primitivas geométricas

Mecanismos para a detecção de formas, textos e imagens

Controle a sobreposição de objetos

Suporte a melhoria de cor

Suporte a impressão de documentos complexos

Na API Java 2D, uma imagem é uma matriz retangular bidimensional de pixels, onde cada

pixel representa uma cor nessa determinada posição da imagem, onde as dimensões dessa

matriz, representam a extensão horizontal (largura) e a extensão vertical (altura) da imagem

exibida. A classe de Imagem mais importante para a representação de tais imagens é a

java.awt.image.BufferedImage, onde a API Java 2D, armazena o conteúdo das imagens na

memória, para que as mesmas possam ser acessados diretamente (ORACLE, 2015).

Uma aplicação pode criar um objeto BufferedImage diretamente ou obter um formato de

imagem externo, como PNG ou GIF. Em ambos os casos, a aplicação pode desenhar sobre

a imagem utilizando chamadas gráficas de Java 2D. Assim, as imagens não ficam limitadas

a exibição de imagens do tipo fotográficas. Diferentes tipos de objetos, como, linha, texto,

e até mesmo outras imagens podem ser desenhadas sobre a primeira imagem desenhada.

A imagem resultante pode então ser enviada para uma tela de exibição, para uma

impressora ou salva em um formato gráfico, como PNG ou GIF (ORACLE, 2015).

Exemplo de desenho com Java2D:

protected void paintComponent(Graphics g) {

Page 40: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

40

super.paintComponent(g);

Rectangle2D.Double r;

Graphics2D g2 = (Graphics2D) g.create();

//Define a cor de preenchimento do quadrado

g2.setColor(Color.BLACK);

// Define as dimensões do quadrado

r = new Rectangle2d.Double(x,y,largura,altura);

// Desenha o quadrado preenchido com a cor definida

g2.fill(r);

g2.dispose();

}

A classe Canvas do pacote AWT é uma sub-classe derivada da classe Component, que

quando colocado sobre um JFrame, exibe uma área em branco utilizada para a geração de

gráficos. Um componente Canvas representa uma área retangular branca na tela, onde a

aplicação pode desenhar a partir da captura de eventos de entrada, disparados pelo

usuário.

Exemplo de desenho com Canvas :

// Definindo o construtor canvas com largura e altura

Canvas canvas = new Canvas(300, 300);

//Define um GraphicsContext, objeto principal do Canvas, utilizado para desenhar

GraphicsContext ctx = canvas.getGraphicsContext2D();

//Define a cor de preenchimento da figura

ctx.setFill(Color.BLACK);

//Desenha no componente um quadrado preenchido com a cor definida

ctx.fillRect(x,y,largura,altura);

Page 41: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

41

4. PROPOSTA DO TRABALHO

Este trabalho tem por objetivo abordar a proposta de QR Codes coloridos, para o aumento

da capacidade de armazenamento e a implementação de uma API para a geração e leitura

de dados do QR Colorido, definido como Layer Colored QR Code. A leitura desse QR Code

se dará por meio do mapa de cores, que será utilizado para separar os N QR Codes

combinados na geração.

A API desenvolvida em Java será utilizada para, principalmente, combinar QR Codes,

gerando uma versão colorida dos mesmos, com base num mapa de cores para N layers

combinados, assim como extrair informações de um QR Code colorido e gerar N QR Codes

com base em um QR Code colorido.

Para o desenvolvimento da abordagem proposta em Layer Colored QR Code, algoritmos e

estratégias serão estudadas e implementadas visando apoiar a combinação e geração de

cores.

4.1 LAYER-COLORED QR-CODE: ABORDAGEM MULTI-COLORIDA PARA QR-

CODE

Em um QR Code padrão, cada módulo representa um único bit, seguindo uma regra

simples: 1 para quadrados pretos e 0 para quadrados brancos. Com a finalidade de se obter

uma maior capacidade para o armazenamento de informações, introduz-se cores na

representação do QR Code. A maior parte das abordagens com QR Code coloridos utilizam

apenas o preto, o branco e mais duas cores, armazenando assim, 4 possíveis informações

diferentes: [00, 01, 10, 11].

Figura 13: Módulos em Colored Qr Code Fonte: Adaptado de GRILLO et al., 2010

Page 42: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

42

Em Layer Colored QR Code, várias cores podem ser utilizadas, possibilitando assim uma

maior capacidade para armazenamento de dados. Quanto maior a quantidade de cores

utilizadas para a geração do Layer Colored QR Code maior será a capacidade de

armazenamento de dados.

Figura 14: Módulos em Layer Colored QR Code Fonte: Adaptado de GRILLO et al., 2010

A geração do QR Code multicolorido em Layer Colored QR Code ocorre mediante a

sobreposição de QR Codes padrões, aumentando a capacidade de armazenamento a cada

sobreposição realizada. A cada sobreposição realizada, aumenta-se o número de cores

utilizadas, juntamente com a capacidade de armazenamento. Para a identificação da

quantidade de cores e sobreposições realizadas durante o processo de leitura e

decodificação, é acrescentado um mapa de cores ao lado da imagem gerada.

Figura 15: QR Code gerado em Layer Colored Qr Code.

Page 43: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

43

4.2. PROJETO ARQUITETURAL PARA LAYER-COLORED QR CODE

Com a finalidade de aumentar a capacidade de informações em QR Code, algumas

abordagens acrescentam cores na geração do QR Code, resultando em um QR Code

colorido. A maior parte dessas abordagens utilizam 4 cores para a geração do QR Code:

preto, branco e mais duas cores.

Com o objetivo de aumentar ainda mais a capacidade de armazenamento de dados, Layer

Colored QR Code possibilita a utilização de N cores. A cada sobreposição realizada

aumentam-se o número de cores utilizadas e a capacidade de armazenamento de dados

Para a identificação da versão do Layer Colored QR Code utilizada, juntamente com as

cores utilizadas, um mapa de cores será definido para a leitura do QR Code. Na geração

do QR Code, uma região específica será reservada para o mapa de cores no canto superior

direito, ao lado do QR Code, possibilitando que N cores sejam interpretadas. Na Figura 16

é apresentado um exemplo de Layer Colored QR Code.

Figura 16: Exemplo de Layer Colored QR Code

O mapa de cores, imagem adicional ao QR Code colorido, é exibido em forma de matriz

com 3 cores por linha, com um tamanho de bloco configurável. Para a criação de um Layer

Colored QR Code, com 3 Layers, apresentando a seguinte sintaxe [Layer][Layer]Layer].

Seguindo a fórmula 2 ^ [Quantidade de Layers], 8 cores serão utilizadas: branco (000),

vinho (001), ciano (010), vermelho (011), cinza (100), laranja (101), rosa (110) e preto (111).

Na Figura 17 é demonstrado um QR Code com 3 Layers.

Page 44: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

44

Figura 17: QR Code 3 Layers

Para a criação de um Layer Colored QR Code, com 5 Layers, apresentando a seguinte

sintaxe [Layer][Layer]Layer] [Layer]Layer]. Seguindo a fórmula 2 ^ [Quantidade de Layers],

32 cores poderão ser utilizadas.

Figura 18: QR Code 5 Layers

Visando a utilização do QR Code proposto (Layer Colored QR Code), foi implementada

uma API em Java, para auxiliar a geração e interpretação de QR Codes coloridos, com

maior capacidade de armazenamento.

Page 45: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

45

4.3. TECNOLOGIAS E RECURSOS ADOTADOS

Em um primeiro momento foi implementado um componente para a geração de uma

imagem representando o QR Code, possibilitando a geração de QR Codes normais. Com

base na abordagem proposta por este trabalho, em um segundo momento foi implementado

um outro componente para realizar a leitura e extração de dados, levando em consideração,

somente a proposta de QR Code colorido.

Para a implementação de ambos os componentes foram necessários como recurso de

software a IDE Eclipse versão Mars, para desenvolvimento em Java. Para a geração do

QR Code padrão (preto e branco), tanto quanto o colorido, foram utilizadas as API’s open

source, ZXing (Zebra Crossing) e QRGen, que auxiliam na geração de QR Codes.

Page 46: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

46

5. DESENVOLVIMENTO DO TRABALHO

5.1 IMPLEMENTAÇÃO DA ABORDAGEM LAYER COLORED QR-CODE

Com o objetivo de aumentar a capacidade de armazenamento de um QR Code, este

trabalho, apresentou uma nova abordagem por meio da sobreposição de QR Codes,

possibilitando a geração de QR Codes multicoloridos com maior capacidade de

armazenamento de dados.

Para a implementação da API de manipulação de Layer Colored QR Code, foi utilizada a

biblioteca ZXing (“Zebra Crossing”), biblioteca open-source de processamento de código

de barras 2D, para a geração dos QR Codes, que serão sobrepostos, dando origem ao

Layer Colored QR Code.

5.1.1 GERAÇÃO DE UM QR CODE EM LAYER COLORED QR-CODE

Para a geração de um QR Code com múltiplas camadas, por intermédio da API Layer

Colored QR-Code implementa com base na abordagem proposta, é necessário instanciar

um objeto do tipo LayerColoredWriter, especificar os métodos de codificação das camadas,

gerar a paleta de cores, informar os textos que serão utilizados para a geração das camadas

e os caminhos para a saída dos QR Codes padrões que comporão o Colored QR Code, por

meio de um objeto de tipo List<>. Abaixo é possível observar um exemplo para a geração

do QR Code com múltiplas camadas mediante a API desenvolvida.

public static void main(String[] args) throws IOException{

// Lista com os textos para a geração do Colored QR Code

List<String> inputList = new ArrayList<>();

inputList.add("Texto para o QR Code de número 1");

inputList.add("Texto para o QR Code de número 2");

inputList.add("Texto para o QR Code de número 3");

// Lista com o caminho de saída para os QR Codes padrões

List<String> listPath = new ArrayList<>();

listPath.add("C:\\Users\\Gabriel Ussuy\\Desktop\\QR Codes\\QRCode1.png");

listPath.add("C:\\Users\\Gabriel Ussuy\\Desktop\\QR Codes\\QRCode2.png");

listPath.add("C:\\Users\\Gabriel Ussuy\\Desktop\\QR Codes\\QRCode3.png");

LayerColoredWriter lyr = new LayerColoredWriter();

Page 47: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

47

// Informar metodos de codificação

lyr.setCharacterSet("UTF-8");

lyr.setErrorCorrection(ErrorCorrectionLevel.L);

lyr.setMargin(2);

// Gerar paleta de cores

lyr.generatePallete(3);

// Passar listas

lyr.generateQRCode(inputList);

lyr.generateColoredQRCode(listPath, 400);}

A classe LayerColoredWriter estende de EncodeType, que contém os métodos para

configuração do formato de codificação do QR Code:

public void setCharacterSet(String characterSet): Específica a codificação de

caracteres que será utilizada

public void setMargin(Integer margin): Específica o tamanho da margem do QR Code

public void setErrorCorrection(ErrorCorrectionLevel errorCorrectionLevel):

Específica o nível de correção de erros (L,M,Q ou H) que será utilizado para a

geração do QR Code.

Esses três métodos são responsáveis por criar um objeto do tipo Map<EncodeHintType,

Object>, necessário para a geração do QR Code por intermédio da biblioteca ZXing. A

seguir é apresentada a classe EncodeType:

public class EncodeType {

protected Map<EncodeHintType, Object> hintMap = new

EnumMap<EncodeHintType, Object>(EncodeHintType.class);

public void setCharacterSet(String characterSet){

hintMap.put(EncodeHintType.CHARACTER_SET, characterSet);

}

public void setMargin(Integer margin){

hintMap.put(EncodeHintType.MARGIN, margin);

}

public void setErrorCorrection(ErrorCorrectionLevel errorCorrectionLevel){

hintMap.put(EncodeHintType.ERROR_CORRECTION, errorCorrectionLevel);

}

}

Page 48: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

48

O método generatePallete(Integer) é responsável por definir o número de sobreposições a

serem realizadas e gerar a referente paleta de cores. O método recebe como parâmetro,

um valor do tipo inteiro e, ao ser executado, gera um objeto colorMap do tipo Map<String,

Color>, a partir de uma instância da classe ColorMap, responsável pela geração automática

do mapa de cores. Que é possível observar no trecho de código a seguir:

public void generatePallete(Integer layers) throws IOException {

this.layers = layers;

colorMap = new ColorMap().generateColorMap(layers);

}

As classes responsável pelo mapeamento das cores, possui um objeto colorMap do tipo

Map<String, Color> e atribui as cores ao mapa juntamente com suas respectivas

combinações de bits. Ao executar o método generateColorMap é retornado o mapa de

cores referente ao respectivo número de layers. O exemplo a seguir refere-se ao método

generateColorMap, responsável pela criação do mapa de cores, para a geração do Colored

QR Code.

public Map generateColorMap(Integer layers) throws IOException{

colorMap = new HashMap<>();

String[] seqVet = generateCombinations(layers);

Integer colors = seqVet.length;

Integer range = maxColors/colors;

vetColors = new Color[colors];

colorMap.put(seqVet[0], Color.WHITE);

vetColors[0] = Color.WHITE;

Color c;

for(int i=1;i<colors-1;i++){

c = new Color((i+1)*range);

colorMap.put(seqVet[i], c);

vetColors[i] = c;

}

colorMap.put(seqVet[colors-1], Color.BLACK);

vetColors[colors-1] = Color.BLACK;

return colorMap;

}

Page 49: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

49

O método generateQRCode(List<String>) recebe uma lista com os textos para a geração

dos QR Codes que serão sobrepostos e atribui a um objeto do tipo List<> da classe

LayerColoredWriter.

O método generateColoredQRCode(List<String>,Integer) deve receber como parâmetro

uma lista contendo o endereço de saída para os QR Codes padrões que serão sobrepostos

e seu tamanho em pixels. Ao ser executado o método cria uma matriz coloredMatriz, que

armazenará a representação dos bits binários dos QR Codes.

Em um primeiro momento será recuperado um endereço de saída da lista de endereços

informada e criado um arquivo myFile do tipo File. Após a criação do arquivo myFile é

instanciado um objeto qrCodeWriter do tipo QRCodeWriter. A classe QRCodeWriter

pertence a biblioteca ZXing e de acordo com a documentação da biblioteca, QRCodeWriter

é responsável por renderizar um QR Code como uma BitMatrix 2D em escala de cinza.

Em seguida é criada a BitMatrix a partir do método encode da classe QRCodeWriter que

irá receber como parâmetro um item da lista de textos de entrada, o formato

BarcodeFormat.QRCode que representa o formato de QR Code, altura, largura e o hintMap,

anteriormente criado a partir da classe EncodeType.

A seguir é criada uma BufferedImage, onde o tipo da imagem deve ser RGB e os tamanhos

de altura e largura devem ser iguais ao da BitMatrix. Segundo documentação da (Oracle,

2016) a classe BufferedImage, é um bloco de dados acessível em memória. Uma imagem

em memória, que torna possível, desenhar sobre esta imagem, aplicar efeitos ou desenha-

la em outra BufferedImage.

Após a criação da BufferedImage, é criado um objeto Graphics2D, apresentado na seção

3.3.2, para a pintura da imagem de acordo com a BitMatrix. É utilizado um laço “for” para a

verificação da BitMatrix, que adiciona a representação do bit na coloredMatriz e, quando o

valor de uma determinada posição da BitMatrix, obtida através do método get(x,y), for

verdadeira, pinta-se com o método fillRect da Graphics2D, essa determinada posição.

Em sequência a imagem é desenhada mediante o método write da classe ImageIO do Java

e, é realizada uma chamada ao método generetaColored da classe LayerColoredWriter,

responsável por desenhar o QR Code final, com um N número de camadas. A seguir é

apresentado o código de método generateColoredQRCode().

Page 50: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

50

public void generateColoredQRCode(List<String> listPath, Integer size) {

StringBuilder[][] coloredMatriz = new StringBuilder[size][size];

for(int i=0; i<size; i++)

for(int j=0; j<size; j++)

coloredMatriz[i][j]=new StringBuilder();

try {

for(Integer i=0; i<this.layers; i++){

File myFile = new File(listPath.get(i));

QRCodeWriter qrCodeWriter = new QRCodeWriter();

BitMatrix byteMatrix = qrCodeWriter.encode(inputList.get(i),

BarcodeFormat.QR_CODE, size, size, hintMap);

// Cria a imagem de acordo com a largura da matiz

BufferedImage image = new BufferedImage(size, size, BufferedImage.TYPE_INT_RGB);

image.createGraphics();

// Seta o fundo da imagem para cor branca

Graphics2D graphics = (Graphics2D) image.getGraphics();

graphics.setColor(Color.WHITE);

// Pinta toda a imagem com a cor branca a partir de 0x0

graphics.fillRect(0, 0, size, size);

// seta cor de pintura para preto

graphics.setColor(Color.BLACK);

for (int j = 0; j < size; j++) {

for (int k = 0; k < size; k++) {

if (byteMatrix.get(j, k)) {

coloredMatriz[j][k].append("1");

graphics.fillRect(j, k, 1, 1);

}else

coloredMatriz[j][k].append("0");

}

}

ImageIO.write(image, "png", myFile);

}

// Gerar QR Colorido

generateColored(coloredMatriz, size);

} catch (WriterException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

System.out.println("You have successfully created QR Code."); }

O método generateColored(), é responsável por gerar a versão final do QR Code colorido.

Esse método generateColored(), é semelhante ao generateColoredQRCode(), também

utiliza BufferedImage e Graphics2D para desenho, a diferença se encontra no laço for. Em

Page 51: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

51

generateColored(), no laço for, a cor de pintura é alterada para a cor, que contém como

chave do mapa de cores, a representação da combinação de bits dos QR Codes

sobrepostos, como é possível observar no exemplo abaixo:

for (int j = 0; j < size; j++) {

for (int k = 0; k < size; k++) {

graphics.setColor(colorMap.get(coloredMatriz[j][k].toString()));

graphics.fillRect(j, k, 1, 1); } }

Ainda na geração do Layer Colored. É possível modificar a estrutura do mapa de cores da

imagem, alterando o tamanho em pixels das cores representadas no mapa e a quantidade

de cores impressas por linha. Para isso, é necessário instanciar um objeto do tipo

ColorMapSettings e realizar as modificações através de seus métodos set. Na figura 19 é

possível um mapa com as propriedades alteradas e seu respectivo código.

Figura 19: Mapa de Cores e seu respectivo código

5.1.2 LEITURA DE UM QR CODE EM LAYER COLORED QR-CODE

Para a leitura dos QR Codes com múltiplas camadas, por intermédio da API desenvolvida

é necessário instanciar um objeto do tipo LayerColoredReader, invocar o método

readPallete, para a identificação do mapa de cores utilizado, informar o caminho de saída

para os QR Codes por meio do método setOutputPath() e, por último, invocar o método

readLayerColored(), passando o caminho do QR Code que deve ser lido. A seguir é

apresentado um exemplo de código para a leitura na API.

Page 52: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

52

public static void main(String[] args) throws IOException{

LayerColoredReader lyr = new LayerColoredReader();

lyr.readPallete("C:\\Users\\Gabriel Ussuy\\Desktop\\QR

Codes\\ColoredQRCode.png");

lyr.setOutputPath("C:\\Users\\Gabriel Ussuy\\Desktop\\QR Codes");

lyr.readLayerColored();

}

O método readPallete(), realiza uma leitura do mapa de cores, que se encontra ao lado do

QR Code, e identifica o padrão de cores utilizados para a geração do mapa de cores para

a tradução dos conjuntos de bits da imagem. Todas as cores identificadas dentro da área

do Mapa de Cores delimitada por uma borda de cor cinza, são adicionadas ao mapa

colorMap com suas respectivas combinações de bits. Em Layer Colored as cores dispostas

no mapa da imagem são ordenadas de acordo com sua combinação de bits, iniciando com

a cor branca (todos bits com valor 0) e finalizando com a cor preta (todos bits com valor 1).

O método setOutputPath, recebe como parâmetro uma String com o endereço de saída

para os QR Codes que serão geradas a partir da tradução do QR Code colorido e altera a

variável que armazena o endereço de saída da classe.

No método readLayerColored() é criada uma cópia da imagem em memória por intermédio

de uma BufferedImage e é realizada uma leitura pixel a pixel nessa BufferedImage,

identificando a cor de cada pixel.

A identificação da cor do pixel, é realizada por meio do método getRGB(x,y) da classe

BufferedImage. O método getRGB(x,y) retorna um número inteiro que representa a cor no

modelo de cores RGB, padrão (TYPE_INT_ARGB) e padrão sRGB de cores (Oracle,2016).

Em seguida a identificação da cor do pixel, é recuperada a combinação de bits no mapa de

cores de tradução e cada bit da combinação é atribuído a sua determinada BitMatrix. Após

a leitura dos pixels da imagem, obtém-se as BitMatrix dos QR Codes utilizados na

sobreposição. A seguir é apresentado o trecho de código, responsável pela identificação

da cor do pixel e a atribuição dos bits a BitMatrix.

BitMatrix[] bm = new BitMatrix[layers];

for (int i = 0; i < layers; i++) {

bm[i] = new BitMatrix(w, h);

bm[i].clear();

Page 53: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

53

}

for (int i = 0; i < h; i++) {

for (int j = 0; j < w; j++) {

c = new Color(img.getRGB(i, j));

for (int k = 0; k < layers; k++) {

if (this.colorMap.get(c.getRGB()).substring(k, k + 1).equals("1")) {

bm[k].set(i, j);

}

}

}

}

Por intermédio das BitMatrix, as imagens dos QR Codes são geradas no diretório de saída

e em seguida decodificadas. Para a decodificação das imagens é instanciado um objeto

BinaryBitmap e a seguir um objeto Result que recebe um MultiFormatReader().decode()

como valor.

As classes BinaryBitmap, Result e MultiFormatReader pertencem a biblioteca ZXing.

BinaryBitmap é a classe bitmap principal de ZXing para representação de dados de 1 bit. A

classe MultiFormatReader é a classe principal de conveniência, que tenta descodificar

todos os formatos de códigos de barras suportados por ZXing. A classe Result, encapsula

o resultado da decodificação de uma imagem (ZXing, 2015). Após o objeto Result receber

o método decode(), que recebe um BinaryBitmap como parâmetro, da classe

MultiFormatReader os dados decodificados dos QR Codes são recuperados mediante o

método getText() da classe Result e impressos no console, conforme apresentado no

trecho de código a seguir.

for (int i = 0; i < layers; i++) {

bitmap = new BinaryBitmap(new HybridBinarizer(

new BufferedImageLuminanceSource(ImageIO.read(new FileInputStream(output +

i + ".png")))));

Result decodificado = new MultiFormatReader().decode(bitmap);

System.out.println(decodificado.getText());

}

5.2. EXPERIMENTOS E ADOÇÃO REAL DE LAYER COLORED QR CODE

O QR Code gerado a partir da API Layer Colored QR Code, implementada com base no

modelo proposto foi capaz de armazenar mais dados em relação ao QR Code padrão. Por

Page 54: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

54

se tratar de uma sobreposição de vários QR Codes, a capacidade de armazenamento varia

de acordo com a versão dos QR Codes sobrepostos e a quantidade de sobreposições

realizadas. Quanto maior a quantidade de sobreposições realizadas maior será a

capacidade máxima de caracteres armazenados. Na Figura 20 são apresentados QR

Codes com 3,5 e 8 sobreposições, gerados a partir da API desenvolvida.

Figura 20: Layer Colored QR Code com 3,5 e 8 camadas

A cada sobreposição realizada o número de cores necessárias para codificação cresce

exponencialmente de acordo com a expressão 2^N, onde N é o número de sobreposições,

para a realização de 23 sobreposições, são necessárias 8.388.608 combinações de cores

(2^23). Cada cor do RGB (Red, Green e Blue) pode variar de 0 a 255, sendo possíveis

16.581.375 de combinações de cores (255x255x255), portanto o número máximo de

sobreposições possíveis, levando em consideração o padrão RGB é 23, pois para a

Page 55: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

55

sobreposição de 24 QR Codes seriam necessárias 16.777.216 combinações de cores.

Embora sejam possíveis 23 sobreposições, o dispositivo de reconhecimento do QR Code

deve ser capaz de identificar todas as combinações utilizadas, caso contrário a codificação

torna-se inútil.

O QR Code gerado a partir da API Layer Colored QR Code, manteve a característica de

resistência a dano e sujeira, apresentados no QR Code padrão, podendo restaurar de 7 a

30% da imagem danificada, de acordo com o nível de correção de erros utilizado. Na Figura

21 são apresentados exemplos de QR Codes danificados, que puderam ser restaurados na

leitura do código.

Figura 21: Layer Colored QR Codes danificados

Quando um Colored QR Code danificado é interpretado pela API, seus danos são

replicados para os demais QR Codes que serão gerados no processo de descodificação da

imagem, como é possível observar na Figura 22.

Figura 22: Danos do Colored QR Code Replicados aos QR Codes resultantes

Page 56: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

56

Apesar de interpretar QR Codes avariados em até 30%, danos a áreas críticas como os

padrões de detecção de posição, podem inviabilizar a leitura de um ou mais QR Codes que

foram sobrepostos.

Para uma análise mais detalhada do funcionamento de Layer Colored, novos testes podem

ser realizados para avaliar a combinação de QR Codes que armazenam grandes

quantidades de dados.

Novas funcionalidades e recursos podem ser adicionados a API, possibilitando a

comunicação entre sistemas mediante a codificação e descodificação de arquivos XML,

vCard, meCard, entre outros. Áreas como Realidade Aumentada e Marketing poderiam

influenciar o desenvolvimento de funcionalidades para tornar a leitura dos QR Codes mais

dinâmica e iterativa.

Em trabalhos futuros, a API proposta e desenvolvida pode ser integrada a dispositivos

móveis como, por exemplo, Android, iOS e Windows Phone.

Page 57: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

57

6. CONCLUSÃO

6.1. CONSIDERAÇÕES FINAIS

Por meio da API desenvolvida, torna-se possível armazenar uma maior quantidade de

dados em um QR Code a partir da sobreposição de vários QR Codes como incialmente fora

proposto neste trabalho.

Apesar de a API proposta ter sido experimentada e aplicada apenas em um cenário fictício,

espera-se aplicá-la em contextos e ambiente reais. Assim, os resultados obtidos podem

contribuir com melhorias ao conceito inicialmente desenvolvido neste trabalho.

A utilização de QR Codes popularizou-se em virtude de sua velocidade, precisão e

características funcionais de leitura. Em consequência a essa popularização o mercado

passou a exigir códigos capazes de armazenar mais informações em um menor espaço de

impressão (GRILLO et al.,2010).

De acordo com VIEIRA et al (2012) a manipulação e processamento de grandes

quantidades de dados no contexto de Big Data é um dos grandes desafios na área de

Computação.

Com o aumento exponencial dos dados no contexto de Big Data, códigos de barras com

maiores capacidades de armazenamento podem vir a ser necessários. O projeto

desenvolvido contribui para o desenvolvimento desses códigos de barras apresentando

uma abordagem de sobreposição de QR Codes para o aumento da capacidade de

armazenamento.

Os QR Codes Coloridos gerados a partir da API foram capazes de armazenar mais dados

e mantiveram as características de resistência a dano e sujeira, apresentados no tradicional

QR Code. Mesmo com ruídos (defeitos) no QR Code colorido, a decodificação foi possível,

resultando nos N QR Codes que foram sobrepostos.

Desta forma, a implementação da API Layer Colored QR Code com base na abordagem

proposta, foi condizente com os objetivos propostos, permitindo a geração e leitura de QR

Codes coloridos, aumentando assim a capacidade de armazenamento.

Page 58: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

58

6.2. TRABALHOS FUTUROS

A partir deste trabalho, pode-se desenvolver diversas implementações para a geração de

QR Codes multicoloridos, adicionando funcionalidades e aperfeiçoando o projeto ou

aplicando a abordagem de sobreposição em outras linguagens de programação.

Em trabalhos futuros, a API desenvolvida pode ser aperfeiçoada, modificando a arquitetura

de seus mecanismos de leitura para suporte a dispositivos móveis e melhor aproveitamento

de processamento.

Por fim, é possível dar continuidade a pesquisa, com referência neste trabalho,

possibilitando o desenvolvimento de outras APIs que auxiliarão na geração de QR Codes

com maior capacidade para armazenamento de dados.

Além disso, trabalhos futuros podem portar a API desenvolvida para dispositivos móveis,

possibilitando seu uso nos sistemas Android, iOS da Apple Windows Phone da Microsoft.

Page 59: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

59

Referências

ALBUQUERQUE, Márcio Pontes; ALBUQUERQUE, Marcelo Portes. Processamento de

Imagens: Métodos e análises. Centro Brasileiro de Pesquisas Físicas - CBF/MCT.

Disponível em < http://www.cbpf.br/cat/pdsi/pdf/ProcessamentoImagens.PDF>. Acesso em

10/02/2016.

BURGER, Wilhelm; BURGE, Mark J. Principles of Digital Image Processing. 1. ed.

Londres: Springer, 2009.

CAELUM. Java e Orientação a Objetos. Disponível em <

https://www.caelum.com.br/apostila-java-orientacao-objetos/>. Acesso em 08/02/2016

DEITEL, Harley M; DEITEL, Paul J. JAVA: Como Programar. 8. ed. Tradução de Edson

Furmankiewicz. São Paulo: Pearson Education Brasil, 2010.

DENSO ADC. QR Code Essentials. 2011. 8p. Disponível em < http://denso-

adc.com/download>. Acesso em 20/10/2015.

GONZALES, Rafael; WOODS, Richard. Digital Image Processing. 3. ed. New Jersey:

Pearson Pretice Hall, 2008.

GRILLO, Antonio; LENTINI, Alessandro; QUERINI, Marco; ITALIANO, Giuseppe F. High

Capacity Colored Two Dimensional Codes. Proceedings of the International

Multiconference on Computer Science and Information Technology. 2010. 709p.

GULLAKSEN, Ken. QRGen: a simple QRCode generation api for java built on top

ZXING. Disponível em < https://github.com/kenglxn/QRGen>. Acesso em19/03/2016

IBM. What is Big Data?. Disponível em < http://www-

01.ibm.com/software/data/bigdata/what-is-big-data.html>. Acesso em 20/10/2015.

Page 60: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

60

ISO. Information technology – Automatic identification and data capture techniques

– Bar code symbology – QR Code. ISO/IEC 18004. 2000.

ISO. Information technology – Automatic identification and data capture techniques

– QR Code barcode symbology specification. ISO/IEC 18004. 2015.

JÚNIOR, Iális Cavalcante de Paula. Técnicas de Processamento Digital de Imagens

com Java. 2009. Disponível em

<https://www.ppgia.pucpr.br/~facon/ComputerVisionBooks/2009ProcessamentoImagensC

omJava.pdf>. Acesso em 14/02/2015

LANEY Doug. 3D Data Management: Controlling Data Volume, Velocity, and Variety.

Meta Group. 2001. 1p.

LINDHOLM, Tim; YELLIN, Frank. Java Virtual Machine Specification. 2011. Disponível

em < http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-1.html>. Acesso em

08/02/2016.

MICROSOFT. About High Capacity Color Barcode Technology. 2016. Disponível em <

http://research.microsoft.com/en-us/projects/hccb/about.aspx> Acesso em 06/03/2016.

MURRAY, James D; Vanryper, William. Encyclopedia of Graphics File Formats. 2. ed.

O’Reilly Media. 1996. ISBN: 978-1-56592-161-0 | ISBN 10: 1-56592-161-5.

ORACLE. The History of Java Tecnology. 2016. Disponível em

<http://www.oracle.com/technetwork/java/javase/overview/javahistory-index-198355.html>.

Acesso em 18/01/2016.

ORACLE. The Java™ Tutorials. 2015. Disponível em <

https://docs.oracle.com/javase/tutorial/2d/overview/index.html >. Acesso em 28/02/2016.

OWEN, Sean. Barcode Contents. 2014. Disponível em

<https://github.com/zxing/zxing/wiki/Barcode-Contents>. Acesso em 20/02/2015.

Page 61: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

61

OWEN, Sean. Official ZXing ("Zebra Crossing"). 2016. Disponível em <

https://github.com/zxing/zxing >. Acesso em 20/02/2015.

QRCODE. History of QR Code. Disponível em < http://www.qrcode.com/en/history/>.

Acesso em 20/10/2015.2015a

QRCODE. How Small Can a QR Code be printed. Disponível em <

http://www.qrcode.com/en/faq.html>. Acesso em 07/02/2016.2015c

QRCODE. Point for setting the module size. Disponível em <

http://www.qrcode.com/en/howto/cell.html>. Acesso em 07/02/2016.2015d

QRCODE. What is a QR Code. Disponível em < http://www.qrcode.com/en/about/>.

Acesso em 13/01/2016.2015b

ROBBINS, Jennifer Niederst. Learning Web Design: A Beginners Guide to HTML, CSS,

Graphics, and Beyond. 3. ed. Clam 101, 2016. elSBN 9781490289861. R-2 6519.

ROCHA, Patrick Francis Gomes; FARTO, Guilherme de Cleva. Abordagem Teórica e

aplicabilidade de detecção facial em aplicativos móveis com Opencv e Google

Android. Trabalho de Conclusão de Curso Assis: Fundação Educacional do Município de

Assis – Fema, 2013. 20p.

RSB. ImageJ: Documentation. Disponível em < http://rsbweb.nih.gov/ij/docs/index.html>.

Acesso em 14/02/2016

SANTOS, Rafael. Java Advanced Imaging API: A Tutorial. Revista de Informática Teórica

e Aplicada, v.11, n.1,2004. P.93-124.

SOON, Tan Jin. There are several types of 2d codes in use by the industry. 2008.

Disponível em <https://foxdesignsstudio.com/uploads/pdf/Three_QR_Code.pdf>. Acesso

em 19/03/2016.

Page 62: ADOÇÃO DE QR CODE COMO PROPOSTA PARA … · gabriel yoshiharu rodrigues ussuy adoÇÃo de qr code como proposta para representaÇÃo visual e interaÇÃo em grandes volumes de dados

62

VIEIRA, Marcos Rodrigues; FIGUEIREDO Josiel Maimone; LIBERATTI, Gustavo;

VIEBRANTZ, Alvaro Fellipe Mendes. Bancos de Dados NoSQL: Conceitos,

Ferramentas, Linguagens e Estudos de Casos no Contexto de Big Data. Minicurso

apresentado no Simpósio Brasileiro de Bancos de Dados. 2012. 2p.

VIRALPATEL. Java virtual Machine, An inside story. 2008. Disponível em <

http://viralpatel.net/blogs/java-virtual-machine-an-inside-story/>. Acesso em 08/02/2016.