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