stringtranslate.com

Código Azteca

Codificación: "Este es un ejemplo de símbolo azteca para Wikipedia".

El Código Azteca es un código matricial inventado por Andrew Longacre, Jr. y Robert Hussey en 1995. [1] El código fue publicado por AIM, Inc. en 1997. Aunque el Código Azteca fue patentado , esa patente se convirtió oficialmente en dominio público . [2] El Código Azteca también se publicó como estándar ISO/IEC 24778:2008. El Código Azteca, que recibe su nombre por la semejanza del patrón del visor central con una pirámide azteca , tiene el potencial de utilizar menos espacio que otros códigos de barras matriciales porque no requiere una "zona tranquila" en blanco circundante.

Estructura

El símbolo está construido sobre una cuadrícula cuadrada con un patrón de diana en su centro para ubicar el código. Los datos se codifican en anillos cuadrados concéntricos alrededor del patrón de diana. La diana central tiene 9×9 o 13×13 píxeles , y una fila de píxeles alrededor de ella codifica parámetros de codificación básicos, produciendo un "núcleo" de 11×11 o 15×15 cuadrados. Los datos se agregan en "capas", cada una con dos anillos de píxeles, lo que da tamaños totales de 15×15, 19×19, 23×23, etc.

Las esquinas del núcleo incluyen marcas de orientación que permiten leer el código si se gira o se refleja. La decodificación comienza en la esquina con tres píxeles negros y continúa en el sentido de las agujas del reloj hasta las esquinas con dos, uno y cero píxeles negros. Los píxeles variables del núcleo central codifican el tamaño, por lo que no es necesario marcar el límite del código con una "zona silenciosa" en blanco, aunque algunos lectores de códigos de barras la requieren.

El núcleo compacto del código Aztec puede estar rodeado de 1 a 4 capas, lo que produce símbolos de 15 × 15 (espacio para 13 dígitos o 12 letras) a 27 × 27. Además, hay una "runa" especial de 11 × 11 que codifica un byte de información. El núcleo completo admite hasta 32 capas, 151 × 151 píxeles, que pueden codificar 3832 dígitos, 3067 letras o 1914 bytes de datos.

La parte del símbolo que no se utiliza para los datos básicos se utiliza para la corrección de errores de Reed-Solomon , y la división es completamente configurable, entre límites de 1 palabra de datos y 3 palabras de verificación. La cantidad recomendada de palabras de verificación es el 23 % de la capacidad del símbolo más 3 palabras de código. [3]

Aztec Code está pensado para producir códigos legibles con diversas tecnologías de impresión. También es adecuado para pantallas de teléfonos celulares y otros dispositivos móviles.

Codificación

El proceso de codificación consta de los siguientes pasos:

  1. Convertir el mensaje de origen en una cadena de bits
  2. Calcular el tamaño del símbolo y el modo de mensaje necesarios, lo que determina el tamaño de la palabra de código Reed-Solomon
  3. Rellenar el mensaje con palabras clave Reed-Solomon
  4. Rellenar el mensaje hasta el límite de una palabra clave
  5. Adición de palabras clave de verificación
  6. Organizar el mensaje completo en espiral alrededor del núcleo

Toda conversión entre cadenas de bits y otras formas se realiza según la convención big-endian (el bit más significativo primero).

Conjunto de caracteres

Se pueden codificar todos los valores de 8 bits, más dos códigos de escape:

De forma predeterminada, los códigos 0 a 127 se interpretan según ANSI X3.4 ( ASCII ), y los códigos 128 a 255 se interpretan según ISO/IEC 8859-1 : Alfabeto latino n.º 1. Esto corresponde a ECI 000003.

Los bytes se traducen en códigos de 4 y 5 bits, según el modo de decodificación actual, con códigos de desplazamiento y bloqueo para cambiar de modo. Los valores de bytes que no están disponibles de esta manera se pueden codificar utilizando un código de "desplazamiento binario" general, seguido de una longitud y una cantidad de códigos de 8 bits.

En el caso de los modos cambiantes, un cambio afecta solo la interpretación del código siguiente, mientras que un bloqueo afecta a todos los códigos siguientes. La mayoría de los modos utilizan códigos de 5 bits, pero el modo Dígito utiliza códigos de 4 bits.

B/S (desplazamiento binario) va seguido de una longitud de 5 bits. Si no es cero, esto indica que siguen entre 1 y 31 bytes de 8 bits. Si es cero, 11 bits de longitud adicionales codifican la cantidad de bytes siguientes menos 31. (Tenga en cuenta que para 32 a 62 bytes, dos secuencias de desplazamiento de bytes de 5 bits son más compactas que una de 11 bits). Al final de la secuencia binaria, se reanuda el modo anterior.

FLG( n ) es seguido por un valor n de 3 bits . n = 0 codifica FNC1. n = 1–6 es seguido por 1–6 dígitos (en modo de dígitos) que se rellenan con ceros para formar un identificador ECI de 6 bits. n = 7 está reservado y actualmente es ilegal.

Mensaje de modo

El mensaje de modo codifica el número de capas ( L capas codificadas como el entero L −1) y el número de palabras de código de datos ( D palabras de código, codificadas como el entero D −1) en el mensaje. Todas las palabras de código restantes se utilizan como palabras de código de verificación.

En el caso de los códigos Aztec compactos, el número de capas se codifica como un valor de 2 bits y el número de palabras de código de datos como un valor de 6 bits, lo que da como resultado una palabra de modo de 8 bits. En el caso de los códigos Aztec completos, el número de capas se codifica en 5 bits y el número de palabras de código de datos se codifica en 11 bits, lo que da como resultado una palabra de modo de 16 bits.

La palabra de modo se divide en 2 o 4 palabras de código de 4 bits en GF(16) , y se agregan 5 o 6 palabras de verificación Reed-Solomon, lo que genera un mensaje de modo de 28 o 40 bits, que se envuelve en una capa de 1 píxel alrededor del núcleo.

Debido a que un código Aztec compacto de L+1 capas puede contener más datos que un código completo de L capas, rara vez se utilizan códigos completos con menos de 4 capas.

Lo más importante es que la cantidad de capas determina el tamaño de las palabras clave Reed-Solomon utilizadas, que varía entre 6 y 12 bits:

El tamaño de la palabra de código b es el número par más pequeño que garantiza que la cantidad total de palabras de código en el símbolo sea menor que el límite de 2 b −1, que puede corregirse mediante un código Reed–Solomon.

Como se mencionó anteriormente, se recomienda que al menos el 23% de las palabras de código disponibles, más 3, se reserven para corrección y se elija un tamaño de símbolo tal que el mensaje quepa en el espacio disponible.

Relleno de bits

Los bits de datos se dividen en palabras de código, donde el primer bit corresponde al coeficiente más significativo. Al hacer esto, las palabras de código compuestas solo por ceros y solo por unos se evitan mediante el relleno de bits : si los primeros b −1 bits de una palabra de código tienen el mismo valor, se inserta un bit adicional con el valor complementario en el flujo de datos. Esta inserción se lleva a cabo independientemente de si el último bit de la palabra de código hubiera tenido el mismo valor o no.

Además, tenga en cuenta que esto solo se aplica a cadenas de b −1 bits al comienzo de una palabra de código . Se permiten cadenas más largas de bits idénticos siempre que se extiendan a lo largo de un límite de palabra de código.

A la hora de decodificar, una palabra código compuesta únicamente por ceros o únicamente por unos puede considerarse un borrado y corregirse de forma más eficiente que un error general.

Este proceso hace que el mensaje sea más largo y el número final de palabras de código de datos registradas en el mensaje de modo no se conoce hasta que se completa. En casos excepcionales, puede ser necesario saltar al siguiente símbolo más grande y comenzar el proceso nuevamente para mantener la fracción mínima de palabras de control.

Relleno

Después de rellenar con bits, la cadena de datos se rellena hasta el siguiente límite de la palabra de código añadiendo 1 bit. Si esto diera como resultado una palabra de código compuesta únicamente por unos, el último bit se cambia a cero (y el decodificador lo ignorará como bit de relleno). Al decodificar, los bits de relleno se pueden decodificar como códigos de desplazamiento y bloqueo, pero eso no afectará el contenido del mensaje. El lector debe aceptar e ignorar un código parcial al final del mensaje, siempre que sea compuesto únicamente por unos.

Además, si la cantidad total de bits de datos disponibles en el símbolo no es un múltiplo del tamaño de la palabra de código, se antepone a la cadena de datos una cantidad adecuada de bits 0 para ocupar el espacio adicional. Estos bits no se incluyen en el cálculo de la palabra de verificación.

Comprobar palabras clave

Tanto la palabra de modo como los datos deben tener palabras de verificación adjuntas para completar el espacio disponible. Esto se calcula adjuntando K palabras de verificación de manera que todo el mensaje sea un múltiplo del polinomio de Reed-Solomon ( x −2)( x −4)...( x −2 K ).

Tenga en cuenta que las palabras de control no están sujetas a relleno de bits y pueden ser todas ceros o todos uno. Por lo tanto, no es posible detectar el borrado de una palabra de control.

Expresando el mensaje

Código azteca de 9 capas (53×53) que muestra la cuadrícula de referencia.

Un símbolo de código azteca completo tiene, además del núcleo, una "cuadrícula de referencia" de píxeles blancos y negros alternados que ocupan cada 16.ª fila y columna. Estos píxeles conocidos permiten al lector mantener la alineación con la cuadrícula de píxeles en símbolos grandes. Para un máximo de 4 capas (31×31 píxeles), esto consiste únicamente en líneas individuales que se extienden hacia afuera desde el núcleo, continuando el patrón alternado. Sin embargo, dentro de la quinta capa, se insertan filas y columnas adicionales de píxeles alternados a ±16 píxeles del centro, por lo que la quinta capa se ubica a ±17 y ±18 píxeles del centro, y un símbolo de 5 capas mide 37×37 píxeles.

De la misma manera, se insertan filas y columnas de la cuadrícula de referencia adicionales a ±32 píxeles del centro, lo que da como resultado un símbolo de 12 capas de 67×67 píxeles. En este caso, la capa 12 ocupa anillos a ±31 y ±33 píxeles del centro. El patrón continúa indefinidamente hacia afuera, con bloques de datos de 15 píxeles separados por filas y columnas de la cuadrícula de referencia.

Una forma de construir el símbolo es eliminar por completo la cuadrícula de referencia y comenzar con un núcleo de 14 × 14 píxeles centrado en un cuadrado blanco de 2 × 2 píxeles. Luego, dividirlo en bloques de 15 × 15 píxeles e insertar la cuadrícula de referencia entre ellos.

El mensaje de modo comienza en la esquina superior izquierda del núcleo y lo envuelve en el sentido de las agujas del reloj en una capa de 1 bit de espesor. Comienza con el bit más significativo del número de capas y termina con las palabras de verificación. Para un código Aztec compacto, se divide en cuatro partes de 7 bits para dejar espacio para las marcas de orientación. Para un código Aztec completo, se divide en cuatro partes de 10 bits, y cada una de esas partes se divide por la mitad mediante la cuadrícula de referencia.

En algunos casos, la capacidad total de la matriz no se divide de manera uniforme entre las palabras de código completas. En tales casos, el mensaje principal se rellena con bits 0 al principio. Estos bits no se incluyen en el cálculo de la palabra de verificación y se deben omitir durante la decodificación. La capacidad total de la matriz para un símbolo completo se puede calcular como (112+16*L)*L para un código Aztec completo y (88+16*L)*L para un código Aztec compacto, donde L es el tamaño del símbolo en capas. [4] Como ejemplo, la capacidad total de la matriz de un código Aztec compacto con 1 capa es de 104 bits. Dado que las palabras de código son de seis bits, esto da 17 palabras de código y dos bits adicionales. Se anteponen dos bits cero al mensaje como relleno y se deben omitir durante la decodificación.

El mensaje principal rellenado comienza en la parte superior izquierda exterior de todo el símbolo y gira en espiral alrededor de él en sentido contrario a las agujas del reloj en una capa de 2 bits de espesor, terminando directamente sobre la esquina superior izquierda del núcleo. Esto coloca las palabras de datos rellenas de bits, para las que se pueden detectar borrados, en las capas más externas del símbolo, que son las más propensas a los borrados. Las palabras de verificación se almacenan más cerca del núcleo. La última palabra de verificación termina justo encima de la esquina superior izquierda del centro de la diana.

Con el núcleo en su orientación estándar, el primer bit de la primera palabra de datos se coloca en la esquina superior izquierda, con bits adicionales ubicados en una columna de 2 bits de ancho de izquierda a derecha y de arriba a abajo. Esto continúa hasta 2 filas desde la parte inferior del símbolo, cuando el patrón gira 90 grados en sentido contrario a las agujas del reloj y continúa en una fila de 2 bits de alto, de abajo a arriba y de izquierda a derecha. Después de 4 capas de cuartos de igual tamaño, la espiral continúa con la esquina superior izquierda de la siguiente capa interna, y finalmente termina un píxel por encima de la esquina superior izquierda del núcleo.

Finalmente, los bits 1 se imprimen como cuadrados negros y los bits 0 se imprimen como cuadrados blancos.

Uso

Billete online de Deutsche Bahn. Tenga en cuenta que el código de barras Aztec de este billete de muestra no se puede leer con una aplicación normal porque el centro es diferente.

Transporte

Los códigos aztecas son ampliamente utilizados para la emisión de billetes de transporte.

El código Aztec ha sido seleccionado por la industria aérea ( estándar BCBP de IATA ) para las tarjetas de embarque electrónicas. Varias aerolíneas envían códigos Aztec a los teléfonos móviles de los pasajeros para que actúen como tarjetas de embarque. Estos suelen estar integrados con aplicaciones en los teléfonos de los pasajeros, incluida Apple Wallet .

Los códigos Aztec también se utilizan en el ferrocarril, incluso en Teherán Metro , British National Rail , [5] Eurostar , Deutsche Bahn , TCDD Taşımacılık , DSB , SJ , České dráhy , Slovak Railways , Slovenian Railways , Croatian Railways , Trenitalia , Nederlandse Spoorwegen , Pasažieru vilciens , PKP Intercity , VR Group , Via Rail , Swiss Federal Railways , SNCB y SNCF para billetes vendidos en línea e impresos por los clientes o mostrados en las pantallas de los teléfonos móviles. El código Aztec es escaneado por un escáner portátil por el personal del tren o en el torniquete para validar el billete.

Gubernamental

En Polonia, los documentos de matriculación de vehículos llevan un resumen comprimido mediante el algoritmo NRV2E y codificado en código Aztec. Se está trabajando para que las compañías de seguros de automóviles rellenen automáticamente la información pertinente basándose en fotografías digitales del documento como primer paso para cerrar un nuevo contrato de seguro.

El Servicio de Impuestos Federales de Rusia codifica la información de pago en los avisos fiscales como Código Azteca.

Comercial

Actualmente muchos proyectos de ley en Canadá también utilizan esta tecnología, incluidos EastLink , Shaw Cable y Bell Aliant .

Véase también

Referencias

  1. ^ * US 5591956, Longacre, Jr., Andrew y Hussey, Robert, "Estructura y simbología de codificación de datos bidimensionales para uso con lectores ópticos", publicado el 7 de enero de 1997 
  2. ^ Boletín Oficial. Oficina de Patentes de los Estados Unidos. 17 de junio de 1997. Por la presente se dedica al público la totalidad del plazo de dicha patente.Haga clic en "imágenes" y luego en "corrección" para ver la dedicatoria al dominio público.
  3. ^ Adams, Russ. «Página de código de barras bidimensional». Archivado desde el original el 30 de abril de 2010. Consultado el 14 de julio de 2022 .
  4. ^ "Especificación del código azteca (sin Azteca pequeña)" [Especificación del código azteca (sin Azteca pequeña)] (en ruso). Archivado desde el original el 25 de febrero de 2020.
  5. ^ "Revertir los billetes de tren móviles del Reino Unido". eta.st . 31 de enero de 2023 . Consultado el 5 de febrero de 2023 .

Enlaces externos