Aztécký kód

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

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.

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

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í

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

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ódrežimkódrežim
UpperLowerMixedPunctDigitUpperLowerMixedPunct
0P/SP/SP/SFLG(n)P/S16Oo^\+
1SPSPSPCRSP17Pp^],
2Aa^ACR LF018Qq^^-
3Bb^B. SP119Rr^_.
4Cc^C, SP220Ss@/
5Dd^D: SP321Tt\:
6Ee^E!422Uu^;
7Ff^F"523Vv_<
8Gg^G#624Ww`=
9Hh^H$725Xx|>
10Ii^I%826Yy~?
11Jj^J&927Zz^?[
12Kk^K',28L/LU/SL/L]
13Ll^L(.29M/LM/LU/L{
14Mm^M)U/L30D/LD/LP/L}
15Nn^[*U/S31B/SB/SB/SU/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í

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ělesoPolynomPoužívá se pro
4GF(16)x4+x+1kontrolní informace ve vnitřní vrstvě
6GF(64)x6+x+11–2 vrstvy
8GF(256)x8+x5+x3+x2+13–8 vrstev
10GF(1024)x10+x3+19–22 vrstev
12GF(4096)x12+x6+x5+x3+123–32 vrstev

Odkazy

Reference

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

Média použitá na této stránce

Aztec Code with desc.png
Aztec Code with description

(below translated by http://translate.google.com)
Construction of a compact Aztec Code bar code
Diagonal red lines - the core
Blue grid - patterns indicative
Green bars - the designation procedure and error correction code words
Black lines - the first data layer

Hatch is missing - the second layer of data
Azteccodeexample.svg
An example of the information technology: Aztec code, a two dimensional barcode or matrix code developed in the United States. Aztec Code was invented and patented by Andrew Longacre, Jr. of Welch Allyn Inc. in 1995 and used commercially from 1997, though later released into the public domain. When decoded this image contains "This is an example Aztec symbol for Wikipedia."
Aztec code full core.png
Autor: Rustam Abdullaev, Licence: CC BY-SA 3.0
Aztec full barcode core

Black - always black

Red striping - always white

Blue striping - alignment marks (always white)

Green hatching - mode message (starts at top left, clockwise, 1-bit wide)

Grey - first data ring (starts at top left, counter-clockwise, 2-bits wide)
Jízdenka s QR kódem.JPG
Vlaková jízdenka s novým kódem