Correção de erros Reed–Solomon

Também chamado de: código Reed-Solomon, código RS, Reed-Solomon

Definição

A correção de erros Reed–Solomon é a matemática que permite a um QR Code danificado ainda ser lido. Ela acrescenta palavras-código de verificação aos dados para que o leitor reconstrua bytes ausentes ou errados, até um limite definido.

Origem e uso mais amplo

Os códigos Reed–Solomon foram descritos por Irving S. Reed e Gustave Solomon em 1960. Eles trabalham com símbolos inteiros, normalmente bytes, e não com bits isolados, o que os torna bons em lidar com rajadas de dano, como um arranhão ou uma mancha.

A mesma família de códigos protege dados em CDs, DVDs e discos Blu-ray, em alguns enlaces de televisão digital e de satélite e em outros códigos de barras 2D, como o Data Matrix ECC 200, o código Aztec e o PDF417.

Como os QR Codes o usam

O QR Code trata cada palavra-código de 8 bits como um elemento do corpo finito GF(256), construído com o polinômio primitivo x^8 + x^4 + x^3 + x^2 + 1 (hex 0x11D). As palavras-código de dados são divididas por um polinômio gerador, e o resto vira as palavras-código de correção de erros anexadas a elas.

Os códigos maiores dividem os dados em vários blocos, cada um com suas próprias palavras-código de correção de erros. Os blocos são então intercalados quando as palavras-código são colocadas na grade, de modo que uma única mancha de dano se espalhe por muitos blocos, em vez de sobrecarregar um só.

O quanto ele consegue corrigir

Com n palavras-código de correção de erros num bloco, um decodificador consegue corrigir até n/2 palavras-código cuja posição é desconhecida, ou até n palavras-código cuja posição é conhecida, chamadas de apagamentos. Os casos mistos seguem a regra de que cada erro conta duas vezes e cada apagamento, uma.

Por isso um código com uma área limpa e plana coberta por um logo ainda pode ser lido: um leitor esperto pode tratar a região coberta como apagamentos, enquanto o dano aleatório é mais difícil de corrigir, porque o decodificador primeiro precisa localizá-lo.

  • Erros desconhecidos: até metade do número de palavras-código de correção
  • Apagamentos (posições conhecidas): até o número de palavras-código de correção
  • Corpo: GF(256), polinômio 0x11D
  • Os blocos são intercalados para espalhar o dano em rajada

Perguntas frequentes

O que é Reed–Solomon num QR Code?

É o método de correção de erros que acrescenta palavras-código extras aos dados. O leitor as usa para reconstruir palavras-código danificadas ou ilegíveis.

Quem inventou os códigos Reed–Solomon?

Irving S. Reed e Gustave Solomon, que os publicaram em 1960. Hoje esses códigos são usados em discos ópticos, em comunicações e na maioria dos códigos de barras 2D.

Por que um QR Code com um logo no meio ainda pode funcionar?

O logo cobre módulos que a correção de erros Reed–Solomon consegue reconstruir. Funciona enquanto a área coberta ficar dentro da capacidade de correção de erros e os padrões de localização estiverem livres.

Fontes e normas

Todos os termos