Aztécký kód
Aztécký kód (anglicky ) je druh dvojrozměrného kódu, který si v roce 1995 patentovali Andrew Longacre a Robert Hussey, 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. 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, od roku 2013 ho používá Železničná spoločnosť Slovensko.

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ů:
 Převedení zdrojové zprávy na řetězec bitů
 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
 vložení bitů do kódových slov Reedova–Solomonova kódu
 Vycpání bity na hranici kódového slova
 Připojení kontrolních kódových slov
 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ů:
 Upper pro zápis velkých písmen
 Lower pro zápis malých písmen
 Mixed pro kontrolní znaky
 Punct pro interpunkci atp.
 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:

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:

Odkazy

Reference

Externí odkazy 
 
 Specifikace ISO/IEC 24778:2008 (zpoplatněná)
  Medium.com, Two-dimensional barcodes robustness analysis through the example of QR code and Aztec code (srovnání QR a Aztéckého kódu)

Kódování