Origine și folosire mai largă
Codurile Reed–Solomon au fost descrise de Irving S. Reed și Gustave Solomon în 1960. Ele lucrează cu simboluri întregi, de obicei octeți, nu cu biți izolați, ceea ce le face bune la tratarea deteriorărilor în rafală, cum ar fi o zgârietură sau o pată.
Aceeași familie de coduri protejează datele de pe CD-uri, DVD-uri și discuri Blu-ray, în unele legături de televiziune digitală și de satelit și în alte coduri de bare 2D, printre care Data Matrix ECC 200, codul Aztec și PDF417.
Cum îl folosesc codurile QR
Un cod QR tratează fiecare cuvânt de cod de 8 biți ca pe un element al corpului finit GF(256), construit cu polinomul primitiv x^8 + x^4 + x^3 + x^2 + 1 (hex 0x11D). Cuvintele de cod de date sunt împărțite la un polinom generator, iar restul devine cuvintele de cod de corectare a erorilor adăugate după ele.
Codurile mai mari își împart datele în mai multe blocuri, fiecare cu propriile cuvinte de cod de corectare a erorilor. Blocurile sunt apoi întrepătrunse la plasarea cuvintelor de cod în grilă, astfel încât o singură zonă deteriorată se împrăștie pe mai multe blocuri, în loc să copleșească unul.
Cât poate repara
Cu n cuvinte de cod de corectare a erorilor într-un bloc, un decodor poate corecta până la n/2 cuvinte de cod a căror poziție este necunoscută sau până la n cuvinte de cod a căror poziție este cunoscută, numite ștergeri. Cazurile mixte respectă regula că fiecare eroare contează dublu, iar fiecare ștergere o dată.
De aceea un cod cu o zonă curată și plană acoperită de un logo se poate scana în continuare: un cititor inteligent poate trata regiunea acoperită ca ștergeri, în timp ce deteriorarea aleatorie e mai greu de reparat, pentru că decodorul trebuie mai întâi s-o găsească.
- Erori necunoscute: până la jumătate din numărul cuvintelor de cod EC
- Ștergeri (poziții cunoscute): până la numărul cuvintelor de cod EC
- Corp finit: GF(256), polinom 0x11D
- Blocurile sunt întrepătrunse pentru a împrăștia deteriorările în rafală