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 pasó a ser oficialmente de dominio público . [2] El Código Azteca también está publicado como norma ISO/IEC 24778:2008. El código Aztec , que lleva el nombre del parecido del patrón del buscador 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 a su alrededor.

Estructura

El símbolo está construido sobre una cuadrícula cuadrada con un patrón de diana en el 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 codifica los 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 de las cuales contiene 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, lo que permite 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 en el 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 sí lo requieren.

El núcleo compacto del código azteca puede estar rodeado por de 1 a 4 capas, produciendo símbolos desde 15×15 (espacio para 13 dígitos o 12 letras) hasta 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.

Cualquier parte del símbolo que no se use para los datos básicos se usa 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 de símbolos más 3 palabras de código. [3]

Se supone que Aztec Code produce códigos legibles con varias tecnologías de impresión. También es muy adecuado para pantallas de teléfonos móviles y otros dispositivos móviles.

Codificación

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

  1. Convertir el mensaje fuente en una cadena de bits
  2. Calcular el tamaño de símbolo y el modo de mensaje necesarios, que determina el tamaño de la palabra clave Reed-Solomon
  3. Rellenar el mensaje con palabras en clave Reed-Solomon
  4. Rellenar el mensaje hasta el límite de una palabra clave
  5. Agregar 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, además de dos códigos de escape:

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

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

Para cambiar de modo, 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 de dígitos utiliza códigos de 4 bits.

B/S (desplazamiento binario) va seguido de una longitud de 5 bits. Si es distinto de cero, esto indica que le siguen entre 1 y 31 bytes de 8 bits. Si es cero, 11 bits de longitud adicionales codifican el número 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). Se reanuda el modo anterior.

FLG( n ) va seguido de un valor n de 3 bits . n =0 codifica FNC1. n = 1–6 va seguido de 1 a 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 número entero L −1) y el número de palabras de código de datos ( D palabras de código, codificadas como el número entero D −1) en el mensaje. Todas las palabras de código restantes se utilizan como palabras de código de verificación.

Para códigos aztecas 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 en modo de 8 bits. Para códigos aztecas 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 genera una palabra en 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 añaden 5 o 6 palabras de verificación Reed-Solomon, lo que genera un mensaje de modo de 28 o 40 bits, que está envuelto en una imagen de 1 píxel. capa alrededor del núcleo.

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

Lo más importante es que el número de capas determina el tamaño de las palabras en clave Reed-Solomon utilizadas. Esto varía de 6 a 12 bits:

El tamaño de la palabra de código b es el número par más pequeño que garantiza que el número 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, correspondiendo el primer bit al coeficiente más significativo. Al hacer esto, las palabras de código de todo ceros y todos 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 produce independientemente de que 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 encuentren a ambos lados de un límite de palabra de código.

Al decodificar, se puede suponer que una palabra de código de todo cero o todo uno es un borrado y se corrige de manera 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 verificación.

Relleno

Después del relleno de bits, la cadena de datos se rellena hasta el siguiente límite de palabra de código agregando 1 bit. Si esto da como resultado una palabra de código de todos unos, el último bit se cambia a cero (y el decodificador lo ignorará como un bit de relleno de bits). Al decodificar, los bits de relleno pueden decodificarse como códigos de desplazamiento y enclavamiento, 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 todo unos.

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

Verificar 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 agregando K palabras de verificación de modo que el mensaje completo sea un múltiplo del polinomio de Reed-Solomon ( x −2)( x −4)...( x −2 K ).

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

Diseñando 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 alternos 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 sobre símbolos grandes. Para hasta 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 alterno. Sin embargo, dentro de la quinta capa, se insertan filas y columnas adicionales de píxeles alternos a ±16 píxeles del centro, por lo que la quinta capa está ubicada a ±17 y ±18 píxeles del centro, y un símbolo de cinco capas mide 37×37 píxeles. .

Del mismo modo, se insertan filas y columnas adicionales de la cuadrícula de referencia a ±32 píxeles del centro, lo que genera un símbolo de 12 capas de 67 × 67 píxeles. En este caso, la capa 12 ocupa anillos ±31 y ±33 píxeles desde el 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 la cuadrícula de referencia por completo y comenzar con un núcleo de 14 × 14 píxeles centrado en un cuadrado blanco de 2 × 2 píxeles. Luego divídalo en bloques de 15×15 píxeles e inserte 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 la parte más significativa del número de capas y termina con las palabras de verificación. Para un código azteca compacto, se divide en cuatro partes de 7 bits para dejar espacio para las marcas de orientación. Para un código azteca 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 uniformemente entre las palabras de código completas. En tales casos, el mensaje principal se rellena con 0 bits al principio. Estos bits no se incluyen en el cálculo de la palabra de verificación y deben omitirse 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 azteca completo y (88+16*L)*L para un código azteca compacto, donde L es el tamaño del símbolo en capas. . [4] A modo de ejemplo, la capacidad total de la matriz de un código azteca compacto de 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 deben omitirse durante la decodificación.

El mensaje principal acolchado comienza en la parte superior izquierda exterior de todo el símbolo y gira en espiral alrededor de él en sentido antihorario en una capa de 2 bits de espesor, terminando directamente encima de la esquina superior izquierda del núcleo. Esto coloca las palabras de datos repletas de bits, para las cuales se pueden detectar borrados, en las capas más externas del símbolo, que son las más propensas a borrarse. 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 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 colocados 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 antihorario y continúa en una fila de 2 bits de altura, de abajo hacia arriba y de izquierda a derecha. Después de 4 cuartos de capa del mismo 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, 1 bit se imprime como cuadrados negros y 0 bits se imprimen como cuadrados blancos.

Uso

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

Transporte

Los códigos aztecas se utilizan ampliamente para la emisión de billetes de transporte.

El Código Azteca ha sido seleccionado por la industria aérea ( estándar BCBP de IATA ) para 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, incluido Apple Wallet .

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

Gubernamental

Los documentos de matriculación de automóviles en Polonia llevan un resumen, comprimido mediante el algoritmo NRV2E, codificado en código Azteca. Se están realizando trabajos para permitir que las compañías de seguros de automóviles completen automáticamente la información relevante 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 de impuestos como Código Azteca.

Comercial

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

Ver también

Referencias

  1. ^ * US 5591956, Longacre, Jr., Andrew & 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 Estados Unidos. 17 de junio de 1997. Por la presente se dedica al público la vigencia íntegra 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. ^ "Спецификация Código Azteca (без Small Aztec)" [Especificación del Código Azteca (sin Small Aztec)] (en ruso). Archivado desde el original el 25 de febrero de 2020.
  5. ^ "Revertir billetes de tren móviles en el Reino Unido". eta.st. ​31 de enero de 2023 . Consultado el 5 de febrero de 2023 .

enlaces externos