1. Kódování QR kódů
Souhrn informací o QR kódu
a
ukázka Reed-Solomonova kódování
Autor: Bc. Luděk Reif
1. listopad 2013
2. Historie QR kódů
• Nástupce čárových kódů
• Větší množství informace
• Stále potřeba přímá viditelnost
• Levné řešení
• Alternativní technologie
• RFID
• nepotřebuje přímou viditelnost
• výrazně dražší řešení
1. listopad 2013
Snímek 2 z 14
3. Specifikace QR kódů
• Mnohem více informací než čárové kódy
• Standardní ve 40 (1 až 40) velikostech
• Velikost podle vzorce: 17 + (v x 4)
• Nejmenší kódy 21x21, největší 177x177
• Navíc Micro QR kód (11x11 až 17x17)
• Kapacita
•
•
•
•
7 089 číslic
4 296 písmen a číslic
2 953 8-bitových data
1 817 znaků kandži (japonské znaky)
1. listopad 2013
Snímek 3 z 14
4. Specifikace QR kódů II
• Čtyři úrovně korekce (redundance)
•
•
•
•
Úroveň L – až 7% poškozené plochy
Úroveň M – až 15% poškozené plochy
Úroveň Q – až 25% poškozené plochy
Úroveň H – až 30% poškozené plochy
Text „Hello, World!“
Úroveň L
1. listopad 2013
Úroveň H
Snímek 4 z 14
5. Geometrická vrstva
•
•
•
•
Klidová zóna minimálně 4 body okolo kódu
Čtverce (3) určující pozici (Č 7x7 + B 5x5 + Č 3x3) s bílou okolo
Další (0 - 46) čtverce (Č 3x3 + B 2x2 + Č 1x1) doplňují zarovnání
Na 7. řádku a 7. sloupci časovací znaky (střídavě Č a B)
1. listopad 2013
Snímek 5 z 14
6. Geometrická vrstva II
Tabulka s příklady verzi QR kódu (počty bodů)
v
Strana
Plocha
Pozice
Časování
Verze
A
Zarovnání
Pro data
Vzdál. zarovnání
1
21
441
192
10
0
0
0
239
-
10
57
3 249
192
82
36
2
140
2 799
22
20
97
9 409
192
162
36
3
305
8 714
28
30
137
18 769
192
242
36
5
785
17 514
26
40
177
31 329
192
322
36
6
1100
29 679
28
1. listopad 2013
Snímek 6 z 14
7. Ukázka složitého QR kódu
Recept na svíčkovou o 1 053 českých znacích
úroveň zabezpečení L, rozměr 113x113 (verze 24)
1. listopad 2013
Snímek 7 z 14
8. Informační vrstva
Černý bod = binární 1
Bílý bod = binární 0
• Plnění začíná v pravém dolním rohu dvojřad
• Po naplnění se směr otáčí zase ve dvojřadu
• Pokud narazí na formátovací prvek, tak jej přeskočí
(zarovnání, časování) nebo se odrazí (pozice)
• Svislé časování je přeskočeno, dokončí se plnění
posledními třemi dvojřady a končí v levém spodním
rohu
• Data obsahují bytovou zprávu a korekční byty
• Prvotní nemaskovaná data jsou uložena postupně
• Nejprve data, poté korekční kód
1. listopad 2013
Snímek 8 z 14
9. Informační vrstva II
• Informace o korekci
• Dva bity označují úroveň korekce (tabulka pro 26 bytový blok dat)
Úroveň korekce
Bitové označení
Počet korekčních bytů
Počet datových bytů
L
01
7
19
M
00
10
16
Q
11
13
13
H
10
17
9
• Maskování
•
•
•
V kódu mohou vznikat vzory matoucí geometrickou vrstvu
Tři bity označují způsob maskování pro celou informační vrstvu
Maskuje se podle výsledku maskování, které dostane nejméně záporných bodů
1. listopad 2013
Snímek 9 z 14
10. Informační vrstva III
Zbývajících 10 bitů obsahuje samoopravné kódy formátu
Všechny formátovací informace jsou na kódu dvakrát
Informace jsou kódovány pomocí BCH kódů
-
kódovaná část se převede na polynom
násobí se kódovacím polynom
modulo řídící polynom nad 𝑍2
výsledkem je zakódovaná část dat
Data jsou kódovány pomocí Reed- Solomonových kódů
-
kódy jsou speciálním případem BCH kódů
symbolově orientovány (kódování po celých slovech)
předpokládají shlukové chyby
1. listopad 2013
Snímek 10 z 14
11. Příklad vytvoření QR
Příklad vytvoření QR kódu
1. Vstupní řetězec přepsaný podle tabulky
MARTINS = (22,10,27,29,18,23,28)
2. Rozdělit na skupiny po dvou dekadických číslech
(22,10) (27,29) (18,23) (28)
3. Operace podle vzorce C = A*45 + B
C1 = 22*45 + 10 = 1 000
C2 = 27*45 + 29 = 1244
C3 = 18*45 + 23 = 833
C4 = 28
4. Dekadická čísla na binární (11bit + poslední 6bit)
1 000 = 011 1110 1000
1255 = 100 1101 1100
833 = 011 0100 0001
28 = 01 1100
5. Spojit na jedno číslo
6. Určí se indikátor vstupných dat
Pro alfanumerické řetězce: 0010
7. počet vstupních symbolů ve dvojkové soustavě
000000111
8. Vše do jednoho řetězce
0010 000000111 01111101000 10011011100 01101000001 011100
Každých osm bitů představuje 1 CW (blok dat u QR), bude tedy 7 CW
Korekce je typu L, rozložení data : korekce bude tedy 13 CW na 13 CW
9. Do nevyužitých CW se doplní vyplňující CW
Liché: 11101100
Sudé: 00010001
10. Dopočítá se korekce a využije se maska dat
Využije se Reed-Solomonova kódování
11. Doplní se informace o korekci a masce
Pomocí BCH dostaneme 10 1100 1000
01111101000 10011011100 01101000001 011100
1. listopad 2013
Snímek 11 z 14
12. Informační vrstva V
Původní binární data
00010000 00100000 00001100 01010110 01100001 10000000 11101100 00010001
11101100 00010001 11101100 00010001 11101100 00010001 11101100 00010001
(128 bitů)
Zakódovaná data Reed-Solomonovým kódováním
00010000 00100000 00001100 01010110 01100001 10000000 11101100 00010001 11101100
00010001 11101100 00010001 11101100 00010001 11101100 00010001 10100101 00100100
11010100 11000001 11101101 00110110 11000111 10000111 00101100 01010101
(208 bitů)
korekce typu M – lze opravit až 15% chyb
1. listopad 2013
Snímek 12 z 14
13. Reed-Solomonovo kódování II
Příklad polynomu pro generování Reed-Solomonova kódu
𝑔 𝑥 = 𝑥 5 + 31𝑥 4 + 198𝑥 3 + 63𝑥 2 + 147𝑥 + 116𝑥 0
𝒙𝟓
𝟑𝟏𝒙 𝟒
𝟏𝟗𝟖𝒙 𝟑
𝟔𝟑𝒙 𝟐
𝟏𝟒𝟕𝒙
𝟏𝟏𝟔𝒙 𝟎
𝜶𝟎
𝜶 𝟏𝟏𝟑
𝜶 𝟏𝟔𝟒
𝜶 𝟏𝟔𝟔
𝜶 𝟏𝟏𝟗
𝜶 𝟏𝟎
Polynom pro generování se liší podle použité verze.
Původní data se převedou na mnohočlen (kódována po bytových blocích).
Např. 255 128 10 155:
𝑝 𝑥 = 255𝑥 8 + 128𝑥 7 + 10𝑥 6 + 155𝑥 5 + 0𝑥 4 + 0𝑥 3 + 0𝑥 2 + 0𝑥 1 + 0𝑥 0
𝒙 s exponenty 0 až 4 se dopočítávají při kódování a zde jsou pouze pro doplnění.
Pro zvolené kódování jsou doplněny 4 členy. Jejich počet mění podle verze.
1. listopad 2013
Snímek 12 z 14