Corrección de errores Reed-Solomon

También se llama: código Reed-Solomon, código RS, Reed-Solomon

Definición

La corrección de errores Reed-Solomon es la matemática que permite escanear un código QR dañado. Añade palabras de código de control a los datos para que un lector pueda reconstruir bytes que faltan o son erróneos, hasta un límite establecido.

Origen y otros usos

Los códigos Reed-Solomon los describieron Irving S. Reed y Gustave Solomon en 1960. Trabajan con símbolos enteros, normalmente bytes, y no con bits sueltos, lo que los hace buenos para tratar ráfagas de daño como un arañazo o una mancha.

La misma familia de códigos protege los datos de los CD, los DVD y los discos Blu-ray, algunos enlaces de televisión digital y de satélite, y otros códigos 2D como Data Matrix ECC 200, el código Aztec y PDF417.

Cómo los usan los códigos QR

Un código QR trata cada palabra de código de 8 bits como un elemento del cuerpo finito GF(256), construido con el polinomio primitivo x^8 + x^4 + x^3 + x^2 + 1 (hexadecimal 0x11D). Las palabras de código de datos se dividen por un polinomio generador, y el resto pasa a ser las palabras de código de corrección de errores que se les añaden.

Los códigos mayores dividen sus datos en varios bloques, cada uno con sus propias palabras de código de corrección de errores. Después, los bloques se intercalan al colocar las palabras de código en la cuadrícula, de modo que una sola zona dañada se reparte entre muchos bloques en lugar de desbordar uno.

Cuánto puede arreglar

Con n palabras de código de corrección de errores en un bloque, un decodificador puede corregir hasta n/2 palabras de código cuya posición se desconoce, o hasta n palabras de código cuya posición se conoce, llamadas borrados. Los casos mixtos siguen la regla de que cada error cuenta doble y cada borrado cuenta una vez.

Por eso un código con una zona limpia y plana tapada por un logo puede seguir escaneándose: un lector inteligente puede tratar la región tapada como borrados, mientras que el daño aleatorio es más difícil de arreglar porque el decodificador primero tiene que encontrarlo.

  • Errores desconocidos: hasta la mitad del número de palabras de código de corrección
  • Borrados (posiciones conocidas): hasta el número de palabras de código de corrección
  • Cuerpo: GF(256), polinomio 0x11D
  • Los bloques se intercalan para repartir el daño en ráfaga

Preguntas frecuentes

¿Qué es Reed-Solomon en un código QR?

Es el método de corrección de errores que añade palabras de código extra a los datos. Un escáner las usa para reconstruir palabras de código dañadas o ilegibles.

¿Quién inventó los códigos Reed-Solomon?

Irving S. Reed y Gustave Solomon, que los publicaron en 1960. Hoy se usan en discos ópticos, en comunicaciones y en la mayoría de los códigos de barras 2D.

¿Por qué puede funcionar un código QR con un logo en el centro?

El logo tapa módulos que la corrección de errores Reed-Solomon puede reconstruir. Funciona mientras el área tapada quede dentro de la capacidad de corrección de errores y los patrones de posición estén despejados.

Fuentes y estándares

Todos los términos