Comment fonctionne un code QR ? Décodage géométrique et mathématique
Dédramatisez la technologie des codes QR : découvrez comment ces carrés noirs et blancs stockent des données grâce aux motifs d'alignement et à la correction d'erreurs Reed-Solomon.
Aujourd'hui omniprésents sur les menus de restaurants, les billets de train, les emballages alimentaires et les cartes d'embarquement, les codes QR sont devenus un standard universel d'échange d'information. Inventé en 1994 au Japon par Masahiro Hara pour la filiale automobile Denso Wave afin de suivre les pièces détachées sur les chaînes de montage, le code QR (Quick Response) est bien plus qu'un simple code-barres amélioré. Mais comment une simple grille de pixels noirs et blancs parvient-elle à transmettre une URL complète ou un texte complexe sans aucune puce électronique ni batterie ?
1. Du Code-Barres 1D au Code QR 2D
Un code-barres traditionnel (comme celui sur vos articles de supermarché) est unidimensionnel (1D) : l'information n'est codée que sur l'axe horizontal. Il ne contient en général que 8 à 13 chiffres.
Le code QR est bidimensionnel (2D) : l'information est stockée simultanément dans le sens horizontal et vertical. Cette prouesse géométrique lui permet de stocker jusqu'à 7 089 chiffres ou 4 296 caractères alphanumériques sur un tout petit carré de quelques centimètres !
2. Anatomie géométrique : Les 4 éléments clés repérables à l'œil nu
Si vous observez attentivement n'importe quel code QR, vous y trouverez des formes géométriques récurrentes :
- Les 3 Grands Carrés d'Angle (Finder Patterns) : Situés en haut à gauche, en haut à droite et en bas à gauche. Ils permettent au capteur photo de votre smartphone de repérer instantanément la présence du code QR, de calculer son inclinaison et de le lire dans n'importe quel sens (même la tête en bas !).
- Le Petit Carré d'Alignement (Alignment Pattern) : Situé en bas à droite. Il sert de repère de déformation si le code QR est imprimé sur une surface courbe (comme une canette ou un t-shirt).
- Les Lignes de Synchronisation (Timing Patterns) : Des lignes de pixels noirs et blancs alternés reliant les grands carrés pour définir la taille exacte des cases.
- La Zone de Données : Tout le reste de la grille, où les pixels noirs représentent la valeur binaire
1et les pixels blancs la valeur0.
3. La magie de la Correction d'Erreur Reed-Solomon
Avez-vous déjà remarqué que certains codes QR affichent un logo d'entreprise au plein milieu sans cesser de fonctionner ? Ou qu'un code QR plissé, taché de café ou partiellement déchiré reste parfaitement lisible par votre téléphone ?
Ce miracle repose sur l'algorithme mathématique de correction d'erreur de Reed-Solomon (le même utilisé pour lire les CD rayés ou transmettre les images des sondes spatiales Voyager !).
Le code QR enregistre des données de redondance mathématique. Selon le niveau de sécurité configuré (L, M, Q, H), un code QR peut être détruit ou masqué jusqu'à 30% de sa surface sans perdre la moindre information !
4. Que se passe-t-il lorsque votre caméra pointe le QR code ?
En moins de 50 millisecondes, le logiciel de votre téléphone réalise ces étapes :
1) Binarisation : Convertit la photo en noir et blanc pur.
2) Repérage : Détecte les 3 carrés d'angle pour redresser la perspective.
3) Extraction binaire : Lit la grille de pixels 0 et 1.
4) Décodage Reed-Solomon : Corrige les pixels altérés et reconstruit le texte UTF-8 de l'URL !
À retenir
- Le code QR stocke les données en 2D (horizontalement et verticalement).
- Les 3 carrés d'angle permettent de détecter et redresser l'image sous tous les angles.
- L'algorithme Reed-Solomon permet de lire le code même s'il est altéré jusqu'à 30%.
- Chaque carré noir équivaut à 1 et chaque carré blanc à 0 en langage binaire.