Una matriz de datos es un código bidimensional que consta de "celdas" o puntos en blanco y negro dispuestos en un patrón cuadrado o rectangular , también conocido como matriz . La información que se va a codificar puede ser texto o datos numéricos. El tamaño habitual de los datos va desde unos pocos bytes hasta 1556 bytes . La longitud de los datos codificados depende del número de celdas de la matriz. Los códigos de corrección de errores se utilizan a menudo para aumentar la fiabilidad: incluso si una o más celdas están dañadas y son ilegibles, el mensaje aún puede leerse. Un símbolo de matriz de datos puede almacenar hasta 2.335 caracteres alfanuméricos .
Los símbolos de Data Matrix tienen forma rectangular, generalmente cuadrada y están compuestos de "celdas" cuadradas que representan bits . Según la codificación utilizada, una celda "clara" representa un 0 y una celda "oscura" es un 1, o viceversa. Cada Data Matrix está compuesta por dos bordes sólidos adyacentes en forma de "L" (llamado "patrón buscador") y otros dos bordes que consisten en "celdas" o módulos oscuros y claros alternados (llamado "patrón de tiempo"). Dentro de estos bordes hay filas y columnas de celdas que codifican información. El patrón buscador se utiliza para localizar y orientar el símbolo, mientras que el patrón de tiempo proporciona un recuento de la cantidad de filas y columnas en el símbolo. A medida que se codifican más datos en el símbolo, aumenta la cantidad de celdas (filas y columnas). Cada código es único. Los tamaños de los símbolos varían de 10×10 a 144×144 en la nueva versión ECC 200, y de 9×9 a 49×49 en la versión antigua ECC 000 – 140.
La aplicación más popular de Data Matrix es el marcado de objetos pequeños, debido a la capacidad del código para codificar cincuenta caracteres en un símbolo legible a 2 o 3 mm2 ( 0,003 o 0,005 pulgadas cuadradas) y al hecho de que el código puede leerse con una relación de contraste de solo el 20%. [1] Un Data Matrix es escalable; existen aplicaciones comerciales con imágenes tan pequeñas como 300 micrómetros (0,012 pulgadas) (grabadas con láser en un dispositivo de silicio de 600 micrómetros (0,024 pulgadas)) y tan grandes como un cuadrado de 1 metro (3 pies) (pintado en el techo de un vagón de carga ). La fidelidad de los sistemas de marcado y lectura son la única limitación. La Alianza de Industrias Electrónicas (EIA) de EE. UU. recomienda utilizar Data Matrix para etiquetar componentes electrónicos pequeños. [2]
Los códigos Data Matrix son cada vez más comunes en medios impresos, como etiquetas y cartas. El código se puede leer rápidamente con un lector de códigos de barras , lo que permite realizar un seguimiento del medio, por ejemplo, cuando se ha enviado un paquete al destinatario.
Para fines de ingeniería industrial, los códigos Data Matrix se pueden marcar directamente en los componentes, lo que garantiza que solo el componente deseado se identifique con los datos codificados en la matriz de datos. Los códigos se pueden marcar en los componentes con varios métodos, pero dentro de la industria aeroespacial, estos métodos son comúnmente la inyección de tinta industrial, el marcado por puntos, el marcado láser y el grabado químico electrolítico (ECE). Estos métodos proporcionan una marca permanente que puede durar hasta la vida útil del componente.
Los códigos Data Matrix se suelen verificar mediante un equipo de cámara y un software especializados. [ Se necesita más explicación ] Esta verificación garantiza que el código cumpla con los estándares pertinentes y garantiza su legibilidad durante la vida útil del componente. Una vez que el componente entra en servicio, el código Data Matrix puede leerse mediante una cámara lectora, que decodifica los datos Data Matrix que luego pueden utilizarse para diversos fines, como el seguimiento de movimientos o la comprobación de existencias.
Los códigos Data Matrix, junto con otros códigos de código abierto como los códigos de barras 1D, también se pueden leer con teléfonos móviles mediante la descarga de aplicaciones móviles específicas para códigos. Aunque muchos dispositivos móviles pueden leer códigos 2D, incluido el código Data Matrix, [3] pocos amplían la decodificación para permitir el acceso y la interacción móviles, con lo que los códigos se pueden utilizar de forma segura y en distintos medios; por ejemplo, en soluciones de seguimiento y rastreo, lucha contra la falsificación, gobierno electrónico y banca.
Los códigos Data Matrix se utilizan en la industria alimentaria en sistemas de codificación automática para evitar que los productos alimenticios se empaqueten y se fechen incorrectamente. Los códigos se mantienen internamente en una base de datos de fabricantes de alimentos y se asocian con cada producto único, por ejemplo, variaciones de ingredientes. Para cada producción de producto, se proporciona el código único a la impresora. Se requiere un diseño de etiqueta para permitir que el Data Matrix 2D se posicione para una lectura óptima. Para los códigos en blanco y negro, no se requieren pruebas a menos que la calidad de impresión sea un problema, pero todas las variaciones de color deben probarse antes de la producción para garantizar que sean legibles. [ cita requerida ]
En mayo de 2006, un programador informático alemán, Bernd Hopfengärtner, creó una gran matriz de datos en un campo de trigo (de forma similar a los círculos de las cosechas ). El mensaje decía " Hola, mundo! ". [4] En junio de 2011, el artista parisino del tatuaje KARL, como parte de una promoción del whisky escocés Ballantine's , [5] creó el primer tatuaje animado del mundo utilizando un código de matriz de datos en un proceso colaborativo transmitido en vivo en Facebook. [6] [7]
Los símbolos Data Matrix están compuestos de módulos dispuestos dentro de un patrón de búsqueda y sincronización perimetral. Pueden codificar hasta 3116 caracteres de todo el conjunto de caracteres ASCII (con extensiones). El símbolo consta de regiones de datos que contienen módulos dispuestos en una matriz regular. Los símbolos grandes contienen varias regiones. Cada región de datos está delimitada por un patrón de búsqueda, y este está rodeado por los cuatro lados por un borde de zona tranquila (margen). (Nota: Los módulos pueden ser redondos o cuadrados; no se define ninguna forma específica en el estándar. Por ejemplo, las celdas granalladas son generalmente redondas).
ECC 200, la versión más reciente de Data Matrix, utiliza códigos Reed-Solomon para la recuperación de errores y borrados. ECC 200 permite la reconstrucción rutinaria de toda la cadena de datos codificada cuando el símbolo ha sufrido un daño del 30%, suponiendo que la matriz aún se puede localizar con precisión. Data Matrix tiene una tasa de error de menos de 1 en 10 millones de caracteres escaneados. [8]
Los símbolos tienen un número par de filas y un número par de columnas. La mayoría de los símbolos son cuadrados con tamaños de 10 × 10 a 144 × 144. Sin embargo, algunos símbolos son rectangulares con tamaños de 8 × 18 a 16 × 48 (solo valores pares). Todos los símbolos que utilizan la corrección de errores ECC 200 se pueden reconocer porque el módulo de la esquina superior derecha es el mismo que el color de fondo (binario 0).
Las capacidades adicionales que diferencian los símbolos ECC 200 de los estándares anteriores incluyen:
[9]
Las versiones anteriores de Data Matrix incluyen ECC 000, ECC 050, ECC 080, ECC 100, ECC 140. En lugar de utilizar códigos Reed-Solomon como ECC 200, ECC 000–140 utiliza una corrección de errores basada en convolución. Cada uno varía en la cantidad de corrección de errores que ofrece, siendo ECC 000 ninguna y ECC 140 la que ofrece la mayor. Para la detección de errores en el momento de la decodificación, incluso en el caso de ECC 000, cada una de estas versiones también codifica una comprobación de redundancia cíclica (CRC) en el patrón de bits. Como medida adicional, la ubicación de cada bit en el código está determinada por las tablas de ubicación de bits incluidas en la especificación. Estas versiones más antiguas siempre tienen un número impar de módulos y se pueden realizar en tamaños que van desde 9 × 9 a 49 × 49. Todos los símbolos que utilizan la corrección de errores ECC 000 a 140 se pueden reconocer porque el módulo de la esquina superior derecha es el inverso del color de fondo. (binario 1).
Según la norma ISO/IEC 16022, "ECC 000–140 solo debe utilizarse en aplicaciones cerradas donde una sola parte controla tanto la producción como la lectura de los símbolos y es responsable del rendimiento general del sistema".
Data Matrix fue inventado por International Data Matrix, Inc. (ID Matrix), que se fusionó con RVSI/ Acuity CiMatrix , que fueron adquiridas por Siemens AG en octubre de 2005 y Microscan Systems en septiembre de 2008. Data Matrix está cubierto actualmente por varias normas ISO / IEC y es de dominio público para muchas aplicaciones, lo que significa que se puede utilizar sin necesidad de licencias ni regalías.
Los códigos Data Matrix utilizan la corrección de errores Reed-Solomon sobre el campo finito (o GF(2 8 ) ), cuyos elementos se codifican como bytes de 8 bits ; el byte con un valor numérico estándar codifica el elemento de campo donde se toma como un elemento primitivo que satisface . El polinomio primitivo es , correspondiente al polinomio número 301, con raíz inicial = 1. El código Reed-Solomon utiliza uno de los 37 polinomios diferentes sobre , con grados que van de 7 a 68, dependiendo de cuántos bytes de corrección de errores agregue el código.
El proceso de codificación se describe en la norma ISO/IEC 16022:2006. [10] Se ha publicado un software de código abierto para codificar y decodificar la variante ECC-200 de Data Matrix. [11] [12]
Los diagramas que aparecen a continuación ilustran la colocación de los datos del mensaje dentro de un símbolo Data Matrix. El mensaje es "Wikipedia" y está organizado en un patrón diagonal algo complicado que comienza cerca de la esquina superior izquierda. Algunos caracteres están divididos en dos partes, como la W inicial, y la tercera "i" está en "patrón de esquina 2" en lugar de la disposición habitual en forma de L. También se muestran el código de fin de mensaje (marcado como Fin), los bytes de relleno (P) y de corrección de errores (E), y cuatro módulos de espacio no utilizado (X).
Se utilizan varios modos de codificación para almacenar distintos tipos de mensajes. El modo predeterminado almacena un carácter ASCII por palabra de código de 8 bits. Se proporcionan códigos de control para cambiar entre modos, como se muestra a continuación.
Los modos C40, Texto y X12 son potencialmente más compactos para almacenar mensajes de texto. Son similares a DEC Radix-50 , ya que utilizan códigos de caracteres en el rango de 0 a 39, y tres de estos códigos se combinan para formar un número de hasta 40 3 = 64000, que se empaqueta en dos bytes (valor máximo 65536) de la siguiente manera:
El valor resultante de B1 está en el rango de 0 a 250. El valor especial 254 se utiliza para volver al modo de codificación ASCII.
Las interpretaciones de los códigos de caracteres se muestran en la siguiente tabla. Los modos C40 y Texto tienen cuatro conjuntos separados. El conjunto 0 es el predeterminado y contiene códigos que seleccionan temporalmente un conjunto diferente para el siguiente carácter. La única diferencia es que invierten las letras mayúsculas y minúsculas. C40 es principalmente mayúscula, con letras minúsculas en el conjunto 3; Texto es al revés. El conjunto 1, que contiene códigos de control ASCII, y el conjunto 2, que contiene símbolos de puntuación, son idénticos en los modos C40 y Texto.
El modo EDIFACT utiliza seis bits por carácter, con cuatro caracteres empaquetados en tres bytes. Puede almacenar dígitos, letras mayúsculas y muchos signos de puntuación, pero no admite letras minúsculas.
Los datos en modo base 256 comienzan con un indicador de longitud, seguido de una cantidad de bytes de datos. Una longitud de 1 a 249 se codifica como un solo byte y las longitudes más largas se almacenan como dos bytes.
Es conveniente evitar las largas cadenas de ceros en el mensaje codificado, ya que se convierten en grandes áreas en blanco en el símbolo Data Matrix, lo que puede hacer que el escáner pierda la sincronización. (La codificación ASCII predeterminada no utiliza ceros por este motivo). Para que esto sea menos probable, la longitud y los bytes de datos se ocultan añadiendo un valor pseudoaleatorio R(n), donde n es la posición en el flujo de bytes.
Antes de que expirara la patente estadounidense 5.612.524 [13] en noviembre de 2007, la empresa de propiedad intelectual Acacia Technologies afirmó que Data Matrix estaba parcialmente cubierto por su contenido. Como titular de la patente, Acacia supuestamente se puso en contacto con los usuarios de Data Matrix para exigirles el pago de las tasas de licencia relacionadas con la patente.
Cognex Corporation , un gran fabricante de dispositivos de código de barras 2D, presentó una demanda de sentencia declaratoria el 13 de marzo de 2006 después de recibir información de que Acacia se había puesto en contacto con sus clientes exigiendo tarifas de licencia. El 19 de mayo de 2008, la jueza Joan N. Ericksen del Tribunal de Distrito de los EE. UU. en Minnesota falló a favor de Cognex. [14] El fallo sostuvo que la patente '524, que afirmaba cubrir un sistema para capturar y leer códigos de simbología 2D, es inválida e inaplicable debido a la conducta inequitativa de los demandados durante la obtención de la patente.
Si bien el fallo se dictó después de que expirara la patente, impidió reclamos por infracción basados en el uso de Data Matrix antes de noviembre de 2007.
En 1991 se presentó una solicitud de patente alemana con el número DE 4107020, que se publicó en 1992. Esta patente no se cita en las solicitudes de patente estadounidenses mencionadas anteriormente y podría invalidarlas. [ cita requerida ]