Aztécký kód (anglicky Aztec Code) je druh dvojrozměrného kódu, který si v roce 1995 patentovali Andrew Longacre a Robert Hussey[1], v roce 1997 ho zveřejnila Asociace pro automatickou identifikaci a mobilitu (AIM) a později se stal standardem Mezinárodní organizace pro normalizaci a Mezinárodní elektrotechnická komise ISO/IEC 24778:2008.[2] Název je odvozen od Aztéků pro vnější podobnost kódu s půdorysem stupňovitých mezoamerických pyramid.

Ukázka aztéckého kódu
Jízdenka Českých drah s aztéckým kódem

Aztécký kód je široce používán na jízdenkách v železniční dopravě, například ho začaly v roce 2012 současně s přechodem na termotisk používat České dráhy[3][4], od roku 2013 ho používá Železničná spoločnosť Slovensko.[5]

Princip editovat

Kód má čtvercový tvar, jehož jádro má podobu čtvercového terče. Jedná se o středový bod obklopený dvěma nebo třemi soustřednými čtverci, rozměry vnitřku tohoto „terče“ jsou 9×9 (kompaktní verze) nebo 13×13 pixelů (plná verze) a ze všech stran je ještě jedna řada pixelů pro parametry kódování, celé jádro má tedy rozměry 11×11 nebo 15×15 pixelů. V rozích této řady jsou především orientační značky, které umožňují rozpoznat otočení nebo zrcadlení. Dekódování začíná v plném rohu s třemi pixely a pokračuje po směru hodinových ručiček k rohu s dvěma pixely, pak k rohu s jedním pixelem, pak k rohu bez pixelu, a pak zpět k rohu se třemi pixely.

Dále čtení pokračuje v hranaté spirále, přičemž datové čtverce jsou přidávány ve vrstvách po dvou, takže rozměry celého kódu jsou 15×15, 19×19, 23×23, a tak dále. Kompaktní verze kódu podporuje 1 až 4 datové vrstvy (rozměry 15×15 až 27×27), plná verze až 32 vrstev (rozměr 151×151 pixelů). To představuje 1914 bajtů binárních dat, nebo 3832 číslic, nebo 3067 písmen. Libovolně velká část datové oblasti může být použita pro samoopravné kódování pomocí Reedových–Solomonových kódů.

Postup kódování editovat

Kódování do aztéckého kódu se skládá z následujících kroků:

  1. Převedení zdrojové zprávy na řetězec bitů
  2. Spočítání potřebné velikosti symbolu a parametrů, včetně určení velikosti kódového slova pro Reedův–Solomonův kód
  3. vložení bitů do kódových slov Reedova–Solomonova kódu
  4. Vycpání bity na hranici kódového slova
  5. Připojení kontrolních kódových slov
  6. Namotání zprávy do spirály kolem jádra

Převod do bitových řetězů je přitom prováděn od nejvýznačnějších bitů.

Znakové sady editovat

Při zápisu dat existuje pět režimů:

  1. Upper pro zápis velkých písmen
  2. Lower pro zápis malých písmen
  3. Mixed pro kontrolní znaky
  4. Punct pro interpunkci atp.
  5. Digit pro zápis číslic

Při zápisu číslic mají znaky délku čtyři bity, v ostatních režimech pět bitů, jak ukazuje následující tabulka:

Znaky aztéckého kódu
kód režim kód režim
Upper Lower Mixed Punct Digit Upper Lower Mixed Punct
0 P/S P/S P/S FLG(n) P/S 16 O o ^\ +
1 SP SP SP CR SP 17 P p ^] ,
2 A a ^A CR LF 0 18 Q q ^^ -
3 B b ^B . SP 1 19 R r ^_ .
4 C c ^C , SP 2 20 S s @ /
5 D d ^D : SP 3 21 T t \ :
6 E e ^E ! 4 22 U u ^ ;
7 F f ^F " 5 23 V v _ <
8 G g ^G # 6 24 W w ` =
9 H h ^H $ 7 25 X x | >
10 I i ^I % 8 26 Y y ~ ?
11 J j ^J & 9 27 Z z ^? [
12 K k ^K ' , 28 L/L U/S L/L ]
13 L l ^L ( . 29 M/L M/L U/L {
14 M m ^M ) U/L 30 D/L D/L P/L }
15 N n ^[ * U/S 31 B/S B/S B/S U/L

Hodnoty x/S znamenají změnu režimu na x pro následující znak, x/L přepínají na režim x na neurčito. Výchozím režimem je Upper.

Hodnota B/S předznamenává zápis binárních bajtů, jehož podoba je určena následujícími pěti bity. Pokud jsou nenulové, pak udávají počet binárních bajtů, které budou následovat (1—32). Pokud jsou nulové, tak je počet binárních bajtů bez 31 určen z dalších 11 bitů. (Ve skutečnosti je pro 32-62 bajtů tedy prostorově úspornější přejít do režimu dvakrát).

Hodnota FLG(n) je následována tříbitovou hodnotou. Je-li nulová, pak je interpretováno jako FNC1 ze standardu GS1-128. Po hodnotách 1-6 následuje 1-6 číslic znamenajících patřičné kódy ECI

Informace o kódování editovat

Informace o kódování, zahrnuté na nejvnitřnějším okruhu spirály, zahrnují počet vrstev (uložený zmenšený o 1) a počet kódových slov samotné zprávy – zbylá kódová slova jsou určena pro samoopravný kód.

V případě kompaktní verze aztéckého kódu je počet vrstev jen dvoubitovou hodnotou a počet kódových slov šestibitovou, což dohromady dává osm bitů. V případě plného aztéckého kódu je počet vrstev uložen v pěti bitech a počet kódových slov v jedenácti bitech, což dává dohromady šestnáct bitů.

Tyto bity jsou rozděleny do dvou, respektive čtyř kódových půlslabik představujících prvky šestnáctiprvkového konečného tělesa, a je k nim přidáno pět, respektive šest kontrolních půlslabik Reedova–Solomonova kódu. Čímž vznikne 28, respektive 40 bitů do vnitřní kontrolní vrstvy kompaktního, respektive plného aztéckého kódu.

Počet vrstev zároveň určuje použitý Reedův–Solomonův kód, tedy jeho polynom a délku kontrolních slov, podle následující tabulky:

Polynomy konečného tělesa
Bitů Těleso Polynom Používá se pro
4 GF(16) x4+x+1 kontrolní informace ve vnitřní vrstvě
6 GF(64) x6+x+1 1–2 vrstvy
8 GF(256) x8+x5+x3+x2+1 3–8 vrstev
10 GF(1024) x10+x3+1 9–22 vrstev
12 GF(4096) x12+x6+x5+x3+1 23–32 vrstev

Odkazy editovat

Reference editovat

V tomto článku byl použit překlad textu z článku Aztec Code na anglické Wikipedii.

  1. Two dimensional data encoding structure and symbology for use with optical readers [online]. [cit. 2013-11-29]. Dostupné online. 
  2. ISO/IEC 24778:2008: Information technology -- Automatic identification and data capture techniques -- Aztec Code bar code symbology specification [online]. Mezinárodní organizace pro normalizaci [cit. 2013-11-29]. Dostupné online. 
  3. SVAČINA, Gracián. České dráhy slibují kratší fronty. Nakoupí moderní tiskárny na jízdenky. iHNed.cz [online]. 2012-03-07 [cit. 2013-11-29]. Dostupné online. 
  4. Projekt 2D kódů na jízdenkách ČD bodoval v soutěži „IT projekt roku 2012“. Parlamentní listy [online]. 2013-02-27 [cit. 2013-11-29]. Dostupné online. 
  5. MOJŽIŠ, Marcel. Novinka na železnici: Pozrite sa, s akým lístkom budeme cestovať. dnes24.sk [online]. 2013-02-27 [cit. 2013-11-29]. Dostupné online. 

Externí odkazy editovat