documentación proyecto qr code

Upload: jose-adrian-lligona-bosch

Post on 11-Jul-2015

701 views

Category:

Documents


4 download

TRANSCRIPT

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA INGENIERA INFORMTICA

GENERADOR E INTERPRETE QR CODE

Realizado por: Gins Miguel Fernndez Ordez

Dirigido por: Jos Ramn Portillo Fernndez

Departamento de MATEMTICA APLICADA I

Sevilla, Diciembre de 2009

0

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

ndice0. Qu es QR Code?............................................................................ 5 1. Definicin de objetivos.. 9 2. Resumen del estndar QR Code.. 122.1 Trminos y definiciones del estndar. 12 2.2 Caractersticas principales.15 2.3 Estructura del smbolo.. 16 2.4 Codificacin de un QR Code 21 2.4.1 Anlisis de los datos.. 22 2.4.2 Codificacin de los datos. 23 2.4.2.1 Conversin de bits de datos a codewords 25 2.4.3 Correccin de errores 29 2.4.4 Construir la secuencia final de Codewords.. 37 2.4.5 Colocacin de Codewords en la matriz 37 2.4.6 Enmascarar los datos.. 39 2.4.7 Informacin de formato.. 41 2.4.8 Informacin de versin. 42

2.5 Decodificacin de un QR Code. 43

3. Anlisis de antecedentes y aportacin realizada.. 48 4. Anlisis de requisitos 51

1

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

5. Diseo de la aplicacin585.1 Diseo de la interfaz grfica..59 5.2 Diseo de la Librera 63

6. Implementacin de la aplicacin. 656.1 Paquetes. 65 6.2 Listado de clases....66

6.2.1 Clase QRCodeEncoderDecoderGUI.686.2.2 Clase QRCodeDecoder 74

6.2.3 Clase QRCodeEncoder 79 6.2.4 Interface QRCodeImage 86 6.2.5 Clase QRCodeConstantes 87 6.2.6 Clase QRCodeSymbol 89 6.2.7 Clase BCH15_5. 96 6.2.8 Clase EncodingFailedException..100 6.2.9 Clase DecodingFailedException..102 6.2.10 Clase Axis103 6.2.11 Clase Line.. 105 6.2.12 Clase Point 109 6.2.13 Clase SamplingGrid.. 113 6.2.14 Clase AlignmentPattern.. 117 6.2.15 Clase FinderPattern 120 6.2.16 Clase LogicalSeed. 126 6.2.17 Clase QRCodeDataBlockReader.128 6.2.18 Clase QRCodeImageReader.. 1326.2.19 Interface Color.. 138

6.2 Interface DebugCanvas.1416.2 Clase ConsoleCanvas 142 6.2 Clase ContentConverter144 6.2 Clase QRCodeUtility 146

2

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

7. Instalacin previa150 8. Manual de usuario... 153 9. Pruebas.. 160 10. Comparacin con otras alternativas 168 11. Posibles mejoras ..179 12. Conclusiones... 183 13. Costes de desarrollo y Anlisis temporal186 13. Bibliografa. 190

3

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

4

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

0. Qu es QR Code?QR Code o Quick Response Code (Cdigo de Respuesta Rpida), es un estndar de cdigo de barras bidimensional. Fue creado en Japn en el ao 1994 por la empresa Denso Wave. Esta empresa japonesa distribuye las especificaciones del mismo de manera libre y aunque posee una patente sobre el QR Code, no ejerce los derechos sobre la misma. Existen dos estndares de los QR Code, el japons JIS X 0510, creado por la JIS y distribuido en enero de 1999; y el correspondiente estndar de la ISO, ISO/IEC 18004 aprobado en junio de 2000 y revisado en 2006 (ISO/IEC 18004:2006). El xito probado del QR Code se debe precisamente a su estndar abierto y a que su decodificacin puede realizarse con cualquier telfono mvil con cmara sin ser importante la calidad de sta. En Japn est muy extendido su uso y es raro que los mviles no vengan con software incorporado para decodificarlos.

Ventajas del QR Code: El QR Code es capaz de contener informacin en ambas direcciones (verticalmente y horizontalmente) a diferencia de los tradicionales cdigos de barra (de una dimensin), que tan slo son capaces de almacenar informacin en una direccin. Precisamente por este motivo, la capacidad de almacenamiento es mayor en el caso del QR Code (as es posible almacenar 7089 caracteres numricos o 2953 bytes). La unidad de informacin de un cdigo unidimensional es la barra, en uno bidimensional es el mdulo (cuadradito).

5

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

Adems aporta otras caractersticas muy interesantes: Los QR Codes tiene la capacidad de corregir errores. Se pueden restaurar los datos si parte del cdigo est daado o manchado. Existen varios niveles de correccin de errores, pudiendo llegar a restaurar hasta el 30% de la informacin perdida debido a la suciedad, deterioro del cdigo, etc. El sistema de correccin de errores se basa en Reed Solomon.

-

Los QR Codes pueden ser ledo a alta velocidad (Quick Response) desde todas las orientaciones (en 360). Esto es debido a que posee unos patrones (patrones localizadores) que permiten detectar la posicin del cdigo. As, aunque es necesario mantener una lnea de visin directa entre el cdigo y el lector la posicin de la etiqueta no es crtica, a diferencia de los cdigos de barras. Si la imagen no esta recta se detecta su orientacin y se rota.

El uso del QR Code se ha popularizado (sobre todo en pases como Japn) gracias a la combinacin de tres factores: La publicacin de las especificaciones del cdigo. Esto ha permitido la proliferacin de lectores de QR Code de muy bajo coste o incluso gratuitos. Adems, se han desarrollado aplicaciones de software que permiten descifrar el QR Code. Muchas de ellas son gratuitas.

-

La integracin con dispositivos mviles (telfonos y PDAs). Esto ha permitido que la mayora de los telfonos puedan leer los QR Code, puesto que slo necesitan tener una cmara de fotos para la captura de los cdigos y una aplicacin (que en muchos casos es gratuita) para descifrar la informacin contenida en los mismos. Muchos de los principales fabricantes de telefona mvil incorporar de serie en algunos de sus dispositivos aplicaciones para leer QR Codes.

6

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

-

Adems QR Code soporta los caracteres del alfabeto japons Kanji y viene preparado para poder soportar cualquier otro lenguaje.

El factor comn predominante en la gran parte de las aplicaciones existentes es la utilizacin de los QR Codes como almacn de informacin, que al ser decodificada mediante un dispositivo lector (que puede ser el propio telfono mvil), redirige a una pgina web que el usuario puede consultar a travs de su dispositivo mvil.

Existen otros cdigos de informacin bidimensionales, como el DataMatrix tambin estandarizado. La principal diferencia de QR Code de respecto de DataMatrix y dems es la velocidad a la que se decodifica, de ah el nombre de Quick Response. Los QR Code poseen un patrn de localizacin que se coloca en la esquina superior izquierda, en la superior derecha y en la inferior izquierda. Esto ayuda a la deteccin de la orientacin del QR Code y sus lmites. No es necesario que la imagen tomada sea de gran calidad. La desventaja de esto es que se pierde espacio para almacenar datos. Por estas razones, DataMatrix es ms utilizado para uso industrial y QR Code para uso cotidiano.

7

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

DataMatrix

QR Code con los patrones localizadores resaltados

8

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

1. Definicin de objetivosLos objetivos de este proyecto son tres principalmente:

1) Comprender y dar una explicacin de la especificacin del estndar QR Code 2006, su algoritmo de codificacin y decodificacin, as como las partes que componen los smbolos, sus diferentes versiones y caractersticas.

2) Desarrollar una librera en Java que sirva tanto para generar smbolos QR Code compatibles con el estndar QR Code 2006, como para interpretar un smbolo QR Code 2006 compatible y ver su mensaje. La librera tambin debe implementar algunos algoritmos de pretratamiento de imgenes para mejorar la probabilidad de xito en la interpretacin. Adems la complejidad temporal de la generacin y sobre todo de la interpretacin debe ser ptima ya que debe poder ejecutarse en dispositivos mviles y PDAs.

3) Desarrollar una aplicacin Windows en lenguaje Java, que utilizando la librera anterior sirva para generar e interpretar smbolos QR Code, y que permita especificar y usar las caractersticas principales del estndar; como son las diferentes versiones de smbolos, formatos de datos, niveles de correccin de errores, etc.

Necesitamos informacin abundante y contrastada sobre el funcionamiento del estndar QR Code 2006 para poder estudiar y comprender el funcionamiento de los QR Code, su codificacin y decodificacin, y sus opciones. La compaa japonesa Denso Wave, es la creadora de los QR Code y tras su creacin en 1994 decidi distribuir libremente su especificacin y regalarlo al mundo. Ms tarde, en el ao 2000, la ISO (International Organization for Standardization), junto con la IEC (International Electrotechnical Commission), crean un documento oficial de estndar en ingls. Este documento explica a fondo cmo funcionan los QR Codes y sus caractersticas y en los dos aos siguientes sacan varias revisiones de este 9

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

documento; siendo la ltima versin la ISO/IEC 18004 2006 con ttulo: Information technology Automatic identification and data capture techniques QR Code 2006 bar code symbology specification. Por desgracia este documento no es libre; posee copyright y se vende en las webs de ambas organizaciones. Un ao antes en el 1999, la JIS (Japanese Industrial Standards), cre otro documento oficial, el JIS X0510 con el mismo estndar QR Code, ambos estndares son compatibles. El JIS X0510 est escrito en japons pero es libre y su ltima versin es del 2004.

Como necesitamos desarrollar una librera de funciones capaz de emular el estndar y que pueda ser utilizada por cualquier programa, necesitamos un lenguaje de alto nivel moderno orientado a objetos, Java es una buena opcin. Teniendo en cuenta el lenguaje de alto nivel que utilizamos, se tiene la posibilidad de la fcil reutilizacin de cdigo para futuras mejoras, lo cual ayuda a un posterior desarrollo o estudio de la aplicacin a disear. Necesitamos que la librera a crear sea fcilmente portable y usable, el lenguaje Java facilita la portabilidad de los programas implementados con l, gracias a su tecnologa basada en maquinas virtuales.

La ejecucin de los procesos de codificacin y de decodificacin debe ser rpida, los algoritmos deben tener una complejidad temporal lo ms baja posible. Hay que centrarse en comprobar la complejidad de los cuellos de botella. Aunque tambin hay que tener en cuenta que para el caso de los QR Codes, el tamao de los datos tiene un lmite, al menos a la hora de codificar. La versin de smbolo QR Code con mayor capacidad de datos puede almacenar hasta 7089 caracteres numricos (2953 en ASCII). Para la decodificacin el tamao de los datos depender del nmero de pixeles de la imagen que contiene el QR Code a decodificar.

La aplicacin grfica a crear ser de tipo ventana para aumentar su usabilidad. Debe ser capaz de mostrar y generar imgenes y fotos, ya que los cdigos de barra QR Code son imgenes normalmente obtenidas con cmaras. El programa contendr controles para poder especificar las diferentes opciones que nos ofrece el estndar para crear e interpretar un smbolo QR Code 2006.

10

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

11

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

2. Resumen del estndar QR Code2.1 Trminos y definiciones del estndar

Comenzaremos dando una definicin de los principales trminos del estndar QR Code:

Bit de relleno: Se usa para rellenar el codeword final despus del terminador en una cadena de bits de datos.

Bits restantes: Usado para llenar posiciones de la regin de codificacin donde el espacio no se divide exactamente en 8 bits.

Codeword: Conjunto de 8 mdulos que puede tener diferentes formas dependiendo de su localizacin en el smbolo y que sirve para almacenar informacin codificada de los datos o de la correccin de errores.

Codeword restante: Codeword de relleno para llenar posiciones sin codeword asignado para completar la capacidad total del smbolo. Va detrs de los codewords de correccin de error.

Contador de caracteres: Secuencia de bits que define el numero de caracteres que contiene una cadena de datos en un modo.

12

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

Enmascarado de los datos: Proceso en el cual, a los mdulos de la regin de codificacin, se les realiza una operacin XOR con un patrn mscara. Esto sirve para aumentar la diferenciacin entre mdulos blancos y negros y as mejorar la decodificacin.

Indicador de modo: Identificador de 4 bits que indica en qu modo est codificada la secuencia de bits que le sigue.

Informacin de formato: Patrn codificado que contiene informacin sobre el grado de correccin de errores con el que se han codificado los datos de la regin de codificacin y el tipo de mscara que se les ha aplicado.

Informacin de versin: Patrn codificado en los smbolos de versin 7 o superior que contiene informacin que indica la versin del smbolo.

Modo: Forma en que se representa un conjunto de datos como cadena de bits. La cadena de bits puede representar caracteres alfanumricos, numricos, bytes, Kanji o cualquier otro que se defina.

Mdulo: Cuadrito blanco o negro que en conjunto componen el smbolo QR Code.

Patrn de alineamiento: Patrn de funcin que permite resincronizar las coordenadas de mapeo de la imagen QR Code ante posibles distorsiones moderadas de sta.

13

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

Patrn de funcin: Partes del smbolo que no contiene los datos codificados, sino informacin necesaria para la decodificacin de stos. Los patrones de funcin son: patrn de localizacin, separador, patrn de alineamiento y patrn temporizador.

Patrn localizador: Patrn de funcin que existe por triplicado en el smbolo, situado en las esquinas superiores y la inferior izquierda. Sirven para calcular la orientacin rotacional del smbolo.

Patrn temporizador: Secuencia de alternada de mdulos blancos y negros que ayuda a calcular las coordenadas de los mdulos del smbolo.

Regin de codificacin: Regin del smbolo no ocupada por patrones de funcin y s por codewords de datos y de correccin de errores, y tambin por la informacin de formato y versin.

Smbolo: Es toda la imagen QR Code, formada por mdulos, que conforman los datos en la regin de codificacin, y los patrones de funcin.

Separador: Patrn de funcin formado por mdulos blancos, cuyo ancho es de un mdulo y que separa los patrones localizadores del resto del smbolo.

Terminador: Secuencia de bits a 0 cuyo nmero vara segn el smbolo y que sirve para sealar el fin de la cadena de bits que representa los datos.

14

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

Versin: Tamao del smbolo que puede ir desde la versin 1 con 21x21 mdulos hasta la 40 con 177x177 mdulos. Dependiendo de la versin, el smbolo puede tener o no algunos de los elementos descritos y en diferente nmero; alineamiento y la informacin de versin. especialmente patrones de

Zona de silencio: Zona que rodea al smbolo que debe estar en blanco (negro en caso de reflectancia inversa) para delimitar correctamente sus bordes, debe tener una anchura mnima de 4 mdulos.

2.2 Caractersticas principales

Los smbolos QR Code tienen 40 versiones y 4 grados de correccin de error (L, M, Q, H). Un smbolo 40-H sera un smbolo de versin 40 y correccin de errores H. Cada versin tiene un tamao, siendo la 1 de 21x21 mdulos y la 40 de 177x177 mdulos, creciendo en 4 mdulos el tamao de cada versin (la versin 2 sera de 25x25 mdulos).

Hay 4 modos de codificar los caracteres de datos:

1) Datos numricos (0-9) 2) Datos alfanumricos (0-9, A-Z y otros 9 caracteres: espacio, $, %, *, +, -, ., /, :) 3) Bytes (por defecto ISO/IEC 8859-1) 4) Caracteres Kanji, compactados en 13 bits (caracteres de la escritura japonesa)

Para un smbolo 40-L el nmero mximo de datos que puede contener es: Datos numricos: 7089 caracteres Datos alfanumricos: 4296 caracteres Bytes: 2953 caracteres Caracteres Kanji: 1817 caracteres

15

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

El sistema correccin de errores se basa en Reed Solomon y tiene 4 niveles:

1) L (low) bajo, puede corregir hasta el 7% de los codewords del smbolo. 2) M (mdium) medio, puede corregir hasta el 15% de los codewords del smbolo. 3) Q (quality) calidad, puede corregir hasta el 25% de los codewords del smbolo. 4) H (high) alto, puede corregir hasta el 30% de los codewords del smbolo.

Los mdulos del smbolo QR Code pueden ser blancos o negros y representan respectivamente el 0 y el 1 binario. Sin embargo existe un modo de reflectancia inversa donde es al revs. QR Code puede soportar el que la imagen con el smbolo est rotada o transpuesta lateralmente (mirror image), tiene independencia de orientacin.

Ejemplos de QR Codes: a) orientacin y reflectancia normal b) orientacin normal y reflectancia invertida c) orientacin transpuesta y reflectancia normal d) orientacin transpuesta y reflectancia invertida

2.3 Estructura del smbolo

Los QR Code 2005 estn formados por mdulos colocados en una estructura cuadrada. sta estructura contiene la regin de codificacin y los patrones de funcin, que son: localizador, separador, temporizador y de alineamiento. El smbolo debe estar rodeado en sus cuatro lados por una zona de silencio.

16

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

Estructura de un smbolo QR Code versin 7

Hay 40 versiones cada una con un nmero de mdulos, la versin 1 tiene 21x21 mdulos y la 40 177x177; el nmero de mdulos se incrementa de 4 en 4 de una versin a otra. Las versiones tambin se diferencian en el nmero de codewords que contienen y el de patrones de alineamiento, algunas tienen bits de relleno pero otras no. las versiones anteriores a la 7 no tienen informacin de versin, la versin 1 no tiene ningn patrn de alineamiento. Todas tienen tres patrones localizadores, dos patrones temporizadores, tres separadores y la informacin de formato por duplicado.

17

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

18

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

El patrn localizador se sita en las esquinas superior izquierda, superior derecha e inferior izquierda del smbolo QR Code. Est formado por un cuadrado relleno de 3x3 mdulos negros, rodeado de un cuadrado de 5x5 mdulos blancos que a su vez est rodeado por otro cuadrado de 7x7 mdulos negros. Ser muy difcil encontrar un patrn de mdulos similar a este en otras partes del smbolo. Tener xito en encontrar los 3 patrones localizadores de un smbolo supone poder calcular la orientacin en el campo de visin de ste.

Patrn localizador

Los separadores estn formados por mdulos blancos y rodean los bordes de los patrones localizadores que dan a la parte interior del smbolo.

Los patrones temporizador son dos, uno vertical y otro horizontal. Estn formados por una lnea o columna de mdulos blancos y negros alternados, comenzando y terminando en un mdulo negro. Posibilitan que la versin del smbolo y las coordenadas de los mdulos puedan ser determinadas. El temporizador horizontal cruza la fila nmero 6 entre los separadores superiores y el vertical igual pero cruzando la columna 6.

Los patrones de alineamiento estn formados por un mdulo negro, rodeado de un cuadrado de 3x3 mdulos blancos que a su vez est rodeado por otro cuadrado de 5x5 mdulos negros. Su nmero en el smbolo vara segn la versin.

19

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

La regin de codificacin contiene los codewords que representan los datos, tambin contiene codewords de correccin de errores, la informacin de formato y la informacin de versin en la mayora de casos.

La zona de silencio debe tener un grosor de 4 mdulos rodeando los cuatro bordes del smbolo.

20

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

Capacidad de las diferentes versiones de QR Code

Versin

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

mero de mdulos por lado 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97 101 105 109 113 117 121 125 129 133 137 141 145 149 153 157 161 165 169 173 177

Mdulos de patrones de funcin 202 235 243 251 259 267 390 398 406 414 422 430 438 611 619 627 635 643 651 659 882 890 898 906 914 922 930 1203 1211 1219 1227 1235 1243 1251 1574 1582 1590 1598 1606 1614

Mdulos de informacin de formato y versin 31 31 31 31 31 31 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67

Mdulos de datos

Codewords de datos

Bits restantes

208 359 567 807 1079 1383 1568 1936 2336 2768 3232 3728 4256 4651 5243 5867 6523 7211 7931 8683 9252 10068 10916 11796 12708 13652 14628 15371 16411 17483 18587 19723 20891 22091 23008 24272 25568 26896 28256 29648

26 44 70 100 134 172 196 242 292 346 404 466 532 581 655 733 815 901 991 1085 1156 1258 1364 1474 1588 1706 1828 1921 2051 2185 2323 2465 2611 2761 2876 3034 3196 3362 3532 3706

0 7 7 7 7 7 0 0 0 0 0 0 0 3 3 3 3 3 3 3 4 4 4 4 4 4 4 3 3 3 3 3 3 3 0 0 0 0 0 0

21

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

2.4 Codificacin de un QR Code

El procedimiento de codificacin se divide en 7 pasos:

1. Anlisis de los datos: Se analizan los datos a codificar identificando de qu tipo son sus caracteres, para calcular en que modos codificarlos para ahorrar el mximo espacio. El estndar soporta varios modos de codificacin, pudiendo usarse a la vez diferentes modos para cada subconjunto de caracteres. Si no se especific que versin usar, se debera usar la menor necesaria.

2. Codificacin de datos: Se convierten los datos en un flujo de bits acorde al modo usado. Se inserta un indicador de modo delante de cada subconjunto de datos para saber en qu modo estn codificados. Tambin se inserta un terminador y se dividen los datos en codewords de 8bit.

3. Codificacin de correccin de errores Se ejecuta el algoritmo de correccin de error, para generar los codewords de correccin de errores. stos se aaden al final de los codewords de datos.

4. Estructurar mensaje Entrelazar los codewords de datos y de error, y aadir bits restantes si es necesario.

5. Colocacin de mdulos Se colocan lo mdulos de los codewords en la matriz QR Code junto a los patrones de funcin para formar el smbolo QR Code.

6. Enmascarar datos

22

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

Aplicar los patrones de enmascarado a la regin de codificacin. Evaluar los resultados y seleccionar el patrn que optimice el equilibrio de mdulos blancos y negros y minimice la aparicin de patrones indeseables.

7. Informacin de versin y formato Generar la informacin de formato y la de versin si es necesario, y colocarla en el smbolo para completarlo.

2.4.1 Anlisis de los datos

Los datos a codificar pueden tener diferentes formatos e incluso dividirse en conjuntos de diferentes tipos. Hay que analizar los datos para ver en que formatos estn y encontrar el modo ptimo en el cual codificarlos. Es posible cambiar de modo para ahorrar espacio. Es ms eficiente codificar los datos en el modo que requiere menos bits por carcter pero teniendo en cuenta el espacio de la cabecera. Cada cabecera se compone de indicador de modo y de contador de caracteres e ir delante de cada subconjunto de datos. Un conjunto pequeo de caracteres no merecer la pena codificarlo a parte en un modo diferente. Adems como las capacidades de los smbolos QR Code, aumentan de manera discreta en cada versin, no siempre es necesaria alcanzar la mxima eficiencia.Modo numrico:

Codifica caracteres numricos del conjunto [0,9]. Normalmente, 3 caracteres numricos se representan con 10 bits en este modo.Modo alfanumrico:

Codifica un conjunto de 45 caracteres. Los 10 dgitos del modo numrico, los 26 caracteres del alfabeto internacional y 9 smbolos ms (ESPACIO, $, %, *, +, -, . , /, :). Normalmente 2 caracteres alfanumricos se representan con 11 bits en este modo.

23

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

Modo byte:

Los datos se codifican con 8 bits por carcter en cdigo ASCII, aunque podra definirse un conjunto alternativo.Modo Kanji:

Codifica los caracteres Kanji del alfabeto japons de acuerdo con el sistema Shift Jis basado en JIS X 0208. Cada carcter de 2 bytes es compactado en un codeword de 13 bits.Modo interpretacin de canal extendido (ICE):

Permite definir interpretaciones diferentes del conjunto de caracteres por defecto. Provee un mtodo consistente para especificar interpretaciones particulares.

2.4.2 Codificacin de los datos

Los datos se convierten en un flujo de bits consistente en uno o ms subconjuntos de modos diferentes. Si se utiliza el ICE por defecto, el flujo de bits comienza por el primer indicador de modo. Si se utilizaran uno o ms ICEs diferentes del por defecto, el flujo de bits comenzara con la cabecera ICE seguida del primer subconjunto.

La cabecera ICE se compone de indicador de modo ICE (4 bits) y de designador ICE (8, 16 o 24 bits). Empieza con el bit ms significativo del indicador de modo ICE y termina con el menos significativo del designador ICE.

Los subconjuntos se componen de indicador de modo (4 bits), de contador de caracteres y de los datos. Cada subconjunto de modo empieza con el bit ms significativo del indicador de modo y termina con el bit menos significativo del flujo de datos. No existen separadores entre los subconjuntos ya que su tamao y lugar de inicio estn delimitados inequvocamente por el indicador de modo y el contador de caracteres.

24

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

El indicador de modo tendr los siguientes valores:

-

Numrico = 0001 Alfanumrico = 0010 Byte = 0100 Kanji = 1000 ICE = 0111 Fin de mensaje = 0000 Bits del contador de caracteres Modo Modo Modo numrico Alfanumrico byte 10 12 14 9 11 13 8 16 16

Versin 1-9 10 - 26 27 - 40

Modo Kanji 8 10 12

Al final del ltimo subconjunto de modo se aade un terminador fin de mensaje consistente en 4 bits a cero. Puede ser omitido o reducido si la capacidad restante del smbolo es menor.

En el modo numrico, los datos de entrada se dividen en grupos de tres dgitos, cada grupo se convierte en su equivalente binario de 10 bits. Si el nmero de dgitos no es mltiplo de tres, los uno o dos ltimos son convertidos a 4 o 7 bits. Los datos binarios resultantes son entonces concatenados y se les pone como prefijo el indicador de modo y el indicador contador de caracteres.

En el modo alfanumrico, a cada carcter se le asigna un valor entre 0 y 44 acorde a la tabla siguiente:

Char.

Valor

Char.

Valor

Char.

Valor

Char.

Valor

Char.

Valor

Char.

Valor

Char.

Valor

Char.

Valor

0 1 2 3 4 5

0 1 2 3 4 5

6 7 8 9 A B

6 7 8 9 10 11

C D E F G H

12 13 14 15 16 17

I J K L M N

18 19 20 21 22 23

O P Q R S T

24 25 26 27 28 29

U V W X Y Z

30 31 32 33 34 35

SP $ % * + -

36 37 38 39 40 41

. / :

42 43 44

25

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

Los caracteres se dividen en grupos de dos caracteres codificados en 11 bits. Valor del primer carcter se multiplica por 45 y el valor del segundo se le suma al este producto. La suma es entonces convertida en un nmero de 11 bits. Si el nmero de caracteres de entrada no es mltiplo de dos, el ltimo carcter se codifica en un nmero de 6 bits. Los datos binarios resultantes son concatenados y se les pone como prefijo el indicador de modo y el indicador contador de caracteres.

En el modo Byte, el valor de cada carcter es el mismo que el de su correspondiente codeword de 8 bits. Los valores resultantes se concatenan y se les pone como prefijo el indicador de modo y el indicador contador de caracteres.

Existe la posibilidad de combinar varios modos de codificacin para los datos, y as ahorrar espacio. Cada segmento de datos se codificara como se indic antes y luego se concatenaran entre s empezando cada segmento con su prefijo de indicador de modo ms indicador contador de caracteres.

Al final de los segmentos codificados se aade un terminador con una secuencia de cuatro ceros. El terminador se puede omitir si los datos completan la capacidad del smbolo o reducido a menos ceros si no caben los cuatro. 2.4.2.1 Conversin de bits de datos a codewords Los datos codificados resultantes del paso anterior ahora deben ser divididos en codewords de 8 bits. Si no fueran mltiplo de ocho se aadirn bits de relleno al ltimo codeword. Despus el mensaje resultante debe ser extendido con codewords de relleno hasta rellenar la capacidad mxima de codewords de la versin QR Code del smbolo que estamos codificando. Estos codewords de relleno son 11101100 y 00010001 que se van aadiendo de forma alternante. Despus a estos codewords se aadirn los codewords de ECC como veremos en el siguiente punto.

26

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

Capacidad de un QR Code segn su versin ivel de Codewords de Versin correccin datos de errores 1 L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H 19 16 13 9 34 28 22 16 55 44 34 26 80 64 48 36 108 86 62 46 136 108 76 60 156 124 88 66 194 154 110 86 232 182 132 100 274 216 154 122 324 254 180 140 Bits de datos

Capacidad de datos umrico Alfanumrico Byte 17 14 11 7 32 26 20 14 53 42 32 24 78 62 46 34 106 84 60 44 134 106 74 58 154 122 86 64 192 152 108 84 230 180 130 98 271 213 151 119 321 251 177 137 Kanji 10 8 7 4 20 16 12 8 32 26 20 15 48 38 28 21 65 52 37 27 82 65 45 36 95 75 53 39 118 93 66 52 141 111 80 60 167 131 93 74 198 155 109 85

152 128 104 72 272 224 176 128 440 352 272 208 640 512 384 288 864 688 496 368 1 088 864 608 480 1 248 992 704 528 1 552 1 232 880 688 1 856 1 456 1 056 800 2 192 1 728 1 232 976 2 592 2 032 1 440 1 120

41 34 27 17 77 63 48 34 127 101 77 58 187 149 111 82 255 202 144 106 322 255 178 139 370 293 207 154 461 365 259 202 552 432 312 235 652 513 364 288 772 604 427 331

25 20 16 10 47 38 29 20 77 61 47 35 114 90 67 50 154 122 87 64 195 154 108 84 224 178 125 93 279 221 157 122 335 262 189 143 395 311 221 174 468 366 259 200

2

3

4

5

6

7

8

9

10

11

27

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

ivel de Codewords de Versin correccin datos de errores 12 L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H 370 290 206 158 428 334 244 180 461 365 261 197 523 415 295 223 589 453 325 253 647 507 367 283 721 563 397 313 795 627 445 341 861 669 485 385 932 714 512 406 1 006 782 568 442

Bits de datos

Capacidad de datos umrico Alfanumrico Byte 367 287 203 155 425 331 241 177 458 362 258 194 520 412 292 220 586 450 322 250 644 504 364 280 718 560 394 310 792 624 442 338 858 666 482 382 929 711 509 403 1 003 779 565 439 Kanji 226 177 125 96 262 204 149 109 282 223 159 120 320 254 180 136 361 277 198 154 397 310 224 173 442 345 243 191 488 384 272 208 528 410 297 235 572 438 314 248 618 480 348 270

2 960 2 320 1 648 1 264 3 424 2 672 1 952 1 440 3 688 2 920 2 088 1 576 4 184 3 320 2 360 1 784 4 712 3 624 2 600 2 024 5 176 4 056 2 936 2 264 5 768 4 504 3 176 2 504 6 360 5 016 3 560 2 728 6 888 5 352 3 880 3 080 7 456 5 712 4 096 3 248 8 048 6 256 4 544 3 536

883 691 489 374 1 022 796 580 427 1 101 871 621 468 1 250 991 703 530 1 408 1 082 775 602 1 548 1 212 876 674 1 725 1 346 948 746 1 903 1 500 1 063 813 2 061 1 600 1 159 919 2 232 1 708 1 224 969 2 409 1 872 1 358 1 056

535 419 296 227 619 483 352 259 667 528 376 283 758 600 426 321 854 656 470 365 938 734 531 408 1 046 816 574 452 1 153 909 644 493 1 249 970 702 557 1 352 1 035 742 587 1 460 1 134 823 640

13

14

15

16

17

18

19

20

21

22

28

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

ivel de Codewords de Versin correccin datos de errores 23 L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H 1 094 860 614 464 1 174 914 664 514 1 276 1 000 718 538 1 370 1 062 754 596 1 468 1 128 808 628 1 531 1 193 871 661 1 631 1 267 911 701 1 735 1 373 985 745 1 843 1 455 1 033 793 1 955 1 541 1 115 845 2 071 1 631 1 171 901

Bits de datos

Capacidad de datos umrico Alfanumrico Byte 1 091 857 611 461 1 171 911 661 511 1 273 997 715 535 1 367 1 059 751 593 1 465 1 125 805 625 1 528 1 190 868 658 1 628 1 264 908 698 1 732 1 370 982 742 1 840 1 452 1 030 790 1 952 1 538 1 112 842 2 068 1 628 1 168 898 Kanji 672 528 376 284 721 561 407 315 784 614 440 330 842 652 462 365 902 692 496 385 940 732 534 405 1 002 778 559 430 1 066 843 604 457 1 132 894 634 486 1 201 947 684 518 1 273 1 002 719 553

8 752 6 880 4 912 3 712 9 392 7 312 5 312 4 112 10 208 8 000 5 744 4 304 10 960 8 496 6 032 4 768 11 744 9 024 6 464 5 024 12 248 9 544 6 968 5 288 13 048 10 136 7 288 5 608 13 880 10 984 7 880 5 960 14 744 11 640 8 264 6 344 15 640 12 328 8 920 6 760 16 568 13 048 9 368 7 208

2 620 2 059 1 468 1 108 2 812 2 188 1 588 1 228 3 057 2 395 1 718 1 286 3 283 2 544 1 804 1 425 3 517 2 701 1 933 1 501 3 669 2 857 2 085 1 581 3 909 3 035 2 181 1 677 4 158 3 289 2 358 1 782 4 417 3 486 2 473 1 897 4 686 3 693 2 670 2 022 4 965 3 909 2 805 2 157

1 588 1 248 890 672 1 704 1 326 963 744 1 853 1 451 1 041 779 1 990 1 542 1 094 864 2 132 1 637 1 172 910 2 223 1 732 1 263 958 2 369 1 839 1 322 1 016 2 520 1 994 1 429 1 080 2 677 2 113 1 499 1 150 2 840 2 238 1 618 1 226 3 009 2 369 1 700 1 307

24

25

26

27

28

29

30

31

32

33

29

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

ivel de Codewords de Versin correccin datos de errores 34 L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H L M Q H 2 191 1 725 1 231 961 2 306 1 812 1 286 986 2 434 1 914 1 354 1 054 2 566 1 992 1 426 1 096 2 702 2 102 1 502 1 142 2 812 2 216 1 582 1 222 2 956 2 334 1 666 1 276

Bits de datos

Capacidad de datos umrico Alfanumrico Byte 2 188 1 722 1 228 958 2 303 1 809 1 283 983 2 431 1 911 1 351 1 051 2 563 1 989 1 423 1 093 2 699 2 099 1 499 1 139 2 809 2 213 1 579 1 219 2 953 2 331 1 663 1 273 Kanji 1 347 1 060 756 590 1 417 1 113 790 605 1 496 1 176 832 647 1 577 1 224 876 673 1 661 1 292 923 701 1 729 1 362 972 750 1 817 1 435 1 024 784

17 528 13 800 9 848 7 688 18 448 14 496 10 288 7 888 19 472 15 312 10 832 8 432 20 528 15 936 11 408 8 768 21 616 16 816 12 016 9 136 22 496 17 728 12 656 9 776 23 648 18 672 13 328 10 208

5 253 4 134 2 949 2 301 5 529 4 343 3 081 2 361 5 836 4 588 3 244 2 524 6 153 4 775 3 417 2 625 6 479 5 039 3 599 2 735 6 743 5 313 3 791 2 927 7 089 5 596 3 993 3 057

3 183 2 506 1 787 1 394 3 351 2 632 1 867 1 431 3 537 2 780 1 966 1 530 3 729 2 894 2 071 1 591 3 927 3 054 2 181 1 658 4 087 3 220 2 298 1 774 4 296 3 391 2 420 1 852

35

36

37

38

39

40

2.4.3 Correccin de errores QR Code utiliza codificacin de control de errores (EC) de Reed-Solomon para detectar errores. Para ello se generan una serie de codewords de correccin de errores (ECC), que se aaden a los de datos. Existen cuatro niveles de EC elegibles por el usuario que quiere crear el smbolo. Los niveles son: L (Low) con 7% de capacidad de recuperacin M (Medium) con 15% de capacidad de recuperacin Q (Quality) con 25% de capacidad de recuperacin H (High) con 30% de capacidad de recuperacin

30

Gins Miguel Fernndez Ordez

Generador e intrprete de QR Code

Este sistema puede corregir dos tipos de codewords errneos, los que provocan que un carcter no se pueda decodificar (borrn) y los que provocan que no se decodifique en otro carcter errneo (error). Por ejemplo un mdulo que cambia de negro a blanco provoca un error. El nmero de borrones y errores corregibles por cada ECC es dado por la siguiente frmula:

x + 2y