Oorsprong en breder gebruik
Reed–Solomon-codes werden in 1960 beschreven door Irving S. Reed en Gustave Solomon. Ze werken op hele symbolen, meestal bytes, in plaats van op losse bits, waardoor ze goed zijn in het opvangen van aaneengesloten schade zoals een kras of vlek.
Dezelfde familie van codes beschermt gegevens op cd’s, dvd’s en Blu-ray-schijven, in sommige digitale-televisie- en satellietverbindingen en in andere 2D-barcodes, waaronder Data Matrix ECC 200, Aztec Code en PDF417.
Hoe QR-codes het gebruiken
Een QR-code behandelt elk codewoord van 8 bits als een element van het eindige lichaam GF(256), opgebouwd met de primitieve veelterm x^8 + x^4 + x^3 + x^2 + 1 (hex 0x11D). De gegevenscodewoorden worden gedeeld door een voortbrengende veelterm, en de rest wordt de foutcorrectiecodewoorden die eraan worden toegevoegd.
Grotere codes verdelen hun gegevens in meerdere blokken, elk met eigen foutcorrectiecodewoorden. De blokken worden vervolgens verweven wanneer de codewoorden in het raster worden geplaatst, zodat één beschadigde plek over veel blokken wordt uitgesmeerd in plaats van er één te overweldigen.
Hoeveel het kan herstellen
Met n foutcorrectiecodewoorden in een blok kan een decoder tot n/2 codewoorden corrigeren waarvan de positie onbekend is, of tot n codewoorden waarvan de positie bekend is, zogenoemde uitwissingen. Gemengde gevallen volgen de regel dat elke fout twee telt en elke uitwissing één.
Daarom kan een code met een schoon, vlak gebied dat door een logo is bedekt nog steeds scannen: een slimme lezer kan het bedekte gebied als uitwissingen behandelen, terwijl willekeurige schade moeilijker te herstellen is omdat de decoder haar eerst moet vinden.
- Onbekende fouten: tot de helft van het aantal EC-codewoorden
- Uitwissingen (bekende posities): tot het aantal EC-codewoorden
- Lichaam: GF(256), veelterm 0x11D
- Blokken worden verweven om aaneengesloten schade te spreiden