Por dentro dos QR codes
Os QR codes são lidos
através de um sensor bidimensional e analizados digitalmente por um
processador. Esse processador localiza os três quadrados distintos
nos cantos da imagem (noroeste, nordeste, sudoeste), utilizando um quadrado menor, ou vários, próximo ao quarto canto (sudeste), para normalizar o
tamanho da imagem, a orientação e o ângulo de visão. Os pequenos
pontos negros da área do código são convertidos em números
binários e validados por um algoritmo de correção de erros.
A capacidade de armazenamento de dados de um QR code varia de acordo com o tipo de dado armazenado (chamado de modo), com a versão, que indica as dimensões dos símbolos e com o nível de correção de erros. A capacidade máxima de armazenamento ocorre para 40L símbolos, isto é, versão 40 e nível de correção de erros L, conforme a tabela 1.
A capacidade de armazenamento de dados de um QR code varia de acordo com o tipo de dado armazenado (chamado de modo), com a versão, que indica as dimensões dos símbolos e com o nível de correção de erros. A capacidade máxima de armazenamento ocorre para 40L símbolos, isto é, versão 40 e nível de correção de erros L, conforme a tabela 1.
Modo
|
Máx caracteres
|
bits/caractere
|
Caracteres possíveis
|
Números | 7089 | 3,3333... | Números de 0 a 9 |
Alfanumérico | 4296 | 5,5 | Números de 0 a 9, caracteres maiúsculos de A a Z, espaço, $, %, *, +, -, ., /, : |
Binário | 2953 | 8 | ISO 8859-1 |
Kanji / kana | 1817 | 13 | Shift JIS X 0208 |
Tabela 1 - Modos do QR code
Existem vários tipos e versões de QR codes. Um QR code pode ser criptografado para adicionar proteção.
Um sistema de correção de erros que utiliza o algoritmo de Reed-Solomon pode recuperar informação de uma etiqueta que esteja danificada, de acordo com os níveis de correção utilizados. Quanto maior o nível de correção de erros menor a capacidade de armazenamento da etiqueta.
Para o nível L (considerado baixo) 7% das palavras (equivalente a 8 bits), podem ser recuperadas, para o nível M (médio) o percentual sobe para 15 %, para o nível Q (quartil) alcança-se 25 % e para o nível H (alto) o máximo que se atinge é 30 % de recuperação da informação perdida.
Em QR codes que possuem símbolos grandes a mensagem é quebrada em vários blocos de código Reed-Solomon. Esse tamanho é escolhido para possibilitar a correção de até 15 erros em cada bloco. Isso limita a complexidade do algoritmo de decodificação. Os códigos então são entrelaçados para evitar que um erro localizado possa superar a capacidade de armazenamento de um bloco simples.
Graças à correção de erros é possível criar-se QR codes artísticos e mais atrativos aos nossos olhos.
A formatação de um registro possui duas partes: o nível de correção de erros e a máscara padrão utilizada para o símbolo. A máscara é usada para quebrar os padrões em dados, isso é necessário em áreas que podem confundir um scanner, como longas áreas brancas ou características falsas, que podem ser interpretadas como marcas de localização. Os padrões de máscara são definidos numa grade que é repetida para cobrir todo o símbolo. Módulos correspondentes a áreas escuras de uma máscara são invertidos. O formato da informação é protegido contra erros através de um código BCH e duas cópias completas são incluídas em cada símbolo do QR code.
Os dados da mensagem são dispostos da direita para a esquerda num movimento de zig-zag, como se vê na figura 1. Em símbolos grandes isso é complicado por causa da presença de padrões de alinhamento e o uso de múltiplos blocos de correção de erros entrelaçados.
Localização da mensagen no QR code, veja as setas laranjadas
Significado do formato da informação
Blocos entrelaçados
Figura 1 - Estrutura do QR code
Um indicador de quatro bits, tabela 2, é usado para selecionar o modo e prover outras informações. A codificação dos modos pode ser fixada conforme a necessidade do símbolo do QR code.
Indicador | Significado |
0001 | Codificação numérica 10 bits para cada 3 dígitos |
0010 | Codificação alfanumérica 11 bits para cada 2 caracteres |
0100 | Codificação binária 8 bits por caractere |
1000 | Codificação Kanji 13 bits por caractere |
0011 | Inserção estruturada, usada para separar uma mensagem entre múltiplos símbos do QR code |
0111 | Interpretação do canal extendido (seleção de conj. caracteres ou codificação) |
0101 | FNC1 na primeira posição |
1001
|
FNC1 na segunda posição
|
0000 | Fim da mensagem |
Tabela 2 - Modos de codificação
Depois de cada indicador que seleciona um modo de codificação está o tamanho do campo que diz quantos caracteres estão codificados neste modo. O número de bits no tamanho do campo depende da versão do símbolo e da codificação, tabela 3.
Codificação | Versão 1-9 | Versão 10-26 | Versão 27-40 |
Numérica | 10 | 12 | 14 |
Alfanumérica | 9 | 11 | 13 |
Byte | 8 | 16 | 16 |
Kanji | 8 | 10 | 12 |
Tabela 3 - Bits por tamanho de campo
O modo de codificação alfanumérica pode armazenar mensagens de forma mais compacta que o modo binário, mas não aceita caracteres minúsculos e apenas alguns sinais de pontuação, suficientes para a maioria dos endereços de sites da web. Dois caracteres podem ser codificados em 11 bits através da fórmula:
V = 45 x C1 + C2
Cód | Caracter | Cód | Caracter | Cód | Caracter | Cód | Caracter | Cód | Caracter |
0 | 0 | 9 | 9 | 18 | I | 27 |
R |
36 |
SP |
1 | 1 | 10 | A | 19 | J | 28 |
S |
37 |
$ |
2 | 2 | 11 | B | 20 | K | 29 |
T |
38 |
% |
3 | 3 | 12 | C | 21 | L | 30 |
U |
39 |
* |
4 | 4 | 13 | D | 22 | M | 31 |
V |
40 |
+ |
5 | 5 | 14 | E | 23 | N | 32 |
W |
41 |
- |
6 | 6 | 15 | F | 24 | O | 33 |
X |
42 |
. |
7 | 7 | 16 | G | 25 | P | 34 |
Y |
43 |
/ |
8 | 8 | 17 | H | 26 | Q | 35 |
Z |
44 |
: |
Tabela 4 - Código de caracteres no QR Code
0 comentários:
Postar um comentário