¿Cuál es la matemática detrás de los códigos de barras?

Puede parecer un poco complicado, ¡pero en realidad es lo más sencillo de aprender!

La primera pregunta es, ¿cuál es el propósito de Barcode? ¿Qué información desea obtener del producto de una pegatina? Es posible que desee saber

  • País de origen
  • Tipo de fabricante
  • Tipo de producto
  • Rango de costo
  • Impuesto

etc.

Entonces, puedes hacer esto. Usted asigna un número para cada grupo, como por ejemplo.

País = 1, Fabricación = 2, Tipo de producto = 3, … y así sucesivamente.

El problema con los números es la confusión creada a partir de él. Tal como 3 puede confundirse con 8, o 6 puede ser interpretado como 9 por el escáner. Queremos eliminar esta confusión. Entonces, en lugar de números, usamos combinaciones de líneas verticales en blanco y negro. Aquí hay un código de barras estándar para cada dígito de 0-9.

Cada dígito del 0 al 9 recibe 7 bloques de espacio. De acuerdo con los espacios negros rellenados con esos espacios en blanco, identificamos el número asociado.

Entonces, ¿qué escáner ve?

¿Cómo se ve la pegatina?

Combinando el escáner de estos dos, interprete esto de la siguiente manera:

Entonces, el escáner divide el código de barras en 7 bloques de espacio y, de acuerdo con los rellenos negros, identifica los números asociados con él. Ahora, una vez que se identifican los números, el siguiente paso es leer los números impresos justo debajo del código de barras. (Consulte la imagen de arriba (00) 1 0 6 …).

Digamos que el escáner escaneó el primer grupo como dígito 1, es decir, Tipo de producto, y luego escanea el número debajo de él, que es Digamos líquido, luego el escáner lee la combinación de dos como: Tipo de producto = Líquido. Escanea el segundo espacio de 7 bloques que es, digamos, País de origen, y el número asociado con él es EE. UU. Entonces el escáner lo leerá como País: EE. UU. Y así.

Eso es todo. ¡Cómo funciona!

Espero que les haya gustado.

Un código de barras codifica una secuencia de dígitos (o letras) como una serie de barras claras y oscuras. Las barras actúan como bits en una codificación binaria: la presencia de una barra es equivalente a un “1”, y la ausencia de una barra es equivalente a un “0”. Entonces, para cada dígito, se elige una cadena de bits corta para representar ese dígito. El código de barras es simplemente estas cadenas de bits juntas y convertidas en barras. Dos (o más) bits activos uno al lado del otro corresponden a una barra más ancha, no dos barras una al lado de la otra.

Cuando un escáner de código de barras escanea un código de barras, envía una señal sobre el código de barras y mide la intensidad de la luz reflejada. Una reflexión baja es una barra, una reflexión alta es una brecha. Entonces, cuando escanea un código de barras con un patrón de bits de “10110101”, lo que ve podría ser (dependiendo de la velocidad de escaneo) una barra oscura de 20 ms de ancho, un espacio de 20 ms, una barra oscura de 40 ms, un espacio de 20 ms, una barra de 20 ms, una brecha de 20 ms, y finalmente una barra de 20 ms. A partir de esto, puede deducir que la longitud de bits es de 20 ms y reconstruir el código.

Para ser un código de barras confiable, se deben seguir algunas reglas:

  1. Los dígitos tienen que tener suficientes transiciones claro-oscuro, lo que significa que cada dígito debe tener al menos un bit “encendido” y un bit “apagado”. Esto significa que la codificación decimal codificada en binario estándar (que tiene “0000” para 0) no funcionará, pero una codificación 2 en 5 (cada dígito está representado por 2 en bits y 3 en bits, y hay 10 combinaciones de 5 bits que cumplen con eso), podría. La idea aquí es que con suficientes transiciones, el escáner puede “auto reloj” y descubrir los límites de bits, incluso en barras anchas, independientemente de la velocidad de escaneo.
  2. Las codificaciones no deben ser translacionalmente similares, de modo que sea posible detectar el comienzo de un dígito. Teniendo en cuenta que un escáner no puede ver realmente una brecha, un escáner de código de barras no puede distinguir entre “011010101” y “110101010”, por lo que sería mejor si esos dos no fueran ambos códigos válidos.
  3. Si es posible, las codificaciones no deberían ser reversibles, es decir, no debería ser posible tener dos códigos de barras que sean imágenes especulares entre sí. El escáner a menudo escanea el código tanto hacia adelante como hacia atrás, y necesita saber qué dirección es la correcta. Si ambos conducen a códigos válidos, eso es un problema.

No siempre es fácil o conveniente cumplir esos objetivos, por lo que se utilizan trucos para relajarlos. Por ejemplo, muchos estándares de códigos de barras incluyen “barras de protección”, que es un patrón de bits agregado al principio y al final de una codificación (como “11010… .01101”) que asegura que el escáner pueda recoger fácilmente el principio y el final de codificación y puede obtener un buen cronometraje. Con las barras de protección que enumeré, la codificación 2 en 5 probablemente funcionaría.

Los códigos de producto universal (UPC) cumplen estos requisitos al tener dos codificaciones diferentes de 7 bits para cada carácter, cada codificación tiene 2 barras y 2 espacios. La mitad izquierda de la UPC usa codificaciones de la forma “0xxxxx1”, cada una de las cuales tiene 2 o 4 de la “x” como 1, de modo que hay dos barras y dos espacios, y la mitad derecha de la UPC usa el inverso codificaciones (es decir, “1xxxxx0”, 2 o 4 de la “x” son 0, dos barras, dos espacios) con o codificado como “0001101” a la izquierda y “1110010” a la derecha, y así sucesivamente. También tiene una “zona silenciosa” antes y después de la codificación sin barras, barras de protección a cada lado de la forma “101” y un conjunto de barras de protección del medio de la forma “01010”. Debido a estas opciones de diseño, el escáner obtiene suficientes transiciones para el auto reloj, puede encontrar fácilmente el comienzo y el final de los dígitos, puede decir si lo está leyendo hacia adelante o hacia atrás.

La matemática viene con la búsqueda de una codificación que cumpla con todos estos requisitos.

More Interesting

Cómo estudiar como estudiante de matemáticas en la universidad con ADD

¿Por qué es un abuso de notación usar g para denotar tanto un elemento de grupo en G como su representación de acción X también con g? ¿Cuál sería una mejor notación para mostrar la clara distinción?

Soy estudiante de segundo año, ¿qué puedo hacer para involucrarme en la investigación matemática?

¿Cuál es la definición de las matemáticas?

¿Por qué debería uno estudiar topología?

¿Hay una manera rápida de encontrar cuántos números diferentes de 6 dígitos formados por 0, 1, 2, 3, 4 y 5 (sin repetición, y suponiendo que un número no puede comenzar con 0) son pares?

¿Qué es la fase multiplicada por la magnitud?

¿De cuántas maneras puedes dividir a 44 personas en 22 parejas?

¿Esta pregunta contiene errores: 'Encuentre el área del segmento cortado de la hipérbola [matemáticas] \ frac {x ^ 2} {9} - \ frac {y ^ 2} {4} = 1 [/ matemáticas] por el acorde x = 4 '?

¿Cuál es el significado de num = hex [I] - '0' en este programa y también el significado de num = hex [I] -55? Este programa es para convertir un número hexadecimal a un número decimal?

Software de Matemáticas: ¿Cuáles son las ventajas y desventajas de Mathematica?

¿Cuáles son los tres números en los sombreros?

Me gustaría comprender mejor el concepto de una variedad en matemáticas. ¿Hay ejemplos en los que se puede trabajar en la construcción de un colector en Matlab o Python?

¿Debe una implicación lógica ser necesariamente una tautología?

¿Qué es un functor en teoría de categorías?