Elaboration du QR code
Introduction :
La création du QR code se fait en 3 étapes:
- Créer une chaîne de bits de données à partir du message que l'on veut encoder. Cette chaîne inclut les caractères du message d'origine que l'on veut encoder, ainsi que quelques bits d'information qui disent au décodeur QR quel type de code QR c'est;
- Générer le code correcteur d'erreur (redondance). Il s'agit d'un processus complexe, c'est pourquoi le principe de la redondance sera brièvement expliqué;
- Choisir la meilleure forme de masque afin d'optimiser la lecture du QR code.
Afin d'expliquer le fonctionnement d'un QR code, nous avons pris l'exemple du site http://www.thonky.com/qr-code-tutorial/introduction/ qui explique le processus d'encodage du mot HELLO WORLD. Ainsi la plupart des images ci-dessous sont tirées de ce site car nous n'avons pas le matériel nécessaire pour faire nous-mêmes ces illustrations.
1. Transformation d'un texte en une chaîne binaire
Encodages Préliminaires
Avant d'encoder notre information (HELLO WORLD) il faut tout d'abord commencer la chaîne de bits par une information sur le type de données. Comme ce que l'on veut encoder sont des caractères alphanumériques la chaîne commence par 0010.
Chaîne de Bits | Type d'information |
0001 | Numérique |
0010 | Alphanumérique |
0100 | Binaire |
1000 | Kanji (caractère Japonais) |
Il faut ensuite indiquer quelle version de QR code on utilise au moyen de quelques bits supplémentaires. Ainsi la chaîne est: 0010 000001011
Encodage des données sources
Afin d'encoder notre message il faut le diviser par paires : HE / LL / O / WO / RL / D.
Pour chaque paire on prend la valeur ASCII de la première lettre puis on multiplie cette valeur par 45. On ajoute ensuite à cette multiplication la valeur ASCII de la deuxième lettre. La valeur obtenue est par la suite transformée en une chaîne binaire de 11 bits. Pour la lettre qui est toute seule on prend tout simplement la valeur ASCII de celle-ci que l'on transforme en une chaîne binaire de 6 bits.
HE LL O(espace) WO RL D
(17x45)+14 (21x45)+25 (24x45)+36 (32x45)+24 (27x45)+21 13
779 966 1116 1464 1236 13
01100001011 01111000110 10001011100 10110111000 10011010100 001101
La chaîne binaire est donc après cette opération 0010 000001011 01100001011 01111000110 10001011100 10110111000 10011010100 001101. Comme celle ci est trop courte on rajoute quatre zéros. Il faut ensuite délimiter des groupes de huit (octets), le dernier groupe est complété par des zéros si cela ne fait pas huit.
Le QR code que l'on veut faire est de version 1, faite pour coder 104 bits. Or notre chaîne de bits fait 10 octets et 104/8=13 donc il faut encore ajouter 3 octets. Il existe pour cela deux octets spécifiques 11101100 et 00010001 que l'on ajoute alternativement jusqu'à ce qu'on arrive à 104 bits.
Notre chaîne, avant de subir la redondance, est donc 00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 01000000 11101100 00010001 11101100